Marie is shipped from two package management systems, PyPi and Docker Hub. This article clarifies the release cycle and version identifier behind each system.
We follow PEP-440, and a form of semantic versioning as explained above.
To install the latest final release:
pip install -U marie-ai
To install a particular final release:
pip install marie-ai==x.y.z
The term "final release" is relative to "developmental release" as described below.
pip install -U marie-ai
only installs the core dependencies of Marie.
The recommended way of installing Marie is pip install -U marie-ai
"standard"
include extra dependencies that enables:
- Executor Hub + Docker support
- FastAPI + Websocket support (required when using
Flow(protocol='http')
orFlow(protocol='websocket')
) - the best compression via LZ4 algorithm
- the best async eventloop management via
uvloop
Other extension tags such as [devel]
can be found in extra-requirements.txt.
Depends on how you use and distribute Marie.
If you are using/distributing Marie as a microservice, you often only need to install the core dependencies via pip install marie-ai
.
One every master-merging event, we create early releases directly from source control which do not conflict with later project releases. The version identifier for development release is x.y.z.devN
, which adds a suffix .dev
, followed by a non-negative integer value N
, which is reset on every release.
To install the latest development release:
pip install --pre marie
Marie is developed continuously by the community and core team. Updates are grouped and released at regular intervals to align with software development best practices.
Marie follows a form of numbered versioning. The version number of the product is a three-part value x.y.z
where x
, y
, and z
are the major, minor, and patch components respectively.
- Patch release (
x.y.z
->x.y.(z+1)
): Contain bug fixes, new features and breaking changes. Released weekly on a Wednesday morning CET. - Minor release (
x.y.z -> x.(y+1).0
): Contain bug fixes, new features and breaking changes. Released monthly on the first Wednesday of the month CET. This release is more QA tested and considered more stable than a patch release. - Major release (
x.y.z -> (x+1).0.0
): Are released based on the development cycle of the Marie . There is no set scheduled for when these will occur.
The following example shows how Marie is released from 0.9 to 0.9.2 according to the schema we defined above.
Event e |
After e , pip install marie-ai |
After e , pip install --pre marie-ai |
After e , master __init__.py |
---|---|---|---|
Release | 0.9.0 | 0.9.0 | 0.9.1.dev0 |
Master merging | 0.9.0 | 0.9.1.dev0 | 0.9.1.dev1 |
Master merging | 0.9.0 | 0.9.1.dev1 | 0.9.1.dev2 |
Master merging | 0.9.0 | 0.9.1.dev2 | 0.9.1.dev3 |
Release | 0.9.1 | 0.9.1 | 0.9.2.dev0 |
Master merging | 0.9.1 | 0.9.2.dev0 | 0.9.2.dev1 |
Our universal Docker image is ready-to-use on linux/amd64, linux/armv7+, linux/arm/v6, linux/arm64. The Docker image name always starts with marie-ai/marie
followed by a tag composed of three parts:
marie-ai/marie:{version}{python_version}{extra}
{version}
: The version of Marie. Possible values:latest
: the last release;master
: the master branch ofmarie-ai/marie
repository;x.y.z
: the release of a particular version;x.y
: the alias to the lastx.y.z
patch release, i.e.x.y
=x.y.max(z)
;
{python_version}
: The Python version of the image. Possible values:-py310
for Python 3.10;-py311
for Python 3.11;
{extra}
: the extra dependency installed along with Marie. Possible values:pip install marie-ai
;-standard
: Marie is installed inside the image viapip install marie
. It includes all recommended dependencies;-devel
: Marie is installed inside the image viapip install "marie[devel]"
. It includesstandard
plus some extra dependencies;
Examples:
marie-ai/marie:0.9.6
: the0.9.6
release with Python 3.7 and the entrypoint ofmarie
.marie-ai/marie:latest
: the latest release with Python 3.7 and the entrypoint ofmarie
marie-ai/marie:master
: the master with Python 3.7 and the entrypoint ofmarie
Event | Updated images | Aliases |
---|---|---|
On Master Merge | marie-ai/marie:master{python_version}{extra} |
|
On x.y.z release |
marie-ai/marie:x.y.z{python_version}{extra} |
marie-ai/marie:latest{python_version}{extra} , marie-ai/marie:x.y{python_version}{extra} |
Six images are built, i.e. taking the combination of:
{python_version} = ["-py37", "-py38", "-py39"]
{extra} = ["", "-devel", "-standard"]
Manual release entrypoint is designed for authorized core developers of Marie.
One can release a hotfix immediately without waiting for the weekly release. Here are the steps:
- Go to here
- Click on "Run Workflow" dropdown button on the right and input the release token and the release reason.
- Click on "Run Workflow" green button.
- Go to here
- Click on "Run Workflow" dropdown button on the right and input the release token and the release reason.
- Click on "Run Workflow" green button.
Note, the manual rebuild on Docker images will NOT update :latest-*
and :x.y-*
aliases.