Skip to content

Commit b1b0fa1

Browse files
committed
fix(handbook): add links and improve syntax
1 parent b43bfa3 commit b1b0fa1

File tree

7 files changed

+51
-96
lines changed

7 files changed

+51
-96
lines changed

handbook/commit_messages.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ nav_order: 6
66

77
# Commit Messages Style Guide
88

9-
A commit message is a brief description of the changes made in a commit. It is a way to communicate the purpose of the change to other developers.
9+
A commit message is a brief description of the changes made in a [commit](https://git-scm.com/docs/git-commit). It is a way to communicate the purpose of the change to other developers.
1010
A good commit message helps to understand the changes made in the commit and why they were made.
1111

1212
All Nethesis projects follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) standard for commit messages.

handbook/index.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
layout: default
3-
title: Development Handbook
3+
title: Development process
44
nav_order: 1
55
---
66

@@ -41,7 +41,7 @@ There are two communities that contribute significantly:
4141

4242
- [NethServer Community](https://community.nethserver.org/): This community consists of users and developers who volunteer their time. The forum is in English and open to everyone. It is the primary place for feature requests, support, and bug reports. Without this community, the project would not exist.
4343

44-
- [Nethesis Partner Community](https://partner.nethesis.it/): This community includes partners and customers. The forum is in Italian and focuses on commercial support, feature requests, and support. They provide substantial contributions to the project roadmap as they financially support the project. Access is reserved for partners.
44+
- [Nethesis Partner Community](https://partner.nethesis.it/): This community includes partners and customers. The forum is in Italian and focuses on commercial support, feature requests and support. They provide substantial contributions to the project roadmap as they financially support the project. Access is reserved for partners.
4545

4646
The main tool used is [GitHub](https://github.com), where the code is hosted, and the development process is managed. Repositories are organized into organizations. Nethesis has two organizations:
4747

@@ -50,26 +50,25 @@ The main tool used is [GitHub](https://github.com), where the code is hosted, an
5050

5151
## General workflow
5252

53-
The development workflow for Nethesis projects involves several steps to ensure quality and efficiency. Here is a detailed description of the process:
53+
The development process is heavily based on the use of GitHub and follows the GitHub flow methodology.
54+
GitHub Flow is a lightweight, branch-based workflow for managing work. It involves creating a branch for each
55+
feature or bug fix, committing changes to that branch, opening a pull request to discuss and review the changes,
56+
and merging the branch into the main branch once approved. It emphasizes collaboration, continuous delivery,
57+
and integration. For more details, visit [GitHub Flow official documentation](https://docs.github.com/en/get-started/using-github/github-flow).
58+
59+
The development workflow for NethServer projects involves several steps to ensure quality and efficiency. Here is a detailed description of the process:
5460

55-
1. **Bug or Feature Collection**: Issues are collected from internal channels (private chats, helpdesk) or external channels such as community forums.
56-
2. **Issue Formalization**: The collected issues are formalized into GitHub issues. This task is usually delegated to a developer but can also be performed by other roles such as the project manager. The issue must be added to a project board and can be added to a milestone if it must be planned for a specific release.
57-
3. **Issue Assignment**: The issue is assigned to a developer who implements the solution in a separate branch and opens a pull request. If the issue requires changes to the user interface, the issue is assigned to a UI/UX designer before starting the development process.
61+
1. **Bug or Feature Collection**: Issues are collected from public channels such as community forums or internal channels (private chats, helpdesk).
62+
The [Product Manager (PM)](management/#product-manager) is responsible for collecting and organizing the issues.
63+
2. **Issue Formalization**: The collected issues are formalized into GitHub [issues](issues). This task is usually delegated to the PM or to a [developer](management/#developer) but can also be performed by other roles such as a support team member. The issue must be added to a project board and can be added to a milestone if it must be planned for a specific release.
64+
3. **Issue Assignment**: The issue is assigned to a developer who implements the solution in a separate branch and opens a [Pull Request (PR)](pull_requests). If the issue requires changes to the user interface, the issue is assigned to a UI/UX designer before starting the development process.
5865
4. **Code Review**: The code is subjected to a code review by one or more developers to ensure quality and adherence to coding standards.
5966
5. **Pull Request Approval and Merge**: Once the pull request is approved, it is merged into the main branch.
6067
6. **Automated Build and Test Process**: The build and test processes are automatically executed to verify the changes.
61-
7. **Quality Assurance (QA)**: The output of the build process, whether a module or a package, is subjected to QA testing.
68+
7. **Quality Assurance (QA)**: The output of the build process, whether a module or a package, is subjected to [Quality Assurance (QA)](management/#qa-team-member-testing) testing.
6269
8. **Release or Rework**:
63-
- If the QA process is successful, the module or package is released, and the issue is closed.
70+
- If the QA process is successful, the [packager](management#packager) can release the module or package, and the issue is closed.
6471
- If the QA process fails, the issue is returned to the developer for correction, and the process restarts from step 3.
65-
66-
## Tools and methodologies
67-
68-
The development process is heavily based on the use of Git and GitHub and follows the GitHub flow methodology.
69-
GitHub Flow is a lightweight, branch-based workflow for managing work on GitHub. It involves creating a branch for each
70-
feature or bug fix, committing changes to that branch, opening a pull request to discuss and review the changes,
71-
and merging the branch into the main branch once approved. It emphasizes collaboration, continuous delivery,
72-
and integration. For more details, visit [GitHub Flow official documentation](https://docs.github.com/en/get-started/using-github/github-flow).
7372

7473
## Handbook structure
7574

handbook/issues.md

Lines changed: 21 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ There two main type of issues:
3030

3131
Bug and feature issues will always produce some code changes inside one or more Git repositories.
3232
Usually this type of issue are the parent issue for one or more sub-issues.
33-
The QA should always test the parent issue, not the sub-issues.
33+
34+
The QA of the code should always test the parent issue, not the sub-issues.
35+
Still, sub-issues of type **Design** can pass to the testing state when the mockup needs to be reviewed. When the mockup is approved, the sub-issue can be
36+
moved to verified state or directly closed.
3437

3538
Sub-issues are tasks that are part of the parent issue. They can be of different types:
3639

@@ -49,6 +52,14 @@ Sub-issues are tasks that are part of the parent issue. They can be of different
4952

5053
An issue can track a feature, a bug, or a task.
5154

55+
Issues are not a to-do list. Issues track the status changes of a job, the
56+
output of the job will be a new container image, in case of NethServer, resolving the issue itself.
57+
If you are exploring some esoteric paths for new feature or hunting
58+
something like a [heisenbug](http://en.wikipedia.org/wiki/Heisenbug>),
59+
please open a discussion with your thoughts.
60+
Then create a new issue only when you’re ready to write a formal description
61+
and produce some output object.
62+
5263
### Feature
5364

5465
A process for a new feature should be something like this:
@@ -58,7 +69,7 @@ A process for a new feature should be something like this:
5869
- if a feature is planned for the future it is also recorded in a [project
5970
draft card](https://github.com/orgs/NethServer/projects/8)
6071

61-
- ongoing development can be tracked inside a [draft pull request](#draft-pull-requests)
72+
- ongoing development can be tracked inside a [draft pull request](/pull_requests/#draft-pull-requests)
6273

6374
- once the work on the feature starts, open the issue on GitHub:
6475
- for [NethServer or NethVoice](https://github.com/NethServer/dev/issues/new)
@@ -83,19 +94,10 @@ By the way, it’s perfectly reasonable not to fill issues for
8394
occasional small fixes, like typos in translations.
8495

8596
When implementing small fixes, always avoid commits to the main branch.
86-
Open a [pull request](#pull-requests) and carefully describe the problem.
97+
Open a [pull request](/pull_requests) and carefully describe the problem.
8798
Creation of issues can be avoided only for trivial fixes which require
8899
no QA effort.
89100

90-
Issues are not a to-do list. Issues track the status changes of a job, the
91-
output of the job will be a new container image, in case of NethServer, resolving the issue itself.
92-
If you are exploring some esoteric paths for new feature or hunting
93-
something like a [heisenbug](http://en.wikipedia.org/wiki/Heisenbug>),
94-
please open a discussion with your thoughts.
95-
Then create a new issue only when you’re ready to write a formal description
96-
and produce some output object.
97-
98-
99101
## Writing issues
100102

101103
How to write a bug report:
@@ -162,79 +164,53 @@ The process of handling an issue is described in the following sections.
162164
### Developer
163165

164166
The *Developer*.
165-
166167
- Sets *Assignee* to himself.
167-
168-
- Sets the *Project* to `NethServer 8`, `NethVoice 8`, or `NethSecurity`.
169-
170-
- Bundle his commits as one or more GitHub [pull requests](#pull-request)
171-
168+
- Sets the *Project* to `NethServer`, `NethVoice`, or `NethSecurity`.
169+
- Bundle his commits as one or more GitHub [pull requests](/pull_request).
172170
- For *features** *enhancements*, writes the test case (for *bugs* the procedure to
173171
reproduce the problem should be already set).
174-
175-
- After the pull request is merged, the developer should:
176-
172+
- After the pull request has been approved and merged, the developer should:
177173
- remove all assignee from the issue
178174
- set the **testing** label
179-
180175
It's the developer's responsibility to ensure that someone from the QA team will test the package.
181-
182-
- Writes and updates the [documentation](#documentation) associated with the code:
183-
176+
- Writes and updates the documentation associated with the code:
184177
- README.md inside the repository
185178
- Administrator Manual
186179
- Developer Manual, if needed
180+
- User Manual, if needed
187181

188182
If the issue is not valid, it must be closed using ``Closed as not planned``.
189183
A comment must convey the reason why it is invalid, like *"duplicate of (URL of issue), wontfix because ..."*.
190184

191185
### QA team member (testing)
192186

193187
The *QA team member*.
194-
195188
* Takes an issue with label **testing** and adds themselves to the *Assignee*
196189
field
197-
198190
* Tests the package, following the test case documentation written by the
199191
*Developer*.
200-
201192
* Tests the documentation changes, if present
202-
203193
* When test finishes they remove the **testing** label. If the test is
204194
*successful*, they set the **verified** label, otherwise they alert the
205195
*Developer* and the *Packager* to plan a new process iteration.
206196

207197
### Packager
208198

209-
The *Packager* coordinates the *Developer* and *QA member* work. After the
210-
*Developer* opens one or more pull requests:
211-
212-
* Selects issues with open pull requests
213-
214-
* Reviews the pull request code and merges it
215-
The CI will build and upload a new container image
216-
199+
The *Packager* coordinates the *Developer* and *QA member* work.
217200
After the *QA member* has completed the testing phase:
218-
219201
* Takes an issue with label **verified**
220-
221202
* Commits a *release tag* (see [version numbering rules](../version_numbering)).
222-
223203
* Pushes the *release tag* and commits to GitHub
224-
225204
* Merges the documentation changes in the documentation repo. Also
226205
publishes the documentation by pushing the `latest` branch, if needed.
227206
Documentation repositories:
228-
229207
- [NethServer and NethVoice](https://github.com/NethServer/ns8-docs/)
230208
- [NethSecurity](https://github.com/NethServer/nethsecurity-docs/)
231-
232209
An application should not be released as "stable" until all documentation
233210
(developer, admin, user) is complete.
234-
235211
* Closes the issue, specifying the list of released modules
236212

237-
When the package is CLOSED, all related [documentation](#documentation) must be in place.
213+
When the package is CLOSED, all related documentation must be in place.
238214

239215
At any time of the issue life-cycle they ensure that there are no release
240216
conflict with other issues.

handbook/management.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ nav_order: 2
1515
### Product Manager
1616

1717
The Product Manager oversees the overall development process, ensuring that the product meets the needs of users and stakeholders. They prioritize features and bug fixes, coordinate between different teams, and ensure that the project stays on track and aligns with the strategic goals.
18+
They are responsible for defining the product vision, creating the roadmap, and communicating with the community.
1819

1920
### User
2021

@@ -37,6 +38,7 @@ Anyone can be a QA Team Member, but usually is one of the following:
3738
### Packager
3839

3940
The Packager is a developer that coordinates the work between developers and QA Team Members. They review and merge code changes, manage release tags, and ensure that documentation is updated and published. They also handle the final steps of closing issues and releasing modules.
41+
Usually the packager is the same person as the developer, but in some cases, it can be a different person.
4042

4143
## Meetings
4244

@@ -61,11 +63,11 @@ Project boards are used to track the progress of issues and requests. They are d
6163

6264
All projects have some common views:
6365

64-
- **Current**: it shows the current status of the project, it contains all the issues inside the ongoing milestone; this view uses a kanban board
66+
- **Current**: it shows the current status of the project, it contains all the issues inside the ongoing [milestone](/milestones); this view uses a kanban board
6567

66-
- **Backlog**: it contains all the issues that are not assigned to a milestone yet, or that are not ready to be worked on; this view uses a list of issues
68+
- **Backlog**: it contains all the issues that are not assigned to a [milestone](/milestones) yet, or that are not ready to be worked on; this view uses a list of [issues](/issues)
6769

68-
The team working on a project can decide to add more views if needed, for example, a view for the next milestone, or a view for the next release.
70+
The team working on a project can decide to add more views if needed, for example, a view for the next milestone, or a view to measure the team load.
6971

7072
Each column contains a set of cards, each card represents an issue or a feature request.
7173

@@ -79,9 +81,9 @@ The project is divided into columns that represent the status of the card.
7981
A card can be an issue, a feature request, a bug report, or a task.
8082
The columns are:
8183

82-
- **ToDo**: new issues are placed here, the team will evaluate them and assign the right labels and milestone.
83-
- **In Progress**: issues that are being worked on, they are assigned to a developer or a designer. I
84-
- **Testing**: issues that are ready for testing. The QA Team Member will verify that the code works as expected and meets the required standards.
84+
- **ToDo**: new issues are placed here, the team will evaluate them and assign the right [labels](/issues/#issue-labels) and [milestone](/milestones).
85+
- **In Progress**: issues that are being worked on, they are assigned to a developer or a designer.
86+
- **Testing**: issues that are ready for testing. The QA Team will verify that the code works as expected and meets the required standards.
8587
- **Verified**: issues that have passed testing and are verified to be working correctly, this issues are ready to be released by the packager.
8688
- **Done**: issues that have been completed and closed.
8789

handbook/milestones.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ nav_order: 2
66

77
# Milestones
88

9-
GitHub milestones are a way to track progress on groups of issues or pull requests in a repository. They help in planning and managing project timelines by setting due dates and associating related tasks.
9+
[GitHub milestones](https://docs.github.com/en/issues/using-labels-and-milestones-to-track-work/about-milestones) are a way to track progress on groups of issues or pull requests in a repository. They help in planning and managing project timelines by setting due dates and associating related tasks.
1010

11-
All Nethesis projects use rolling releases, so milestones are used to organize the project and highlight significant goals achieved and upcoming priorities.
11+
All NethServer projects use rolling releases, so milestones are used to organize the project and highlight significant goals achieved and upcoming priorities.
1212
A milestone can be closed when all associated issues have been completed.
13-
Issues can be added while the milestone is in progress, and milestones must contain both bugs and features.
13+
[Issues](/issues) can be added while the milestone is in progress, and milestones must contain both bugs and features.
1414
Completed issues are released as they are finished, so updates are rolling; there is no need to wait for the milestone to be completed to release updates.
1515

1616
A milestone indicates a general objective and is useful because it concludes with an announcement to the community, informing everyone about what has been accomplished.
@@ -22,7 +22,7 @@ Each open milestone should have:
2222
- an end date that is the release date, this is usually an estimate and can be changed as needed
2323

2424
Please note that only issues can be assigned to a milestone, not pull requests or draft card.
25-
To overcome this limitation, an issue with type "Draft" can be created to be associated with a milestone.
25+
To overcome this limitation, an issue with [type "Draft"](/issues/#issue-types) can be created to be associated with a milestone.
2626
Product managers typically use draft issues to plan work for upcoming milestones.
2727
A draft issue contains a brief description of the feature, it could not contain a detailed description or acceptance criteria.
2828
The issue type will be changed once the analysis is complete, and it may also be split into multiple sub-issues if the work requires task separation.

0 commit comments

Comments
 (0)