|
| 1 | +GhostBSD Contributor's Guide |
| 2 | +============================ |
| 3 | + |
| 4 | +## 1. Introduction |
| 5 | +Welcome to the GhostBSD Contributor’s Guide. This guide outlines the responsibilities, workflows, and best practices for contributors, helping maintain the quality and consistency of the GhostBSD project. Being a committer allows you to directly contribute to the project’s growth and collaborate with a dedicated community. |
| 6 | + |
| 7 | +## 2. Becoming An Official Contributor |
| 8 | +### 2.1. Eligibility |
| 9 | +Anyone who has the interest to help the project can become a contributor. You must become a New Contributor first and have demonstrated a consistent track record of quality contributions to the GhostBSD project. |
| 10 | +### 2.2. Mentorship Program |
| 11 | +New committers will be assigned a mentor by the project maintainers to guide them through the initial stages, ensuring they understand the project’s standards and workflows. |
| 12 | +### 2.3. Trial Ending |
| 13 | +Once the mentor thinks the new contributor understands the project’s standards and workflows well the new contributor will become a contributor. |
| 14 | + |
| 15 | +## 3. Contributor Responsibilities |
| 16 | +### 3.1. Code Contributions |
| 17 | +Ensure your code contributions are well-tested and adhere to the project’s coding standards. |
| 18 | +### 3.2. Code Reviews |
| 19 | +Participate in code reviews to help maintain code quality and mentor new contributors. |
| 20 | +### 3.3. Documentation |
| 21 | +Update and improve documentation as part of your contributions. |
| 22 | +### 3.4. Community Engagement |
| 23 | +Engage with the community by participating in discussions, answering questions, and providing support. |
| 24 | + |
| 25 | +## 4. Using GitHub |
| 26 | +### 4.1. Repository Structure |
| 27 | +Understand the structure of the GhostBSD repositories and where to find relevant code and documentation. |
| 28 | +### 4.2. Branching Strategy |
| 29 | +Follow the project’s branching strategy for development, feature, and release branches: |
| 30 | +* **main**: Stable release branch. |
| 31 | +* **develop**: Ongoing development branch. |
| 32 | +* **feature/xxx**: Feature branches for new developments. |
| 33 | +### 4.3. Cloning Repositories |
| 34 | +Clone the main repository: |
| 35 | + |
| 36 | +``` |
| 37 | +git clone [email protected]:ghostbsd/ghostbsd.git |
| 38 | +``` |
| 39 | +### 4.4. Handling Merge Conflicts |
| 40 | +Resolve conflicts using Git: |
| 41 | + |
| 42 | +``` |
| 43 | +git fetch origin |
| 44 | +git checkout feature/branch |
| 45 | +git merge origin/main |
| 46 | +# Resolve conflicts |
| 47 | +git add -A |
| 48 | +git commit |
| 49 | +``` |
| 50 | + |
| 51 | +## 5. Commit Messages |
| 52 | +### 5.1. Format |
| 53 | +Use the following format for commit messages: |
| 54 | + |
| 55 | +``` |
| 56 | +Subject Line (50 characters or less) |
| 57 | +
|
| 58 | +Detailed explanation of the changes, reasons for the changes, and any additional |
| 59 | +information that might be useful. |
| 60 | +``` |
| 61 | +### 5.2. Best Practices |
| 62 | +* Use the imperative mood in the subject line (e.g., "Fix bug" not "Fixed bug"). |
| 63 | +* Include relevant issue numbers for traceability. |
| 64 | +### 5.3. Examples |
| 65 | +* Good: Fix issue #123: Correct memory leak in network module |
| 66 | +* Bad: Fixed stuff |
| 67 | + |
| 68 | +## 6. Working With Pull Requests |
| 69 | +### 6.1. Creating a Pull Request |
| 70 | +Ensure your pull request is well-documented and includes relevant tests. |
| 71 | +### 6.2. Reviewing Pull Requests |
| 72 | +Provide constructive feedback and ensure the code meets project standards. |
| 73 | +### 6.3. Merging Pull Requests |
| 74 | +Merge pull requests only after they have been reviewed and approved by at least one other contributor. |
| 75 | +### 6.4. Handling Complex Pull Requests |
| 76 | +* Breaking Down PRs: Divide large PRs into smaller, manageable parts. |
| 77 | +* Managing Dependencies: Ensure dependent PRs are noted and reviewed in order. |
| 78 | + |
| 79 | +## 7. Code Reviews |
| 80 | +### 7.1. Purpose |
| 81 | +Code reviews help maintain code quality and ensure adherence to project standards. |
| 82 | +### 7.2. Process |
| 83 | +Review code for correctness, readability, and adherence to coding standards. Provide feedback and request changes if necessary. |
| 84 | +### 7.3. Checklist |
| 85 | +* Compliance with coding standards. |
| 86 | +* Adequate test coverage. |
| 87 | +* Clear commit messages and documentation updates. |
| 88 | + |
| 89 | +## 8. Handling Bug Reports |
| 90 | +### 8.1. Triage |
| 91 | +Prioritize and categorize bug reports based on severity and impact. |
| 92 | +### 8.2. Resolution |
| 93 | +Work on resolving bugs in a timely manner, ensuring that fixes are well-tested. |
| 94 | +### 8.3. Examples |
| 95 | +* High Priority: Critical system crashes. |
| 96 | +* Medium Priority: Functionality issues. |
| 97 | +* Low Priority: Minor UI bugs. |
| 98 | + |
| 99 | +## 9. Testing And Quality Assurance |
| 100 | +### 9.1. Automated Testing |
| 101 | +Ensure your changes pass all relevant automated tests. |
| 102 | +### 9.2. Manual Testing |
| 103 | +Perform manual testing when necessary, especially for user-facing features. |
| 104 | +### 9.3. Continuous Integration |
| 105 | +Make use of the project’s continuous integration system to verify your changes. |
| 106 | +### 9.4. Guidelines for Writing Tests |
| 107 | +* Use testing frameworks. |
| 108 | +* Include unit tests for new features. |
| 109 | + |
| 110 | +## 10. Documentation |
| 111 | +### 10.1. Updating Documentation |
| 112 | +Ensure that all changes are reflected in the relevant documentation. |
| 113 | +### 10.2. Writing New Documentation |
| 114 | +Write clear, concise, and comprehensive documentation for new features and changes. |
| 115 | +### 10.3. Standards |
| 116 | +* Use Markdown for documentation. |
| 117 | +* Follow the project’s style guide. |
| 118 | +### 10.4. Tools |
| 119 | +* MkDocs for documentation management. |
| 120 | + |
| 121 | +## 11. Communication And Conduct |
| 122 | +### 11.1. Code of Conduct |
| 123 | +Adhere to the project’s code of conduct in all interactions. |
| 124 | +### 11.2. Communication Channels |
| 125 | +Use appropriate channels (mailing lists, forums, chat) for discussions and announcements. |
| 126 | +### 11.3. Examples of Proper Etiquette |
| 127 | +* Respectful and constructive communication. |
| 128 | +* Professionalism in all interactions. |
| 129 | + |
| 130 | +## 12. Resources |
| 131 | +### 12.1. Documentation |
| 132 | +Access the project’s documentation portal for guidelines and references. |
| 133 | +### 12.2. Tools |
| 134 | +Recommended tools and utilities for development: |
| 135 | +* IDEs: JetBrains IDEs, vscode, Sublime Text |
| 136 | +* Debugging Tools: GDB, LLDB |
0 commit comments