git.iko.soy/typeable/servant
on v0.5.post1 help sign in
typeable/servant/CONTRIBUTING.md
86 lines 3.1 kB history raw
1# Contributing Guidelines
3Contributions are very welcome! To hack on the github version, clone the
4repository. You can use `cabal`:
6```shell
7./scripts/start-sandbox.sh # Initialize the sandbox and add-source the packages
8./scripts/test-all.sh # Run all the tests
9```
11`stack`:
13```shell
14stack build # Install and build packages
15stack test # Run all the tests
16```
18Or `nix`:
19```shell
20./scripts/generate-nix-files.sh # Get up-to-date shell.nix files
21```
24## General
26Some things we like:
28- Explicit imports
29- Upper and lower bounds for packages
30- Few dependencies
31- -Werror-compatible (for both 7.8 and 7.10)
33Though we aren't sticklers for style, the `.stylish-haskell.yaml` and `HLint.hs`
34files in the repository provide a good baseline for consistency.
36Please include a description of the changes in your PR in the `CHANGELOG.md` of
37the packages you've changed. And of course, write tests!
39## PR process
41We try to give timely reviews to PRs that pass CI. If CI for your PR fails, we
42may close the PR if it has been open for too long (though you should feel free
43to reopen when the issues have been fixed).
45We require two +1 from the maintainers of the repo. If you feel like there has
46not been a timely response to a PR, you can ping the Maintainers group (with
47`@haskell-servant/maintainers`).
49## New combinators
51We encourage people to experiment with new combinators and instances - it is
52one of the most powerful ways of using `servant`, and a wonderful way of
53getting to know it better. If you do write a new combinator, we would love to
54know about it! Either hop on #servant on freenode and let us know, or open an
55issue with the `news` tag (which we will close when we read it).
57As for adding them to the main repo: maintaining combinators can be expensive,
58since official combinators must have instances for all classes (and new classes
59come along fairly frequently). We therefore have to be quite selective about
60those that we accept. If you're considering writing a new combinator, open an
61issue to discuss it first! (You could release your combinator as a separate
62package, of course.)
65## New classes
67The main benefit of having a new class and package in the main servant repo is
68that we get to see via CI whether changes to other packages break the build.
69Open an issue to discuss whether a package should be added to the main repo. If
70we decide that it can, you can still keep maintainership over it.
72Whether or not you want your package to be in the repo, create an issue with
73the `news` label if you make a new package so we can know about it!
75## Release policy
77We are currently moving to a more aggresive release policy, so that you can get
78what you contribute from Hackage fairly soon. However, note that prior to major
79releases it may take some time in between releases.
81## Reporting security issues
83Please email haskell-servant-maintainers AT googlegroups DOT com. This group is
84private, and accessible only to known maintainers. We will then discuss how to
85proceed. Please do not make the issue public before we inform you that we have
86a patch ready.