Languages and tools -----------------------------------------------------------

WeeWX is writting in Python.  Skins contain template files, some of which are
rendered to HTML, and some include Javascript.  A single makefile includes
targets that automate many of the packaging and release tasks.

You do not have to be fluent in all of these languages to contribute to WeeWX.

The 'Notes for developers' in the WeeWX documentation is a must-read for anyone
who wants to contribute to the WeeWX code, and is very helpful for those who
want to write extensions to WeeWX.  The notes include the project goals and
strategies, descriptions of components, naming conventsions, code style, and
many other things related to writing code for WeeWX.


Version control ---------------------------------------------------------------

We use Git as the source control system.  The code is hosted on GitHub.

We generally follow Vincent Driessen's branching model.

http://nvie.com/posts/a-successful-git-branching-model/

Ignore the complicated diagram at the beginning of the article, and just focus
on the text. In this model, there are two key branches:

    'master'. Fixes go into this branch. We tend to use fewer hot fix branches
    and, instead, just incorporate any fixes directly into the branch. Releases
    are tagged relative to this branch.

    'development' (called develop in Vince's article). This is where new
    features go. Before a release, they will be merged into the master branch.

What this means to you is that if you submit a pull request that includes a
new feature, make sure you commit your changes relative to the development
branch. If it is just a bug fix, it should be committed against the master
branch.
