このページは大阪弁化フィルタによって翻訳生成されたんですわ。

翻訳前ページへ


The accounting quest: PostBooks [LWN.net]
The Wayback Machine - http://web.archive.org/web/20150430161518/https://lwn.net/Articles/516659/
LWN.net Logo

The accounting quest: PostBooks

By Jonathan Corbet
September 19, 2012
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 problem statement 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 be welcomed.

The code

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 massive script 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 first.

Using PostBooks

[PostBooks] 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.

[PostBooks purchasing] 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.

For 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 menus.

[PostBooks report generator] 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 charts.

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.

Data

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.

In conclusion

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 job done.

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.


(Log in to post comments)

OpenERP

Posted Sep 19, 2012 19:32 UTC (Wed) by jebba (✭ supporter ✭, #4439) [Link]

We have been using OpenERP for a year and a half now. It has had some issues, but is overall most excellent. It also has a vibrant developer community, and is true free software, not free core stuff. You can see the wide range of modules here, for the most part GPL: http://apps.openerp.com/

OpenERP is even being taught in an MIS class at CU Boulder, in LWN's neck of the woods. This is the second year the course has been offered.

Python, Postgres, truly open, native GTK client, web client, large community, easy records import/export via CSV, years of open development, what's not to like? :)

OpenERP

Posted Sep 19, 2012 19:34 UTC (Wed) by corbet (editor, #1) [Link]

OpenERP is definitely on the list of projects to look at... It just takes time to work through them all, excessive exposure to accounting packages is known to cause brain damage in rats, after all...

OpenERP

Posted Sep 19, 2012 19:39 UTC (Wed) by jebba (✭ supporter ✭, #4439) [Link]

Oh agreed. I went through many of the "open" ERP systems a couple years ago before settling on OpenERP. So many of them I would call "baitware". I remember one, calling itself "open", that said you'd have to do upgrades on your own if you didn't get the commercial license. This sounded reasonable, until I downloaded the package. It came as a machine image that I ran in KVM--so it was more than just accounting it was the full OS. But upgrades? Well, they had stripped out all package management systems and data about what packages were installed. Open, ya sure.... Pile of javapain... ;)

OpenERP

Posted Sep 19, 2012 20:38 UTC (Wed) by dmitrij.ledkov (subscriber, #63320) [Link]

If you need help with OpenERP feel free to poke me about it. Setting it up is non-trivial and I'm happy to assist you with any queries. I'm used to be OpenERP developer.

OpenERP

Posted Sep 20, 2012 2:27 UTC (Thu) by dmitrij.ledkov (subscriber, #63320) [Link]

If it was not clear, the offer of help with OpenERP was for LWN.net/corbet to try OpenERP and write a good review.

OpenERP

Posted Sep 21, 2012 5:00 UTC (Fri) by jafo (subscriber, #8892) [Link]

I suspect that jebba could likely be talked into showing you what he's doing with OpenERP and other things at their offices up near my neck of the woods. Not to make an offer for him or anything, but I can connect the two of you if you like. :-) He showed me their OpenERP last year but it was well outside of what I usually hack on...

Sean

OpenERP

Posted Sep 21, 2012 5:38 UTC (Fri) by jebba (✭ supporter ✭, #4439) [Link]

Oh for sure. If you want to come up and see OpenERP here in Loveland, Colorado, you are more than welcome. You may be distracted by the largest 3D printer cluster in the world though.... (Jafo, you gotta stop by for an update too!)

FrontAccounting

Posted Sep 27, 2012 12:11 UTC (Thu) by Mike.Ralphson (guest, #85348) [Link]

Would certainly like to read your thoughts on FrontAccounting (http://frontaccounting.com/) - it's been more than adequate for my solo contracting business for the last 3 years.

OpenERP

Posted Sep 19, 2012 19:56 UTC (Wed) by lolando (subscriber, #7139) [Link]

I investigated OpenERP, and actually used it for a few months something like two years ago. It felt nice indeed, and I particularly liked the ability to set default values for many form fields (a global default value overridden by a client-specific default value, for instance).

However, I have to disagree on the "true free software". At least at the time I investigated, there was no procedure for upgrades across major versions apart from "hire us", and the website was quite bluntly announcing that bug reports were very likely to be ignored unless they included the identification of a customer support contract, and patches would be similarly laughed at.

Did that change in the last two years?

(If anyone cares: I switched to Tryton, which happens to be an OpenERP fork.)

OpenERP

Posted Sep 19, 2012 20:40 UTC (Wed) by dmitrij.ledkov (subscriber, #63320) [Link]

What changed?

Well they are tracking contributions & merge proposals for trunk series only. You do need paid contract for fixes backports. But you are free to merge them yourself. There are plenty of OpenERP partners that maintain stable "syrup" branches with bug fixes.

OpenERP

Posted Sep 19, 2012 20:41 UTC (Wed) by dmitrij.ledkov (subscriber, #63320) [Link]

There is OpenUpgrade project which offers almost complete migration scripts from 6.0 -> 6.1 and partial 5.0 -> 6.0.

Tryton still doesn't have web client.

OpenERP

Posted Sep 20, 2012 2:16 UTC (Thu) by jebba (✭ supporter ✭, #4439) [Link]

> there was no procedure for upgrades across major versions apart from "hire us"

Ah yes, this is true. To do a 6.0 to 6.1 (which was a significant upgrade) you do need a support contract if you want them to do it. They do not publish the code to the migration software. IIRC it was something like this: you upload your database (including a sanatized version so you don't leak data to them), then their script does it's majick, which you then feed to Postgres. Updating the server & client is a no brainer of just installing the new python files. The db is the hard part. I have seen some free/open scripts in the forums, but they are reverse engineered.

> the website was quite bluntly announcing that bug reports were very likely to be ignored unless they included the identification of a customer support contract

I haven't seen this.

If you have a support contract entered into OpenERP, if it crashes it gives you an interface with the crash details and your contract number with an easy submit button. If you don't have a contract, you do it the old way by simply entering a bug into the bug system. I've seen plenty of this.

> patches would be similarly laughed at

I don't think it is like this. They do most work through launchpad, and I don't see people asking "what's your support contract?" anywhere. That side of it seems to be a normal free/open project. Of course patches get laughed at every so often in other open projects too. ;)

Support contracts are available from a dozen or more companies, not just OpenERP themselves, fwiw.

> I have to disagree on the "true free software".

Your point about database migration is well taken. Apart from that, it is quite open in my experience.

OpenERP

Posted Sep 22, 2012 1:20 UTC (Sat) by njwhite (subscriber, #51848) [Link]

>> patches would be similarly laughed at
>I don't think it is like this. They do most work through launchpad, and I don't see people asking "what's your support contract?" anywhere. That side of it seems to be a normal free/open project.

Indeed, it's fine for stuff like that. I've got patches accepted in, by writing bug reports, and attaching patches. Just like it should be.

OpenERP

Posted Sep 20, 2012 11:39 UTC (Thu) by debacle (subscriber, #7114) [Link]

What you describe may be right, but it does not mean, that OpenERP is not truly free software or open source (in the sense of the Free Software Definition, the Open Source Definition, or the Debian Free Software Guidelines). You and everybody else is still free to offer support or write upgrade scripts yourself. AFAIK, some OpenERP partner company do exactly that.

OpenERP

Posted Sep 20, 2012 11:31 UTC (Thu) by debacle (subscriber, #7114) [Link]

And don't forget that the new 7.0 (a.k.a. 6.2-dev) has a very polished and modern web interface (AGPL3). IMHO, it is a huge step forward compared to the current one.

The accounting quest: PostBooks

Posted Sep 19, 2012 23:30 UTC (Wed) by rsidd (subscriber, #2582) [Link]

If you - hardly a greenhorn - couldn't build it from source, and no disatributor yet has been motivated to do so, in what sense is it open source? Yes, the source exists, but how do you verify that it corresponds to the binary you installed in such a scary manner?

The only obvious answer

Posted Sep 20, 2012 17:26 UTC (Thu) by dmarti (subscriber, #11625) [Link]

Jim Zemlin could fix this problem in two weeks by making Linux Foundation staff responsible for processing their own expense reports and paychecks.

We'd get an elegant, somewhat strange, GPL accounting system to work with, and the remaining design and integration issues could happen at the inevitable startups.

The only obvious answer

Posted Sep 21, 2012 3:29 UTC (Fri) by cmccabe (guest, #60281) [Link]

A programmer responsible for processing his own paycheck? Can't see anything that would possibly go wrong with that, no sir. :)

The only obvious answer

Posted Sep 21, 2012 23:15 UTC (Fri) by nix (subscriber, #2304) [Link]

Well, this might be one job we wouldn't put off indefinitely because we were too busy doing other stuff.

The only obvious answer

Posted Oct 16, 2012 2:35 UTC (Tue) by ThinkRob (subscriber, #64513) [Link]

> A programmer responsible for processing his own paycheck? Can't see anything that would possibly go wrong with that, no sir. :)

Well... at least you know they'll avoid int overflows.

The accounting quest: PostBooks

Posted Sep 29, 2012 10:08 UTC (Sat) by Johny (guest, #86940) [Link]

I give my vote for Sql-ledger.org
One time surf in manual and mailing-list for setup (Postgresql+Apache) and years of using it after. I can generate all the invoices and yearly reports i need with few clicks, (from where-ever since its web-based).
Only wish, it would be connected with some webshop like Zen-cart.org

Frontaccounting looks maybe similary simple, but i have not tried it.
(Also since its using mysql, interconnection with zen-cart would be thinkable i guess, but i know nothing about databases really.)


Copyright © 2012, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds