User: Password:
Subscribe / Log in / New account Weekly Edition for January 15, 2009

The exceedingly grumpy editor's accounting system update

By Jonathan Corbet
January 13, 2009
Part of the Grumpy Editor series
When your editor posted the Grumpy Editor's next project, he certainly did not anticipate that it would take more than a year and a half for the next installment to be written. Or that, even after all that time, the project of moving LWN's accounting from proprietary software to free software would be incomplete. But the world is full of surprises, even in places where surprises are most unwelcome - like accounting. Happily, your editor's surprises do not involve counterparty risk, credit-default swaps, or anything else of that sort.

So why has this project taken so long? What it came down to is that your editor concluded that he was not sufficiently qualified to rip out a functioning accounting system and replace it with something out of a CVS server somewhere. There is simply too much to know about how the accounting system ties into the company's operations, how our accountant uses it, and how it helps keep the tax agencies happy and the company's officers out of jail. That latter point became especially relevant as LWN's longtime bookkeeper and occasional contributor Dennis Tenney headed off to pursue other opportunities, leaving your editor to take up the legally-liable Treasurer position.

In other words, swapping out the accounting system isn't something to be done on a whim, like, say, putting an -rc1 development kernel onto the production server. Whatever is there has to work. So your editor concluded that the first step in this process was to take over the existing system and come to understand it well enough to be able to properly think about a replacement. After closing out the 2008 books, your editor is able to come to a preliminary conclusion: it is almost possible for a small business to dump a system like QuickBooks and use a free alternative. Almost.

There is an interesting gap in the free software community's offerings in this area. A very small business - one involving a sole proprietor, for example - can use a tool like GnuCash to great effect. Almost everything which is needed is there, and most functions work quite well. On the other hand, a very large operation wanting to install a full-scale ERP system has a wealth of options: Compiere, Adempiere, various packages based on OFBiz, and more. If your operation is willing and able to dedicate full-time staff to developing a customized ERP system and keeping it going, there are plenty of frameworks to start with. These systems are not drop-in tools usable by a small business, though.

