Contributing to the Meson build system

There are two simple ways to submit your patches. The preferred way is
to send a github pull request. Small changes can also be sent as
patches as emails to the Meson mailing list. Remember to add your name
to the list of contributors in authors.txt.


Python Coding style

Meson follows the basic Python coding style. Additional rules are the
following:

- indent 4 spaces, no tabs ever
- indent meson.build files with two spaces
- try to keep the code as simple as possible
- contact the mailing list before embarking on large scale projects
  to avoid wasted effort
- all new features must come with a test (or several if it is
  a big feature)


C/C++ coding style

Meson has a bunch of test code in several languages. The rules for
those are simple.

- indent 4 spaces, no tabs ever
- brace always on the same line as if/for/else/function definition


External dependencies

The goal of Meson is to be as easily usable as possible. The user
experience should be "get Python3 and Ninja, run", even on
Windows. Unfortunately this means that we can't have dependencies on
projects outside of Python's standard library. This applies only to
core functionality, though. For additional helper programs etc the use
of external dependencies may be ok. If you feel that you are dealing
with this kind of case, please raise the issue on the mailing list
first.


What not to contribute?

There are a few things that people seem to want to add to Meson but which
are not there by design and will not be added either.

The first one is defining your own functions or a generalised for loop.
These are bad because they would make Meson's DSL Turing complete. The
second feature is a Make backend.

The FAQ has specific information why these two features will not be
added to Meson: https://github.com/mesonbuild/meson/wiki/FAQ

Merge requests adding either of these two features will be automatically
rejected. Please save everyone's time (especially your own) and don't start
working on these features.


Do I need to sign a CLA?

No. All contributions are welcome.
