diff options
Diffstat (limited to 'HACKING.md')
-rw-r--r-- | HACKING.md | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/HACKING.md b/HACKING.md new file mode 100644 index 0000000..b069e07 --- /dev/null +++ b/HACKING.md @@ -0,0 +1,108 @@ +Please feel free to contribute patches; here are the basic guidelines to hack +along with us! + +Please work from a git tree by cloning the repo: + + git clone https://github.com/ioerror/tlsdate.git + +Please file bugs on the tlsdate issue tracker: + + https://github.com/ioerror/tlsdate/issues + +Please use the github pull request feature when possible. + +The current build status is available as a handy image: + +[![Build Status](https://secure.travis-ci.org/ioerror/tlsdate.png?branch=master)](http://travis-ci.org/ioerror/tlsdate) + +Continuous integration is available for a number of platforms: + + https://jenkins.torproject.org/job/tlsdate-ci-linux/ + https://travis-ci.org/ioerror/tlsdate + http://build.chromium.org/p/chromiumos/waterfall + +White Space: + + Spaces only, no tabs; all tabs must die + No stray spaces at the end of lines + Generally try not to add excessive empty white space + +Documentation: + + Document all functions with doxygen style comments + +Ensuring Correctness: + + Test your patches and ensure: + + No compiler warnings or errors + No linker warnings or errors + + Test your improved copy of tlsdate extensively + +Security: + + tlsdate is security sensitive - please consider where you add code and in + what context it will run. When possible, run with the least privilege as is + possible. + +Proactively find bugs: + + Run your copy of tlsdate under valgrind + +Weird but meaningful conventions are prefered in tlsdate. We prefer attention +to detail: + + if ( NULL == foo (void) ) + { + bar (void); + } + +Over quick, hard to read and potentilly incorrect: + + if (foo(void)==NULL)) + bar(); + +Define magic numbers and explain their origin: + + // As taken from RFC 3.14 + #define MAGIC_NUMBER 23 // This goes in foo.h + ptr = malloc (MAGIC_NUMBER); + +Rather than just throwing them about in code: + + ptr = malloc (23); + +It is almost always prefered to use dynamically allocated memory: + + widget_ptr = malloc (WIDGET_SIZE); + +Try to avoid static allocations like the following: + + char widget[WIDGET_SIZE]; + +Try to use unsigned values unless an API requires signed values: + + uint32_t server_time_s; + +Please provide relevant CHANGELOG entries for all changes. +Please remove items from the TODO file as they are completed. +Please provide unittest cases. + +When submitting patches via email, please use `git format-patch` to format +patches: + + git format-patch 9a61fcba9bebc3fa2d91c9f79306bf316c59cbcc + +Email patches with a GnuPG signature whenever possible. + +When applying patches, please use `git am` to apply patches: + + git am -i 0001-add-TODO-item.patch + +If `git format-patch` is not possible, please send a unified diff. + +When in doubt, please consult the Tor HACKING guide: + + https://gitweb.torproject.org/tor.git/blob/HEAD:/doc/HACKING + |