You'd like to contribute to Draft, that's awesome!
The following is here to help you help. It contains guidelines that all of us follow.
By participating (submitting pull requests or issues, commenting on those, editing the wiki, …) to this project you are excepted to uphold our Code of Conduct.
By contributing artwork, code or documentation to this project, you grant Draft a license to distribute your contribution under the terms of the GNU Affero General Public License version 3 or any later version.
If you encountered a bug on draft's website, spotted a bug in the source code or a mistake in the documentation, please open an issue after performing a quick search in our bug tracker.
When submitting an issue, please include all the details that might be relevant.
Example for an issue with the website:
- Tell us what you did, what happened and what should have happened instead.
- Give the webpage address (URL) at which you encountered the issue and explain how we could reproduce the issue.
- Give the version of the website (copy-paste it from the website footer, it looks like this:
v0.1.2/a51dd1f
), the operating system and version you're using, the web browser and version you're using. - If you have any idea how we could fix it, please tell us.
If you think Draft misses a feature, please open an issue. Don't hesitate to thoroughly describe your idea - the better the description, the better the discussion. For example you could explain why you need it (problems it fixes, use cases, …), how it would fit (the project's goals, the UI, …), how it could be implemented. These are just pointers, you don't actually have to answer all these questions.
Please help us improve the documentation. Open issues, comment on commits, submit pull requests, try to install and run the project on exotic operating systems… anything helps!
Pull Requests are most welcome, even if you are a beginner. We will do our best to guide you through the PR process, from (beginning) choosing an issue/feature to fix/implement to getting it merged (end).
- Work on branches and submit PRs. Nobody commits directly to master.
- We care a lot about testing. Good PRs come with good tests.
- 100% documentation. Everything is documented.
Elixir & PostgreSQL
- Dogma is the linter used to enforce code style consistency. We also use Credo for static code analysis, but its usage is not enforced here.
- ExUnit is the unit testing framework of choice.
- Coverex is used for coverage reports.
- Typespecs and Dialyxir when it makes sense (eg. in a lib: generally yes, in a Phoenix controller: generally no).
- Travis runs all of these.
HTML5 & SASS, JavaScript.
Browser support: IE11+
- ES6+ transpiled to ES5.
- Style guide enforced by eslint.