For collaborative development, we use the “Fork & Pull” model from So anyone who wants to contribute needs an account on Then you need to fork the project you want to contribute.

If you want to contribute with a new camera plug-in you should first request us (by email @ to get the new
plug-in camera sub-module created. We will provide:
  • a default structure of directories (<mycamera>/src /include sip/ doc/ python/ test/)
  • the Makefile files (<mycamera>/Makefile, <mycamera>/src/Makefile, <mycamera>/test/Makefile)
  • templates files (src and include) for the mandatory classes:
  • <MyCamera>Interface
  • <MyCamera>DetInfoCtrlObj
  • <MyCamera>SyncCtrlObj
  • a standard .gitignore file
  • a template index.rst for the documentation

In addition we will update with new entries other files needed to compile the plugin library and the python module:

  • Lima/config.inc_default
  • Lima/camera/Makefile
  • build/Makefile
  • sip/Makefile
  • sip/
As above do not forget to fork the new sub-module project.

Create a github account

This is an easy task, you have to go to Sign up - Github

Fork a project

On the github site, It is far better explained than we could do ;)

Contribute guideline

It is very simple to contribute, you should follow the steps below.

  1. Branch
First of all you have to create a branch for a new feature or for a bug fix, use an explicit branch name, for instance “soleil_video_patch” .
  1. Code/patch
If it’s a patch from an existing module, respect and keep the coding style of the previous programmer (indentation,variable naming,end-line...).
If you’re starting a new camera project, you’ve just to respect few rules:
  • Class member must start with ‘m_
  • Class method must be in CamelCase
  • You must define the camera’s namespace
  1. Commit
Do as many commit as you need with clear comments.
Prefer an atomic commit with a single change rather than a huge commit with too many changes.
  1. Pull Request

Then submit a pull request

At this stage you have to wait, we need sometimes to accept or reject your request.
So there are two possible issues:
  1. The Pull-request is accepted:

we merge your branch with the the main project master branch, then everything is fine and you can now synchronize your forked project with the main project.

  1. The pull-request is rejected:

The pull request could be rejected if:

  • the new code doesn’t compile
  • it breaks backward compatibility
  • the python wrapping is missing or not updated
  • the commit log message doesn’t describe what you actually do

In case of a new camera plug-in sub-module the first pull request will be rejected if:

We will tell you (github interface and/or email) about the reason and we will give some advises to improve your next tentative of pull-request.

So at this point you have to loop to item 2 (Code/Patch) again.
Good luck !!

Table Of Contents

Previous topic

Tango Device Server

Next topic

Windows Only

This Page