Small businesses occupy a niche between the sole proprietor and the massive enterprise. At this level, there's not a whole lot available from the free software community. The most active projects appear to be SQL-Ledger, its fork LedgerSMB, and PostBooks. All three work on top of a PostgreSQL database; SQL-Ledger and LedgerSMB are web-based, while PostBooks is a Qt application. Your editor's sense, at this point, is that PostBooks looks like the most advanced, most ambitious, and most actively-developed project among these three. It is, however, tricky to get running, its development model appears to be strongly cathedral-style (there isn't even a project mailing list), and it is distributed under the questionably-free (though OSI-certified) CPAL license. PostBooks has the look of a classic piece of corporate-controlled open source.

Any of the packages listed above (and GnuCash too) will do basic double-entry accounting. They can produce pie charts, reconcile accounts, and so on. Since they use PostgreSQL with an open (if sometimes poorly documented) schema, integrating them with the rest of the business should be relatively straightforward. They are, in essence, almost everything which is needed to enable a business to move away from a package like QuickBooks.

The key word is "almost." As far as your editor can tell, there are two crucial bits missing. The key word is "almost." As far as your editor can tell, there are two crucial bits missing: tax form printing and accountant interfaces.

On the first point: this is the time of year when LWN produces 1099 forms for each of its guest authors - at least, for those who pay their tribute to the U.S. A related form (1096) then goes off to the Internal Revenue Service so they can ensure that none of our authors tries to hide the vast amounts of money we pay them. A tool like QuickBooks tracks payments to outside contractors, and will happily print the requisite forms onto special stock which can be purchased, at exorbitant prices, directly from the application itself. There is no equivalent functionality in the free packages, currently.

In truth, this is an area where free software tends to struggle. The printing of tax forms is just not a task which inspires hackers; it is tedious, subject to highly finicky requirements, and is, for all that it may be considered necessary, somewhat distasteful. This work must be revisited every year as the requirements are subject to the whims of legislators and regulatory agencies. And, lest that challenge seem insufficient, one should also bear in mind that every country's requirements are different, so all this work must be repeated many times over.

Creating this kind of code (and keeping it current) is not fun, it requires some specialized domain knowledge, and it can carry certain kinds of legal liabilities. So it's no wonder that a hacker with some free time will, upon considering this kind of task, usually decide to work on enhancing that Klingon translation of instead. The Klingons tend to be more forgiving of bugs.

On the accounting side, the problem gets even worse. A typical business accountant uses proprietary software which, in turn, contains a great deal of knowledge of the tax code. Not all countries have a tax system as twisted and complex as the U.S., but the problem is never simple. Your editor believes that it would be entirely reasonable to require governments to provide free software which interprets its tax codes for ordinary citizens, along with a guarantee that, as long as said citizens fed honest numbers to the system, they would not be subject to penalties if the resulting tax calculation were incorrect. In the real world, though, the job of providing such software falls to companies with a squad of on-staff tax lawyers and a firmly proprietary approach to software distribution. That situation does not appear to be likely to change anytime soon.

For the accountant to use his proprietary tools to come to conclusions about a company's tax situation, he must be able to enter quite a bit of data about where the company's money came from and how it was used. There are a couple of ways in which this can be done: (1) it can be manually entered, at great expense to the company involved, or (2) it can be directly imported from the company's accounting system for free. Small companies tend to be quite sensitive to things involving increased expenses, especially when the expense is for an already unwelcome task like tax compliance. So there is great value in having an accounting system which can export data directly to an accountant's tax preparation tools.

In an ideal world, there would be a nice, XML-based format involving large numbers of acronyms which would make this interoperability possible. In the real world, these formats are proprietary and undocumented. So exporting data to the accountant is not really possible with free tools. And that is the single biggest roadblock to the use of free accounting software in any company whose accounts are even remotely complex. Until free programs can export something which looks like the QuickBooks "accountant's copy," they will not be usable in this context.

What makes this situation even more sad is that, as your editor can now attest through painful experience, QuickBooks really does not have much else to offer. Its interfaces are tedious and error-prone; in many ways, free software has done a much better job. As an example, GnuCash will happily import account data from a bank or credit card company, apply default accounts (categories) learned from experience, filter out any duplicate entries, and allow the user to verify and adjust the whole operation before applying it. QuickBooks is, shall we say, nowhere near as accommodating. Your editor ran into a bug (in QuickBooks 2009) which causes the import operation to fail halfway through; a quick search turned up reports of that bug from 2003. There are reasons why any discussion of QuickBooks harps on the need to perform backups frequently - every fifteen minutes or so is good. Your editor has had to restore those backups many times; meanwhile, use of GnuCash over several years has never, ever resulted in a corrupted database.

What it comes down to is that we have solved at least 95% of this problem, and we have done a better job than the proprietary software companies have. But the remaining gaps are crippling, and they are hard to fill. Accounting file formats are more obscure than, say, document formats; there is no effort to create an OpenLedger specification. Any attempt to create files in those formats from free software is likely to involve reverse engineering efforts, and that will be an error-prone process in an area where errors are most unwelcome. So we may well be stuck with proprietary accounting software for some time yet.

That said, your editor does not intend to give up. There will be ongoing discussions with the accountant and continued tracking of free accounting system projects. The free software community has solved no end of difficult problems over the years; we should be able to find a way to take care of this one too. Stay tuned; hopefully the next update will not be so long in coming.

Comments (52 posted)

Python slithers into Wesnoth

By Jake Edge
January 14, 2009

Proposing to change the implementation language for a large project is hardly uncontroversial, but when that proposal calls for moving from C++ to Python, one might expect an enormous flame fest. Surprisingly, a proposal to do just that with the code for the "Battle for Wesnoth" strategy game has resulted in a fairly flame-free discussion. Whether or not the project actually makes the switch—it looks unlikely that any wholesale switch is imminent—there is a great deal of value in the discussion, particularly in its tone.

Eric Raymond is the Wesnoth developer proposing this shift, but it is not his "personal fondness" for Python that is behind it. Instead, he sees it as a way to reduce bugs. Raymond has been handling bug triage for the project for the last year or so, which gives him a good grasp of where the Wesnoth bugs tend to be:

I know where we are vulnerable and where we tend to screw up. And *that* is why I want to get cracking on shifting as much of the code to a language with true variable-extent types as possible.

Raymond is cognizant of the downsides of moving to Python as well. First, Wesnoth developers will have to be familiar with both languages, which Raymond, at least, does not view as a problem: "Python is much easier to pick up than C++". Performance is another concern, one that he glosses over with a breezy "machines are still getting faster"—others seem less sanguine about the issue—but he does see two major benefits:

1) No more memory-allocation screwups, *ever*. Python has no pointers and is garbage collected; Python applications cannot core-dump. The complex tangle of standard and local custom memory allocators we presently use, and that are the source of so many of our bugs, will be chopped away as we move to Python -- and good riddance.

