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
THIS IS A DRAFT!
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
emails:
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
2.0.0.1 Title 4
2.0.0.2 Title 4
2.1 Coding projects 4
2.1.1 Projects tied to other open source projects 4
2.1.1.1 Help with other projects on which GnuCash depend for many features 4
2.1.1.2 Improve graphing support 5
2.1.2 Small projects for new developers to learn the codebase. 5
2.1.2.1 Adopting a bug 5
2.1.2.2 Eliminating deprecated functions(code refactoring in the engine) 5
2.1.2.3 Support for custom report modules 5
2.1.2.4 Implement using GnuCash as a helper to a WebBrowser 6
2.1.2.5 Remove dependency on GnuCash version for the the documentation
package. 6
2.1.2.6 Fix profiling support 6
2.1.2.7 Document all headers in a directory 6
2.1.2.8 Create a high level diagram of GnuCash modules 7
2.1.2.9 Implement "accrual and cash reporting" 7
2.1.2.10 Port the gnotime embedded guile thing to gnucash 7
2.1.3 Larger coding projects (longer commitment): 7
2.1.3.1 Becoming the maintainer for a code section 7
2.1.3.2 Finish Scheduled Transaction implementation 8
2.1.3.3 Reviving the swig bindings 8
2.1.3.4 Finish modularizing GnuCash 8
2.2 Non-coding projects 8
2.2.0.1 End user support (Tier 1 technical support) 8
2.2.0.2 Bug management (Tier 2 Technical support) 9
2.2.0.3 Project Manager 9
2.2.0.4 Distribution maintainer 9
2.2.0.5 Build system guru 10
2.2.0.6 Write end-user documentation 10
2.2.0.7 Gnucash-user mailing list moderator??? 10
2.2.0.8 Web site maintainer 10
2.2.0.9 Wiki team leader and editor 11
2.2.0.10 Art projects 11
2.2.0.11 Translation 11
2.3 Project design 11
2.3.0.1 Comparative assessment of Quicken and QuickBooks 12
2.3.0.2 Prepare a new survey 12
2.3.0.3 Help with GUI improvement 12
2.3.0.4 Budgeting infrastructure design 12
2.4 Evangelism and marketing: 12
2.4.0.1 Improve feature list 12
2.4.0.2 Write a rebuttal to the GnuCash perception problem 13
2 Projects:
The following convention is used for formating the projects
2.0.0.1 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
2.0.0.2 Title
Skills:
Current leader:
Primary contact:
2.1 Coding projects
2.1.1 Projects tied to other open source projects
2.1.1.1 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
2.1.1.2 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.
2.1.2.1 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
from.
Skills: Basic C or GTK+ or Scheme skills
Current leader:
Primary contact:
2.1.2.2 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:
2.1.2.3 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:
2.1.2.4 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?
2.1.2.5 Remove dependency on GnuCash version for the the documentation
package.
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:
2.1.2.6 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?
2.1.2.7 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:
2.1.2.8 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
nice.
Skills: UML
Current leader:
Primary contact: Benoit Grégoire <bock at step.polymtl.ca>
2.1.2.9 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:
2.1.2.10 Port the gnotime embedded guile thing to gnucash
Skills:
Current leader:
Primary contact: Linas
2.1.3 Larger coding projects (longer commitment):
2.1.3.1 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:
-LIST SECTIONS
Other sections are also orphaned, but constitute a project in and of
themselves.
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?
2.1.3.2 Finish Scheduled Transaction implementation
There is an extenseve todo list available at
http://www.gnucash.org/lxr/gnucash/source/src/doc/TODO-schedxactions.
Skills: C, Scheme
Current leader:
Primary contact: Jsled
2.1.3.3 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
2.1.3.4 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
2.2.0.1 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
2.2.0.2 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:
2.2.0.3 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
2.2.0.4 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
2.2.0.5 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:
2.2.0.6 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)
2.2.0.7 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:
2.2.0.8 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:
2.2.0.9 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>
2.2.0.10 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:
2.2.0.11 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.
-WebSite
-The user documentation
Skills:
Current leader:
Primary contact:
2.3 Project design
2.3.0.1 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:
2.3.0.2 Prepare a new survey
Prepare another survey similar to http://www.gnucash.org/en/quiz-result.html
Skills:
Current leader:
Primary contact:
2.3.0.3 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:
2.3.0.4 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:
2.4.0.1 Improve feature list
Compile a full list of GnuCash features, sorted in an intelligent manner to
keep it readable. This would replace
http://www.gnucash.org/en/features_5.phtml.
Skills: Budgeting
Current leader:
Primary contact:
2.4.0.2 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.
Skills:
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