=============================================================== README.developers - Sofia-SIP development practices =============================================================== Introduction ============ This file is a collection of practices and rules for Sofia-SIP development. If you have questions, or would like to make changes, raise the issue on sofia-sip-devel (see http://lists.sourceforge.net/lists/listinfo/sofia-sip-devel ). Important files for developers ============================== AUTHORS List of contributors. When contributing new code, add yourself to AUTHORS, and also remember to update the per source file copyright statements. COPYRIGHTS List of licenses and related copyright statements. While majority of Sofia-SIP is licensed under LGPL, there are a few files with different, but LGPL compatible, licensing terms. README.developers This file. TODO Not in active use yet. /ChangeLog files All non-trivial changes to the source code should be documented in the ChangeLog files. See also the top-level ChangeLog. Version numbering ================= Package version --------------- For public releases, the package version is: vMAJOR.MINOR.REVISION, where MINOR is even For development releases and snaphots the version is one of: vMAJOR.MINOR.REVISION, where minor is odd vMAJOR.MINOR.REVISION.YEAR.MONTH.DAY, where minor is odd For all releases, the version should be changed in configure.ac and committed to Darcs/CVS before making the release package. The person doing the release is responsible for updating the version number. Library interface versions -------------------------- Sofia-SIP libraries utilize libtool interface versioning. See - http://www.gnu.org/software/libtool/manual.html#Versioning - http://www.gnu.org/software/libtool/manual.html#Using-Automake The interface versions are set in top-level 'configure.ac' file. Additionally, the SONAME version (CURRENT-AGE) is set in the same place. These version numbers are available for use as autoconf variables (see the library 'Makefile.am' files and 'packages/sofia-sip.spec.in'). All changes to the library versions should be marked to the appropriate library 'ChangeLog' file. The library version should be changed at the same time as the first interface change is committed since the previous release. The interface version is frozen (should be marked to the 'ChangeLog' file) at the time the next release is tagged (in other words, intra-release changes need not be tracked with libtool versions). The goal should always be to avoid breaking the API/ABIs until absolutely necessary. Interfaces clearly marked as private can be changed without change to library interface version, but otherwise all public functions, types, variables and definitions fall under interface change control. Version control tags ==================== Tagging releases and snapshots ------------------------------ - source repository (*) - master Darcs tree at: http://sofia-sip.org/repos/sofia-sip - CVS tree (only used to track major releases) at: http://sourceforge.net/cvs/?group_id=143636 - tags: rel-sofia-sip-x_y_z - stable and development releases (matches release version sofia-sip-x.y.z) - tags: snapshot_rel_YEARMMDD - snapshot releases at http://sofia-sip.sourceforge.net/snapshots/ Notes (*): - Information about Darcs: http://abridgegame.org/darcs/ http://lwn.net/Articles/110516/ Sending patches =============== People without Darcs access --------------------------- Send your patches to sofia-sip-devel. Someone from the development team (see AUTHORS) will handle the patch. People with Darcs access ------------------------ Trivial changes can be committed without review. For non-trivial changes, you should first send a proposal to sofia-sip-devel and wait for comments. There are no strict approval rules so use of common sense is recommended. ;) Tips for making patches ----------------------- - test your patch on a clean checkout from version control system - remember to check for updates before pushing your changes to the master repository