documentation/prototypes.md
A prototype is an alternative version of Meilisearch (provided in a Docker image) containing a new feature or an improvement the engine team provides to the users.
For some features or improvements we want to introduce in Meilisearch, we also have to make the users test them first before releasing them for many reasons:
These make us iterate fast before stabilizing it for the current release.
⚠️ Prototypes are NOT experimental features. All experimental features are thoroughly tested before release and follow the same quality standards as other features. This is not the case with prototypes which are the equivalent of a first draft of a new feature.
The prototype name must follow this convention: prototype-v<version>-<name>.<iteration> where
version is the version of Meilisearch on which the prototype is based.name is the feature name formatted in kebab-case.iteration is the iteration of the prototype, starting from 0.✅ Example: prototype-v1.23.0-search-personalization.1. </br>
❌ Bad example: prototype-v1.23.0-search-personalization-0: a dash separates the name and version. </br>
❌ Bad example: prototype-v1.23.0.search-personalization.0: a dot separates the version and name. </br>
❌ Bad example: prototype-search-personalization-0: version is missing.</br>
❌ Bad example: v1.23.0-auto-resize-0: lacks the prototype- prefix. </br>
❌ Bad example: prototype-v1.23.0-auto-resize: lacks the version suffix. </br>
❌ Bad example: prototype-v1.23.0-auto-resize.0-0: feature name ends with something else than a number.
Steps to create a prototype:
cargo xtask generate-prototype command to generate the prototype name.git tag command.Prototype: prototype-v<version>-<name>.<iteration>.git checkout -.git push origin prototype-v<version>-<name>.<iteration>🐳 Once the CI has finished to run, a Docker image named prototype-v<version>-<name>.<iteration> will be available on DockerHub. People can use it with the following command: docker run -p 7700:7700 -v $(pwd)/meili_data:/meili_data getmeili/meilisearch:prototype-v<version>-<name>.<iteration>.
More information about how to run Meilisearch with Docker.
⚠️ However, no binaries will be created. If the users do not use Docker, they can go to the prototype-v<version>-<name>.<iteration> tag in the Meilisearch repository and compile it from the source code.
When sharing a prototype with users, it's important to
The prototype should be shared at least in the related issue and/or the related product discussion. It's the developer and the PM to decide to add more communication, like sharing it on Discord or Twitter.
Here is an example of messages to share on GitHub:
Hello everyone,
Here is the current prototype you can use to test the new XXX feature:
How to run the prototype? You need to start from a fresh new database (remove the previous used
data.ms) and use the following Docker image:bashdocker run -it --rm -p 7700:7700 -v $(pwd)/meili_data:/meili_data getmeili/meilisearch:prototype-v<version>-<name>.<iteration>You can use the feature this way:
bash...⚠️ We do NOT recommend using this prototype in production. This is only for test purposes.
Everyone is more than welcome to give feedback and to report any issue or bug you might encounter when using this prototype. Thanks in advance for your involvement. It means a lot to us ❤️