|
1 | 1 | # Contributing
|
2 | 2 |
|
3 | 3 | Contributions should be made via pull requests. Pull requests will be reviewed
|
4 |
| -by one or more maintainers and merged when acceptable. |
| 4 | +by two or more maintainers and merged when acceptable. |
| 5 | + |
| 6 | +The goal of the Compose Specification is to be the simplest cloud and platform |
| 7 | +agnostic way of defining container based applications. A developer should be |
| 8 | +able to develop and debug an application on their local system before |
| 9 | +confidently deploying it to a production platform– cloud or otherwise. The |
| 10 | +format will be portable across container platforms by providing a high level |
| 11 | +abstraction for how the containers are built, deployed, networked, and |
| 12 | +configured. |
| 13 | + |
| 14 | +When proposing features as part of the Compose Specification, changes should be |
| 15 | +focused towards features which enable developers as part of their |
| 16 | +[inner loop](https://docs.microsoft.com/en-us/dotnet/architecture/containerized-lifecycle/design-develop-containerized-apps/docker-apps-inner-loop-workflow) |
| 17 | +and not focused on operator controls. |
| 18 | +Some features may benefit the container ecosystem, however, they may not be |
| 19 | +appropriate for a first class feature in Compose. |
5 | 20 |
|
6 |
| -The goal of the Compose Specification is to be the simplest cloud and platform |
7 |
| -agnostic way of defining container based applications. A developer should be able |
8 |
| -to develop and debug an application on their local system before confidently deploying |
9 |
| -it to a production platform– cloud or otherwise. The format will be portable across |
10 |
| -container platforms by providing a high level abstraction for how the containers are |
11 |
| -built, deployed, networked, and configured. |
| 21 | +## Successful Changes |
12 | 22 |
|
13 |
| -When proposing features as part of the Compose Specification, changes should be focused |
14 |
| -towards features which enable developers as part of their [inner loop](https://docs.microsoft.com/en-us/dotnet/architecture/containerized-lifecycle/design-develop-containerized-apps/docker-apps-inner-loop-workflow) |
15 |
| - and not focused on operator controls. |
16 |
| -Some features may benefit the container ecosystem, however, they may not be appropriate |
17 |
| -for a first class feature in Compose. |
| 23 | +We ask that contributors read the [Compose Vision](VISION.md) to ensure that |
| 24 | +proposed changes are aligned with the objectives of the Compose project. |
18 | 25 |
|
19 |
| -## Successful Changes |
| 26 | +To help maintainers understand what user or developer problem needs to be |
| 27 | +solved, the first step to a contribution is usually submitting an issue. A well |
| 28 | +written issue is one that clearly outlines the developer or user problem that |
| 29 | +needs to be solved along with a list of requirements for resolution of the |
| 30 | +problem. If there are multiple possible solutions to the problem, these can be |
| 31 | +outlined in the issue. Once consensus is reached on how to resolve the issue, a |
| 32 | +pull request can be created. |
| 33 | + |
| 34 | +Pull requests that propose minor changes or improvements may be submitted |
| 35 | +without an associated issue or discussion. |
20 | 36 |
|
21 |
| -We ask that before contributing, please make the effort to ensure you have read the |
22 |
| -Compose Vision to ensure that your change is in keeping with the objectives of Compose. |
23 |
| -You can coordinate with the maintainers of the project before submitting large proposals |
24 |
| -or high impact PRs, this will prevent you from doing extra work that may or may not be merged. |
25 |
| -PRs that are just submitted without any prior communication will likely be summarily closed. |
26 |
| - |
27 |
| -While pull requests are the methodology for submitting changes, changes are much more |
28 |
| -likely to be accepted if they are accompanied by a full justification of what developer |
29 |
| -problem you are solving. Often times, it helps to first state the problem before presenting |
30 |
| -solutions. |
31 |
| - |
32 |
| -Typically, the best methods of accomplishing this are to submit an issue, stating the |
33 |
| -problem. This issue can include a problem statement and a checklist with requirements. |
34 |
| -If solutions are proposed, alternatives should be listed and eliminated. Even if the |
35 |
| -criteria for elimination of a solution is frivolous, say so. |
36 |
| -Larger changes typically work best with design documents, these are items which may |
37 |
| -change the scope or vision for Compose. These should be accompanied with a more detailed |
38 |
| -overview of the proposal, providing context to the justfication at the time the feature |
39 |
| -was conceived and can inform future documentation contributions. |
| 37 | +For large or high impact changes, contributors can reach out to maintainers |
| 38 | +before starting work. This will ensure that contributors and maintainers are |
| 39 | +aligned and increase the chance that the change is accepted. |
40 | 40 |
|
41 | 41 | ## Commit Messages
|
42 | 42 |
|
43 |
| -There are times for one line commit messages and this is not one of them. |
44 |
| -Commit messages should follow best practices, including explaining the context |
45 |
| -of the problem and how it was solved, including in caveats or follow up changes |
46 |
| -required. They should tell the story of the change and provide readers |
| 43 | +Commit messages should follow best practices and explain the context of the |
| 44 | +problem and how it was solved-- including any caveats or follow up changes |
| 45 | +required. They should tell the story of the change and provide readers an |
47 | 46 | understanding of what led to it.
|
48 | 47 |
|
49 |
| -If you're lost about what this even means, please see [How to Write a Git |
50 |
| -Commit Message](http://chris.beams.io/posts/git-commit/) for a start. |
| 48 | +[How to Write a Git Commit Message](http://chris.beams.io/posts/git-commit/) |
| 49 | +provides a good guide for how to do so. |
51 | 50 |
|
52 | 51 | In practice, the best approach to maintaining a nice commit message is to
|
53 | 52 | leverage a `git add -p` and `git commit --amend` to formulate a solid
|
54 |
| -changeset. This allows one to piece together a change, as information becomes |
| 53 | +change set. This allows one to piece together a change, as information becomes |
55 | 54 | available.
|
56 | 55 |
|
57 | 56 | If you squash a series of commits, don't just submit that. Re-write the commit
|
58 | 57 | message, as if the series of commits was a single stroke of brilliance.
|
59 | 58 |
|
60 |
| -That said, there is no requirement to have a single commit for a PR, as long as |
61 |
| -each commit tells the story. For example, if there is a feature that requires a |
62 |
| -package, it might make sense to have the package in a separate commit then have |
63 |
| -a subsequent commit that uses it. |
| 59 | +That said, there is no requirement to have a single commit for a pull request, |
| 60 | +as long as each commit tells the story. For example, if there is a feature that |
| 61 | +requires a package, it might make sense to have the package in a separate commit |
| 62 | +then have a subsequent commit that uses it. |
64 | 63 |
|
65 | 64 | Remember, you're telling part of the story with the commit message. Don't make
|
66 | 65 | your chapter weird.
|
|
0 commit comments