Skip to content

Development quickstart

karenswry edited this page Jan 12, 2018 · 3 revisions

Getting started with development


  1. Read the Themis architecture in depth documentation page, make sure that you understand everything (or at least you start thinking you understand everything).
  2. Get familiar with the directory structure and the way the system builds.
  3. Brace yourself for a lengthy session of reading the sources.


  • We wrote Themis in portable C code so please try to stick to the coding 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 an object context pointer. Each object has a "constructor" — object_create method that allocates an object in the memory, initialises it, and returns the pointer for context. Each object also has a "destructor" — object_destroy method that uses object context pointer and correctly destroys its members and frees the memory. Please use this pattern if you'd like to go deeper into the core code.
  • We wrote high-level wrappers and examples in the way we think would be the most beneficial for the end-users. However, we're boring system-level programmers who could've missed some important style-related things. So feel free to introduce stylistic changes to anything in the high-level area, just make sure that they work the way they were supposed to initially.

Typical change procedure

  1. Check out the latest version of the code with git fetch or do a fork on GitHub.
  2. Modify the source to fix or improve something. Supply the change with a test, if you can.
  3. Create a diff of your work and send it to us as a patch or create a pull request if you're on GitHub.
  4. Wait for the team members to review, accept or discuss the changes you're proposing.

In a perfect world, you would also raise an issue in GitHub Issues to make sure no duplicate work takes place, but that's up to you :)

Clone this wiki locally
You can’t perform that action at this time.