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:

    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:

    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:

    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