GitHub Code Contribution Guide

 

Introduction

This guide will help Collaborators understand how to effectively contribute to our codebase within a co-development framework. We value your contributions and aim to make the process collaborative and straightforward.

Requirements

  • Visual Studio Code (VSCode).

  • MacOS or Unix base OS is preferred for development.

  • Docker

Accounts

Depending on the Collaborator an E-Mail may or may not be provided. In the case that Unique provides the E-Mail Account, the address will have a different address pattern than employees of Unique for a clear distinction.

Development Machine

Collaborators can bring laptops that MUST be Macs/Unix systems or get one from Unique.

Using Devcontainer locally

  • Our monorepo includes a devcontainer configuration which will make setup much easier.

  • We recommend executing the code in a dev container to avoid manual and tedious setup.

  • Follow the instructions in the devcontainer documentation to get started.

Contributing

Development Workflow

  1. Clone the Repository: Check out our Monorepo on GitHub.

  2. Create a New Branch: For each contribution, create a new branch from master. Use descriptive names for your branches.

  3. Implement Your Changes: Work on your feature or bug fixes in your branch. Ensure you follow our coding standards and best practices.

  4. Testing: Thoroughly test your changes. We encourage writing automated tests where applicable.

  5. Commit Your Changes: Use clear and descriptive commit messages. Include references to any issues your changes address.

  6. Rebase and Resolve Conflicts: Before submitting a PR, rebase your branch with the latest changes from the main branch and resolve any conflicts.

  7. Submit a Pull Request: Open a PR in our repository. Clearly describe your changes in the PR description.

Review and Merge

  • After submitting a PR, it will be reviewed by our team members.

  • Address any feedback provided by the reviewers.

  • Once your PR is approved and passes all checks, a team member will merge it into the main repository.

  • Adherence to the agreed-upon coding standards and conventions.

  • Alignment with the Software's architecture and design principles.

  • Absence of defects and regressions.

  • Compliance with the required test coverage.

  • No degradation of performance unless justified.

  • New code can not negatively impact customers

  • A PR should not affect more than 20 files at once. And must be reasonably clean. Else it can be rejected.

  • Default programming languages must be respected.

  • New microservices can only be introduced by Unique Employees.

  • PRs can not hold more than a couple of days of work. Otherwise, they become too complex and might have too many side effects.

  • PRs can not be merged if any tests fail.

  • PRs might be reverted if they adversely impact the product, in performance stability or scalability even after they are merged.

  • Merged code might be improved or revised at a later stage. Always make sure that it does not impact performance at the customer site.

  • Unused code might be removed to keep the code clean and readable.

  • There is no right to merge, if a unique employee spots an issue with the code it WILL not be merged.

  • The code must be in a deployable state on master at any time and must make use of feature flags/settings to turn on the new functionality. To decouple deployment from release.

  • Exceptions will not be granted on any code quality issues to make it to a release.

  • The deployment pipeline must be in a working state at any time.

  • PRs will be reviewed in a reasonable amount of time.

  • Features that reveal a risk or performance issues get disabled with notice and must afterwards be improved.

Communication

  • Use GitHub issues/tickets for reporting bugs, requesting features, or discussing potential changes before working on them. Access to Jira will be granted if necessary and approved by Unique.

  • For any queries related to your PR, use the PR comment section.

  • For any questions or help during implementation, please proactively reach out via designated channels to the team

  • Maintain a respectful and professional tone in all interactions.

Thank you for contributing to our project. Your efforts help us improve and grow. We look forward to your valuable contributions and are excited to see what we can achieve together.

 


Owner

@Abimbola Idowu

© 2024 Unique AG. All rights reserved. Privacy PolicyTerms of Service