Development Workflow =================== This document outlines the recommended workflow for developing features and fixes for the NOS-T project. Version Control Workflow ---------------------- We follow a standard GitHub flow for development: 1. **Fork the Repository**: Begin by forking the main NOS-T repository to your GitHub account. 2. **Create a Branch**: Create a branch in your fork for your contribution: .. code-block:: bash git checkout -b feature/your-feature-name # or git checkout -b fix/issue-you-are-fixing Use a descriptive name that reflects the purpose of your changes. 3. **Make Your Changes**: Develop your contribution following our coding standards. 4. **Commit Your Changes**: Make commits that are logical, atomic units of change: .. code-block:: bash git commit -m "Descriptive message about your changes" Follow these commit message guidelines: * Use the present tense ("Add feature" not "Added feature") * Use the imperative mood ("Move cursor to..." not "Moves cursor to...") * Limit the first line to 72 characters or less * Reference issues and pull requests liberally after the first line 5. **Push to Your Fork**: .. code-block:: bash git push origin feature/your-feature-name 6. **Submit a Pull Request**: Create a pull request from your branch to the main NOS-T repository. Development Cycle -------------- 1. **Issue Tracking**: All features and bugs should be tracked in our GitHub issue tracker. 2. **Design**: For significant features, create a design document or proposal first and seek feedback. 3. **Implementation**: Develop your changes with attention to maintainability and performance. 4. **Testing**: * Write unit tests for all new functionality * Update existing tests as needed * Ensure all tests pass locally before submitting * aim for 80%+ code coverage for new code 5. **Documentation**: * Update API documentation for any changed interfaces * Add or update user guides as appropriate * Include examples for new features 6. **Code Review**: All code changes undergo peer review through pull requests. 7. **Continuous Integration**: Changes must pass all automated CI checks. 8. **Merge**: After approval and passing tests, a maintainer will merge your contribution. Branching Strategy ---------------- * `main` - Contains the latest stable release * `develop` - Integration branch for features and fixes * `feature/*` - For new features and enhancements * `fix/*` - For bug fixes * `release/*` - For preparing new releases Release Process ------------ 1. **Version Bump**: Update version numbers in appropriate files 2. **Changelog**: Update the changelog with notable changes 3. **Testing**: Perform final verification of all features and fixes 4. **Documentation**: Ensure all documentation is updated 5. **Release**: Tag the release and publish artifacts 6. **Announce**: Communicate the release to stakeholders Tips for Efficient Development --------------------------- * Regularly sync your fork with the upstream repository * Use virtual environments for isolated dependency management * Run tests frequently during development * Consider using pre-commit hooks for code quality checks * Keep pull requests focused on a single concern for easier review