GnuCash - A Call For Help
sedition writes "GnuCash developer Benoit Gregoire has written the State of the GnuCash Project. It is a call for help to the Open Source community regarding the open-source accounting software for Linux, Mac OSX, and more. GnuCash is one of the largest (287,853 lines of code), but least publicized Open Source projects. Now it needs developer support, as its future is uncertain."
For a moment there I thought RMS was claiming to have invented money.
10,000 GNU dollars to the project.
Why have the crispy US dollars backed by the Treasury and US Government when we can have GNUCash?
How did it get so many lines of code if it isn't very well known? Do we have one coder slaving away on this one?
Sorry, I know I'll get modded down to nothing, but I've got Karma to burn and this just cracked me up:
Mortgage and Loan Repayment druid and many, many others.
I imagined the barbarian horde from those Capital One "What's In Your Wallet?" ads fighting it out with the Loan Repayment druids, like something from Star Wars II or The Two Towers.
Stressed? Me? Of course not. Stress is what a rubber band feels before it breaks, silly.
gnucash.org seems to be "benefiting" from the publicity. Here's the first part of Benoit's post for those who care:
State of the GnuCash project, a call for help
The GnuCash project is having a hard time. I think most everyone agrees that GnuCash is a critical piece of software for the Linux desktop. It's also one the largest free software projects. How big is it? GnuCash currently has 287,853 physical source lines of code (SLOC). For example, had the current GnuCash CVS been included in RedHat 7.1, it would come in 21st position in code size (see http://www.dwheeler.com/sloc/). At that time, the current GnuCash CVS source would have been pretty similar in size to qt, postgresql or perl, about 60% of Gimp and between 12% and 16% of Xfree, Mozilla or the Linux kernel. Although GnuCash comes up in every discussion of needed software to get Linux on the desktop, the GnuCash project currently has only about seven active developers (active being used very loosely here, considering I included myself) and enjoys far less exposure than many projects of a similar size.
We may be headed for a dead end if we don't reorganize and refocus our efforts. GnuCash badly needs more manpower (not just developers), and needs to get it quickly.
How did we get here
Of course, every project could always use more developers, but the consecutive demise of both Gnumatic and Linux Developers Group caused the loss of most of GnuCash's core developers two years ago. The few volunteers that were left focused on new features, in the hopes of attracting users and hopefully also developers. We've managed to take it to 1.8.5 (to be released in a few days), and in the process GnuCash gained Small Business features, Scheduled Transactions, a completely new import UI with Bayesian filtering, OFX and HBCI support, Mortage and Loan Repayment druid, and many, many others. We are very proud of it and we clearly have more users judging from traffic on gnucash-users, and all should now be well in GnuCash-land.
Not quite. We didn't attract many new developers and all those new features have to be maintained and debugged. They also represent a huge tech support burden, since most of the features were not documented properly due to time constraints. GnuCash has grown too large for the current developers to properly debug and maintain the current code base, add new features and write documentation, all at the same time.
I hate to admit it, but in our quest for new features, choices had to be made and a lot of important things are currently being neglected. If the GnuCash project can't manage to attract more contributors and refocus the efforts of those it already has, it's going to become unmanageable. We often say that Linux would survive even if Linus got hit by a bus. Well, right now I am not too certain that GnuCash would currently survive if Derek Atkins got hit by a bus.
So now I'll try to suggest some solutions...
(that's as far as I could get)
Still hoping for Gentle Treatment...
- Write free software
- Ask for developers on Slashdot to share the pain with you
- Profit!!
Impressive!If this software is so important then why not raise some money and pay some developers to work on it. If the creators really believe in the project they should be confident that they'll make the spent money back in support (or at least t-shirt sales)
GNUcash is so complex. Why anyone would want to develop or even usefor the GNUcash project is a mystery to me (maybe if you're an accountant). Better to develop for Kmymoney2, a nice KDE/Qt C++ app, which behaves more like Quicken and Microsoft Money, the two most popular money managment apps. Kmymoney2 is the only real alternative to GNUcash for the future in my opinion. Let GNUcash die, and some new apps will come...
Why don't we have GnuCash selling licenses to those who actually need and are willing to pay for it? This way the company can hire more people if the project turns out to be interesting and needed by many people. It's radical, but seems to work for lots of other little guys.
As someone who uses Gnucash (I'm an accountant, too) I had no idea the project was in trouble. This is one of the best programs I've come across in the Linux world, and I think it's superior to similar commercial packages. The operation is closer to how you're taught to do accounting, and I love it for that. Well, if someone out there knows how a sympathetic non-coder could lend a hand, let me know. Yes, I did RTFA, and I didn't see a way to contribute without knowing how to hack code.
IAAL
...a decent web server.
-Looking for a job as a materials chemist or multivariat
"You have been recruited by the GNU League to defend the frontier against Gates and the Quicken armada..."
GNUCash calls for help ?
or GNU calls cash help ?
I personally like the idea of having alternatives to proprietary software.
I tried to get my wife to use it. She was taking a personal finance class that required Quicken. I thought we could give GnuCash a try and maybe save some dough/impress the teacher.
Boy was I wrong. I figured out the take-out-of-one-account-to-credit-another system, but I couldn't figure out how to put money into the system.
Anyway, we spent a few hours on it, but eventually just forked over the dough for Quicken and rebooted into Windows.
I'm not wishing death to GnuCash, but it is in need of huge improvements to be up their with the other accounting (personal and otherwise) that I've seen.
I'd rather have someone respond than be modded up.
Here's the rest. I'm not posting AC because of the new troll technique (posting "creatively modified" mirror text).
What core developers should do to help future developers
There are many reasons for our difficulties to attract developers and other contributors, but it all comes back to the same problem: real or perceived, the barrier to entry is too high. To get more developers, we must make it easier to contribute to GnuCash. "Casual" hacking on GnuCash to scratch an itch is much to hard, even for an experienced developer.
Work on the developer documentation problem
There is no complete and current architecture and API reference. Now that we've put the doxygen plumbing in place, we must make sure that ALL functions that are in public headers ARE documented, even if only by saying "Document me!", so the doxygen docs become truly authoritative. Then put the docs on the web site. We must also write a report writing Howto: We already have some very powerful reports, but this is the single most common offer for help we receive "Hi, I'd like to write "foo" report for GnuCash, can someone help me or point me to documentation on that subject". Sometimes I wonder if anyone knows anymore... So the answer is always the same: 'there isn't any; use the source Luke'. We are wasting the chance to hook countless new developers.
Fix core capabilities in the engine
Existing developers should focus on architecture issues and completing existing core features that only they can realistically tackle, such as Lots (which are needed to support accounting periods) or fixing the problems in the scheduled transactions, so that new developers can build on that functionality.
Improve interoperability with other software or new modules
GnuCash has a great, powerful multi-user financial engine that many people ask to plug into. Unfortunately much of this power is locked away. There is no way to interface with a running GnuCash (the RPC backend and perl bindings have bitrotted), there is no way to start a new instance while passing parameters like "import this file". We need a wrapper that will start GnuCash if it isn't already started and pass API requests to it, with or without GUI. The current module system needs to be completed or replaced. It's hard for new developers to integrate new modules in the build and menu system (we need a howto on that too...). Also, data import isn't enough, we must also support export to inter-operate with other software. (LibOfx should get us there if I can just find time to work on it).
I think fixing/developing external interfaces and writing additional import and export support should greatly help our developer crunch in the medium term, by consolidating part of financial software development in the free software ecosystem. We have received many, many inquiries from people wanting to integrate gnucash with (name of web system, database, payroll, kde front end or whatever). We can't afford to loose these people, whether or not the core developers like their pet project. We must use the gnome 2 port as an opportunity to finish/cleanup/document our interfaces and from then on answer "I don't know if your idea will work, but you're welcome to try; here's the relevant documents to get you started."
What developers should do to help users and decrease developer load
Make sure the mailing lists are easily searchable
And/or document how to properly search them (Google isn't cutting it).
Get more people write access to the website
We have received many offers to help, but turned most of them down for no good reason. The website is nice, but it isn't up to date, it's a source of frustration, misleading to users and future developers, and pointlessly increases traffic on gnucash-user and the #gnucash IRC channel.
Quickly implement a Wiki or similar system
This will allow us to have an effective place to point users on gnucash-user
Stressed? Me? Of course not. Stress is what a rubber band feels before it breaks, silly.
...in brinance a command-line driven ledger app. I like it. Have a look.
I must admit that I have NEVER had Gnucash crash on me. Not even once. No lost transactions, no corrupted files, nothing...
Of course I run Quicken, oh well
I have mod points and I am not afraid to use them
If only it worked with Gnome 2? I mean honestly, even after installing Gnome 1.4 in hopes of being able to use GNUCash, I got it to run only to notice that there was no text, anywhere. None. Maybe thats a problem that only I'm lucky enough to have, but I'm sure if it didnt take so much to use it, more people would. It seems silly to have to install an entire (or at least most of) an old version of a "complete desktop environment" just to run one app.
Chaos is Divine *
Thus, I think the ideal solution would be for the project team to generate revenue, either by support or find a paying customer (who would allow release of the source). Suppose they wrote a book and released a free CD of the source code with it? Would that generate enough royalties? This may be hard in the current economic climate, but I think it would give them their best chances. Would vendors who are making big Linux pushes be interested? Have the project leaders directly solicited input (and contributions) from these vendors (e.g. IBM)?
Actually, although you are right about it having a Byzantine list of dependencies--it has NOT been ported to Gnome 2 yet (that is part of the problem!), plus it is the only application of its kind. In my mind this is a Killer App (TM), which is one main reason I have for using Linux and staying with it...I am certainly on my way over to #gnucash to help out as much as I can.
"Life is tough but we're tougher. You only get what you give, so give all that you've got." --Tony LaRussa
There are other projects that need help, to succeed they need all the help they can get. Heres just a small list of desperate projects.
1) Mozilla, one of the largest projects in open source, bigger than KDE and Xfree86 combined.
2) GNOME, the popular desktop. It needs more help in polishing its rough spots and needs features.
3) XFree86, this thing needs a lot of help in cleaning up its messy codebase.
4) Konqueror. The web browser partially developed by Apple for KDE. Its getting good at rendering websites but it needs a clean up and a good debugging.
6) Bochs. If you want to be able to emulate more than a 640x480x4 display, then give it your code.
7) Abiword. This word processor needs better Msword support and proper table support.
8) Kbounce. Its the best game for linux! help those balls roll!
9) gnu/hurd. Will this thing ever get usb support? Maybe you could help.
10) Linux kernel. Want it to keep running reliable and support all the new goodies. Then download 2.6.0-test3-bk2 tonight!
And theres hundreds more. Instead of complaining on slashdot that your favourite probram isn't working properly, help fix it!
Why is Gnucash unpopular? Because 3 out of every 4 people I've talked with who've wanted to try it couldn't satisfy the dependencies for their distribution (most of these people aren't newbies to Linux either.)
That said, it truly is in a league of its own in the Linux software world, and I hope it finds what it's looking for in new developers.
Disclaimer: I haven't used it for a year or more, so it may have overcome some of this already
Damn, imagine what I could do with a quarter of a million lines of python code. Seriously C is a great language for systems work, but writing accounting packages in C is just not the way to go.
Got Code?
I gave up on trying to use GnuCash long ago due to the impossibility of compiling it, and getting it to run.
They used large numbers of libraries, which you had to locate yourself. No links to the proper versions either. You needed specific versions of those libraries, some no longer available from that libraries web site, and some pulled from CVS at some unspecified time (and no other time would work).
The database it used was their own creation (why should we use an existing library for the database? That would only add another dependency, but here's another error logging library that we can't live without). It was unaccessable to mere humans, and messed up the database all too frequently.
After they added yet another round of libraries (several of them not yet available on the web), I finally gave up. It was simply unbuildable and unusable, and I could not forsee it as ever becoming usable, let alone ever be able to compile it.
Who would win this election: Andrew Weiner vs Andrew Weiner's weiner.
Well, it sounds good in theory, but really, all you're gonna get is "In Soviet Russia, MONEY watches YOU!" comments and goatse.cx links hidden in the code.
"To get more developers, we must make it easier to contribute to GnuCash. "Casual" sex with Cmdrtaco to scratch an itch is much to hard, even for an experienced developer"
What if this wasn't a troll?
God Help Us!
Life is hard, and the world is cruel
I am not sure what affords GnuCash the title of "least publicized," as I've heard the title many times and infact it came with RedHat whenever I last installed that.
/. that two major things keeping me away from using Linux is the lack of any sort of decent finance management software and an Outlook-type thing. My whole life is in MS Money and Outlook.
Some months ago I said on
I heard things about GnuCash being hopeless to install unless it came packaged with your distro, so I was excited when I found out that the version of RH about to come out will include it.
Thus began my most-recent attempt to switch to Linux. I exported my Outlook archives into Evolution, and my Ms Money accounts into GnuCash.
It lasted about a week. By the end of the week I was thoroughly dissapointed with the mediocrity of both of the pieces of software. Yes, they are usable. yes, GnuCash added up numbers together, but no,the user experience was mediocre compared to what I was used to with my Microsoft applications. That, and the shitty sound support, eventually made me say "fuck it" and switch back to Win2k and I'm happily using it since.
I think most everyone agrees that GnuCash is a critical piece of software for the Linux desktop. Yes. Absolutely....
GnuCash is a long program (well at work we deal with about 150 times that much code..) but from a user perspective of someone who's known better, it sucks. I am glad that the focus isn't only to find more coders. What this thing needs is some normal human beings using it and saying "you know what, it's NOT acceptable that window A obscures window B and freezes while window B is waiting for input from me." It needs, I am sorry to say, Quicken or MS Money users, who say "It was really easy to do X, Y, and Z, but here, I can't even figure out if it's possible,"
Good luck to this project, absolutely. Maybe - evnetually - projects like this will mature and become useful to people who don't care about open source and don't hate Microsoft. Yes, GnuCash appeals if you're maniacal about those things. It does not appeal if you're looking for better and more useable software. Unfortunately, a lot of Linux stuff can be described thusly.
Ecce Europa - Web Design for Business
I was thinking of writing the exact same thing.
:)
If it were in Python, I might volunteer to help myself.
Seriously, can anyone name ONE SINGLE advantage that C (or even C++) has over Python for this type of app? Certainly, Python is fast enough -- so what if it has to cycle through all your records once in a while. That's not going to take all day. With C/C++ you have to worry about all kinds of low level crap like buffer overflows. You shouldn't have to think about that kind of thing when writing applications that involve business logic. You should only have to focus on the application logic, something Python lets you do much better than C/C++ does.
This fits into my pet theory of successful open-source projects rather nicely; every single flaw except one boils down to a lack of documentation.
"Work on the developer documentation problem" - obvious
"Fix core capabilities in the engine" - the exception, though one could stretch and observe that a lot of the problem is probably that nobody has a clue what is broken due to lack of documentation.
"Improve interoperability with other software or new modules" - fundamentally, the fact it was "non-interoperable" in the first place boils down to a lack of documentation, because why bother adding hooks to anything if nobody can figure out how to use them in less then a year? Adding hooks is easy, relatively speaking, and the payback is huge; the only reason to not do it is if you realize nobody could possibly use them if you added them.
"Make sure the mailing lists are easily searchable" - obvious
"Get more people write access to the website" - obvious
"Quickly implement a Wiki or similar system" - obvious
"Spend less time answering some types of questions" - they should be able to point people at a FAQ, a common type of documentation
If it isn't documented, it doesn't exist. GnuCash's problem is an excess of non-existence, which is rather odd considering how many lines of code it has.
It is so much easier to start the documentation in the first place, and keep it up, then to get to 250,000 LOC and just then try to start. Sometimes clever coders can actually be a liability to a project, because they can plow on where lesser men and women would have needed to pause, document, possibly re-organize, and simplify.
my $s = 'DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS';
$s =~ s/DEVELOPERS/DOCUMENT IT/g;
I don't mean for this to be a troll, but, really, Linux is never going to have applications for end users under the open source model if the applications being developed are not glamorous in some way.
GNUCash... what's that? What's sexy about accounting?
You aren't going to get people to work on that unless you pay them, or, they want to write their own business rules engine. So, either finish GNUCash on your own, or, someone else will step up to the plate with a better, more elegant model.
Throwing more bodies at a problem is a Microsoft approach and the whole idea behind oss is that hopefully someone will step up to the plate with that really radical idea that simplifies everything and gets you from 250k lines of crap to maybe 50-100k lines of sane code.
One of these days I'll learn to not post when I haven't had a beer...
This is my sig.
Version 1.6 has crashed on me a few times. More frequently, my X server crashes (Xwin32 doesn't always enjoy GnuCash for some reason). When that happens, I lose the unsaved transactions. I'd like to see it either append to a lightweight transaction (if you have a large ledger) or save after each transaction is changed (better for smaller ledgers). This way, even if you do crash, you only lose the what you haven't entered.
/ \
\ / ASCII ribbon campaign for peace
x
/ \
Well I admit I went ahead and read most of the comments while I was waiting for the server to respond.... And a lot of the criticism of the GnuCash team sounded reasonable. But, after reading the FA, I have to say... Go GnuCash, and that accountant guy who loves it so much should write a book about how to use it, in collaboration with the developers who are currently documenting the API.
/. community... they didn't come here, we (or, at least the /. editors) brought the story here. So, how about some constructive responses to their plan? I think if they can get half of it done in the next few months, the project will live and evolve for many more years. Sounds like the compromise of using C and Scheme could work great here (you Python developers are trolling), as long as the core and plugin functionality are well divided. Not knowing what their code looks like, I wondered how well that has been done to date.
Enough of the bitching from the
On a related note, I would suggest one more thing to those who wish to see this plan bear fruit: Reduce the dependency tree!! That will need to happen, any way you cut it. I'm sure this is possible if the developers attack it from all possible angles.
----
Not to be confused with Col.
If I want to deal with a quarter million lines of dependecy-laden code that the original developers can't make serve the purpose... I just go to the office.
Pass.
(Or is it a quarter billion LOC? I can't tell the difference anymore either...)
Good luck, though. After you turn it around, be sure and drop us a note saying how, k?
"Consider yourself a member of a virtual corporation with Mr. Torvalds as your Chief Executive Officer." - Linux Advocac
GnuCash, from the begining, has suffered from a major disconnect between the developers and its (potential) users. Besides the absurd dependency problem which makes installing it nearly impossible, after six years in development, it STILL has no true online banking capability... how is this possible?
Yes, there are many barriers to implementing this capability. But the project has never given it the priority it needs (and seems to still be unlikely to... Gregoire says he will work on it "if I can just find time").
Just using Mozilla isn't good enough. Using GtkHTML makes the GUI far, far cleaner and lets us embed graphs in ways you simply can't do using Mozilla.
There are so many things wrong with the standard Quicken format that your comment is almost comical - chief amongst them being that there is no standard Quicken format. It is a complete clusterfsck, and I take my hat off the developers who managed to make head or tail of it. As for a text format, that's what XML is, and parsing it is a no-brainer in just about any language you care to name. Perhaps you'd care to write a robust parser for your wonderful error-free format?
As to the general thrust of your comments, yes, it would be nice if a few gnome libraries were merged IMHO, and in hindsight maybe Python would have been a better choice as a scripting language (not because of the merits or otherwise of Scheme - Scheme is a wonderful language) but because it would have lowered the barriers to entry for GnuCash development. But back when I was a developer, the general view was that it was our job to write software, and it was the job of distributions to package it up so that Joe Average didn't need to compile it himself. Debian always managed to make it a no-brainer install. Why can't every other friggin' distro manage it?
Any sufficiently advanced technology is indistinguishable from a rigged demo
--Andy Finkel (J. Klass?)
It is not perfect, and maintaining documentation is hard work, but compared to many other projects the GnuCash codebase is extremely clean and relatively well documented, unless it's deteriorated horribly since I last looked which I doubt.
GnuCash's user documentation has always been pretty good, though I may be biased because I had a major hand in writing the docs in 1.6. The big problem with documenting GnuCash is that most people not only need to learn how the program works, to use any accounting software they need a tutorial in accounting 101, which is not simple and varies greatly from country to country and business to business.
AFAICT the biggest issue is simply the lack of people coding on it. Maybe people get scared off by Scheme, maybe it's lack of sexiness of accounting software, maybe it's that people assumed that Gnumatic/LDG were still funding development, maybe it's just that none of the GnuCash developers (except maybe myself at the time ;) )are fame-seeking publicity hounds. In any case, here's hoping some enthusiastic newcomers will help out.
Any sufficiently advanced technology is indistinguishable from a rigged demo
--Andy Finkel (J. Klass?)
The reason why we used the GNOME libraries is that they provide a bunch of stuff that otherwise would have to be recoded by the developers. Is that so hard to grasp? I am befuddled why anyone would develop Un*x end-user apps without taking advantage of the facilities that GNOME or KDE provide.
Any sufficiently advanced technology is indistinguishable from a rigged demo
--Andy Finkel (J. Klass?)
I know no one wants to hear it, but I personally think this app is dying to be ported. I mean apache and mysql are and they're both huge successes.
Would this be the first open source windows accounting package?
The man who trades freedom for security does not deserve nor will he ever receive either. - Benjamin Franklin
Let's replace a few words:
"But many people have said [that] Linux is NOT a replacement for a desktop operating system, thus Linux does not satisfy the home user or the business user's needs. And look how many years it's taken already. I say move on and write a new program."
I say eat it. I took accounting in school, I keep track of every last cent that passes through my life, and GNUcash is excellent. It took maybe 30 minutes to get started, and several more to figure out split transactions, but that was definitely worth it. Yes, there are areas that could use improvement, but saying "I don't like it, my friends say it's bad, start over" is idiotic.
[On a side note, it's a major failing of the educational system in the US that NOTHING is taught about budgets, finances, etc. in grade school. At least the importance of keeping records should be impressed. GNUcash, a program that keeps track of things correctly, should be much more popular.]
WMBC freeform/independent online radio.
Well, we have GnuCash here that is in danger here and it has no way of exporting your data. Now there is a scary thought.
One thing I have to say is that the most important feature for me in a financial app is cross platform use. Because of that, I chose to spend money on Moneydance. It's written in Java and has great support. I run it on my Mac at home on both my Windows and Linux partitions on my laptop.
If you prefer to go the free software route, there is jGnash, whch will also run on various OSes, becuase it's also written in Java.
GnuCash is good product, but it has way too many dependancies and relies way to heavily on Gnome. Because of that, it can't be ported to Windows of MacOS X, even though there are native GTK libraries for both those environments. Perhaps the GnuCash team should focus on making a really good accounting engine and allow others to wrap GUIs of any kind around them.
A personal financial app is very important to the Linux desktop. I think it's far too important for the application to be in jeapordy of disappearing. Perhaps someone like Ximian should add this to their list of software, or the FSF should turn around and get some people coding full time on this with a grant.