GnuCash
VAGUE/VTLUG, 20 Apr 2006
Josh Sled (jsled, @asynchronous.org)
GnuCash Overview
- Personal and small-business accounting.
- Double-entry accounting.
- Reporting, graphing.
- Stocks/bonds/mutual-funds, multi-currency.
- Scheduled/Recurring transactions; budgeting.
- SMB accounting: Customers, Vendors, Jobs, Invoices, A/P, A/R.
- Import
- Interactive
- GPL
Details
- Portable, vanilla C and Scheme (80%/20%)
- autotools, libtool
- Compiles widely: Linux distros, *BSD, Solaris, HP-UX, Windows (with ~2
partial-man-months, mostly meta-compilation)
- (Too) Many lines of code
- Core depends on basic, available libs (glib), front-ends on more...
- Conservative dependency policy
- library-version must be in release of major distros for ≥ 6 months.
- Will probably relax post-2.0
History
- 1997, Robin Clark (X-Accountant, Motif)
- 1998..(~present), Linas Vepstas
- 1998..2002, Gnumatic Incorporated
- early 2003: 1.8.0 released
- 2003..2005: the dark ages
- 2005..present: resurgence, 2.0
- Gnome2 port, new contributors
- move to Subversion
- move to wiki.gnucash.org (from gnomesupport.org)
- updating www.gnucash.org
Project
- Downloads direct, SourceForge, distros.
- Mailing lists + archives + search.
- Self-hosted Subversion.
- GNOME Bugzilla.
- Self-hosted (Media)Wiki for project content.
- Will migrate most of website into here.
- Experimenting with editing full documentation here.
- Daily documentation builds.
- Trac.
- IRC channel.
Structure
- Core financial-data engine
- Accounts, Books, Commodities, Splits, Transactions
- Scheduled Transaction (Frequency Specification)
- Budget (Recurrence)
- Price Database
- Lots
- Modular Application
- First-class modularization scheme (broken)
- Abstracted front-ends (somewhat)
- MVC desire
- Abstracted backends (mostly)
- Sheet...Register...Ledger
- Reporting
- Business Support
Reporting
- Reports implemented in Scheme
- Overview:
- process data
- emit HTML
- Graphing provided by GNOME-Office Graphing (GOG)
- Will probably change post 2.0...
- Architecture overhaul.
- s/GtkHtml/Gecko/.
Business Features
- Support for Vendors, Customers, Jobs, Invoicing.
- Customizable tax tables.
- Various payment terms.
- Invoices generated as customizable report(s).
- Invoices paid in FIFO order.
Other/Misc Features
- PriceDb, Finance::Quote
- up to date stock/currency quotes via screen-scraping.
- QIF importer
- AqBanking integration (OFX/HBCI)
- QOF
Basic Accounting
- Accounting Equation
- Assets - Liabilities = Equity
- what you have - what you owe = net worth
- Assets - Liabilities = Equity + (Income - Expenses)
- have - owe = worth + (bring in - spend out)
- Double-Entry Accounting
- Changes must always balance.
- Every transaction is a zero-sum event.
- In order to do so, they must affect (at least) two accounts.
Double-Entry Example
Date |
Memo |
|
Num |
Description |
Account |
Expense |
Withdrawl |
2006-04-18 |
Gas Bill |
|
315 |
Payment to Vermont Gas & Electric |
Assets:Bank of Example:Checking |
|
$123.45 |
|
|
Expenses:Utilities:Gas |
$82.30 |
|
|
|
Expenses:Utilities:Electric |
$41.15 |
|
Data Model, Features
- Book [contains] Accounts
- Account [contains an] Account
- Can't place Expense account in an Assets tree, Liabilities in Income, &c.
- Account [is denominated in a] Commodity
- Commodity [is a] Currency, Stock/Mutual-Fund/Bond shares
- (or any other ... uh ... commodity)
- Transaction [contains] Splits
- Split [references an] Account
- Split [is a tuple of] (date, memo, Account, value)
Basic Account Types
- Assets, Liabilities, Equity, Income, Expenses
- GnuCash specifics
- Assets: Bank, Cash, Stock, Mutual
- Currency, but deprecated ... just a Cash account with a different Commodity.
- Liabilities: Credit (Cards and Loans)
- Business accounts
- Accounts Receivable (A/R): Assets-like
- Accounts Payable (A/P): Liability-like
Expenses
- Bulk of transactions are rooted in Expense accounts.
- Rich Expense-hierarchy = reporting granularity/control.
- E.g....
- Expenses:Entertainment:{Books, Concerts, Magazines, Movies}
- Expenses:Interest:{Savings, Checking, Money-Market}
- Expenses:Automobile:{Gas, Repairs, Insurance}
- Expenses:Utilities:{Internet, Gas, Electric, Water, Phone}
- Pre-made account hierarchies included