Draft, State of the GnuCash project, part II: What can you do to help?

Benoit Grégoire bock at step.polymtl.ca
Mon Nov 3 13:27:01 CST 2003


First I must apologize for the huge delay in writing this document that I 
promised months ago.  It is not as complete as I would like, but its far 
enough along to be worked on collectively.  I would have liked to at least 
dig up contact information and mailing list threads myself, but I clearly 
don't have enough time.  I am counting on other developers to fill contact 
info and improve the description for sections they are familiar with.  I 
would like this to become a permanent, updated document.   It would be a 
great TODO list for newcomers, and a great contact point to know who is in 
charge of what.

Feel free to reorder sections, add projects, mark priorities, etc.  If your 
change is small, just write it in a email and send it to me.  If you want to 
really hack on the document, get the OpenOffice version (Which is also easier 
to read): http://libofx.coeus.ca/how_to_help_the_gnucash_project.sxw

1  Introduction

The goal of this document is to guide potential contributors to where their 
contribution is most useful.

Now before we begin, please note that it is important to include the following 
information when offering help.  This will help you getting a meaningful 
response, and will avoid current developers spending time on superfluous 
1) Name:
2) Email:
3) Irc nickname when logging to #gnucash (if applicable):
4) Skills you have or are willing to learn:
5) Real life profile if pertinent:
6) Area of interests in GnuCash (without it, it's very hard for us to suggest 
a project:)

Table of Contents
1  Introduction	1
2  Projects:	4  Title	4  Title	4
2.1  Coding projects	4
2.1.1  Projects tied to other open source projects	4  Help with other projects on which GnuCash depend for many features	4  Improve graphing support	5
2.1.2  Small projects for new developers to learn the codebase.	5  Adopting a bug	5  Eliminating deprecated functions(code refactoring in the engine)	5  Support for custom report modules	5  Implement using GnuCash as a helper to a WebBrowser	6  Remove dependency on GnuCash version for the the documentation 
package.	6  Fix profiling support 	6  Document all headers in a directory	6  Create a high level diagram of GnuCash modules	7  Implement "accrual and cash reporting"	7  Port the gnotime embedded guile thing to gnucash	7
2.1.3  Larger coding projects (longer commitment):	7  Becoming the maintainer for a code section	7  Finish Scheduled Transaction implementation	8  Reviving the swig bindings	8  Finish modularizing GnuCash	8
2.2  Non-coding projects	8  End user support (Tier 1 technical support)	8  Bug management (Tier 2 Technical support)	9  Project Manager	9  Distribution maintainer	9  Build system guru	10  Write end-user documentation	10  Gnucash-user mailing list moderator???	10  Web site maintainer	10  Wiki team leader and editor	11  Art projects	11  Translation	11
2.3  Project design	11  Comparative assessment of Quicken and QuickBooks	12  Prepare a new survey	12  Help with GUI improvement	12  Budgeting infrastructure design	12
2.4  Evangelism and marketing:	12  Improve feature list	12  Write a rebuttal to the GnuCash perception problem	13

2  Projects:

The following convention is used for formating the projects  Title
Description and justification
Skills: Skills required to contribute to the project.
Current leader: The person currently coordinating the project.  If no one is 
listed here the project needs a champion.
Primary contact: The person you should contact for details and technical 
questions.  If no one is listed, send your inquiries to gnucash-devel  Title

Current leader: 
Primary contact: 

2.1  Coding projects