2) I have observed Python code is between 2 and 5 times more compact than C/C++. The higher end of the range is achieved by data-structure-intensive programs like Wesnoth. This is significant because one of the best-established results from large-scale software engineering is that defect-per-KLOC rates in large codebases are *insensitive to the language used*. One of the normal effects of moving to a higher-level language is to decrease the KLOC of the codebase, and as a result to decrease the bug load.

Attracting more developers to the project is another reason to move to Python, one that lead developer David White—often referred to by his IRC nickname "Sirp"—is motivated by. Raymond has been thinking about how to move Wesnoth to Python for a while, without making any progress, but recently a new developer, Ivan Illarionov, has appeared on the scene having translated some portions of Wesnoth into Python. Just how much has been done is still something of an open question, but his approach is an evolutionary one. That is important to White:

Rather, we should take an evolutionary approach to matters. Python already exists in Wesnoth, as an AI framework. Developers who think that Python would advantage Wesnoth should simply begin implementing additional components in Python.

If someone is developing a new component for Wesnoth, and that person thinks the component would work best in Python, they should do so. If someone is one of the primary maintainers of an existing implementation of a component, and they feel that component would be more maintainable in Python, then they can re-implement it in Python.

Overall, the reaction has been fairly positive, Wesnoth developers seem to be open to the possibility that C++ is not the be-all and end-all of languages for game development. That said, they aren't necessarily willing to hear new developers obnoxiously proclaim that Wesnoth should be redone because Python is "better" than C++, without much in the way of details. Unfortunately, that is the tack that Illarionov has taken, which led White to patiently explain:

I'm going to be really honest: you're presenting yourself in entirely the wrong way to the project. I don't think very many people care much to hear "this code here should be in Python because it is better for it than C++!!!" What we'd much prefer to hear is, "I implemented this really cool feature which our users will love, and oh yeah...the implementation is in Python."

Illarionov also ran afoul of Raymond, who publicly castigated him: "You [have] done such an inept and -- at times -- arrogant-seeming job of presenting yourself that you have already alienated some senior developers on this project in just the few days since you've shown up here." Illarionov replied contritely, but almost immediately stirred things up again by a posting with the subject "Wesnoth refactoring and future direction plan". In that thread, he also points to Linus Torvalds's rant about C++, which just gets further under the developers' skin.

But, the Wesnoth developers have shown a great deal more patience than many development groups would. As White puts it: "Trust me, if you sent an email to the Linux Kernel Developers Mailing List entitled 'Linux refactoring and future direction', you would receive MUCH more hostile responses then you have received here." It is likely that much of the tone of discussion on the wesnoth-dev mailing list derives from White's leadership; the contrast between his and, for example, Torvalds's more combative tone is quite apparent.

There are hints that some of the conversation has been less civil, especially on IRC but, on wesnoth-dev, even the rebukes have been relatively polite—certainly by the standards of most development mailing lists. This is a project struggling with a difficult decision without lashing out at those questioning it or outright opposing it—or for that matter, those ineptly championing it. The wesnoth-dev conversation went quiet around January 6th, but the project is known to be very active on IRC, so perhaps it moved there. Even if that turned ugly, the email conversation sets quite an example.

