The project welcomes contributions from the community!
-
Install Go (if not already installed)
-
Clone the repository:
git clone https://github.com/vyrelabs/synapse -
Navigate to the project directory:
cd synapse -
Install Taskfile (if not already installed)
-
Run all tests to verify your setup with
task test:allor run individual component tests withtask test PKG=fetcher(replacefetcherwith the desired component name, see project's Taskfile).
- Try to stay compatible with standard library interfaces, when applicable.
- Prefer interface segregation for low couping with bare-minimum & necessary exposed methods, when possible.
- Try to expose safe minimal public API surface with sensible configurable options and defaults. In case the unsafe operations are exposed for standard library compatibility, document them clearly about the potential risks and usage guidelines.
Overall, shrink the API surface, so there's less for the end-users and implementors to mess up.
Before writing code for a new feature, please first discuss the change you wish to make via github discussions to ensure that it aligns with the project's goals and to avoid any duplication of effort.
To contribute, please follow these guidelines:
-
Fork the repository: https://github.com/vyrelabs/synapse
-
Clone your forked repository to your local machine.
git clone forked-repo-url
- Create a new branch for your feature or bug fix.
git checkout -b your-bug-or-feature-branch
-
Once you have made your changes, ensure that you:
- Add/Modify tests to cover your changes
- Update relevant documentation
- Add/Modify examples, if necessary
- Run the test suite with
task testto verify everything works as expected
-
Run
task lintto ensure your code adheres to the project's coding standards -
Make your changes and commit them with clear, descriptive conventoinal commit message. Ensure that you've "Sign-off" your commits. You can do this by adding the
-sflag to your git commit command:git commit -s -
Push your changes to your forked repository.
-
Open a Pull Request (PR) against the relevant branch in the Synapse repository with a clear description of your changes and reference any related issues, if applicable.