Keep Track of Your Money
Recently, I took the big step: I became a freelancer. It's great, but even after a short while, I began to realize that there were some changes in my behavior concerning finances and spending money. So I thought decided to start keeping track of my personal accounts, especially with having more time to go shopping. I never thought I would do this, but now I do, and I'm feeling more secure knowing exactly how I spend my income.
I decided that Freshmeat would probably be the best place to start, I entered the keyword "financial", and there was what I was looking for: a whole category named Office/Business::Financial::Accounting, with over 50 projects. Now I wasn't going to test this many applications, so I selected from those using my standard criteria for applications: that it run on my Linux box, be rather straightforward to install (because I'm no guru), be open source (dependencies also) and be under active development.
I based my selection on Freshmeat indications about license type and last update date, and at first I selected 18 different projects, but after encountering various problems or difficulties, I decided to focus on Emma, GnuCash, jGnash and QHacc.
Emma (Easy Money Management) requires GTK+, GNOME and preferably Python as well. As I was running Ximian in my desktop environment, this was no problem. I downloaded the emma-0.7-7.i386.rpm package first to try the easy way. You always can compile the source later if it doesn't work. I installed the RPM package, which took about two seconds, and eagerly started the emma program. And there was my first image, after only three tries!
I felt at home immediately. Emma has the GNOME look and feel, with help windows and help functions where you expect them, e.g., each button has a little help bar that appears when you hold the mouse over it for a second. I like a program that doesn't scare me, so I appreciate an intuitive user interface. Emma sets up a series of standard accounts, including all kinds of costs and expenses, ranging from car and child-care bills to income from tax refunds and lotteries (see Figure 1). Your actual data is saved in a plain-text file, which you can store anywhere. Afterward, you start Emma with this file as an argument to the emma command.
There is, as far as I could see, no currency defined, so this is an international application. Accounting is always double-entry, so you will know where your money came from and, more importantly, where it went. As shown in the picture, Emma supports hierarchical accounts; for example, health care is split up into dental care, hospital costs, medicaments, doctor costs and vision care. You even can plan expenses in advance with the schedule function. Transactions can be limited, sorted and highlighted in several ways, which allows the transaction overview to be interpreted easily. It has nice colors, too.
After entering some test transactions, I wanted to try the Report Creation Druid, which seemed like a nice idea and is fairly adaptable (see Figure 2), but Emma crashed with a segfault when I tried to do something with the report. Also, there was supposed to be a charting function, according to the Emma Project home page, but I didn't have it. Maybe I should have compiled the source.
According to the author, it should be fairly easy to adapt Emma to your specific needs using the Python interface, for example, linking Emma to your bank account. Emma is available in German, French, Japanese, Polish and Swedish, and there is a Debian package. There's a mailing list and a list of authors in case you are have any trouble. There's still a good deal of work to do, but Emma can be a useful program the way it is now. I gave them a good score on Freshmeat, and I think we will be hearing more on Emma in the future.
GnuCash came with the Ximian distribution (gnucash-1.4.11-ximian.5.i386.rpm), but I had never tried it before. Starting it from the menu didn't work, so I tried the command line. I was informed that GnuCash needs a library called libguile.so.9. A flaw in Red Carpet? Who knows. Anyway, I downloaded a newer Guile (1.4), and this time the application started successfully. Overnight there was another update (using Red Carpet, again), so I don't expect any troubles here. GnuCash saw that I hadn't run the program since the last update, which apparently had something to do with currencies. All my data was converted to some new scheme, and behold, it was even prettier than before (see Figure 3). GnuCash certainly meets my criterium concerning frequent updates. It requires GTK+, GNOME, Guile (as mentioned), Glade, G-wrap and slip for "normal" use, which are all included in the general Linux distributions.
Accounts and transactions between accounts can be entered in a comfortable way, and use of different currencies is supported (including the Euro), provided you supply exchange rates to the program (see Figure 4). GnuCash makes a wide range of reports, pie charts, balance sheets and the like--everything you would want for making a business presentation, a financial plan for a new company or that kind of thing. I wish it had existed when I was writing a business plan.
GnuCash provides support for general ledger, stock keeping and even taxes, but I'm not the right person to check if this complies with local rules. It is certainly fit to serve general bookkeeping purposes. Hierarchical accounts and grouping of accounts are supported with a handy general overview and details in separate windows. Transactions can be split into their components, e.g., I payed this amount to the company that installed my home office, but the total invoice consists of service, parts and taxes. You can search transactions with the Transaction Finder, which is a very useful feature. Double-entry accounting can be enabled on a per-account basis and several account categories are defined, which provides the flexibility I need as a homeworker, where the line between business and private isn't always too clear. Files are stored in a directory called .gnucash in your home directory, reports by default in your home directory and your actual account information in any file you want.
If needed, this program can grow with your business: recently multi-user support has been added, using a PostgreSQL back end. In the case of a growing enterprise, it is easy to imagine that you may have to enter a lot of transactions in a short time. This can be realized using the Import function, which uses QIF data files. A web interface also can be added.
There's a GnuCash mailing list, plenty of documentation and examples and information for developers. GnuCash is definitely a mature product, but the developers still are looking ahead, planning on implementing more features.