1 Introduction

This document describes some guidelines for people participating
in lwIP development.

2 How to contribute to lwIP

Here is a short list of suggestions to anybody working with lwIP and 
trying to contribute bug reports, fixes, enhancements, platform ports etc.
First of all as you may already know lwIP is a volunteer project so feedback
to fixes or questions might often come late. Hopefully the bug and patch tracking 
features of Savannah help us not lose users' input.

2.1 Source code style:

1. do not use tabs.
2. indentation is two spaces per level (i.e. per tab).
3. end debug messages with a trailing newline (\n).
4. one space between keyword and opening bracket.
5. no space between function and opening bracket.
6. one space and no newline before opening curly braces of a block.
7. closing curly brace on a single line.
8. spaces surrounding assignment and comparisons.
9. don't initialize static and/or global variables to zero, the compiler takes care of that.
10. use current source code style as further reference.

2.2 Source code documentation style:

1. JavaDoc compliant and Doxygen compatible.
2. Function documentation above functions in .c files, not .h files.
   (This forces you to synchronize documentation and implementation.)
3. Use current documentation style as further reference.
 
2.3 Bug reports and patches:

1. Make sure you are reporting bugs or send patches against the latest
   sources. (From the latest release and/or the current CVS sources.)
2. If you think you found a bug make sure it's not already filed in the
   bugtracker at Savannah.
3. If you have a fix put the patch on Savannah. If it is a patch that affects
   both core and arch specific stuff please separate them so that the core can
   be applied separately while leaving the other patch 'open'. The prefered way
   is to NOT touch archs you can't test and let maintainers take care of them.
   This is a good way to see if they are used at all - the same goes for unix
   netifs except tapif.
4. Do not file a bug and post a fix to it to the patch area. Either a bug report
   or a patch will be enough.
   If you correct an existing bug then attach the patch to the bug rather than creating a new entry in the patch area.
5. Trivial patches (compiler warning, indentation and spelling fixes or anything obvious which takes a line or two)
   can go to the lwip-users list. This is still the fastest way of interaction and the list is not so crowded
   as to allow for loss of fixes. Putting bugs on Savannah and subsequently closing them is too much an overhead
   for reporting a compiler warning fix.
6. Patches should be specific to a single change or to related changes.Do not mix bugfixes with spelling and other
   trivial fixes unless the bugfix is trivial too.Do not reorganize code and rename identifiers in the same patch you
   change behaviour if not necessary.A patch is easier to read and understand if it's to the point and short than
   if it's not to the point and long :) so the chances for it to be applied are greater. 

2.4 Platform porters:

1. If you have ported lwIP to a platform (an OS, a uC/processor or a combination of these) and
   you think it could benefit others[1] you might want discuss this on the mailing list. You
   can also ask for CVS access to submit and maintain your port in the contrib CVS module.
   