Thanks for your interest in contributing to Emerald. We welcome issues, discussions, and pull requests from the community.
The Telegram group is available for any concerns you may have that are not covered in this guide.
- Fork the repository and create your branch from
main. - Make sure the project builds and tests pass locally.
- Keep changes focused and well-scoped.
- Use GitHub Issues to report bugs or request features.
- Search existing issues before opening a new one.
- Provide clear reproduction steps and relevant context.
Note: Ideally, a pull request should address an issue that clearly motivates the changes introduced by the pull request.
- Open a pull request with a clear description of the change.
- Reference related issues where applicable.
- Follow existing code style and conventions.
- Add or update tests when appropriate.
- Update documentation if behavior or interfaces change.
- Add a changelog entry (see Changelog section for details)
To manage and generate our changelog, we currently use unclog.
Every PR with types fix, feat, deps, and refactor should include a file
.changelog/unreleased/${section}/${pr-number}-${short-description}.md,
where:
sectionis one ofdependencies,improvements,features,bug-fixes,state-breaking,api-breaking, and if multiple apply, create multiple files, not necessarily with the sameshort-descriptionor content;pr-numberis the PR number;short-descriptionis a short (4 to 6 word), hyphen separated description of the change.
For examples, see the .changelog folder.
Use unclog to add a changelog entry in .changelog (check the requirements first):
unclog add \
-i "${pr-number}-${short-description}" \
-p "${pr-number}" \
-s "${section}" \
-m "${description}" \where ${description} is a detailed description of the changelog entry.
For example,
unclog add -i "136-deployment-with-more-nodes" -p 136 -s features -m "Scripts can now generate setup for more than 4 nodes" Note: unclog add requires an editor. This can be set either by configuring
an $EDITOR environment variable or by manually specifying an editor binary path
via the --editor flag.
Note: Changelog entries should answer the question: "what is important about this change for users to know?" or "what problem does this solve for users?". It should not simply be a reiteration of the title of the associated PR, unless the title of the PR very clearly explains the benefit of a change to a user.
- All submissions require review before merging.
- Be responsive to feedback and open to discussion.
- Maintainers may request changes to ensure quality and consistency.
By participating, you agree to follow the project's Code of Conduct.
The Emerald project adheres to the Rust Code of Conduct. This code of conduct describes the minimum behavior expected from all contributors.
By contributing, you agree that your contributions will be licensed under the same license as the project.