# Contributing to Barycenter Thank you for your interest in contributing to Barycenter! This document provides guidelines and instructions for contributing to the project. ## Code of Conduct Be respectful, inclusive, and collaborative. We're here to build great software together. ## Development Workflow We use **Gitflow** as our branching model. Please familiarize yourself with this workflow before contributing. ### Branch Structure #### Main Branches - `main` - Production-ready code. Only release and hotfix branches merge here. - `develop` - Integration branch for features. Default branch for development. #### Supporting Branches - `feature/*` - New features and non-emergency bug fixes - `release/*` - Release preparation (version bumps, final testing) - `hotfix/*` - Emergency fixes for production issues ### Workflow Steps #### Working on a New Feature 1. **Create a feature branch from `develop`:** ```bash git checkout develop git pull origin develop git checkout -b feature/your-feature-name ``` 2. **Make your changes** following our commit conventions (see below) 3. **Push your branch:** ```bash git push -u origin feature/your-feature-name ``` 4. **Create a Pull Request** targeting `develop` #### Creating a Release 1. **Create a release branch from `develop`:** ```bash git checkout develop git pull origin develop git checkout -b release/v1.2.0 ``` 2. **Update version numbers** and finalize changelog 3. **Create PR to `main`** and after merge, tag the release: ```bash git tag -a v1.2.0 -m "Release version 1.2.0" git push origin v1.2.0 ``` 4. **Merge back to `develop`** to include any release changes #### Hotfix Process 1. **Create a hotfix branch from `main`:** ```bash git checkout main git pull origin main git checkout -b hotfix/v1.2.1 ``` 2. **Fix the issue** and update version number 3. **Create PR to `main`** and after merge, tag the hotfix 4. **Merge back to `develop`** to include the fix ## Commit Message Convention We follow **Conventional Commits** specification. This leads to more readable commit history and enables automated changelog generation. ### Commit Message Format ``` ():