This is a general purpose guide for contributing to Memgraph. We're still working out the kinks to make contributing to this project as easy and transparent as possible, but we're not quite there yet. Hopefully, this document makes the process for contributing clear and answers some questions that you may have.
All work on Memgraph is done via GitHub. Both core team members and external contributors send pull requests which go through the same review process.
Most pull requests should target the master branch
. We only use separate
branches for developing new features and fixing bugs before they are merged with
master
. We do our best to keep master
in good shape, with all tests passing.
Code that lands in master
must be compatible with the latest stable release.
It may contain additional features but no breaking changes if it's not
absolutely necessary. We should be able to release a new minor version from the
tip of master
at any time.
We are using GitHub Issues for our public bugs. We keep a close eye on this and try to make it clear when we have an internal fix in progress. Before filing a new task, try to make sure your problem doesn't already exist.
If you intend to change the public API, or make any non-trivial changes to the implementation, we recommend filing an issue. This lets us reach an agreement on your proposal before you put significant effort into it.
If you're only fixing a bug, it's fine to submit a pull request right away but we still recommend to file an issue detailing what you're fixing. This is helpful in case we don't accept that specific fix but want to keep track of the issue.
Working on your first Pull Request? You can learn how from this free video series:
How to Contribute to an Open Source Project on GitHub
If you decide to fix an issue, please be sure to check the comment thread in case somebody is already working on a fix. If nobody is working on it at the moment, please leave a comment stating that you intend to work on it so other people don't accidentally duplicate your effort.
If somebody claims an issue but doesn't follow up for more than two weeks, it's fine to take it over but you should still leave a comment.
The core team is monitoring for pull requests. We will review your pull request and either merge it, request changes to it, or close it with an explanation. Before submitting a pull request, please make sure the following is done:
- Fork the repository and create your
branch from
master
. - If you've fixed a bug or added code that should be tested, add tests!
- Use the formatter
clang-format
for C/C++ code andflake8
for Python code.clang-format
will automatically detect the.clang-format
file in the root directory whileflake8
can be used with the default configuration.
Memgraph uses the Google Style Guide for C++ in most of its code. You should follow them whenever writing new code.
Aside from communicating directly via Pull Requests and Issues, the Memgraph Community Discord Server is the best place for conversing with project maintainers and other community members.
Memgraph has adopted the Contributor Covenant as its Code of Conduct, and we expect project participants to adhere to it. Please read the full text so that you can understand what actions will and will not be tolerated.
By contributing to Memgraph, you agree that your contributions will be licensed under the Memgraph licensing scheme.
This Contributing guide is adapted from the React.js Contributing guide available at https://reactjs.org/docs/how-to-contribute.html.