Should it come to pass that Wesnoth starts including more Python—by Raymond and Illarionov or others—we will get an opportunity to see if the hoped-for improvements come about. Projects often consider which language to choose, either initially or for a reimplementation, but there are few examples or case studies of comparative language benefits. A year or two down the road, Wesnoth might provide just that kind of comparison.

Comments (62 posted)

GNOME considers DVCS choices

January 14, 2009

This article was contributed by Bruce Byfield

THE GNOME project has completed a survey of active contributors about which distributed version control system (DVCS) they would prefer to switch to in 2009. The project is now in the process of interpreting the results and deciding on the next steps. As the process unfolds, it provides a vivid snapshot of how free and open source software (FOSS) contributors regard DVCS applications.

DVCSes are an idea that have taken hold strongly in the FOSS community in the last few years, and that is starting to edge out older version control systems such as CVS and Subversion. Unlike such older, centralized version control systems, DVCSes do not require a single repository. Instead, on a DVCS, all contributors have their own repositories, and decision-makers decide which ones to merge for a release. In general, DVCSes are seen as more flexible, although critics argue that they can be too decentralized, and that they cause more conflicts than traditional version control systems during merges. All the same, they continue to be popular, partly because of the high-profile of Git, the DVCS originally written by Linus Torvalds for Linux kernel development after the switch from BitKeeper.

The GNOME survey was privately distributed by Behdad Esfahbod, one of the directors of the GNOME Foundation, in December 2008 to gather background information for a possible move away from Subversion, the version control system used by most of GNOME. The survey was distributed to GNOME contributors with Subversion accounts and SSH keys — a total of 1083 people in all, of which 579 replied.

The survey asked those who replied about their current use of Subversion, as well as their role within GNOME, what DVCSes they used or with which they were familiar, and how they felt about switching from Subversion. They were then asked to rank their preferences for Git, Mercurial (often abbreviated to Hg, after the abbreviation for the element Mercury), Bazaar (Bzr), and Subversion.

Analyzing the results

On 3 January, 2009, Esfahbod published the raw results of the survey. Over the next few days, the results were analyzed by a number of people, including Shaun McCance, Andy Wingo and Elijah Newren, all of whom charted the results. Newren's analysis in particular has become a center for discussion about the survey, undoubtedly because it was the most exhaustive analysis.

Looking at Newren's charts, viewers can quickly see approximate but definite results (those who want more exactness can refer to the raw data). The result is a thorough picture of GNOME contributor's views on DVCS.

Newren cross-correlates survey results in every possible way, but here are some highlights:

  • About 60% of respondents claimed familiarity with Git, and 25% with Bzr and 20% with Hg.
  • 37% of respondents preferred to switch from Subversion, 34% were indifferent either way, and the rest either support Subversion or did not want to switch.
  • 48% chose Git as their first choice, and 25% preferred Subversion. Bzr was favored by about 12%, and Hg by 7%, while 5% expressed no preference. Among second choices, Subversion, GIT and Bzr were all between 20-25%, and possibly within any margin of error. However, in the third through fifth choices, Bzr and Hg were favored as much or more than Subversion or Git.
  • Preferences for different roles in the project were clearly defined: Package maintainers and coders steadily preferred Git and Subversion. Translators and testers held the same preferences, but less strongly. Surprisingly, documenters preferred Bzr, but, since only four documenters replied, the validity of that result is questionable.
  • Those who wanted to switch, or were indifferent both strongly favored Git.
Newren's conclusion was that "there's a strong preference in the community toward switching, and that git has a strong lead in preference among the community."

As might be expected in an online discussion of FOSS, replies to both Esfahbod's publication of results and Newren's results were not long in coming. Still other comments were posted below LWN's brief mention of Newren's analysis.

Replies to the survey and analyses

