Archiving old transations

John Ralls jralls at
Thu Jun 20 23:00:14 EDT 2013

On Jun 20, 2013, at 7:25 PM, Jonathan Kamens <jik at> wrote:

> On 06/20/2013 07:14 PM, David T. wrote:
>> As Open Source software, Gnucash is built, maintained, documented and supported by volunteers (like Colin Law, whom you skewer in your rant). The development team volunteer their time, their expertise, AND their code (hint hint) to benefit all users of GnuCash.
> I have been maintaining free software for >20 years. I have a Thunderbird add-on with >30,000 users, and another with >10,000 users.
> I have submitted patches to GnuCash in the past.
> I am not someone with no understanding of how free software works, nor am I someone who does nothing but complain without contributing anything to the free software community in general or to the specific projects about which I provide feedback.
> However, even if I were such a person, that would not disqualify me from criticizing the maintainers of GnuCash or any other project if I felt that they were failing to meet the needs of their users over a long period of time. Just because the software is free does not render its maintainers immune from criticism.
> I am worked up about this issue for five reasons:
> 1. It is an obvious, basic piece of functionality.
> 2. In fact, it is so obvious that the GnuCash maintainers have
>   themselves said, in response to requests for it, that a solution was
>   in the works. They said this numerous times spanning numerous years.
>   No solution has emerged.
> 3. It has been asked for many times by many people over the years.
> 4. This has resulted in at least three different people developing
>   independent solutions to the same problem, which is rather
>   inefficient and counterproductive. None of these were integrated
>   directly into GnuCash because, frankly, the GnuCash code base is so
>   huge and convoluted that people find it difficult to work with it.
>   The learning curve before productive work can be done within its
>   source tree is quite steep.
> 5. It is rude and patronizing for the maintainers of a piece of
>   software to tell it's users, "You don't need that, even though you
>   think you do," as Colin did (and others have done in past, at least
>   the ones who weren't instead apparently falsely claiming that a fix
>   was in the works).
>> Since you've already written a script to perform the archiving function (sucky though it might be), why didn't you submit it to the GnuCash project years ago, so that other developers might have built upon and perhaps improved upon it--and then incorporated it into the project?
> I did. Over eight years ago.

Sorry that you're frustrated. 

The reason that loading an accounts file takes so long is that Gnucash is designed to 
load the entire file into memory, conducting a bunch of consistency checks along the way, before it's able to 
actually do anything useful. Yes, it's a major design flaw, but it's also so basic to Gnucash's architecture that 
changing it requires a complete re-write of Gnucash's core functionality. With our very limited resources, we're
not able to do that anytime soon, though I am working on writing tests so that when we eventually begin the 
rewrite we can be sure that we don't break anything.

Trimming old transactions from the file is an interesting alternative, but we have a policy that writing to the gnucash
database without using the gnucash API is forbidden, so your script is not acceptable for inclusion in Gnucash's
distribution.  In the event you're interested in writing something that we can include, it would have to be in Guile (Scheme)
or C: Although there is a Python wrapper for the API, we're not able to supply it on our Windows and Mac packages
because we don't know how to build it in a way that is portable across Python and OS versions.

John Ralls

More information about the gnucash-user mailing list