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 <[EMAIL PROTECTED]> 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 [EMAIL PROTECTED]) - 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 <[EMAIL PROTECTED]> 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. _______________________________________________ gnucash-devel mailing list [EMAIL PROTECTED] http://www.gnucash.org/cgi-bin/mailman/listinfo/gnucash-devel