While working on Regdel, I've again come across ledger-cli, a C++ software command line application which uses a text file for bookkeeping information. Ledger-cli is primarily a reporting system, i.e. it is not used for data entry, data manipulation, or similar. This was done on purpose, and in many cases that's a good thing.
I've dabbled with ledger in the past, but this time I took a serious look at it, and I'm actually starting to use it to some degree. Not for my main bookkeeping database, but when I want to quickly make a note of a transaction. I simply jot down the transaction into a text based ledger file. I'd considered doing this before but was concerned about managing the file(s), and instead added a feature to PBooks for entering simple notes. Nowadays, however, thanks to git I'm feeling a lot more comfortable with basic file management.
The significance of all this to me is that ledger-cli and its use of static file formats make it easy for a single person to quickly enter a couple of transactions without fear of being able to summarize the contents. The ledger-cli parser and memory model of the data can output the entire dataset as XML, which really liberates the entire kit-and-caboodle. That is really awesome when you think about it, and its importance should not be underestimated.
While ledger-cli can easily handle the processing of hundreds of thousands (millions?) of entries, I loathe to think of the work involved in the data entry. The ledger file format attempts to support faster entry of data with the use of xacts, but I can't comment on those as I've actually never tried using them. With PBooks, I developed a method of importing data from CSV files, but before I get into that, let me explain a tiny issue I have with the name and terminology of ledger-cli.
I find it ironic that ledger calls itself ledger, because in bookkeeping terms, I'd consider the file its centered on a journal. In my experience, a journal is the point of initial data entry, and journal entries contain multiple accounts. Conversely, ledgers are account focused, with references back to the original journal entry.
Not a big deal, but relevant. With PBooks, I wrestled with workflow for awhile because traditionally, data is entered into the journal as transactions take place, but in our technological world, I found it easier to leverage the CSV formatted data exports of my online bank accounts - ledger data.
The solution I came up with was to import CSV account data into the ledger as "unmatched", and then give the user the ability to match each transaction to one or more corresponding account(s). It works well for me in practice, and it was possible to created shortcuts using the transaction memos. I consider that workflow solution to be similar in some ways to how ledger-cli uses xact statements.
While the philosophy of ledger is truly solid, reliable, and even elegant (and its starting to really build momentum and traction in the open source world), I'm not sure how realistic it is for the majority of small businesses to use for their bookkeeping and accounting purposes. True, its possible to use something like GnuCash to manage a ledger file in XML, but I don't think that makes much of a difference for reasons I won't get into right now.
Instead, let me write about Regdel. I've been considering a lot of different ideas but haven't come up with a clear direction. I'm thinking about:
- graphical user interfaces
- data storage
- access controls
- work flow
- reporting
- data management
- automation
- revisions
- backups
More to come...