The quest for a free-software accounting system suitable for a business
like LWN continues; readers who have not been following this story so far
may want to look at the previous installments: the
and a look at Ledger
. This time around, your
editor will be evaluating PostBooks
, a system that differs
from Ledger in almost every way. PostBooks, as it turns out, is not without its
problems, but it might just be a viable solution to the problem.
PostBooks has been around as a commercial project since 2000 or so; it made
the shift to a free software project in 2007. It is, however, a classic
example of a corporate-controlled project, with the corporation in this
case being a company called xTuple. The license is the "badgeware"
Common Public Attribution License
(CPAL), which requires the acknowledgment of the "original contributor" on
splash screens and similar places. The CPAL is recognized as an open source
license by the Open Source Initiative, but its attribution requirements are
not popular with all users. The CPAL has not taken the world by storm; it
has shown up in a few business-oriented projects like PostBooks, though.
Additionally, PostBooks is a project in the "open core" model: the core
software is open source, but certain types of functionality are reserved
for proprietary enhanced versions requiring payment and annual support
fees. See the xTuple ERP
editions comparison page for an overview of which features can be found
in which versions. One need not look long on the net to find users
complaining that one must buy a proprietary version to reach the necessary
level of functionality, but your editor's impression is that the free
edition should be sufficient for a wide range of companies.
At a first glance, the PostBooks development "community" reinforces the
impression of a corporate-controlled project. There are no development
mailing lists, for example. The source repository lives on SourceForge;
a look at the revision history shows a slow (but steady) trickle of changes
from a handful of developers. The developer documentation says that
"The majority of features added to the core are added as a result of
sponsorship," but also suggests that outside developers could be
given direct commit access to the repository. One has to assume that
attempts to add features found only in the proprietary versions would not
PostBooks is written in C++ with the Qt toolkit used for the graphical
interface. One result of this choice is that the code is quite portable;
the client can run on Linux, Windows, and Mac OS systems. All data
lives in a PostgreSQL database; among other things, that allows clients
distributed across a network to access a single database server. PostBooks
is an inherently multi-user system.
As far as your editor can tell, no even remotely mainstream Linux
distribution packages PostBooks, so users are on their own. Building the
tool from source is not a task for the faint of heart; the code itself
comes with no build instructions at all. Those instructions can be found
on the xtuple.org
web site; among other things, they recommend not using the versions of
Qt and PostgreSQL supplied by the distributor. Your editor's attempts to
build the system (ignoring that advice) did not get far and were not
pursued for all that long. One need not look for long to find similar
stories on the net.
What this means is that most users are likely to be stuck installing the
binary versions (32-bit only) shipped by xTuple itself. Downloading a
from a company's web site and feeding it to a root shell is always a great
way to build confidence before entrusting one's accounting data to a new
application. The script offers to try to work with an existing PostgreSQL
installation, but your editor ran into trouble getting that to work and
ended up letting it install its own version. There are license acceptance
and registration screens to be gotten through; as a whole, it feels much
like installing a proprietary application.
One nice feature is the provision of some sample databases, allowing easy
experimentation with the software without having to enter a bunch of data
The initial PostBooks screen (shown on right) reinforces the "proprietary
software" feeling; it consists mostly of advertisements for xTuple products
and services. From there, though, it's one click to the top-level features
of the program, divided into relationship management, sales, purchasing,
accounting, and manufacturing. Finding one's way around the program takes
some time; there is a lot of functionality hidden away in various corners
and the correct way to get there is not always obvious. The tutorials provided by xTuple
(free online, but payment required for the PDF version) can be a good place
to start, but reading through them sequentially is a good idea. Important
details tend to be hidden in surprising places in a way that can frustrate
attempts to skip directly to the interesting parts.
Your editor will appreciate it if readers resist the urge to question the
concept of an accounting tutorial having interesting parts.
PostBooks has a number of features that may be of interest to certain types
of corporations — relationship management and materials tracking, for
example. For the purposes of this review, though, the main area of
interest is accounting. As would be expected, PostBooks implements
double-entry bookkeeping with various layers on top to support a set of
"standard" business processes. For users coming from a tool like
QuickBooks, the processes built into PostBooks may look bureaucratic and
arcane indeed. Tasks that seem like they should be simple can require a
long series of steps and screens to get through.
For example, a purchase in QuickBooks is most likely handled, after the
fact, by simply entering the bill from the supplier, then perhaps printing a
check. The PostBooks purchasing window (right) has rather more steps:
check for the desired item in inventory, enter a purchase request, generate
a purchase order, release the purchase order to the world, enter a bill,
generate a voucher for the bill, let the voucher age (a process well known
to — and detested by — anybody who has tried to get a large company to pay
a bill), enter a payment, set up a check run, and actually print a check.
All these steps exist because larger companies actually do things that way,
usually with different people handing different phases of the process.
Indeed, PostBooks has an elaborate roles mechanism that can be used to
limit users to specific steps in the chain.
a small operation where a single person likely does everything, it can seem
like a lot of useless extra work.
The good news is that much of it can be bypassed if one knows how. A
"miscellaneous check" can be entered without going through the purchase
order mechanism at all; there are also "miscellaneous vouchers" for those
who want less hassle, but still want to require that two people are
involved in the process of spending the company's money. The sales side is
similar; one can go through a whole process of defining prospects,
generating sales orders, putting together bills of materials, invoicing,
and so on. Or one can just enter a payment by digging deeply enough in the
PostBooks has what appears to be a reasonably flexible report generation
subsystem, but, in the free edition at least, rather little use is made
of it. The set of reports available within the application is relatively
basic; it should cover what many companies need, but not much more.
PostBooks is not an application for those who cannot function without pie
Interestingly, the report generation subsystem would appear to be used for
related tasks like form and check printing. One of the many aspects of the xTuple
revenue model is xtupleforms.com,
where various types of forms, including checks, can be purchased for use
with PostBooks. Happily for an organization like LWN, the available forms
include tax forms, and the dreaded 1099 in particular. The selection is
small and US-centric, but, for some businesses, that's all that is needed.
In the case of checks, there is only one alternative: a
single-check-per-page format. Unlike Intuit, xTuple would not allow LWN to
put its penguin logo on its checks — a major shortcoming, in your editor's
estimation. It doesn't seem like multiple checks per page is a
possibility, which may explain why nobody has put together a format
description for checks from Intuit. As a whole, support for check printing
is minimal, but sufficient, especially in a world where (even in the US),
the use of paper checks is in decline.
As an aside, there is a surprising lack of resources or help for users
wanting to transition from systems like QuickBooks. One would think that
would be a promising source of new users; certainly there is no shortage of
disgruntled QuickBooks users in search of a different system. But tools to
extract data from QuickBooks and import it into PostBooks are not really to
be found. What little information on the subject
exists on the xTuple site dates from 2007. Evidently QuickBooks is such a
data trap that extracting vital information is not a job for the meek.
Speaking of data, one of the key problems for a business like LWN is
getting transaction data into the system. Our transactions tend to be
small, but we have a fair number of them (never enough, mind you); entering
them by hand is not really an option, even in a system with fewer steps
than PostBooks requires. That is, quite simply, the kind of job that makes
us willing to tolerate having computers around. So some way to get data
into the accounting system automatically is required.
Hypothetically, since PostBooks uses PostgreSQL for its data storage,
feeding new data should really just be a matter of writing a bit of SQL.
In practice, the PostBooks database schema has about 550 tables in it, with
all kinds of interactions between them. A person with enough interest and
ability could certainly figure out this schema and find a way to put more
information into the database without corrupting the works.
This is the point where your editor feels the need to remind you that LWN's
staff is dominated by kernel-oriented people. Charging such people with
that task could lead to some amusing results indeed, but our accountant is
not quite so easily amused.
The folks at xTuple seem to have recognized this problem, so they have put
together a somewhat simpler
means for programmatic access to the database. They call it their API,
but it really is a set of PostgreSQL functions and views that provides a
simplified version of the database. Programmers can write SQL to access a
view in a way that closely matches the windows in the interactive client,
and the functions behind those views will take care of the task of keeping
the database consistent. Your editor has not yet tried actually
programming to this "API," but it looks like it should be adequate to get
the job done.
Readers who have made it all the way through this article will have noticed
that the first impressions from PostBooks were not all that great. And,
indeed, it still has the look of a mostly proprietary piece of software
that happens to have the source available. But, once one looks beyond the
first impressions, PostBooks looks like it might well be able to get the
What this program needs, arguably, is a fork in the go-oo style. This fork
would do its best to get all of its changes upstream, but would put effort
into making the system easier to build and package so that distributions
might start carrying it. In this way, the project might gain a bit more of
a free software feel while staying reasonably close to its corporate
overlords. But, of course, such a project requires sufficiently motivated
developers, and it's amazing how few free software developers find that
accounting systems are the itch they need to scratch.
Whether LWN will move over to PostBooks is not an answerable question at
this point. Further investigation — of both PostBooks and the alternatives
— is called for. But this first phase of research has not ruled it out.
PostBooks is not a perfect fit for what LWN needs, but that perfect fit
does not seem to exist anywhere. In this case, it may just be possible to
use PostBooks to get the job done. Stay tuned.
to post comments)