Probably the most common criticism was that the survey was as much a popularity contest as anything else. Several commenters also wondered why other DVCS software such as Monotone and Darcs were not included in the survey (a question that, so far, no one has answered). In addition, some commenters were quick to talk about Git's shortcomings, while others — obviously unfamiliar with Git — asked questions about its features.

On the GNOME desktop-devel list, Esfahbod's announcement produced dozens of replies. One of the most articulate was by Andrew Cowie, who maintained that "The way the whole survey exercise was conducted it was impossible for Git to lose", and that the desired results were plain beforehand from discussion on the #gnome-hackers channel. Cowie also complained about the fact that GNOME contributors to projects that do not use Subversion were not invited to participate, and that the survey required listing preferences for all choices when he would have preferred not to vote for Git, Mercurial, or Subversion at all.

Much of the discussion below Esfahbod's announcement of the results, did quickly come to center on the assumption that a move from Subversion was now inevitable. Some questioned whether GNOME had the resources to devote to such a move, while others volunteered to be part of a task force to plan and implement the move. Another possibility raised was hiring someone to coordinate the change. Still others attempted to rough out the steps needed to move away from Subversion.

However, while most assumed — however reluctantly — that a change to Git would happen, others tried to raise alternatives. Some suggested that each separate GNOME module should be allowed to use its own DVCS, which others argued would discourage new contributors.

Others championed a suggestion raised on John Carr's blog that GNOME use its bzr-playground server and create plug-ins so that developers could use the DVCS software they personally preferred. However, this idea was dismissed by Esfahbod, who in a reply to the discussion about his announcement condemned such "hacks [developed] in house" because of the potentially high-maintenance they might require in the future.

In the end, however, the usefulness of these criticisms and alternate suggestions is limited. As Esfahbod states: "[...] This thread is not about making decisions. This thread is about giving those making the decision input they need to consider. Who makes the decision? Those who actually have to implement, oversee, and maintain any change" — in other words, the GNOME Foundation directors, and the project's release team and system administrators, the ones who commissioned the survey in the first place. The unspoken assumption in the survey appears to be that the move from Subversion is inevitable, and only the details are up for discussion. So far, though, those details have not been finalized, either by consensus or an announcement.

Meanwhile, for those unaffected by the decision, the survey and the resulting commentary provides a seldom-seen insight into the mindset of active members of the GNOME project — and, very likely, of active FOSS contributors in general.

Comments (25 posted)

Page editor: Jonathan Corbet

Inside this week's Weekly Edition

  • Security: SSL certificates and MD5 collisions; New vulnerabilities in bind, git, java, python,...
  • Kernel: 2.6.29 merge window, part 2; An asynchronous function call infrastructure; Who is the best inliner of all?
  • Distributions: OpenSolaris 2008.11; NST 1.8.1 pure:dyne GNU/Linux leek&potato; XO-LiveCD Version 090110; Ubuntu Developer Week
  • Development: The Valgrind Project releases version 3.4.0, Firebird Roadmap, CWiid update, WX in 2008, new versions of SQLite, Mandriva Directory Server, web2py, lsscsi, Amarok, qBittorrent, GNOME, KDE, GnuPG, SQL-Ledger, Elisa, DSSI, openSUSE csync, Java INI, tig, MyHDL.
  • Press: Mark Shuttleworth profiled, The Perl Future, Linux Day Italy, SCO reorganizes and vows to continue fight, Marvell's PXA168 SoC, Chrome for Linux planned, Drupal for medical content entry, December's audio software, Linux support sites, GIMP 2.6.4 review, seven HTML editors.
  • Announcements: Fedora fills Board, Friends of GNOME, Qt relicensed to LGPL, PgUS 2008 summary, CadSoft Eagle 5.4, open-source trading platform, Tim Buckley joins rPath, I'm Linux video contest, LayerOne cfp, OSCON cfp, ShakaCon cfp, SyScan cfp, YAPC::EU cfp, Northwest Python Day.
Next page: Security>>

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds