# Contributing¶

Elemental is an open source project and contributions are always welcome. This page contains information for prospective Elemental developers, including an overview of the organization of the current code base, how to write code and documentation, and how to use the tools like Git.

Contributions are actively encouraged. Your first few contributions should ideally take the form of git-formatted changesets. After submitting several high-quality changesets, you may receive direct commit access to the GitHub repositories.

## Organization¶

At this point in time, Elemental is led in a manner which closely resembles that of Python or the Linux kernel: community and developer feedback and changesets are actively encouraged, but decisions are ultimately decided by the main developer of the project (in this case, Jack Poulson). This role is traditionally referred to as the Benevolent Dictator. As more developers begin to more frequently contribute high-quality changesets to the library, Elemental will move towards a more distributed decision-making structure.

## Workflow¶

While the project’s main page is libelemental.org, development takes place at github.com/elemental/Elemental and discussions about development take place via the mailing list dev@libelemental.org (please see the support page for sign-up instructions).

The most straight-forward way to contribute is to fork Elemental on GitHub, commit your proposed changes, and then to submit a pull request. If the changeset involves a significant change to the library that warrants discussion, then it would be best to also send a message to dev@libelemental.org.