Table of Contents

Contributing to ATOMCommon

We welcome contributions to ATOMCommon! This guide will help you understand how to contribute effectively to AECOM's engineering development kit.

🚀 Getting started

Prerequisites

  • .NET 8.0 SDK or later
  • Visual Studio 2022 or VS Code with C# extensions
  • Git for version control
  • Access to AECOM's GitHub Enterprise

Development setup

  1. Fork the repository on GitHub Enterprise
  2. Clone your fork locally:
    git clone https://github.com/AECOM-Enterprise/Atom-Common.git
    cd Atom-Common
    
  3. Install dependencies:
    cd src
    dotnet restore
    
  4. Build the solution:
    dotnet build
    
  5. Run tests to ensure everything works:
    dotnet test
    

🔄 Development workflow

ATOMCommon follows a trunk-based development approach with semantic versioning.

Branch naming conventions

Choose the appropriate branch prefix based on your change type:

Feature development (creates alpha prereleases):

  • feature/add-new-alignment-tools
  • feat/pump-station-modeling
  • dev/experimental-geometry

Bug fixes (creates stable patch releases):

  • bugfix/fix-arc-calculation-error
  • hotfix/critical-memory-leak

Other changes:

  • docs/update-api-documentation
  • infra/update-github-workflows

Pull request process

  1. Create a feature branch from main:

    git checkout main
    git pull origin main
    git checkout -b feature/your-feature-name
    
  2. Make your changes following our coding standards

  3. Add tests for new functionality:

    # Add tests in corresponding ATOM.Test folder
    dotnet test src/ATOM.Test/ATOM.Test.csproj
    
  4. Update documentation if needed:

    • Add XML documentation comments to public APIs
    • Update relevant markdown files
    • Add usage examples
  5. Commit your changes with clear messages:

    git add .
    git commit -m "Add geometric validation for spiral curves
    
    - Implement clothoid spiral validation
    - Add unit tests for edge cases
    - Update documentation with examples"
    
  6. Push your branch and create a pull request:

    git push origin feature/your-feature-name
    
  7. Create pull request on GitHub:

    • Use our pull request template
    • Add appropriate label (see labeling requirements section)
    • Request review from relevant team members

🏷️ Labeling requirements

Every pull request must have exactly one label:

  • major - Breaking changes that affect existing API contracts
  • minor - New features or enhancements (creates alpha prerelease)
  • patch - Bug fixes and small improvements
  • infrastructure - Infrastructure changes (workflows, docs, CI/CD - no release)

Versioning examples

Current: 0.9.0
├── feature/new-tool + minor → 0.10.0-alpha-01
├── bugfix/calc-error + patch → 0.9.1
├── hotfix/memory-leak + patch → 0.9.2
├── infra/update-workflows + infrastructure → No release
├── feature/another-tool + minor → 0.10.0-alpha-02
└── stable release → 0.10.0

🆘 Getting help

Resources

Support channels

  • AECOM Teams - Real-time development support
  • Code Wiki - AECOM development resources

Thank you for contributing to ATOMCommon! Your expertise helps make this library a powerful tool for AECOM's engineering teams worldwide.