Beyond basic checking and savings accounts, KMyMoney also lets you set up investment accounts, and it will update and track your investments using online data sources such as Yahoo! It can also help you prepare for your taxes by offering the option of marking expense and income categories for inclusion in tax reporting. Setting up accounts representing loans, and tracking assets such as your house or car are also fairly simple in KMyMoney.
With all of the flexibility in the types of things you can record and track, I was surprised to find that there was no built-in wizardry to help end users build and maintain a budget. It would be useful to have a tool that will let you enter the amounts you've budgeted for in a given category, and then be able to generate a report that compares budget vs. actual expenditures for some time range.
In addition, while I did not see any way to set up check printing, there is a scheduling feature that will let you set up recurring events such as bills or balance transfers. It would be great if the developers combined scheduling and check printing in a future release, so that checks could be printed automatically when it's time for them to go out.
I installed KMyMoney on Ubuntu Dapper and Edgy, and Fedora Core 5. I did the bulk of my testing on Ubuntu Edgy. I used prebuilt binary packages for installation because that's what an end user would use. Source code is available for KMyMoney, but with automated tools like yum, APT, and Synaptic, there's no need to compile from source.
The user experience
To get started with KMyMoney, I decided to download a QIF file from my bank, import it, categorize the transactions, and start generating reports. Sad to report, it's not that easy.
I was able to define an institution and a new account without any problems. KMyMoney imported my QIF file without issue. There were more than 500 transactions, and I was pleased to see that it imported fairly quickly. KMyMoney also supports importing from OFX sources, as well as GNUCash files.
Next, I clicked on the Ledger icon so I could see the transactions that I would have to categorize. Yikes! The entire list of transactions was blinking and highlighted in red. Isn't it enough to just color the transactions? Did we learn nothing from the rampant abuse of the 'blink' tag on the Internet? Lose the blinking. It's unnecessary, and it's incredibly annoying.
The display does, however, provide a clue as to what the user's next step should be. The blinking is an indication that the transactions are not categorized. OK, I thought, I'll sort by the Payee column, and then all of the car payments will be next to each other. I'll be able to select all of them and assign them all to the car payment category. But I was wrong -- as it turns out, you have to categorize everything one transaction at a time.
Not being able to categorize transactions en masse is a huge downfall, because it keeps new users from easily moving to the application. Since I have better things to do than individually categorize 500 transactions, I decided to open the application back up and start entering just enough transactions to test the application.
Starting from scratch, I had to create a new data file. This is a step that should be abstracted out of the user interface; users starting from scratch should simply be greeted with a wizard to get them going. The notion of a "data file" is a technical concept that defies the otherwise inviting look and feel of the interface.
Once you've created your data file, the working pane presents you with the opportunity to return to the KMyMoney welcome page. This is the only option. Seems logical that the user should be given a visual cue in this pane to take the next logical step of creating an account or defining an institution. Instead, these options are available only from the toolbar near the top of the window, or from the menus.
Once you've created an account, you can start entering transactions. Getting to the Ledger interface is intuitive enough, and from there it's simple to find the right buttons to enter a new transaction. But even here I was bitten. I wanted to enter a transaction for a check written to "Roofers R Us." I entered the payee's name, and when I went to move to the "Category" text field, up popped a dialog asking if I wanted to define "Roofers R Us" as a new payee. Well, it's not often that one makes regularly scheduled payments to a roofer, so I declined on the grounds that this was a one-time payment. No good. My "Payee" field was cleared of any content, and there I was left to start over. A better approach would be to have that dialog inform users that KMyMoney can only record transactions to defined payees. In other words, if there's only one way to get through the task I'm trying to perform, don't ask me a question that is equivalent to "do you want to get through this task?" and then give me the option to say "no." Fortunately, clicking on "Don't ask me again" and choosing "Yes" in this dialog will auto-define the payees going forward.
Once I had defined transactions covering different categories over a period of time, I began test the reporting capabilities of the application. I'm sad to report that, while the reports are not useless, they are completely text-only, dry, accountant-like reports. Most other comparative tools at least have simple pie-chart reports to let you know where your money is being spent.
Those shortcomings aside, KMyMoney does provide a default set of reports covering taxes, income vs. expense, net worth, investment holdings, and simple transaction reports. It also allows you some flexibility in customizing reports, and even defining your own reports.
The entire Investments portion of the application uses a navigation paradigm that is inconsistent with just about every other part of the application. If I don't ever have to right-click to get a menu that helps me get a task completed, then don't add that requirement arbitrarily. I had to refer to the handbook to figure out how to add a stock transaction. A user who has already entered several transactions, altered their ledger, added and manipulated categories, etc., should not find himself completely lost in another area that looks just like every other transaction-oriented part of the application.
Once you realize that you have to right-click to get things done in the investment area of the application, it's quick work to define stocks and then enter purchase information. Make sure you do it in that order -- you can't define a stock purchase transaction unless you've defined the stock first. Once that's all done, to its credit, KMyMoney will let you update the information, and generally presents a nice interface to keep up with stock purchases.
I did run into an annoying problem in this interface: after defining my first stock, I was able to enter a stock purchase for that stock. I then went and added another stock, and returned to the ledger interface to add a transaction, but the stock was not available in the drop-down list. I added another, and again, only the first stock was available for use in any transaction. Closing KMyMoney and opening it up again fixed the problem.
On the positive side
There are a couple of things I really like about KMyMoney. For one thing, the basic framework used for the interface is good. Users can get a lot done without tons of clicking and switching contexts. It also doesn't force double-entry accounting down your throat the way GNUCash does. I, and many others, find the normal, standard, single entry, "I paid this to this guy" interface a lot more intuitive. Also, there is quite a good bit of documentation in the form of the KMyMoney Handbook, accessible in KMyMoney's Help menu.
However, after giving it a fair trial, I found KMyMoney to be missing so many features, and have so many interface quirks, that I cannot recommend it to the average home user. The downsides, though sometimes small, are glaring. KMyMoney could overcome these things in a relatively short amount of time. To be fair, although I didn't find KMyMoney a suitable replacement for a commercial program like Quicken, I don't find any other FLOSS application suitable either.