GhostBSD Contributor’s Guide
1. Introduction
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.
2. Becoming An Official Contributor
2.1. Eligibility
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.
2.2. Mentorship Program
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.
2.3. Trial Ending
Once the mentor thinks the new contributor understands the project’s standards and workflows well the new contributor will become a contributor.
3. Contributor Responsibilities
3.1. Code Contributions
Ensure your code contributions are well-tested and adhere to the project’s coding standards.
3.2. Code Reviews
Participate in code reviews to help maintain code quality and mentor new contributors.
3.3. Documentation
Update and improve documentation as part of your contributions.
3.4. Community Engagement
Engage with the community by participating in discussions, answering questions, and providing support.
4. Using GitHub
4.1. Repository Structure
Understand the structure of the GhostBSD repositories and where to find relevant code and documentation.
4.2. Branching Strategy
Follow the project’s branching strategy for development, feature, and release branches:
main: Stable release branch.
develop: Ongoing development branch.
feature/xxx: Feature branches for new developments.
4.3. Cloning Repositories
Clone the main repository:
git clone git@github.com:ghostbsd/ghostbsd.git
4.4. Handling Merge Conflicts
Resolve conflicts using Git:
git fetch origin
git checkout feature/branch
git merge origin/main
# Resolve conflicts
git add -A
git commit
5. Commit Messages
5.1. Format
Use the following format for commit messages:
Subject Line (50 characters or less)
Detailed explanation of the changes, reasons for the changes, and any additional
information that might be useful.
5.2. Best Practices
Use the imperative mood in the subject line (e.g., “Fix bug” not “Fixed bug”).
Include relevant issue numbers for traceability.
5.3. Examples
Good: Fix issue #123: Correct memory leak in network module
Bad: Fixed stuff
6. Working With Pull Requests
6.1. Creating a Pull Request
Ensure your pull request is well-documented and includes relevant tests.
6.2. Reviewing Pull Requests
Provide constructive feedback and ensure the code meets project standards.
6.3. Merging Pull Requests
Merge pull requests only after they have been reviewed and approved by at least one other contributor.
6.4. Handling Complex Pull Requests
Breaking Down PRs: Divide large PRs into smaller, manageable parts.
Managing Dependencies: Ensure dependent PRs are noted and reviewed in order.
7. Code Reviews
7.1. Purpose
Code reviews help maintain code quality and ensure adherence to project standards.
7.2. Process
Review code for correctness, readability, and adherence to coding standards. Provide feedback and request changes if necessary.
7.3. Checklist
Compliance with coding standards.
Adequate test coverage.
Clear commit messages and documentation updates.
8. Handling Bug Reports
8.1. Triage
Prioritize and categorize bug reports based on severity and impact.
8.2. Resolution
Work on resolving bugs in a timely manner, ensuring that fixes are well-tested.
8.3. Examples
High Priority: Critical system crashes.
Medium Priority: Functionality issues.
Low Priority: Minor UI bugs.
9. Testing And Quality Assurance
9.1. Automated Testing
Ensure your changes pass all relevant automated tests.
9.2. Manual Testing
Perform manual testing when necessary, especially for user-facing features.
9.3. Continuous Integration
Make use of the project’s continuous integration system to verify your changes.
9.4. Guidelines for Writing Tests
Use testing frameworks.
Include unit tests for new features.
10. Documentation
10.1. Updating Documentation
Ensure that all changes are reflected in the relevant documentation.
10.2. Writing New Documentation
Write clear, concise, and comprehensive documentation for new features and changes.
10.3. Standards
Use Markdown for documentation.
Follow the project’s style guide.
10.4. Tools
MkDocs for documentation management.
11. Communication And Conduct
11.1. Code of Conduct
Adhere to the project’s code of conduct in all interactions.
11.2. Communication Channels
Use appropriate channels (mailing lists, forums, chat) for discussions and announcements.
11.3. Examples of Proper Etiquette
Respectful and constructive communication.
Professionalism in all interactions.
12. Resources
12.1. Documentation
Access the project’s documentation portal for guidelines and references.
12.2. Tools
Recommended tools and utilities for development:
IDEs: JetBrains IDEs, vscode, Sublime Text
Debugging Tools: GDB, LLDB