MeiliSearch/CONTRIBUTING.md

111 lines
5.4 KiB
Markdown
Raw Normal View History

2020-06-03 13:31:21 +02:00
# Contributing
2022-01-26 17:35:56 +01:00
First, thank you for contributing to Meilisearch! The goal of this document is to provide everything you need to start contributing to Meilisearch.
2021-09-27 14:13:50 +02:00
2022-01-26 16:31:03 +01:00
Remember that there are many ways to contribute other than writing code: writing [tutorials or blog posts](https://github.com/meilisearch/awesome-meilisearch), improving [the documentation](https://github.com/meilisearch/documentation), submitting [bug reports](https://github.com/meilisearch/meilisearch/issues/new?assignees=&labels=&template=bug_report.md&title=) and [feature requests](https://github.com/meilisearch/product/discussions/categories/feedback-feature-proposal)...
## Table of Contents
2021-09-27 14:13:50 +02:00
- [Assumptions](#assumptions)
- [How to Contribute](#how-to-contribute)
- [Development Workflow](#development-workflow)
- [Git Guidelines](#git-guidelines)
2022-06-09 14:49:49 +02:00
- [Release Process (for internal team only)](#release-process-for-internal-team-only)
2020-06-03 13:31:21 +02:00
## Assumptions
1. **You're familiar with [GitHub](https://github.com) and the [Pull Requests](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests)(PR) workflow.**
2022-01-26 17:35:56 +01:00
2. **You've read the Meilisearch [documentation](https://docs.meilisearch.com).**
3. **You know about the [Meilisearch community](https://docs.meilisearch.com/learn/what_is_meilisearch/contact.html).
2020-06-03 13:31:21 +02:00
Please use this for help.**
2021-09-27 14:13:50 +02:00
## How to Contribute
2020-06-03 13:31:21 +02:00
1. Ensure your change has an issue! Find an
[existing issue](https://github.com/meilisearch/meilisearch/issues/) or [open a new issue](https://github.com/meilisearch/meilisearch/issues/new).
* This is where you can get a feel if the change will be accepted or not.
2. Once approved, [fork the Meilisearch repository](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) in your own GitHub account.
2020-06-03 13:31:21 +02:00
3. [Create a new Git branch](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository)
2021-09-27 14:13:50 +02:00
4. Review the [Development Workflow](#development-workflow) section that describes the steps to maintain the repository.
5. Make your changes on your branch.
2022-01-26 17:35:56 +01:00
6. [Submit the branch as a Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork) pointing to the `main` branch of the Meilisearch repository. A maintainer should comment and/or review your Pull Request within a few days. Although depending on the circumstances, it may take longer.
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
## Development Workflow
2020-06-03 13:31:21 +02:00
2022-01-26 17:35:56 +01:00
### Setup and run Meilisearch
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
```bash
cargo run --release
2021-09-27 14:13:50 +02:00
```
2020-06-03 13:31:21 +02:00
2022-01-26 17:35:56 +01:00
We recommend using the `--release` flag to test the full performance of Meilisearch.
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
### Test
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
```bash
cargo test
```
2020-06-03 13:31:21 +02:00
This command will be triggered to each PR as a requirement for merging it.
If you get a "Too many open files" error you might want to increase the open file limit using this command:
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
```bash
ulimit -Sn 3000
```
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
## Git Guidelines
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
### Git Branches
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
All changes must be made in a branch and submitted as PR.
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
We do not enforce any branch naming style, but please use something descriptive of your changes.
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
### Git Commits
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
As minimal requirements, your commit message should:
- be capitalized
- not finish by a dot or any other punctuation character (!,?)
- start with a verb so that we can read your commit message this way: "This commit will ...", where "..." is the commit message.
e.g.: "Fix the home page button" or "Add more tests for create_index method"
2020-06-03 13:31:21 +02:00
We don't follow any other convention, but if you want to use one, we recommend [the Chris Beams one](https://chris.beams.io/posts/git-commit/).
2020-06-03 13:31:21 +02:00
### GitHub Pull Requests
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
Some notes on GitHub PRs:
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
- All PRs must be reviewed and approved by at least one maintainer.
- The PR title should be accurate and descriptive of the changes.
- [Convert your PR as a draft](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request) if your changes are a work in progress: no one will review it until you pass your PR as ready for review.<br>
The draft PRs are recommended when you want to show that you are working on something and make your work visible.
- The branch related to the PR must be **up-to-date with `main`** before merging. Fortunately, this project uses [Bors](https://github.com/bors-ng/bors-ng) to automatically enforce this requirement without the PR author having to rebase manually.
2020-06-03 13:31:21 +02:00
## Release Process (for internal team only)
Meilisearch tools follow the [Semantic Versioning Convention](https://semver.org/).
### Automation to rebase and Merge the PRs
This project integrates a bot that helps us manage pull requests merging.<br>
_[Read more about this](https://github.com/meilisearch/integration-guides/blob/main/resources/bors.md)._
### How to Publish a new Release
The full Meilisearch release process is described in [this guide](https://github.com/meilisearch/core-team/blob/main/resources/meilisearch-release.md). Please follow it carefully before doing any release.
### Release assets
For each release, the following assets are created:
- Binaries for differents platforms (Linux, MacOS, Windows and ARM architectures) are attached to the GitHub release
- Binaries are pushed to HomeBrew and APT (not published for RC)
- Docker tags are created/updated:
- `vX.Y.Z`
- `vX.Y` (not published for RC)
- `latest` (not published for RC)
2021-09-27 14:13:50 +02:00
<hr>
2020-06-03 13:31:21 +02:00
2021-09-27 14:13:50 +02:00
Thank you again for reading this through, we can not wait to begin to work with you if you made your way through this contributing guide ❤️