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)

Contributing To Kamaelia

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)