This is a list of standards and conventions that we follow in the different codebases we work on. These standards are designed to ensure consistency, readability, and maintainability of the codebase. The codebases will be converted to the standards and conventions listed below. These are not meant to be exhaustive, but rather a simple enough set of rules that can be easily followed by all team members and contributors without much overhead. The goal is predictability, consistency, and maintainability but not rigidigty that discourages creativity, innovation, or participation.
Features, Commits, and Pull Requests
- Commit Messages
- Branching Strategy
- Hotfix Branches
- Merge Conflict Resolution
- Pull Request Guidelines
- Continuous Integration and Deployment Release Cycle and Versioning
- Release Strategy
- Versioning Scheme
- Simplified Release Process
- Keep titles short and describe the core change.
- Use the commit message body for additional "what" and "why" details.
- Use
mainas the stable, production-ready branch anddevelopfor integrating feature branches and testing. - Create branches from
developwith the naming conventionfeature/author/feature-name. Valid prefixes are:feature/for new features.bug/for bug fixes.enhancement/for enhancements like performance improvements, etc.refactor/for refactoring.chore/for maintenance tasks like updating dependencies, tests, etc.
- Make regular commits with descriptive messages on the feature branch.
- Create a pull request from the feature branch to
developfor tracking changes and code review. - Merge the feature branch into
developafter approval. - Regularly merge
developintomainfor stable production changes. - Delete feature branches after merging
developintomain. - Keep your local
developbranch updated with the remote.
- Create a
hotfixbranch frommainfor critical bugs in production in the formathotfix/author/issue-name. - Make fixes in the
hotfixbranch and create a pull request to merge changes intomainanddevelop. - After approval and passing tests, merge the
hotfixbranch intomainanddevelop, then delete the branch.
- Review conflicting changes carefully.
- Communicate with developers for clarity.
- Select appropriate changes and ensure correctness.
- Thoroughly test merged code.
- Commit resolved merge and complete pull request.
- Provide a clear, concise title.
- Include a description of the branch's purpose.
- Link to related issues or tickets so issues can be closed and users/clients can be notified.
- Ensure all CI/CD checks pass.
- Keep PRs small and focused for easier merging.
- For new projects, set up a CI/CD pipeline that automatically builds, tests, and deploys the code from the
mainbranch. - Configure the pipeline to run tests and security scans on pull requests targeting the
developbranch to catch issues early.
Automacene repos will follow a flexible, feature-driven release strategy which allows for releases based on completed features or significant improvements, rather than adhering to a strict schedule.
- Release Types:
- Feature Releases: When significant new features or improvements are ready
- Hotfixes: As needed for critical issues
Automacene repos will use Semantic Versioning (SemVer) to clearly communicate version changes. The version number format will be: MAJOR.MINOR.PATCH
- MAJOR: Incremented for significant changes or new features that may affect compatibility (breaking changes, major features, big refactors)
- MINOR: Incremented for new features or substantial improvements (non-breaking features)
- PATCH: Incremented for bug fixes and minor updates (hotfixes, chores, enhancements, refactors)
Examples:
- 1.0.0 - Initial release
- 1.1.0 - New feature added
- 1.1.1 - Bug fix
- 2.0.0 - Major update with potentially breaking changes
-
Development
- Work on new features or improvements
- Conduct basic testing as you go
-
Pre-Release Check
- Review changes and ensure everything is working as expected
- Update version number according to SemVer rules
- Prepare a brief changelog
-
Release
- Deploy the new version to the customer
- Communicate changes to the customer (share the changelog)
-
Post-Release
- Address any immediate feedback or issues
- Begin work on the next set of features or improvements