|
3 | 3 | ## Short Brief ## |
4 | 4 |
|
5 | 5 | ### What is this file? ### |
6 | | -It is a set of guidance rules for developers who'd like to contribute to this repo. |
7 | | -Versions go forward, new features are added, the API can change, but sometimes - Documentation doesn't keep the pace, unfortunately. |
| 6 | +It is a set of guidance rules for developers who'd like to contribute to this repo. |
| 7 | +Versions go forward, new features are added, the API can change, but sometimes - Documentation doesn't keep the pace, unfortunately. |
8 | 8 | To address those issues and allow developers to contribute good, quality code - This file must exist and always be up to date. |
9 | 9 |
|
10 | 10 | ### Dear Contributors ### |
11 | | -First of all, thank you for taking your time even considering contributing to this repo. |
12 | | -It is extremely important to us that you, ordinary users or continuous collaborators, |
13 | | -contribute to this project in a combined effort to make it greater, stable than ever before. |
| 11 | +First of all, thank you for taking your time even considering contributing to this repo. |
| 12 | +It is extremely important to us that you, ordinary users or continuous collaborators, contribute to this project in a combined effort to make it greater, stable than ever before. |
14 | 13 |
|
15 | 14 | ## Submitting Issues ## |
16 | | -New features and bug reports keep the project moving forward and getting better. |
| 15 | +New features and bug reports keep the project moving forward and getting better. |
17 | 16 | This is partly your duty, the user, to request those features and report the bugs. |
18 | 17 |
|
19 | 18 | ### Before you submit an issue ### |
20 | | -* Please make sure your'e using the latest version of **Arduino CMake**. |
21 | | - Generally it's the one in the [master](https://github.com/arduino-cmake/arduino-cmake) branch, unless said otherwise by any of the maintainers. |
22 | | -* Go over the existing issues list (including closed ones) to make sure your issue hasn't already been reported. |
| 19 | +* Please make sure your'e using the latest version of **Arduino CMake**. |
| 20 | + Generally it's the [latest release](https://github.com/arduino-cmake/Arduino-CMake-NG/releases), unless said otherwise by any of the maintainers. |
| 21 | +* Go over the existing issue list (including closed ones) to make sure your issue hasn't already been reported or fixed. |
23 | 22 |
|
24 | 23 | ### Submitting a good issue ### |
25 | 24 | Issues can be submitted with a very short description, but that would make the life of the developers addressing it very hard, leading to unresolved issues due to lack of information. |
@@ -54,111 +53,109 @@ Platform SDK Version: [Version] |
54 | 53 | ### Code Style |
55 | 54 | Like most projects, **Arduino-CMake** uses its own coding style which ensures that everybody can easily read and change files without the hassle of reading 3 different indentation styles paired 4 ways of brace spacing. |
56 | 55 |
|
57 | | -While we believe that the coding style you are using benefits you, please try and stick to the project's accepted style as close as possible. |
58 | | -For starters, make sure your editor supports `.editorconfig`. |
59 | | -It will take care of the some of the greatest hassles like indentation, new lines and such. |
60 | | -As for spacing, naming conventions, etc. - Please look at existing code to get an idea of the style. |
| 56 | +While we believe that the coding style you are using benefits you, please try and stick to the project's accepted style as close as possible. |
| 57 | +For starters, make sure your editor supports `.editorconfig`. |
| 58 | +It will take care of the some of the greatest hassles like indentation, new lines and such. |
| 59 | +As for spacing, naming conventions, etc. - Please look at existing code to get an idea of the style. |
61 | 60 | If you use an Jetbrains `IDEA` based IDE (for example `CLion`), chances are that the auto formatting functionality will take care of things due to the project's `codeStyleSettings.xml` residing in the repository. |
62 | 61 |
|
63 | 62 | ### Versioning |
64 | | -This project follows [semantic versioning](http://semver.org/spec/v2.0.0.html). |
65 | | -It also allows easy integration with Git's classic [Workflow Model](http://nvie.com/posts/a-successful-git-branching-model), which is described next. |
| 63 | +This project follows the [semantic versioning](http://semver.org/spec/v2.0.0.html). |
| 64 | +It also allows easy integration with our [Workflow Model](#Project Workflow), which is described next. |
66 | 65 |
|
67 | 66 | ### Project Workflow |
68 | 67 |
|
69 | | -This project follows Git's classic [Workflow Model](http://nvie.com/posts/a-successful-git-branching-model), allowing developers to work on multiple features simultaneously without clashing. This model is a bit different than suggested by **GitHub**, intended mostly for offline Git repositories. However, both models can be easily integrated together to form a single model. |
| 68 | +Up to version *0.6*, included, this project followed Git's [Classic Workflow Model](http://nvie.com/posts/a-successful-git-branching-model), allowing developers to work on multiple features simultaneously without clashing. This model is a bit different than suggested by **GitHub**, intended mostly for offline Git repositories. |
| 69 | +For this reason the project has adapted the model to GitHub's model from version *0.6.x* and above. |
70 | 70 |
|
71 | | -The elements of the model are thoroughly described in the following sections. |
| 71 | +The elements of the adapted model are thoroughly described in the following sections. |
72 | 72 |
|
73 | 73 | #### Bug Fixes |
74 | | -Bug fixes can be found in the *stable* release or in a *developed* feature. |
| 74 | +Bug fixes can be found in the *stable release* or in a *developed feature*. |
75 | 75 | The way we treat them is different, described in the next sections. |
76 | 76 |
|
77 | 77 | **Note:** Before claiming to find a bug, make sure you are on the latest commit of that branch. |
78 | 78 |
|
79 | 79 | ##### Release Bugs/Critical Bugs |
80 | 80 |
|
81 | | -Those are the ones with the highest priority to fix. If you encounter such a bug you should immediately submit a new issue. Before you submit, please see [Submitting Issues](#Submitting-Issues). |
| 81 | +Those are the ones with the highest priority to fix. If you encounter such a bug you should immediately submit a new issue. Before you submit, please see [Submitting Issues](#Submitting-Issues). |
82 | 82 | If you'd like to fix the bug yourself, please **state that** in the issue. |
83 | 83 |
|
84 | | -Fixes to such bugs should be made on a separate branch named `hotfix/B` where `B` is a short description of the bug being solved, separated with a hyphen (`-`) between every word. |
85 | | -Do note that even though it should describe the bug, it's just a name, thus it shouldn't be too long. |
| 84 | +Fixes to such bugs should be made on a separate branch named `hotfix/B` where `B` is a short description of the bug being solved, separated with a hyphen (`-`) between every word. |
| 85 | +Do note that even though it should describe the bug, it's just a name, thus it shouldn't be too long. |
86 | 86 | For example the name `hotfix/cmake-not-reloading-when-platform-libraries-are-used` is a bad name, because even though it fits the naming standard and describes the bug, it is way too long for a name. |
87 | 87 | A better name would be `hotfix/platform-libraries-reloading`. |
88 | 88 |
|
89 | 89 | According to our [Workflow model](#Project-Workflow), once the hotfix is finished one should: |
90 | 90 |
|
91 | | -1. Merge directly to **master** |
92 | | - * Add a tag to the *merge-commit* named after the patched version. |
93 | | - e.g If the current stable version is v2.1.0, the hotfix should make it v2.1.1 (Bump the patch number). |
94 | | -2. Merge directly to **develop** |
95 | | -3. Use the `--no-ff` flag when merging |
| 91 | +1. Add a tag to the *merge-commit* named after the patched version. |
| 92 | + e.g If the current stable version is v2.1.0, the hotfix should make it v2.1.1 (Bump the patch number). |
| 93 | +2. Pull-Request directly to **master** |
96 | 94 |
|
97 | | -However, **GitHub**'s model support *Pull-Request*s instead of simple *merges*. |
98 | | -To comply with the steps listed above, 2 PRs should be made: One to the **master** branch and another to the **develop** branch. |
99 | | -Instead, we accept a single PR to the **master** branch, and will manually merge the rest once the hotfix is finished. Converting that to a list would look like this: |
100 | | - |
101 | | -1. Pull-Request directly to **master** |
102 | | - * Once accepted, the merging maintainer will add a tag to the *merge-commit* and bump the patch version (Further described in the previous list). |
103 | | -2. A maintainer will merge to **develop** or **current release** (Note on that below) |
104 | | -3. The `--no-ff` flag will be used when merging |
| 95 | +The [Classic Workflow Model](http://nvie.com/posts/a-successful-git-branching-model) lists that a hotfix should be *merged* to both **master** and **develop**, however, GitHub doesn't play nicely with this exact model and basically allows only one of the branches to exist in such a workflow that respects *Pull-Requests* (Instead of *merges*) on one side, and the Workflow model on another. |
105 | 96 |
|
106 | 97 | **Note to Maintainers/Collaborators:** |
107 | | -If an active **release** branch exists when the hotfix is integrated, meaning there's an on-going release, the hotfix should be merged directly to the **release** branch instead of the **develop** branch, unless the hotfix fixes a truly critical bug that affects development as well. |
| 98 | +If an active **release** branch exists when the hotfix is integrated, meaning there's an on-going release, the hotfix should be also be *merged* to the **release** branch, optionally from the **master** branch if a *merge* from the hotfix branch isn't possible. |
108 | 99 |
|
109 | 100 | ##### Development Bugs |
110 | 101 |
|
111 | | -Those are easier to find and fix since they exist only in **feature** branches, planned for future releases and considered in development. However, these still need to be reported by submitting relevant issues, also specifying if your'e attempting to fix them. |
| 102 | +These exist in **feature** branches or the **master** branch - Code that's planned for future releases and considered in development. |
| 103 | +However, these still need to be reported by submitting relevant issues. You should also specify if your'e attempting to fix them. |
112 | 104 |
|
113 | | -Fixes to such bugs should be made on a separate branch, preferably in a forked version, named after the bug. Once finished, you should PR it to the appropriate **feature** branch. |
114 | | -If the **feature** branch has already been merged to **develop**, the merging maintainer will take care of merging the branch to develop again. |
| 105 | +Fixes to such bugs should be made on a separate branch, preferably in a forked version, named after the bug. Once finished, you should PR it to the appropriate **feature** branch or directly to the **master** branch - depending on where you found them. |
| 106 | +If the **feature** branch has already been merged to **master**, you should simply PR directly to **master**. |
115 | 107 |
|
116 | 108 | #### New Features |
117 | | -To ensure your contribution makes it into the mainline codebase, always check the **develop** branch for the next targeted release. |
118 | | -Make sure your contribution is on par with that branch and PR features back into **develop**. |
119 | | -This strategy should be the right one for most users. |
| 109 | +To ensure your contribution makes it into the mainline codebase, always check the **master** branch for the next targeted release. |
| 110 | +Make sure your contribution is on par with that branch, then PR directly into **master**. |
| 111 | +This strategy should be the right one for most users. |
120 | 112 | If you want to make further additions to a feature currently under development, you can also PR into the corresponding **feature** branch. |
121 | 113 |
|
122 | 114 | ##### Feature Branch Naming |
123 | 115 |
|
124 | 116 | **Feature** branch names should be short and descriptive, each word separated by a single hyphen (`-`). |
125 | | -e.g A branch named `feature/blacklisting-libraries-to-avoid-automatic-inclusion-when-reloading-cmake` is a bad branch name because it's too long, even though it's very descriptive. |
126 | | -A better name would be `feature/library-blacklist` because it's short and generally descriptive. |
127 | | -Any further description would be written in commit messages or the final PR to the **develop** branch. |
| 117 | +e.g A branch named `feature/blacklisting-libraries-to-avoid-automatic-inclusion-when-reloading-cmake` is a bad branch name because it's too long, even though it's very descriptive. |
| 118 | +A better name would be `feature/library-blacklist` because it's short and generally descriptive. |
| 119 | + |
| 120 | +Any further description would be written in commit messages or the final PR to the **master** branch. |
128 | 121 |
|
129 | 122 | #### Releases |
130 | 123 |
|
131 | 124 | When a handful of features is complete, the developed product is ready for release. |
132 | | -According to our [Workflow model](#Project-Workflow), every release should start with a branch named after the about-to-be-released version. e.g `release/2.0.0`. |
| 125 | +According to our [Workflow model](#Project-Workflow), every release should start with a branch named after the *about-to-be-released* version. e.g `release/2.0.0`. |
133 | 126 |
|
134 | 127 | There are some strict rules we apply to our releases: |
135 | 128 |
|
136 | 129 | * At any given moment there should be a <u>single release</u> **or** <u>no release at all</u>. |
137 | 130 | We're not working Agile on this project, thus there's no need for multiple simultaneous releases. |
138 | | -* Once existing, any hotfix should be merged to the **release** branch instead of the **develop** branch (See [Release Bugs](#Release-Bugs/Critical-Bugs)). |
| 131 | +* Once existing, any hotfix should be merged to the **release** branch as well as to the **master** branch (See [Release Bugs](#Release-Bugs/Critical-Bugs)). |
139 | 132 | * Any last-minute bug-fixes should be made directly on the **release** branch. |
140 | | - They will be merged later to the **develop** branch once the release is completed. |
141 | | -* New features developed after the release has been started are intended for the <u>**next** release</u>. |
142 | | -* Before completing the release, the `CHANGELOG.md` file should be updated accordingly. |
143 | | - |
144 | | -Once the release is complete it is merged to the **master** branch and to the **develop** branch. |
| 133 | + They will be merged later to the **master** branch once the release is completed. |
| 134 | +* New features developed after the release has been started are intended for the <u>**next** release</u> - They should be merged only to the **master** branch! |
| 135 | +* Before completing the release: |
| 136 | + * Documentation should be up-to-date (Currently maintained in GitHub Wiki) |
| 137 | + * **Changelog** file should be updated accordingly |
| 138 | + * **Authors** file should be updated accordingly |
| 139 | + |
| 140 | +Once the release is complete it is merged to the **master** branch. |
145 | 141 | A tag with the final release version is also added to the *merge-commit* on **master**. |
146 | 142 |
|
147 | 143 | ### Pull Requests |
148 | 144 |
|
149 | | -At GitHub we support merging by Pull-Requesting. |
| 145 | +At GitHub we support merging by Pull-Requesting. |
150 | 146 | It helps us document code better, as well as discussing and reviewing a change before it gets into the mainline codebase. |
| 147 | + |
151 | 148 | Please make a Pull Request for every change you'd like to make, yes, <u>even if your'e an maintainer or a collaborator</u>. |
152 | 149 |
|
153 | | -Also note that we do have a strict rule about the branch your'e PRing from - Once it gets merged, it will be deleted. This is done to avoid unnecessary cluttering of the project. |
| 150 | +Also note that we do have a strict rule about the branch your'e PRing from - Once it gets merged, it will be probably get deleted. This is done to avoid unnecessary cluttering of the project. |
154 | 151 | If you need to keep the branch for some reason, please state it in **bold** in the PR's description, so that the merging user will notice it. |
155 | 152 |
|
156 | 153 | ### Breaking Changes |
157 | | -Breaking changes require the release of a new major version according to *semver* rules. |
| 154 | +Breaking changes require the release of a new major version according to [semantic versioning](#Versioning) rules. |
158 | 155 | If your'e making changes to the **public** interface (API) that are not backwards-compatible, make sure it is **absolutely** necessary. |
159 | 156 |
|
160 | 157 | ### Changelog |
161 | | -All project changes, new features and bug fixes are documented in `CHANGELOG.md`. |
162 | | -For any contribution, please add a corresponding changelog entry. |
163 | | -Bump the patch version for bug fixes and the minor version for feature additions. |
| 158 | +All project changes, new features and bug fixes are documented in `CHANGELOG.md`. |
| 159 | +<u>**Maintainers**</u> - For any contribution, please add a corresponding changelog entry. |
| 160 | +Bump the patch version for bug fixes and the minor version for feature additions. |
164 | 161 | Don't **ever** bump the major version on your behalf - It should be done only by the maintainers of the project. |
0 commit comments