Gnucash is a double entry accounting program originally started as Xacc in 1997 a student project by Robin Clark. Development is now funded by Gnumatic.
Conceptually it's a spreadsheet with
Documentation with gnucash will get you started, but you have to know something about double entry accounting. You'll need to get this from somewhere, e.g. an accounting text book.
I'm running gnucash v1.4.11. Of the programs I've got to run, this was my most difficult install ever. Gnucash doesn't need to be configured, it just runs. (Sendmail on the other hand is easy to compile, but wins the "most difficult to configure" award).
Things to watch for installing gnucash.
The problem is the libraries - gnucash requires many libraries. You do get a list of the libraries, but the list was long, and the library compiles were problematic, and I began to ask myself if gnucash maybe didn't really need all those libraries. Instead I let configure halt when it found a library missing. I then went off and compiled that library. At least that way I got the reward of seeing each library being accepted by gnucash configure as I compiled them up.
These two Berkeley DB libraries are incompatible (and the incompatibility is well known and loudly declared on the Sleepycat website) - the header files for the two incompatible versions have namespace collisions. The configure file doesn't account for the name space collisions. Proposed fixes in the various gnome mailing lists don't work. I don't know how the gnome people can compile this library, their configure script doesn't work.
In the middle of this I despaired of getting the compile to work and in desperation (shudder) tried installing an rpm binary. First I had to compile up rpm, since I don't have rpm on my machine. I downloaded the rpm-4.0 tar.gz file. Well you won't believe it but rpm-4.0 from RedHat requires both of these incompatible Berkeley DB libraries too. I didn't realise this and blithly compiled rpm-4.0 from the tar.gz file, to find that the resulting binary segvs. (I do remember a RedHat person telling me there were going to be problems with the Berkeley DB versions, but ignored his warning as I always compile from source.) There is a fix on the web (by someone outside RedHat). You put recompile the two Berkeley DB libraries after a few patches and put the libraries in their own directories, and the header files in their own directories. I got rpm to compile on 3 machines using these instructions. The rpm ran on 2 of these machines, and on the other (supposedly identical) machine it segv'ed.
Once you've setup Berkeley DB this way on your machine, anything else that depends on Berkeley DB won't run anymore. Presumably I can recompile/fix those programs too, but do we really need to code that depends simultaneously on two incompatible libraries?
I never got that library to compile, but found a version older than recommended by Gnucash that compiled and worked fine with gnucash.
It took about a week of scratching my head before I figured out what was going on. The files are all ascii - I concluded they are scripts. This had been my first thought, but since there was no #!/usr/bin/foo at the top, I tried a few other tangents first. Then one day I realised that the reason there were no Makefiles was that they didn't need any. I figured out where to put them by running gnucash under strace and watching for the calls. They live under /usr/local/lib, a place where I'd normally put binaries.
The large number of libraries can only be expected for a large project, where you use other people's code, over which you have little control. Presumably when the Gnumatic people start getting revenue from gnucash, they'll be able to write a configure script that handles the compile of the libraries too.
v1.6 is just out (Jun 2001). This is supposed to be a big upgrade from 1.4.x. I'm sure it is. It requires 60 dynamic libraries, according to the people at slashdot, a significant increase over the number required for 1.4.x. I hope the compile is better than for 1.4.x. Since I really don't know which of all the files I compiled up constitute my gnucash-1.4 installation, I'm afraid that a gnucash-1.6 compile will break my working gnucash and I won't be able to recover it easily. I would rather have a working version of gnucash than a non-working latest version. A CD is supposed to be coming out with the gnucash-1.6 binaries. I'll wait for the CD with the 1.6 sources and configure script.
At the time, I was contemplating exiting the techie world and doing an MBA. The homework took all my weekends for that summer, I was overwhelmed by the workload, having to listen to 6hrs of lectures (2nights x 3hrs) each week before being able to do my homework and assimilate what I'd heard. It seems I don't have tmp buffer big enough to hold 6hrs of classes. I had no idea what I was doing and decided that I definitely should never ever think about doing an MBA again, that I would never understand accounting and I should definitely stay in the techie world. What was even worse was that I did reasonably well in the exams when I knew I didn't understand anything.
One person I knew keeps track of his stocks and shares with Quicken. It seems like most of the world manages to keep track of their finances without too much effort at all.
He spent a lot of time on the phone with me when I first setup the business and then when I converted to gnucash, before I had much of an idea what I was doing.
With gnucash running, and with the accounts setup for my business, and with advice from my accountant friend, I pulled out my accounting text book from 15yrs ago and it made sense this time.