August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)
What is a contribution?
Code is the most obvious contribution. The most welcome code
contributions are bugfixes. However, new components are equally welcome.
Changing functionality of existing components is treated with more
caution. Code with tests is more welcome than code without test.
However, good bug reports contribute back. Documentation errors
are bugs. Smart questions
can lead to both improved documentation and sometimes better code.
Improvements to this wiki are useful too.
Talking about usage or desired usage is in itself also contributing back. Especially if you talk to us! :)
Even sharing a negative experience is useful. The project might not simply have considered your problem domain and may think "cool, we could do that!".
Code Contribution
There are two approaches here:
The former means you have greater overheads in terms of managing your
codebase, releases, documentation. It also means that if anyone breaches
your license that you are alone (at the end of the day) in resolving the
issue.
In the latter case you gain our release infrastructure, documentation
infrastructure, and also in the case of license infringement, since it
would be a license from the BBC that's infringed you have the support of
a larger organisation in resolving any issues (preferably amicably all
round of course).
Contributor Agreement
For the latter we need you to sign a contributor agreement (sample contributor agreement) with
us. This gives the BBC similar rights as copyright assignment
would. (The FSF & Sun, and a number of other projects require
copyright assignment, we merely ask for an explicit licence). To do
this:
It's worth noting that because you give us a non-exclusive licence,
and don't assign copyright to us that you retain full rights over
your own code. We've modelled our approach on the same approach as
Python for reference - partly
because Kamaelia is written in python, but mainly because the language
is clear and simple.
Examples of code contributed back on this basis include, an
implementation of HTTP & a simple webserver/web client, open GL
support, and Bit Torrent integration amongst others.
That said, if you're not happy with signing a contributor agreement,
as you can see we've thought about that issue and are happy to work with
you anyway, but there will be limits as to how closely! (such is
life)