These are Robert's answers to questions about GnuCash you posted on June 18th. He says, "Some of the answers to the questions here were the result of discussions with the other people at LDG, where others were more qualified to speak on various topics, so the readers are really getting the benefit of our collected wisdom (well, we hope it's wisdom :) )"
1) Why the GPL?
I'm not sure if this will be a very popular question, but I'm always interested in why people have chosen the GNU GPL.
Developed under the GPL, you have no need to worry about obsolescence: GnuCash will be there for you.
The GPL expresses many ideals, and there is a differing philosophy between Free Software the Open Source. Perhaps that's a bit broad, but what are your ideals and how do they relate to the GPL?
The simple answer is that GnuCash is based on the X-Accountant codebase, which was GPL'd when Robin Clark released it based way back in 1997. If we wanted to use that code, we were obliged to use the GPL. If that code had been released under another DFSG-free license, I'm sure the developers would have been happy to continue under the same license.
There's more to it, though, as you have indicated in your question. I like the GPL, would generally use it on a project of my own, and I believe the GPL has been very good for GnuCash's development and will continue to be so.
The GPL it makes it clear to people who contribute code to GnuCash that their code will remain free forever. There's nothing wrong with corporate sponsorship of free software; in fact most of the core GnuCash developers work for the Linux Developers Group, which is sponsoring GnuCash development and intends to sell, extend, and support it. The entire management of LDG is GnuCash developers, so there's not much question of Bad People doing Bad Things within the corporate framework, but sometimes Bad Things happen anyway, and in those cases the GPL's protection is very valuable. And, for us, Bad Things really did happen.
Gnumatic sponsored GnuCash development for about a year. Like a lot of other small companies, Gnumatic got in financial trouble during the Bust. Thanks to the GPL, the work done on GnuCash during 2000 was not lost, and the developers were able to start a new company (LDG) to continue the work. This was an inconvenient distraction, but not a fatal blow to the project, as it was to the products of many other companies who went out of business during the current downturn.
Also, having GnuCash under the GPL helps us at the Linux Developers Group continually improve our tools without having to argue with clients about it. We are aiming to make the GnuCash code base a useful tool set for small-business accounting, ecommerce, and general financial solutions consulting. When we talk to clients, we don't have to try to convince them to like the GPL, since there's no choice involved. If we start from our tools, the work is under the GPL, period; that's the way the license works. We don't have any choice but to put our improvements back under the GPL, and clients seem to understand "we have to do it this way" better than "we really, really think it's a good idea to do it this way".
2) Online Banking Plugins?
by Tin Weasil
Online banking is a great feature that I would love to see incorporated into GnuCash. I realize that there are probably a ton of obsticles to making this a reality, so here is my question:
Would it be possible to incorporate some sort of perl plugin to GnuCash that would go out to a bank's web site, access the banking account information on the site, access the relevant data and then format it in a way that could be pasted into the existing GnuCash data?
My bank, Region Bank, allows customers to access their checking account via a web browser. I hate to see this resource going to waste.
Banks generally provide machine-readable account information in a couple of formats: QIF (Quicken Interchange Format), which is an old and broken text export format used by just about every personal finance program, and OFX (Online Financial Xchange), with its first cousin QFX (Quicken Financial Xchange), which is an SGML/XML protocol for both getting information and initiating on-line banking activity such as funds transfers.
If your bank provides downloadable QIF files, as many do, you can import them into GnuCash easily right now. We are working on the ability to use GnuCash's built-in web browser to log on to the bank with SSL and download the QIF directly into GnuCash without having to save to a file, but until then, it won't break your arm to download with a normal browser and import the file into GnuCash.
At the moment, GnuCash doesn't support OFX, but we are working on it. OFX support is definitely in the top 10 most demanded features; however, it's a very large and complicated specification and will take some time to get right.
Non-US users have other protocols that will have to be addressed one at a time. For example, Germany uses a system called HBCI. At least one German GnuCash developer (Christian Stimming) is working on HBCI support now, but I have no idea how long it will take.
Even given significant developer and user interest, it's going to be challenging to get environments where we can test any implementation (you need some kind of test account with somebody who runs the kind of server you wish to talk to, and they don't just give those accounts away willy-nilly). Having corporate sponsorship of GnuCash will hopefully prove to be useful here. We might also run into the kind of NDA-type issues that I'll discuss in my answer to question 5, which might get a little nasty.
So, in summary, you can do some things now to get information from on-line sources in QIF format. OFX downloads and interactive banking activity are in the nearby but not immediate future.
3) Custom Reports
Is there any possiblity or chance that custom reporting mechnisms can be added into GNUCash? (I.E. A number of rules can be set up to group certain transactions into groups and generate different reports based on other sets of rules.) It is the one thing in the 1.4 release that I thought was needed. The reports that were there seemed limited and I resorted to copying data into gnumeric to generate the reports I wanted. Does 1.6 correct this, or am I still limited to a number of default reports? Is there currently work on this area, or if not where in the code can I best look to start to add this capablity.
The GnuCash reporting system is designed to provide both a bunch of reports that are broadly customizable and a straightforward framework for adding your own totally custom reports. We are partway there on both counts, but in any case the improvement since 1.4 is pretty great.
The set of reports that ships with gnucash-1.6 is much better than the set that shipped with 1.4, and includes several totally new features, like piecharts and bargraphs, style sheets, and save/restore of your customized reports. You can do most of the standard reporting stuff to look at your income, expenses, and assets by category and within date ranges, or list transactions matching certain patterns. The reports and graphs related to stock portfolios are pretty limited, but we are trying to find interested folks to work on these and other "sophisticated investor" features during the current development cycle.
You can customize every report through a GUI configuration interface, which generally allows you to control the appearance of the report, date ranges, what accounts are examined, etc. You can also select a "style sheet" for each report. The style sheets are separately editable, so you can build and save a "business" style sheet with your company logo and so on that you can apply to any report.
Writing custom reports requires a little knowledge of Scheme at the moment, but the ability is there and there are good examples to work from. The Scheme report generation system is very powerful and allows you to do absolutely any kind of analysis that you want to do, but it's a little intimidating for new users.
We are looking at a simplified interface using something like KDE's Kugar system, which is a simple report specification language. It's open-source so we may just steal it directly. There's a useful customization "sweet spot" that we haven't hit yet (more powerful than changing colors and titles, but less than a complete new report).
4) XML and billing
Currently there are a number of XML billing initiatives such as XMLPay, VisaXML, etc... How do you see these trends influencing the design and development of GNUcash ... in particular do you think that your users are only looking for a simple view/format/verify client (think IMAP server + XML extensions) while GNUcash moves towards being the agent of record (aka a specialised ASP?) Of you do see GNUcash as a drop-in replacement for existing monolithic accounting packages? In summary, given that the market for electronic businesses and purchases (greater use of international currency, direct attachment to electronic settlement, near real-time risk management) is going to change, how do you think GNUcash should respond?
The issues here are similar to those in the online banking question above. We're working on supporting a lot of this stuff but it's a bit tricky.
We are talking to people from CheckFree and PayTrust about direct integration with their services, and we have a bit of code called gPal by Alp Toker which is a GTK Paypal interface; we're going to try to steal parts of it to add direct Paypal support in the soon-ish timeframe.
Right now, GnuCash doesn't really have the infrastructure needed for a "Make it so" button; it's designed to be a record of financial transactions you've done, not an agent for actually performing the transactions. We want to change that because people are really foaming at the mouth to get online bill payment working.
As far as the XML-based initiatives you mention, I'm not familiar with them. If they look like they will be widely used, it makes sense to try to support them; I'm guessing they will be at least kissing cousins to OFX/QFX, which means that once we get those working we should be able to reuse some work.
5) Cool stuff, but...
Is anything being done to make GnuCash competitive with Quicken and other products? The tour at the web site depicts a competitive feature set, but there's more to it than auto-incrementing check numbers: I, for one, would rather use the GPL'ed alternative, but most consumers will look for convenience-related features - for example, integration with their favorite online bill-paying service.
Though my question is about GnuCash specifically, I guess it does address the larger issue about how Open Source projects compete for market share and mind share with the products of well-capitalized corporations that can form strategic partnerships that (despite the shortcomings of Closed Source software generally) offer real value to consumers. Any thoughts?
Everything we do with GnuCash is aimed at making it competitive (ultimately, superior) to Quicken and other products. We want our program to be people's choice because it's the best available, not just because it's free (in both senses). Quicken is still ahead of GnuCash in many areas, and as you point out, sometimes closed-source companies have big advantages. All I can say is "We're working on it".
The Linux Developers Group, as a company, can make the kinds of partnerships you describe and pass the results on to our clients and the GnuCash community as a whole... but we won't be in the business of violating other people's copyrights, and that will probably mean controlling access to information we receive from third parties.
For example, people want real-time stock quotes. Well, you have to pay for that, and we would get our pants sued off if we tried to buy a feed from Reuters and redistribute it to everybody and their dog for free. We are in the process of setting up direct integration of real-time quotes in Gnucash as a paid service for our customers; the code to get the quotes is free software, but you have to have authentication to use the service. That means we can have a meaningful agreement with an information source to get the quotes and pass the cost on to our customers.
This may end up happening for other services as well. We won't write proprietary extensions to Gnucash, but there may well be information that we don't own that we can only share with customers under a specific agreement with an outside party. In these cases, the code to get the information will be free but the information won't be.
Will the next major release feature some decent documentation? Extensive documentation is the only thing I miss from GNUCash. Having only recently come to live in the US, I have enough trouble understanding the local economics, so it would be good to have a nice tutorial for my personal finance management program as a starting point.
Hey, I've *never* lived in the US, so I still have a great deal of trouble understanding just what those crazy Yanks* are up to :)
As to the documentation, we do our best, and, to be honest, I think our best is better than many of the open source projects out there. I revised, with help, a fair bit of the documentation for this release, and as well as documenting just about every new feature, we wrote a quickstart guide for new users, as well as a "what's new" guide for people upgrading for 1.6. Now, if only I can figure out a way of speeding up the process of taking a squillion new screenshots (didn't get that finished, but I'll try to get them done for 1.6.1) I'll be happy.
However, what people like yourself seem to be asking for is a tutorial on basic personal accounting, using GnuCash for the examples. We provide a little of this in the documentation (for instance, Chris Browne wrote some nice clear explanations of depreciation expenses) but there's certainly room for a lot more of that kind of thing. What would be *really* ideal is if somebody wrote a book on "managing your personal finances with GnuCash" and possibly even bundled a GnuCash CD. Hmmm, there's an idea . . .
I also wrote an introductory tutorial-style article for the April Linux Journal. Unfortunately, it's not online (unless you're an LJ subscriber), and it talks about GnuCash 1.4.x so some things are a little out of date, but if people can find it, it might help a little.
7) Palm Conduit?*To an Aussie, a "Yank" (or "Seppo", the derivation of which is kind of amusing but a little difficult to explain) is a citizen of the US. While it's often prefixed with "crazy", "loony" or a variety of epithets, we're casting slurs on all US citizens rather than a subset :)
I'm likely not alone in my need to be able to sync my finance software with my Visor. Are there any plans to link GnuCash to a Palm-based money manager program, a la Quicken and PocketQuicken? Or are there any plans to develop a new, GPLed "PocketGnuCash"?
I have a Palm myself, and I'd really like this feature. I looked at doing something about it ages ago (just using the Palm's builtin expense tracker), but the old 1.4.x binary file format didn't support storing the required metadata (whereas storing metadata with the new XML file format and the engine improvements is almost trivially easy). However, by the time the new file format arrived, I was too busy trying to write reports and other stuff.
The PalmCoins project, moreover, is working on a proper GPL'd Palm-based financial application. Their stated goal is to fully support synchronization with GnuCash, and we'd be overjoyed to have that kind of functionality available. If you really want it too, go help these guys out!
Another possibility that we have started thinking seriously about is raised by the availability of Linux-based handhelds. The GUI-independent parts of the GnuCash codebase are actually pretty small and wouldn't tax a reasonably well-specified handheld device. Combined with a stripped-down GUI, a handheld version of GnuCash would IMHO make a pretty enticing application for handheld users and manufacturers . . .
8) Integer based currency type
A while ago I was hesitant to use GnuCash because I discovered that it uses floating-point numbers instead of integers to store currency values. What have you done to work around the round-off errors inherent in such a system, and do you plan to migrate to an integer based system? If so, when?
GnuCash 1.6 stores all quantities and performs all calculations using an exact (integer-based) numeric representation. Our code was the result of extended, er, "discussions" on issues of currency representation and rounding, and consequently it provides pretty comprehensive facilities for determining and specifying the appropriate precision, and exactly how results should be rounded (or not) to that precision, if required.
In practice, errors that were actually the fault of the floating-point representation were very rare, but "very rare" doesn't really cut it if we want GnuCash to become a <buzzword>enterprise-ready</buzzword> business accounting system. Getting this stuff right took a lot of time and effort, and doesn't result in any new user-visible features. We really have tried very hard to get the bedrock good, so that we can add even more gloss in future releases.
Moreso than simple home accounting software, I'm interested in electronic tax filing. Any plans to integrate GnuCash with any existing filing services, or to integrate tax features into the program (if there are any, I apologize for overlooking them)? As tax preparation and filing are services many of us are comfortable paying a fee for (especially online), I don't wonder if there isn't a revenue stream in there somewhere, as well.
There are some tax-preparation features in GnuCash 1.6 (via the Tax Report and TAXTXF export), and we hope to get more soon. The problem with tax preparation is that the rules are constantly changing and they are different for every town, state/province, and country.
We haven't really looked at integration with existing filing services, but that sounds like a pretty reasonable approach. You'd have to ask the author of the Tax Report, Richard "Gilligan" Uschold, how his current work could lead to that.
My only concern with electronically submitting tax forms is that I'd imagine you could face large fines (or, highly unlikely as it may be) prison, for submitting an incorrect tax return, not to mention the risk of security holes . . . so it's a feature that you'd have to plan with some considerable care. However, I'm not sure what the other developers, particularly US-based ones, think of the idea.
One area of tax preparation which I do personally intend to look at is GST/VAT/Sales Tax. In jurisdictions with a value-added tax, the ability to track and conveniently report the amounts of that tax collected at sales time, and included in goods purchased by your business is essential. There has been some debate on the lists as to how we tackle it, and hopefully soon we'll be able to resolve such debate and actually get on with implementation.
10) Illuminati & Mafia (+5, funny)
I heard that GnuCash is the Accounting program of choice for the Mafia and Illuminati (the whole Trilateral Commission, I believe). My question is: Do you plan on adding features for efficent money laundering to help your best customers?
/me checks over his shoulder to make sure no-one's looking
Well, actually, the true world conspiracy is cricket. The Mafia and Illuminati are really just small pieces in the plan - as is Linux. While big US corporations attempt to lock up American sports in pay-per-view and sponsorship deals, we're steadily working on open-source server and streaming media solutions, which we'll spread far and wide . . . and all that will be left to broadcast is . . . cricket. We'll make ourselves incredibly rich selling cheap-n-nasty sports memorabilia to every sports bar in America (cricket has such long periods between any action, it's perfect for lots of advertising slots), as well as online betting with reputable subcontinental and middle eastern bookmakers - and that's where GnuCash fits in . . .
oh wait, there's a bunch of guys in suits and sunglasses at the door, oh, f*&Y*&, help me please, they're dragging me away from the keyb67*
- Robert Merkel