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:
Fork the Repository: Begin by forking the main NOS-T repository to your GitHub account.
Create a Branch: Create a branch in your fork for your contribution:
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.
Make Your Changes: Develop your contribution following our coding standards.
Commit Your Changes: Make commits that are logical, atomic units of change:
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
Push to Your Fork:
git push origin feature/your-feature-name
Submit a Pull Request: Create a pull request from your branch to the main NOS-T repository.
Development Cycle
Issue Tracking: All features and bugs should be tracked in our GitHub issue tracker.
Design: For significant features, create a design document or proposal first and seek feedback.
Implementation: Develop your changes with attention to maintainability and performance.
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
Documentation: * Update API documentation for any changed interfaces * Add or update user guides as appropriate * Include examples for new features
Code Review: All code changes undergo peer review through pull requests.
Continuous Integration: Changes must pass all automated CI checks.
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
Version Bump: Update version numbers in appropriate files
Changelog: Update the changelog with notable changes
Testing: Perform final verification of all features and fixes
Documentation: Ensure all documentation is updated
Release: Tag the release and publish artifacts
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