Hey everyone,

I just wanted to share a little accomplishment I (mostly) implemented in
Airflow - I just merged the last PR to get fully reproducible builds for
all thePython artifacts we produce and publish in downloads.apache.org
(python whl, sdist packages, source tarballs).

All our 90 or so artifacts are now fully reproducible and we check
reproducibility of them as a mandatory step of PMC verification when voting
the releases. Initially I thought it's not THAT needed for us in the Python
world, but I got the "let's be reproducible" bug implanted at the
"reproducible builds" talk at the ApacheCon in Halifax by Hervé Boutemy and
it stuck - until I got it completed.

And yeah. It simplified quite a lot our artifact verification and made our
process much more robust.

Arnout just created this page
https://cwiki.apache.org/confluence/display/SECURITY/Reproducible+Builds
where we might gather some notes and guidelines around reproducibility -
and I added some Python notes and links to our small snippets of making the
packages "nicer" reproducible. For example we have now pretty accurate -
yet reproducible - dates in the packages as we store source-date-epoch in
our repository and bump it automatically as part of our release preparation
process. Might be a good idea if others keep their notes there as well
to share experiences.

As a side note (and maybe sparking a bit of a Java/Maven vs. Python
battle), I used to have a bit of an inferiority complex when comparing the
build system state in Python - where we did not have so good standards and
tooling was proliferated and complex. But as part of preparation there I
had to basically move Airflow to the modern packaging world of Python (we
accumulated quite some tech debt and had custom solutions there) but I
learned that with the approach of separate build frontend and build
backends, based on multiple PEP-standards, Python quite leapfrogged the
Java world IMHO. It's a bit of a marvel of what the Python Packaging team
accomplished in the last few years when it comes to standard adoption and
tooling. I am honestly quite impressed with it, and it's just the beginning
to be honest. And it makes our contributor's life so much easier - where
they can stick to whatever frontend they like (Hatch, poetry, flit, pip,
....)  and it seamlessly works with a nicely integrated and customizable
build backend of our choice (hatchling in this case).

Looking forward to other stories there in the future.

J.

Reply via email to