doc/contributing.txt
author Tom Henderson <tomh@tomh.org>
Fri, 18 May 2007 10:27:42 -0700
changeset 657 be551a3b07c6
parent 635 71b92dfe5f55
permissions -rw-r--r--
minor changes due to documentation review
mathieu@635
     1
Contributing to the ns-3 project
mathieu@635
     2
--------------------------------
mathieu@635
     3
tomh@657
     4
ns-3 is an open source project backed by an NSF CISE CRI grant. 
tomh@657
     5
Although the NSF PIs have specific aims to fulfill, we want others to 
tomh@657
     6
contribute, and we'd like to have a broad community of users and 
tomh@657
     7
developers, with the goal of a self-sustaining project downstream. 
tomh@657
     8
The project is currently in a bootstrapping phase, but we welcome 
tomh@657
     9
ambitious developers who might want to help shape the early design.
tomh@657
    10
mathieu@635
    11
Despite the lack of a formal contribution process to the ns-3
mathieu@635
    12
project, there are a number of steps which we expect every
mathieu@635
    13
potential contributor to follow. These naturally stem from 
mathieu@635
    14
the open-source roots of the project:
mathieu@635
    15
mathieu@635
    16
  - first, you should subscribe to the ns-developers 
mathieu@635
    17
    mailing-list (see http://www.nsnam.org/mailing_lists.html)
mathieu@635
    18
mathieu@635
    19
  - then, you should send an email there stating your interest
mathieu@635
    20
    in working on a specific part of the models and trying
mathieu@635
    21
    to explain how you would like to implement it, what 
mathieu@635
    22
    resources you have, etc.
mathieu@635
    23
mathieu@635
    24
  - you should be prepared to work together with the other
mathieu@635
    25
    potential contributors who want to work on the same models.
mathieu@635
    26
mathieu@635
    27
  - you should be prepared to go through code reviews with the
mathieu@635
    28
    ns-3 development team prior to integration. The goal of these
mathieu@635
    29
    code reviews is to:
mathieu@635
    30
      - ensure adherence to the coding style of the project
mathieu@635
    31
        (see doc/codingstyle.html)
mathieu@635
    32
      - ensure that the structure of your code has a certain 
mathieu@635
    33
        coherence with regard to the rest of the ns-3 codebase
mathieu@635
    34
      - improve the quality of the code: we strongly believe in
mathieu@635
    35
        the old saying: "many eyes make all bugs shallow".
mathieu@635
    36
      - increase code reuse by trying to generalize certain 
mathieu@635
    37
        useful pieces of your code to make them available to
mathieu@635
    38
        other models.
mathieu@635
    39
mathieu@635
    40
  - you should be prepared to try to integrate as many tests
mathieu@635
    41
    in the codebase as possible: we understand that writing
mathieu@635
    42
    tests is not sexy and that not everyone is convinced that
mathieu@635
    43
    they improve the code-writing poductivity which is why
mathieu@635
    44
    we do not enforce strict rules about testing. However,
mathieu@635
    45
    we expect model authors to answer basic questions about
mathieu@635
    46
    how they plan to test and validate their models.
mathieu@635
    47
mathieu@635
    48
  - you should be prepared to maintain your model once it is
mathieu@635
    49
    integrated: while we consider every bug filed against the 
mathieu@635
    50
    simulator as being a bug we must deal with and while we 
mathieu@635
    51
    will try to fix as many bugs as humanly possible, we
mathieu@635
    52
    also expect model authors to act as responsible maintainers
mathieu@635
    53
    and be reactive to bug reports concerning their models.
mathieu@635
    54
tomh@657
    55
  - The project has decided upon GNU GPLv2 as the licensing structure. 
tomh@657
    56
    All simulation software in the ns-3 repositories will be GNU GPLv2 
tomh@657
    57
    or GNU GPLv2-compatible (with non-GPLv2 licensing reserved for
tomh@657
    58
    ports of pre-existing code under a different license, such as BSD).
tomh@657
    59
    You do not have to assign your copyright to the ns-3 project but
tomh@657
    60
    you must accept the terms of the GPLv2 and attest that your 
tomh@657
    61
    contributions can be licensed under those terms.  See the 
tomh@657
    62
    following link:
mathieu@635
    63
    http://www.fsf.org/licensing/licenses/info/GPLv2.html