Preparing
- Read part 4, Fundamentals, make sure you understand everything, or seem to understand, at least.
- Get familiar with code structure and the way system builds.
- Get yourself some patience and read the sources.
Language
- We write Themis in maximum portable C code, so please try to stick to code style you see.
- We achieve OOP-like patterns of passing object context back and forth through all calls of related functions (object methods). The first parameter in every call is object context pointer. Each object has "constructor" - object_create method, that allocates object in memory, initializes it and returns pointer for context, and "destructor" - object_destroy method, which passes object context pointer and correctly destroys it's members and frees the memory. Please use this pattern if you'd like to go deeper with core code.
- We wrote high-level wrappers and examples in the way we found out most beneficial to end-users, yet, being boring system-level programmers, we could've missed some important style-related things. So feel free to introduce stylistic changes to anything in high-level area, just make sure it equally works.
Typical change procedure
- Check out latest version of the code with git fetch or do a fork on GitHub.
- Modify the source to fix or improve something. Supply it with a test, if you can.
- Create a diff of your work and send it to us as a patch or just to a pull request, if you're doing it on github.
- Wait for team members to study your change and accept or discuss it.
In ideal world it should also include raising an issue in GitHub Issues to make sure there's no duplicate work, but that's up to you :)