This is an old revision of the document!
Cafu is to a large degree a community project, and we need and very much appreciate your help. Your contributions and especially patches are very important for Cafu. Patches help us to add new features, improve code quality and fix bugs, so we are happy and grateful if you contribute them.
Remember that if you have any questions about the steps here, you can always post them at the Cafu forum and we'll do our best to help you.
Please read the Coding Conventions and try to conform to them. In particular, please respect the indentation rules (4 spaces, no TABs) – patches are really difficult to read otherwise.
Bug fixes and elegant program solutions often involve complex code that can be difficult to understand without documentation, and an undocumented new feature is hardly useful to anyone but its author.
Therefore, please provide any required documentation such as source code comments (preferably in familiar and simple Doxygen format), high-level overviews, diagrams, etc. Without documentation, another developer would have to write it, and the patch cannot be applied until he has time to do it.
A patch should be self-contained – one patch for one thing.
Do not combine multiple new features in a single patch: A patch that adds bitmaps to menu items and fixes a bug in the network code is a bad patch. It should be splitted into two patches.
On the other hand, do not split a single code change into multiple patches: Two patches, one of them being “implementation of new member-functions”, the other “changes in class documentation to accommodate new members” are two bad patches. They are related to one, logically indivisible thing, so they should be in one common patch.
Remember that it is often not easy to understand the purpose of your patch just from its source code. If you provide detailed description of the patch, we will be able to apply it much faster – and we will love you for submitting such nice patches!
This section will be removed soon. See:
From a strictly legal point of view, when you submit a patch or another contribution, you are the copyright holder of your contribution, and CFS is the copyright holder of Cafu. If we now integrated your contribution into Cafu, the result would be a mixed edition that is partly copyrighted by CFS, and partly copyrighted by you. Over time, the mix would grow more and more intermingled, to the extent to which many contributions from many different authors were merged in. The end result would quickly become an unmanageable and chaotic mess.
As a consequence, not being the exclusive copyright owner any more, we would no longer be able to make crucial decisions on behalf Cafu as a whole:
These actions would instead require the consent of all copyright holders of the new, “mixed” Cafu edition, and all future editions that are ever to be released — a practical impossibility.
Therefore, when you contribute source code to Cafu, we ask you to assign the copyright of your contribution to CFS, or – if that is not possible under your national law – to disclaim all interest in your copyright and grant CFS the right to use your contribution in the Cafu Engine as outlined above.
Here is the single most pressing question that we assume occurs to most people now:
Wait a moment! You plan to earn money from an edition of Cafu that my (substantial) contribution has been integrated in?? |
When a patch is submitted at the issue tracker, it is integrated into the official Cafu source code, from where it is available under the GPL and the commercial licenses. Please consider why we still think that this is a win for you as well:
In summary, the assignment of copyright is not only legally necessary; we also believe that it is fair, preserves your rights, and generally helps free software.
If you disagree, please let us know what bothers you. We'll do our best to answer your questions and fix whatever is wrong. But please understand that if you disagree, you cannot use the issue tracker for submitting your patch, and that we thus cannot accept and integrate your contribution into the Cafu Engine.
Thank you very much for reading this document. If you have any questions, please let us know. We're looking forward to your patches!