|
|
|
Development guidelines
|
|
|
|
======================
|
|
|
|
|
|
|
|
Philosophy
|
|
|
|
----------
|
|
|
|
|
|
|
|
The mailserver is designed as a whole, some images are therefore not best
|
|
|
|
suited for reuse outside this project. All images should however follow
|
|
|
|
Docker best practices and be as generic as possible :
|
|
|
|
|
|
|
|
- even if not suited for reuse, they should be simple enough to
|
|
|
|
fit as base images for other projects,
|
|
|
|
- interesting settings should be available as environment variables
|
|
|
|
- base images should be well-trusted (officiel Alpine or Debian for instance).
|
|
|
|
|
|
|
|
Git workflow
|
|
|
|
------------
|
|
|
|
|
|
|
|
Forking vs. committing
|
|
|
|
``````````````````````
|
|
|
|
|
|
|
|
Linus' way of things sounds fine for now: if you find yourself implementing a
|
|
|
|
new feature, either send me an email with a bunch of commits or use Github
|
|
|
|
pull request feature. Maybe if the user base grows too much as well as the need
|
|
|
|
for trust in a specific branch of the project, we can switch to a shared
|
|
|
|
repository and add a couple of trusted committers.
|
|
|
|
|
|
|
|
Commits
|
|
|
|
```````
|
|
|
|
|
|
|
|
This is a community project, thus commits should be readable enough for any of
|
|
|
|
the contributors to guess the content by simply reading the comment or find a
|
|
|
|
proper commit when one knows what he is looking for.
|
|
|
|
|
|
|
|
Usual standards remain: write english comments, single line short comments and
|
|
|
|
additional multiline if required (keep in mind that the most important piece
|
|
|
|
of information should fit in the first line).
|
|
|
|
|
|
|
|
Branches
|
|
|
|
````````
|
|
|
|
|
|
|
|
You are of course free of naming you branches to your taste or even using
|
|
|
|
master directly if you find this appropriate. Still, keep in mind that:
|
|
|
|
|
|
|
|
- a git email or a pull request should address a single feature a bug,
|
|
|
|
so keep your branches as tidy as possible;
|
|
|
|
- this is a small project with a limited number of forks and active threads
|
|
|
|
on Github, so one might want to look at your fork and find the branch you
|
|
|
|
are using to implement a specific feature; to avoid any hassle, we suggest
|
|
|
|
that you use branch names prefixed with ``feat-`` or ``fix-`` and followed
|
|
|
|
either by the name of the Github issue or a short and meaningful name.
|
|
|
|
|
|
|
|
Workflow
|
|
|
|
````````
|
|
|
|
|
|
|
|
All commits will be merged to the main ``master`` branch for testing. New
|
|
|
|
images are built by Docker Hub with the ``testing`` tag for each new commit on
|
|
|
|
the ``master`` branch.
|
|
|
|
|
|
|
|
After some brief testing, urgent fixes will be cherry-picked to the current stable
|
|
|
|
branch and new stable builds will be released.
|
|
|
|
|
|
|
|
At the end of every milestone, a new stable branch will be created from ``master``
|
|
|
|
or any previous commit that matches the completion of the milestone.
|
|
|
|
|
|
|
|
Forked projects
|
|
|
|
---------------
|
|
|
|
|
|
|
|
If you find yourself forking the project for a specific independant purpose
|
|
|
|
(commercial use, different phylosophy or incompatible point of view), we would
|
|
|
|
be glad if you let us know so that we can list interesting known forks and
|
|
|
|
their specific features (and backport some of them if your implementation
|
|
|
|
is free as well).
|