2.1.1  Projects tied to other open source projects  Help with other projects on which GnuCash depend for many features
Sometimes, improvements has to be implemented in those projects before some 
features can be improved in GnuCash.  Such projects include
- OpenHBCI (http://openhbci.sourceforge.net/):  Used for all the German home 
banking features.
- LibOFX (http://libofx.coeus.ca):  Used for OFX import and eventually export 
in several format and OFX direct connect)
- g-wrap (URL????):  Necessary to tie scheme code to the GUI.
- Finance::Quote (http://finance-quote.sourceforge.net/):  Used to retrieve 
stock and currency quotes online.
Skills: Depends on the project
Current leader: Contact the project
Primary contact: Contact the project  Improve graphing support
GnuCash currently uses the Guppi graphing engine 
(http://www.gnome.org/projects/guppi/) for it's graphing needs.  But guppi 
doesn't support -----------LIST MISSING FEATURES-------- Unfortunately Guppi 
development has stalled, and no standalone replacement exists.  However there 
has been talk with gnumeric developers to allow us to spinoff their new 
graphing engine.  The project would involve either reviving guppi 
development, or working with gnumeric
Skills: C, Gtk, gnome
Current leader: 
Primary contact: Hampton?

2.1.2  Small projects for new developers to learn the codebase.  Adopting a bug
Not all bugs are hard to find or fix.  Some didn't get fixed simply because of 
lack of time or difficulty in reproducing.  If you adopt a bug and say so on 
gnucash-devel, it is most likely developers can tell you in what part of the 
code to look.  And there is (unfortunately) no shortage of issues to choose 
Skills: Basic C or GTK+ or Scheme skills 
Current leader: 
Primary contact:  Eliminating deprecated functions(code refactoring in the engine)
Several functions are marked deprecated.  Others will be, or should be renamed 
because their behavior changed over time (especially when the currency 
handling was overhauled).  Pick one, make sure you understand what it used to 
do.  Remove it.  Substitute the replacement in all sections of code that no 
longer compile.
Skills: Basic coding skills
Current leader: Linas?
Primary contact:  Support for custom report modules
Write support for automatically looking for custom reports modules in the 
datafile and/or user  directory.
Skills: Basic C, scheme. 
Current leader: 
Primary contact:  Implement using GnuCash as a helper to a WebBrowser
Enable the use of GnuCash as a helper to a web browser.  This will greatly 
improve the user experience for people who download OFX and QIF files from 
their banks.  This may or may not require the prior revival of the swig 
bindings, as the has to be a way to send the file to either a running or non 
running GnuCash.
Skills: Shell, Scheme, possibly Swig and C
Current leader: 
Primary contact: Linas?  Remove dependency on GnuCash version for the the documentation 
Currently the user documentation are in a different CVS tree with their own 
schedule.   Unfortunately, the help index is still part of the main package, 
which make adding new sections impossible without a new GnuCash release.  To 
make this happen, all that is necessary is to have GnuCash look for the help 
index at runtime.  If it isn't found, display a generic page so that the user 
know he has to download the docs package.  This has the considerable side 
benefit of easing the burden on translators by not having the documentation 
sections, which is pointless (and confusing) if the docs aren't translated.
Skills: Not much
Current leader: 
Primary contact:  Fix profiling support 
fix the gnucash main() so that libefence can be used with it.  Also fix 
gnucash main() so that it can be profiled. Once this done, improve file 
loading speed and find other bottleneck.
Skills: Strong C skills
Current leader: 
Primary contact: Derek Atkins?  Document all headers in a directory
Adopt a directory and try to document all it's headers.  Very useful for you 
if you want to hack on some specific part of GnuCash, you don't yet 
understand.  When you're stuck, ask questions on the lists or irc.  Even if 
you can't manage to get an answer, just write that you cant figure out this 
function in the source.  That's still a very useful service.
Skills: C
Current leader: 
Primary contact:  Create a high level diagram of GnuCash modules
Create a listing of all GnuCash modules and (optionally) their interaction.  
For each module, small description.  Graphical representation in UML would be 
Skills: UML
Current leader: 
Primary contact: Benoit Grégoire <bock at step.polymtl.ca>  Implement "accrual and cash reporting"
Also specifically write an "accrual v. cash" reporting. Also write 
documentation to explain to the end user what this actually is.
Skills: Scheme, accounting
Current leader: 
Primary contact:  Port the gnotime embedded guile thing to gnucash

Current leader: 
Primary contact: Linas

2.1.3  Larger coding projects (longer commitment):  Becoming the maintainer for a code section
Some sections of code are understood by fewer and fewer people.  This causes 
maintenance problems and duplication of efforts.  The pathological example is 
the QIF import code.  The current QIF importer implementation (scheme) was 
scheduled to be replaced by much better, 95% finished new engine (scheme 
also) that no-one understands anymore.  So in the meantime the current one 
still has to be reluctantly maintained as a third implementation (in C) is 
being completed.  The current orphaned sections are:
Other sections are also orphaned, but constitute a project in and of 

Note that you can find several developers notes at 
http://www.gnucash.org/lxr/gnucash/source/src/doc/, and elsewhere in the 
source tree.
Skills: Depends on the section chosen
Current leader: None, by definition.
Primary contact: Derek?  Finish Scheduled Transaction implementation
There is an extenseve todo list available at 
Skills: C, Scheme
Current leader: 
Primary contact: Jsled  Reviving the swig bindings
The goal is to revive the bitroted swig bindings.  They were originally 
written by Linaaas Vepstas, whos still hacks on GnuCash.  They bitroted 
because no one ever used them!  But judging from the reactions to the 
original "State of the gnucash project" email, there is great interest in 
them, especially since swig now supports multiple languages.  According to 
Linas there isn't much work necessary to make it work.  This is listed in the 
"longer commitment" section because the will be some design reflection to 
decide exactly which part of the engine we want exposed "at large", and 
because the won't see wide use overnight so getting them in a stable state 
may require some patience.
Skills: SWIG
Current leader: None
Primary contact: Linas Vepstas  Finish modularizing GnuCash
There has been extensive work to make turn GnuCash in a collection of 
dynamically loadable modules.  Unfortunately, work was never completed, so we 
do not really enjoy most of the portential benefits of the module system.  
Completing this work would also greatly ease the development of additional 
features by third parties
Skills: C, Scheme (if you wish to re-use the current module code)
Current leader: None
Primary contact: Linas Vepstas

2.2  Non-coding projects  End user support (Tier 1 technical support)
Probably the single most help to the developers a user can give.  Getting 
involved is simple.  Basically, this simply involves hanging around on 
#gnucash and gnucash-user to answer questions, and collecting and writing 
answers for the FAQ.
-When a question is asked, and you are not sure of your answer or your answer 
is incomplete, DO answer anyway, stating which part you are unsure of.  There 
is nothing worse than having a user not getting any acknowledgment. 
-When a question still hasn't been answered after several days, offer 
suggestions to find more information.  Alternatively  help them file bug 
reports for valid-sounding complaints.
-Say hello to people who logon to IRC, and remind them to wait for an answer 
to their query.
Tech support:  people willing to hang out on mailing list,
answer questions, (aka "tier 1 tech support"), and generally be polite and
supportive about usage questions and howto questions
Skills: No specific skills required.
Current leader: 
Primary contact: gnucash-user  Bug management (Tier 2 Technical support)
For people with a little more skills, but not necessarily coders.  The job 
consists of browsing the bugzilla database at bugzilla.gnome.org. To: 
-Try to reproduce bugs, and break down the steps requires to reproduce.  Ask 
the user for more information on his configuration if you cannot reproduce.  
This will allow getting enough information for a developer to actually fix 
the problem.
-Review bugzilla, sort it, organize it, spot duplicates, fill in the missing 
details, rank the bugs by importance/severity.
-Try to spot bugs that are no longer relevant or fixed in CVS. Send 
consolidated mail to -devel, to have the bug closed.
-Monitor gnucash-patches mailing list and when a bug is reported fixed in the 
changelog, of back ported to a stable branch, check that the bugfix actually 
works for you.
After a little while, you will probably be granted privileged access to 
bugzilla, so you can close issues yourself.
Skills: Experience in compiling software from source, general knowledge of 
common issues on unix-like platforms.
Current leader: 
Primary contact:  Project Manager
We need a project manager: someone who can ask the developers what the most 
important projects are, write them up in a few sentences or two, and post 
them on a web page. Then periodically gather status
as to whose doing it, and if they're done.  Basically the job consists ob 
motivating people.  Volunteers in any organization are far more likely to 
stay motivated if people discuss their work on a regular basis.
Skills: Diplomacy
Current leader: None
Primary contact: Benoit Grégoire  Distribution maintainer
Every distribution have their specificities for building and packaging 
GnuCash.  Being distribution maintainer involves building packages for the 
distribution in a timely manner after a new GnuCash release, handling 
communication with the distribution to get the package included in the base 
distribution, and making sure bugs reported to the distribution find their 
way in our own bug database.  It's usually not a big job, you may not even 
have to build the packages yourself depending on the level of support from 
the distribution.  We are currently missing official maintainers for:
- Suse (Need official maintainer)
- Mandrake (Need official maintainer, contact bock at step.polymtl.ca)
- MacOS X (Need official maintainer, contact ?)
- Debian (Need help fixing compile problems on some architecture, contact )
Skills: The conventions of the distribution's packaging system. 
Current leader: 
Primary contact: Chris Lyttle  Build system guru
We really need a build system guru.  We have been very wary of making changes 
to the build system for fear of breaking compatibility with some widely 
distributed versions of the autotools. 
Skills: autotools, libtool, intltools, etc.
Current leader: 
Primary contact:  Write end-user documentation
Help with the creation and maintenance of the user documentation.
Skills: English, technical writing, finance
Current leader: John Lapham
Primary contact: John Lapham (Concepts guide), Chris Lyttle (Help manual)  Gnucash-user mailing list moderator???
This implies forwarding non-spam message from non-subscriber to gnucash-user.
Skills: Spamassasin
Current leader: Wilddev, do you need help?
Primary contact:  Web site maintainer
Fix problems with the website, integrate suggestions or information from the 
mailing list.  In order to be granted access, you must have a specific 
project or improvement to make.  Once you do, send a mail to Conrad, and once 
cleared through him, Linas will grant you access.
Skills: HTML
Current leader: Conrad Centerford
Primary contact:  Wiki team leader and editor
We need someone to lead the wiki project to that it won't result in a unsorted 
soup of unuseable information.  You can decide on whatever software the team 
is familiar with, taking into account that it will be hosted on sourceforge 
(the to be created url wiki.gnucash.org).  PHP and MySql are available.  Note 
that there is already a wiki started at:  
http://gnomesupport.org/wiki/index.php/GnuCash, it could be decided to keep 
it instead of moving.  Note that the most important objective of the Wiki is 
for users to collect Faq from the mailing list, and document version-specific 
workaround for bugs.  It's also a nice way to draft new documentation to 
eventually be moved on the main documentation package.
Skills: Wiki software, some technical writing
Current leader: 
Primary contact: Benoit Grégoire <bock at step.polymtl.ca>  Art projects
Design new icons, splash screens, etc.  You must try to remain "culturally 
neutral", for lack of a better term.  For example not everyone's money is 
green, and credit cards aren't popular everywhere.
Skills: Graphic design
Current leader: 
Primary contact:  Translation
Translation is a labor intensive process that requires little technical skills 
but a lot of language skills.  There are several areas that need translating
-The most obvious (and most important) is the user interface.  You can find 
the status of each language at http://www.gnucash.org/trans/.  Remember the 
even if it's listed as nearly complete it doesn't mean that it couldn't use 
some reviewing for clarity, consistency and spelling.  There is a complete 
howto at http://www.gnucash.org/trans/TRANSLATION_HOWTO.
-The Glossary.  Actually part of the interface translation process, but often 
overlooked.  The glossary is a list of terms used in gnucash along with their 
definition in the GnuCash context.  It greatly helps with translation 
accuracy and internal consistency.  Actually, you don't even need to know a 
foreign language to contribute, as many terms introduced in recent versions 
do not have an entry yet.
-The user documentation
Current leader: 
Primary contact: 

2.3  Project design  Comparative assessment of Quicken and QuickBooks
Most developers never used either of these products against which GnuCash is 
often compared.  We are aware of major areas of missing functionality (such 
as OFX Direct Connect and Budgeting).  However drafting a list of smaller 
missing features and thing that are actually easier to do in Quicken (and 
why)   would be immensely useful for project planing.
Skills: Quicken, QuickBooks, User interface design.
Current leader: 
Primary contact:  Prepare a new survey
Prepare another survey similar to http://www.gnucash.org/en/quiz-result.html
Current leader: 
Primary contact:  Help with GUI improvement
Point-out areas of inefficiency in the interface, such as excessive number of 
key or mouse clicks for common tasks.  Now is the time to do this as the 
gnome 2 port is in progress.
Skills: GUI design
Current leader: 
Primary contact:  Budgeting infrastructure design
Budgeting is one of the next big features that will be implemented.  Now is 
you chance to influence how it will work.  To contribute, first read the 
budgeting thread (GIVE URL...) and step in with your insight.
Skills: Budgeting
Current leader: 
Primary contact: 

2.4  Evangelism and marketing:  Improve feature list
Compile a full list of GnuCash features, sorted in an intelligent manner to 
keep it readable.  This would replace 
Skills: Budgeting
Current leader: 
Primary contact:  Write a rebuttal to the GnuCash perception problem
Why can't GnuCash gain widespread acceptance?  There are many factors, real or 
imagined.  But I believe the that two most important factors to gaining 
widespread acceptance are two historical misconceptions:
1-Double Accounting takes too long for personal use.  Let's not discuss the 
merits of double accounting here and focus on the issue of time.  If you ever 
used Quicken's categories, you are doing the exact same amount of work.  If 
all you want is a simple checkbook balancer, you don't need a swiss army 
knife like GnuCash (or Quicken for that matter).  There are many small 
checkbook balancers available that do just that and do it well.
2-Gnucash is hard to install.  That's an old myth that isn't true anymore for 
most users.  Most distributions include gnucash, and it's very easy to 
install it.
Current leader: 
Primary contact: 

Benoit Grégoire, http://step.polymtl.ca/~bock/
Président, Comité Jeunesse de l'Association des Diplômés de Polytechnique.

More information about the gnucash-devel mailing list