User Tools

Site Tools


devel:github-contributions

Kamailio Contributions via Github

Overview

Kamailio is a community managed project, with developers world wide. Any contribution to code or documentation is very welcome.

In order to be easily able to track the changes and have a coherent changlog and commit history, there are several rules required for each contribution.

Basic Rules

  • github pull requests are the favourited mechanism to submit contributions (patches)
  • make a pull request against master branch
    • commit can be later backported to stable branch(es)
  • make a pull request for each new feature
    • e.g., if you add a feature to usrloc module and an unrelated feature to auth module, then make two pull requests
  • it is ok (and sometime recommended) to have more than one commit per pull request
  • make a commit for each affected component. A component is considered to be:
    • the core
    • an internal library (code inside subfolder lib/)
    • a module (code inside subfolder modules/)
    • a tool (code inside subfolder utils/)
    • an example or main configs (files inside subfolders etc/ or examples/)
  • commit messages must be formatted as specified in the next section
  • commit message must describe the changes done by the patch
    • other details (e.g., how to reproduce, backtrace, sip packets, …) belong to content (comments) of the pull request
  • avoid emoticons and non-technical statements in commit messages
    • e.g., if it was a feature request by John Smith, don't mention that in commit message, especially don't write it owns you now a beer
  • credits can be given within commit message as a short statement, mentioning the name of the person or entity
    • for commits introducing a new module, credits must not be included in the commit message, being expected that the respective entity will own the copyright and it is reflected in the README or copyright header of each file
  • when the case, make references to the item on bug tracker, using GH#XYZ - replace XYZ with issue number id
    • e.g.,: - issue reported by John Smith, GH#123
  • changes to README file of modules must not be done directly in that file. Instead, edit the xml files located in modules/modname/doc/ folder
    • to regenerate the README, run make modules-readme modules=modules/modname
    • docbook utils and xsl packages are needed for the above command to work
    • it is ok to modify only the xml doc file, the readme can be regenerated by another developer who has the required tools installed
    • if it is a change to README that needs to be backported, make separate commits to xml doc file and README. The changes to README files are very likely to rise merge conflicts. With separate commit, that won't be backported, only the commit to xml doc file, then README will be manually regenerated in the corresponding branch.

Commit Message Format

Please create the commit messages following the GIT convention:

  • start with one short line, preferably less then 50 chars summarizing the changes (this is referred later as “first line of the commit message”)
  • then one empty line
  • then a more detailed description

Think of the first line as of an email “Subject” line. In fact it will be used as “Subject” in the generated commit emails and it will also be used when generating the Changelog (e.g. git log –pretty=oneline).

Please start always with the prefix of the component (subsystem) that is modified by the commit, for example:

  • core: typo fixes to log messages
  • tcp: stun fixes
  • mem: added faster malloc
  • module_name: support for foo rfc extension
  • lib_name: critical bug fix for abc case
  • kamctl: added support for management of module xyz

Examples of commit messages:

  • change to usrloc module from modules
usrloc: fixed name conflict

- destroy_avps() renamed to reg_destroy_avps() to avoid conflicts
  with the usr_avp.h version
  • change to core
core: loadpath can now use a list of directories

- loadpath can use a list of directories separated by ':',
  e.g.: loadpath "modules:modules_s:modules_k".
  First match wins (e.g. for loadmodule "textops" if
  modules/textops.so or modules/textops/textops.so exists, it will
  be loaded and the search will stop).

See also:

The above content about commit message format is taken from wiki page GIT Commit Guidelines - it is recommended you read that one as well.

Further Assistance

For any question, do not hesitate to contact other developers via mailing list:

  • <sr-dev [at] lists.sip-router.org>
devel/github-contributions.txt · Last modified: 2016/05/12 10:40 by mslehto