Difference between revisions of "Contributing to GnuCash"

From GnuCash
Jump to: navigation, search
(Code: Rework a bit.)
m (Getting started on the GnuCash Wiki: Special:RequestAccount)
 
(43 intermediate revisions by 12 users not shown)
Line 1: Line 1:
The [[GnuCash]] Project is a volunteer-driven organization and depends on volunteers, such as you, to survive and grow. This page explains the ways to contribute to the project.
+
{| class="wikitable" style="margin: auto;"
 +
! scope="row"|Languages
 +
| [[Zh-hans/{{PAGENAME}}|简体中文]]
 +
|}
  
Many ideas here are taken from this slashdot [http://slashdot.org/comments.pl?sid=74382&cid=6671463 comment].
+
The [[GnuCash]] Project is a volunteer-driven organization, meaning it depends on volunteers such as ''you'' to survive and grow. This page explains different ways to contribute to the project.
  
== Testing ==
+
== Everybody ==
  
Programmers can be fine testers, but non-programmers seem to be able to break programs in new and mysterious ways. The trick here is to learn how to give the best information to the programmers about how to reproduce bugs. A programmer will usually only be able to fix a bug they can see; if you can't make the programmer see your bug, it won't get fixed!  If you find a real reproducible bug, check with [[Bugzilla]] to make sure the developers know about it.
+
# Participate in the discussions on your locale user [[Mailing Lists]]. After some time of watching and asking about the usage of GnuCash you can share your knowledge with newcomers.
  
== Feedback ==
+
=== Testing ===
 +
While you are using the program, you are also testing it. Programmers can be fine testers, but non-programmers seem to be able to break programs in new and mysterious ways.
  
Providing feedback on what features are used, and what aren't is important to developers who may spend a lot of time on a feature they think is important instead of a feature that actually is important. From another [http://slashdot.org/comments.pl?sid=74382&cid=6671086 comment]: What this thing needs is some normal human beings using it and saying "you know what, it's NOT acceptable that window A obscures window B and freezes while window B is waiting for input from me." It needs, I am sorry to say, Quicken or MS Money users, who say "It was really easy to do X, Y, and Z, but here, I can't even figure out if it's possible,"
+
The trick here is to learn how to give the best information to the programmers about how to reproduce bugs. A programmer will usually only be able to fix a bug they can see; if you can't make the programmer see your bug, it won't get fixed!  If you find a real reproducible bug, check with [[Bugzilla]] to make sure the developers know about it.
  
Possible ways of feedback are explained in [[FAQ#Q: What should I obey as a beginner in bug reporting, enhacement requesting ...?|this section]] and following of the [[FAQ]].
+
Programmers should feel free to add plenty of ''unit tests'' (see [[Testing]]) as well.
  
== Code ==
+
=== Feedback ===
 +
Providing feedback on what features are used, and what aren't is important to developers who may spend a lot of time on a feature they think is important instead of a feature that actually is important. GnuCash offers numerous ways to provide feedback: the [[Mailing Lists]], [[Bugzilla]], and [[Enhancement requests]].
  
If you're a programmer, obviously a good way to help is to start writing useful code :).
+
=== Advocacy ===
 +
Share your experience with your friends and in [https://en.wikipedia.org/wiki/Social_media social media]. Running tutorials, presentations at local [http://en.wikipedia.org/wiki/Linux_User_Group LUG]s can be invaluable for getting a larger user base.
  
* See [[Building]] for more details on how to build the program from source code.
+
=== Documentation ===
* We use [http://subversion.tigris.org/ Subversion] as our primary Version Control System. There is an official [http://git-scm.com/ Git] mirror on [https://github.com/Gnucash/Gnucash Github]. Detailed instructions for using each are provided on the [[Subversion]] page.
+
The project maintains at least 2 different types of documentation:  
* Please subscribe to the [[Mailing Lists]] and introduce yourself to the development team. You can also hang out on [[IRC]], but that isn't required.
+
Updating the wiki is easly done while docs require  slight more skills.
* Read the two files [http://svn.gnucash.org/trac/browser/gnucash/trunk/HACKING HACKING] and [http://svn.gnucash.org/trac/browser/gnucash/trunk/README.svn README.svn].
+
* Now try your hand at one of the outstanding bugs in [[Bugzilla]], something from the [[WishList]] or your own pet peeve.
+
==== Wiki ====
** The '''coding style''' was last discussed on the [http://lists.gnucash.org/pipermail/gnucash-devel/2009-August/026121.html gnucash-devel ML].
+
Write answers to FAQ's. Wiki'ing is very addictive and fun. And while you're at it, everyone learns! As you probably have noticed, you are looking at such a wiki right now.
** If your code will contain '''textual output for the user''', have a look at [[Translation#Tips_for_Developers | Translation: Tips for Developers]].
 
** If your code adds or changes some functionality, do not forget the '''documentation''':
 
*** We use [http://www.stack.nl/~dimitri/doxygen DOxygen] to document the sources, including the C API. Details about our use are on the [[Doxygen]] wiki page.
 
*** Try to keep the ''README files'' and that in ''src/doc'' up to date.
 
*** Update the relevant sections in '''help''' and '''guide'''.
 
* Once you have your changes written and well tested, you'll want to submit it so that someone with commit privilege can add it to the official sources. First, make a patch:
 
** Git is best, you can write up a commit message, commit it to your local repo, and run
 
  git format-patch HEAD^
 
to make a patch with your commit message included. The commit message should look like
 
  [Bug 123456] Bug Title
 
 
 
 
 
  A nice description of what the patch does.
 
  
**If you're using Subversion, you can create a patch with
+
===== Getting started on the GnuCash Wiki =====
  svn diff
+
Contributors must [[Special:RequestAccount|request an account]] in order to work on the wiki. The request process is human-moderated and you must convince the human that you're not a spammer or a robot. Don't bother requesting an account until you see something you want to change. Fill out the request form and explain in the "Reason" box exactly what you want to change and why. General descriptions of your skills aren't useful and will be ignored. If you've been contributing on the mailing list mention that with your email address (the request form isn't public, only wiki admins can see what you enter).
** If there's already a bug about it in [[Bugzilla]], just attach the patch to the bug. Be sure to check the "patch" checkbox on the attachment form.  
 
** If there isn't a bug already (be sure to search!), it really works best if you create a new one to attach your patch to.
 
*** Describe the problem or improvement that your patch addresses in the initial comment.
 
*** If you use Git, open the bug ''before'' you make your patch so that you can include the bug number in the commit message.
 
** If there isn't a bug already and the patch is trivial, you can send it to the '''gnucash-devel''' mailing list (though we really do prefer patches to go to [[Bugzilla]]).
 
*** Please attach the patch to the email, don't inline it in the message, even if you used git format-patch and it made a pretty email for you.
 
  
== Tools ==
+
Once your account is approved, you will receive an email with a temporary password.  You should be able to log into the Wiki and change your password.  At first you will have just minimal [[Special:ListGroupRights|user rights]] which only grants enhanced reading ability.  To edit pages, you need ''emailconfirmed'' status.  To get that, click on "Preferences", see your "User profile", and select the option to confirm your email, which sends an email to your personal email account.  Clicking the link in the email you receive will allow you ''page edit'' (but not ''page create'') privileges. You can verify your status under your account Preferences, where you should see your membership in ''emailconfirmed'' group.
  
Text editors / IDE:
+
Note that the [[GnuCash|GnuCash main page]] is specially protected, and only by wiki Administrators can edit this page.  
* Most developers seem to have used [[Emacs]] as IDE.
 
* Additionally there are some experiences with [[Eclipse]].
 
  
Build system:
+
An ''emailconfirmed'' account will automatically convert to ''autoconfirmed'' status after 7 days, which will allow you to create new pages.
* Gnucash uses the autotools as build system
 
* Additionally there are some experiments with [[CMake]], see [[Cutecash]]
 
  
 +
You can add ''Wikipedia editing extensions'' to your browser to make editing easier. Search the Add-ons page of your browser for these.
  
== WishList ==
+
=====For Wikipedia editors=====
 +
Wiki users who have edited in Wikipedia will find that the editing environment is similar.  It uses the same mediawiki software.  With ''autoconfirmed'' status you may create your own user page and user Talk page.
  
Similarly, it is important to keep track of wishlists — both those of the official developers, and of users. Since this is a wiki, a user named Andy Glew has taken the liberty of creating such a [[WishList]].
+
==== Official Documentation ====
 +
The docs are currently written in [https://en.wikipedia.org/wiki/DocBook DocBook], a semantic markup language for technical documentation. Potential tasks:
 +
;Review the current docs for issues: Fix typos, add links, ...
 +
;Fill the gaps: Inserting the content of existing wiki pages.
 +
;Write task oriented new parts: When you were a beginner you missed a tutorial or how-to about ...
 +
See [[Documentation Update Instructions]] for more on this subject.
  
== Money ==
+
== Multilingual Users ==
 +
If your natural language is different from English, you can contribute by translating
 +
* parts of this wiki,
 +
* the [http://www.gnucash.org website],
 +
* the messages of the program or
 +
* the official documentation "Help" and "Tutorial and Concepts Guide".
 +
See [[Translation]] for details.
  
The GnuCash Project encourages financial contributions in three ways:
+
* Add or improve [[Translation#How_to_translate_the_files_containing_the_new_account_hierarchies|Account Templates]] for your region.
 +
* Add or improve Tax Reports for your region, which might be nontrivial. But adding a wiki page with [links to] tax forms or the description of the online interface of your tax authority could be a first step as programmers are seldom Certified Public Accountants, too.
  
# Small donations can go to the [http://sourceforge.net/donate/index.php?group_id=192 GnuCash tip jar] to pay for unavoidable expenses of the project, and for projects agreed upon by consensus.
+
* You could also support the [[Mailing Lists]] team of your language.
# Sizable donations go to specific developers to help fulfill feature requests.
 
# Thanking developers for past work can be done individually, but will not be done through the project.
 
  
== Documentation ==
+
See also [[Development#Tools]].
  
Writing documents on how to do things, see e. g. [[Concept Guide]], (or why to do things, accounting is a black art to many). Help people out using the program. The article said that the programmers are spending a lot of their time answering questions instead of actually getting on and ''doing'' the job. Even simple things like "Tips and tricks" are a good start. If users can help other users, then the current programmers can spend more of their time getting new developers up to speed.
+
== Coders ==
 +
There are several types of "code" where you can support the team. They are ordered here by the estimated compexity:
 +
;HTML+PHP (Webdesigner): This are the languages used on our web server. Many pages can take an update. See [[Website Maintenance]].
 +
;Python: GnuCash's [[Python Bindings]] needs maintenance, too
 +
;Guile/[[Scheme]] (Report writer/maintainer): The reports of GnuCash are written in this LISP dialect.
 +
;C/C++: This is the core of GnuCash. There is an ongoing process to convert from C to C++.
 +
If you're a programmer, obviously a good way to help is to start writing useful code :). Please see [[Development]] for how to get started and [[Development Process]] for our procedures and guidelines.
  
== Advocacy ==
+
== People without other resources ==
 +
If you can not tender above mentioned resources, we will also accept your [http://www.gnucash.org/donate.phtml donation] to '''maintain our servers'''.
  
You usually get developers because they use software and have an itch to scratch. I'd guess that GnuCash's biggest problem is that programmers don't use the software. Running tutorials, presentations at local [[Wikipedia:Linux User Group|LUG]]s can be invaluable for getting a larger userbase (and therefore hopefully a larger developer base).
+
Other options are:
 
+
;Large scale:Hire a developer to get your preferred enhancement implemented.
== Wiki ==
+
;Small scale: Set a bounty on your preferred enhancement request.
 
 
Write answers to FAQ's. Wiki'ing is very addictive and fun. And while you're at it, everyone learns! As you probably have noticed, you are looking at such a wiki right now. Simply click on the "Edit". If you are a Firefox user, you may like to try the [https://addons.mozilla.org/firefox/351/ Wikipedia editing extensions] to make the job easier.
 
 
 
== More ==
 
 
 
See [[WishList]] for more ideas for small projects of value, ideal for limited contributors.
 
 
 
An [https://lists.gnucash.org/pipermail/gnucash-devel/2004-June/011547.html informative mail] from the archives.
 
 
 
[http://svn.gnucash.org/docs/HEAD/ GnuCash design and developer's reference]
 
 
 
[http://www.gnu.org/software/guile/manual/html_node/Programming-in-Scheme.html Scheme programming manual]
 

Latest revision as of 06:40, 8 March 2022

Languages 简体中文

The GnuCash Project is a volunteer-driven organization, meaning it depends on volunteers such as you to survive and grow. This page explains different ways to contribute to the project.

Everybody

  1. Participate in the discussions on your locale user Mailing Lists. After some time of watching and asking about the usage of GnuCash you can share your knowledge with newcomers.

Testing

While you are using the program, you are also testing it. Programmers can be fine testers, but non-programmers seem to be able to break programs in new and mysterious ways.

The trick here is to learn how to give the best information to the programmers about how to reproduce bugs. A programmer will usually only be able to fix a bug they can see; if you can't make the programmer see your bug, it won't get fixed! If you find a real reproducible bug, check with Bugzilla to make sure the developers know about it.

Programmers should feel free to add plenty of unit tests (see Testing) as well.

Feedback

Providing feedback on what features are used, and what aren't is important to developers who may spend a lot of time on a feature they think is important instead of a feature that actually is important. GnuCash offers numerous ways to provide feedback: the Mailing Lists, Bugzilla, and Enhancement requests.

Advocacy

Share your experience with your friends and in social media. Running tutorials, presentations at local LUGs can be invaluable for getting a larger user base.

Documentation

The project maintains at least 2 different types of documentation: Updating the wiki is easly done while docs require slight more skills.

Wiki

Write answers to FAQ's. Wiki'ing is very addictive and fun. And while you're at it, everyone learns! As you probably have noticed, you are looking at such a wiki right now.

Getting started on the GnuCash Wiki

Contributors must request an account in order to work on the wiki. The request process is human-moderated and you must convince the human that you're not a spammer or a robot. Don't bother requesting an account until you see something you want to change. Fill out the request form and explain in the "Reason" box exactly what you want to change and why. General descriptions of your skills aren't useful and will be ignored. If you've been contributing on the mailing list mention that with your email address (the request form isn't public, only wiki admins can see what you enter).

Once your account is approved, you will receive an email with a temporary password. You should be able to log into the Wiki and change your password. At first you will have just minimal user rights which only grants enhanced reading ability. To edit pages, you need emailconfirmed status. To get that, click on "Preferences", see your "User profile", and select the option to confirm your email, which sends an email to your personal email account. Clicking the link in the email you receive will allow you page edit (but not page create) privileges. You can verify your status under your account Preferences, where you should see your membership in emailconfirmed group.

Note that the GnuCash main page is specially protected, and only by wiki Administrators can edit this page.

An emailconfirmed account will automatically convert to autoconfirmed status after 7 days, which will allow you to create new pages.

You can add Wikipedia editing extensions to your browser to make editing easier. Search the Add-ons page of your browser for these.

For Wikipedia editors

Wiki users who have edited in Wikipedia will find that the editing environment is similar. It uses the same mediawiki software. With autoconfirmed status you may create your own user page and user Talk page.

Official Documentation

The docs are currently written in DocBook, a semantic markup language for technical documentation. Potential tasks:

Review the current docs for issues
Fix typos, add links, ...
Fill the gaps
Inserting the content of existing wiki pages.
Write task oriented new parts
When you were a beginner you missed a tutorial or how-to about ...

See Documentation Update Instructions for more on this subject.

Multilingual Users

If your natural language is different from English, you can contribute by translating

  • parts of this wiki,
  • the website,
  • the messages of the program or
  • the official documentation "Help" and "Tutorial and Concepts Guide".

See Translation for details.

  • Add or improve Account Templates for your region.
  • Add or improve Tax Reports for your region, which might be nontrivial. But adding a wiki page with [links to] tax forms or the description of the online interface of your tax authority could be a first step as programmers are seldom Certified Public Accountants, too.

See also Development#Tools.

Coders

There are several types of "code" where you can support the team. They are ordered here by the estimated compexity:

HTML+PHP (Webdesigner)
This are the languages used on our web server. Many pages can take an update. See Website Maintenance.
Python
GnuCash's Python Bindings needs maintenance, too
Guile/Scheme (Report writer/maintainer)
The reports of GnuCash are written in this LISP dialect.
C/C++
This is the core of GnuCash. There is an ongoing process to convert from C to C++.

If you're a programmer, obviously a good way to help is to start writing useful code :). Please see Development for how to get started and Development Process for our procedures and guidelines.

People without other resources

If you can not tender above mentioned resources, we will also accept your donation to maintain our servers.

Other options are:

Large scale
Hire a developer to get your preferred enhancement implemented.
Small scale
Set a bounty on your preferred enhancement request.