Discussion: Grain packaging nightly builds
- Dominant language
- Python
- Stars
- 779
- Forks
- 86
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 6
Description
Hi @iindyk,
I would like to dedicate this issue to discuss packaging and nightly builds a bit more.
Right now there are two PyPI projects ([grain](https://pypi.org/project/grain/), [grain-nightly](https://pypi.org/project/grain-nightly/)) with different names and different versioning conventions (for grain latest version is `0.2.9`, where for nightly it's `0.0.16`).
I would consider to follow NumPy's packaging setup and how nightlies are shipped there.
### Official releases
The official release package is shipped as it's right now, on PyPI with regular schedule, and additionally on `conda-forge` feedstock, also under a name `grain`.
Then it can be installed in two ways:
```sh
pip install grain
conda install -c conda-forge grain
pip install grain==0.2.9 # version specific
```
### Nightly builds
NumPy offers dev builds via https://anaconda.org/scientific-python-nightly-wheels/numpy. This project is under [scientific-python-nightly-wheels](https://anaconda.org/scientific-python-nightly-wheels) umbrella, where over 20 dev packages are published on daily basis.
A user can install nightly build with:
```
pip install -i https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy
```
And the latest version is `2.3.0.dev0`, which is the latest **unreleased** with `.dev0` at the end. This way one can know they're on dev by checking `numpy.__version__`.
Let's consider applying the same approach in Grain:
1. Set up a new anaconda organization, like https://anaconda.org/scientific-python-nightly-wheels, but named e.g. `google-nightly-wheels`,
2. Have an automated daily GitHub action that builds `main` branch and uploads it to the org, and tag it with `.dev0`,
3. Then users can install nightly with `pip install -i https://pypi.anaconda.org/google-nightly-wheels/simple grain`
Then the nightly is determined by the version, rather than different package name. WDYT?
If you prefer to keep `grain-nightly` then let's keep it and only use `.dev0` version convention. I think TF also does this: https://pypi.org/project/tf-nightly/
Contributor guide
Assessment
This issue has not been assessed yet.