• We would love to have a thriving community with contributors from all over the world. We know we will only be able to build the most powerful framework with the help of you!

    How to contribute

    If you wish to pitch in and provide you skills to the development of Mono, we will be honored to have you help. We have setup this channel to host talks and discussions on developing and contributing.

    Before you submit a pull request on GitHub, you should discuss your contribution on this site. This way we can make sure will at working on the same goal and not doing redundant work. We have a (kind-of) TODO list in each sub category, with things that are missing or work in progress. These are called Current Implementation Status. If you find an interesting task there we would gladly accept your help.

    If you wish to contribute with something not on the list, you should discuss here first.

    Create a new thread in this or the sub-categories if you wish to contribute.

    Coding styles and standards

    I must admit that right now the code does not follow any strict coding style. Something are established as a standard though.

    1. New line before opening brackets {:
      for (int i=0;i<100; i++)
          // ...
      This applies to classes, functions, conditionals etc. We use this convention for make the coding more readable.
    2. Refrain from using the heap! If you create general purpose classes, you should avoid calling new or malloc. We want as much as possible allocated on the stack, to help the compiler estimate the memory consumption on boot.
    3. Getter functions are uppercase. All simple C++ getters on classes must be named upper case. Like these examples: Color(), Height(), TextSize(), etc. Setters must begin with a lower case letter and the word set: setColor(...), setHeight(...), etc.
    4. Parameters definitions to functions should include the unit. If possible you should define the unit as part of parameter name in functions. If your function is a getter it should contain the unit as part of its name. For example: setTemperature(int celcius) and Temperature::CelciusThreshold().
    5. Rely as little as possible on C++'s standard template library (std::) and on stdlib. If the libraries provide any functionality you need, you can of course use it - but do so with care.

Log in to reply