I released Ansible 9.0.0 and subsequent Ansible 9.0.1.
It turns out, there was an error in our new setuptools configuration, so we
needed to release a hot fix.
The Musical of the Week is Spring Awakening.
Spring Awakening, based on the 1891 German play of the same name, explores
adolescent sexuality through the lens of repressive late 19th century Germany.
The musical deals with complex subjects, including religion, suicide, sexual
abuse, abortion, and coming to terms with one's sexual identity.
The "taboo" nature of these topics makes them all the more important to
discuss.
Spring Awakening's leads, Melchior Gabor and Wendela Bergmann, were Jonathan
Groff and Lea Michelle's breakout roles, respectively.
I submitted a couple PRs to ansible-build-data to improve the release process
documentation and to antsibull to improve parts of the release playbook and fix
a regression I introduced in another change 😬.
FESCo approved my Pydantic V2 change. @music and I are now working on the
package reviews and other steps to integrate the new major version.
I packaged bindep and ansible-builder for Fedora. They are currently
waiting in the updates-testing repository.
I also packaged flit-core for the alternative python3.11 stack in EPEL 9.
RHEL 9.3 was released this week, so I updated the ansible package in EPEL 9
accordingly.
In RHEL 9.2, ansible-core was built against python3.11, but it's now back to
the default python3 (python3.9) stack.
I updated ansible-core to 2.16.0 in Fedora as well.
This week, the Ansible community package release process was opened up to the
community (i.e., non-Hatters) for the first time!
This is a pretty big milestone for our community.
The Ansible Community Steering Committee made decisions and policies for the
Ansible package, but we were never able to handle the releases ourselves —
until now.
I was the release manager for this week's Ansible 8.6.0 release and
@felixfontein, another community member, took care of Ansible 9.0.0b1.
As the maintainer of the downstream Fedora package and co-maintainer of our
build tooling, it was great to see the process in action!
The ansible community package contains a set of independent Ansible collections
that are curated by the community, and it pulls in ansible-core. Each major
version of ansible depends on a specific major version of ansible-core and
contains specific major versions of the collections it includes.
The release process involves putting the appropriate collection versions
together, downloading the collection artifacts, and combining them into a
single Python package with the proper metadata.
Along with the package, a combined changelog and porting guide are generated
for all of the collections in the package.
The porting guide, changelog, and other static data about the specific
collection versions included in each ansible release is kept in the
ansible-build-data repository.
I also have a newfound appreciation for the work of the Ansible release manager
and am already working on process improvement for future releases.
The Ansible 8.6.0 release, in particular, was not without hiccups.
We had one upstream collection that had a semantic versioning violation and
another collection that published a release with syntactically invalid Python
files.
The latter issue broke downstream packages even for users who do not utilize the
broken plugins.
This is unfortunately not the first time collection maintainers have published
releases with Python syntax errors.
In the end, I pinned the semver-violating collection to an earlier version and
had to publish an 8.6.1 hottfix release to fix the other issue.
We generally rely on upstream collections to follow our guidelines and run CI
tests before publishing their releases.
However, some collections, especially the commercial ones with convoluted
internal <-> external repo sync pipelines, do not seem to consistently test
releases before publishing them to Ansible Galaxy 😥.
The Steering Committee and Release Management WG are discussing running some
basic smoke tests of our own on top of the ansible package.
To this end, I submitted a PR to add a basic Python
byte-compilation test to the ansible release playbook.
This should at least catch the most egregious issues.
We are also discussing running at least a subset of ansible-test sanity's
tests on top of all collections, but that presents its own can of worms.
Mainly, running all of the tests for every single collection is very
time-consuming and resource intensive.
Also, we would need to figure out how to retrieve the collection sources.
The Galaxy artifacts are not guaranteed to include all of the files needed to
run sanity tests while the content tagged in the upstream Git repository may
not match the Galaxy artifact's content.
The Ansible Community Steering Committee is working on revamping our voting
process to use the new community forum.
We previously used Github Issues for discussions and created Github Discussions
with +1/-1 comments for voting that we counted manually.
The plan is to switch over to the forum and use the nice poll feature to count
votes for us.
I participated in discussions bikeshedding about specific process details
and reviewed the policy change PR.
The Go macros in Fedora have a lua function/RPM macro to generate a Go package
name based on an import path by replacing / with - along with other
normalization.
It turns out the way that the macro generates names for compat packages is
contrary to the Packaging Guidelines and has been for the past five years.
@eclipseo and I discussed the situation and he submitted PRs to go-rpm-macros
and go2rpm to change the naming algorithm that I reviewed.
I worked on backporting these changes to the
go-rpm-macros-epel EPEL 9 backport.
We have had an entirely separate package that selectively overrides macros,
as RHEL ignored our bugs and PRs to fix its broken patches.
I decided to switch to a source git-based structure instead of keeping code in
distgit.
There is now a separate epel9 distgit branch in the upstream go-rpm-macros
repository.
I have continued working on the dev tooling in the
ansible-docuemntation repository and fixed an issue with our pipx installation
instructions.
As usual, I reviewed various distgit PRs and Ansible documentation changes.
The musical of the week is Hadestown. Hadestown recounts the
Greek tragedy of Orpheus, a wide-eyed songwriter and son of a muse, and
Eurydice, a tortured young girl simply searching for something to eat and a
warm place to sleep. Hadestown's jazz-infused score and terrifying industrial
re-imagination of the Underworld bring the chilling tale to life. I saw the
musical in Chicago last summer and quite enjoyed it other than the overly
pitchy Orpheus understudy.
I condemn the Hamas terrorists who killed, mutilated, raped, and kidnapped
innocent civilians, including grandparents, pregnant women, and children. The
Kibbutzniks who Hamas attacked were peaceful, left-leaning Israelis, many of
whom advocated for peace, opposed the hard right government and West Bank
settlement expansion, and even spoke Arabic. I also mourn the loss of innocent
Palestinians in Gaza, while recognizing Israel's right to neutralize the Hamas
terrorists in a manner that minimizes civilian deaths. Hamas seeks to sabotage
the peace process and annihilate the Jewish people, all while deliberately
endangering its own people.
My migraines and depression have been quite bad the past couple weeks,
so I took a little break from these posts.
After much ado, I finally submitted my Fedora Pydantic v2 Change for
review.
After more ado and some poking from @decathrope, the Change was finally announced.
Thanks as well to @music for his help with the Change.
I have done my usual work on the ansible-documentation
repository to review PRs and improve dev tooling.
I started a discussion on squashing vs. merging vs. rebasing when
applying Github pull requests.
I worked on an improvement to the way our issue/PR triager and
pip-compile Github Actions authenticate with the Github API.
I reviewed a couple PRs from the community.
I updated our PR triager to warn contributors when their changes modify
automatically generated files.
I also reviewed a change to enable codespell in the
ansible-documentation repo.
One of the issues is the naive way in which the tool parses its configuration.
I plan to work on a PR to improve it next week.
I worked on packaging hatch-requirements-txt for
Fedora.
It's a hatchling plugin that allows sourcing package requirements from a
requirements.txt external to pyproject.toml.
Of course, it had a new unpackaged test dependency that in turn required an
entirely new build system called whey that in turned required even more
dependencies.
I decided to patch the new test dependency to use setuptools...
I preformed my usual ansible, ansible-core, and ansible-collection-* package
updates and assisted with a couple distgit PR reviews.
I helped resolve a situation where duplicate packages
were introduced into Fedora.
I've contributed some minor changes to the new maubot-fedora
Matrix-native Zodbot replacement.
I helped with efforts to move Ansible Community Steering Committee votes to the
new Ansible Community Forum.
The musical of the week is Waitress.
Waitress, based on the 2007 movie by late director Adrienne Shelly,
focusses on a masterful pie baker and waitress.
Jenna grapples with life in a small Southern town and an abusive husband.
The musical sensitively chronicles Jenna’s journey towards self reliance and
realization, as well as her dream of ending her toxic marriage and
establishing her own pie shop.
I wrote a draft Update_To_Pydantic_Version_2 Change to update
Pydantic to version 2 in Fedora.
I need to clean it up and submit it for community feedback.
As part of this work,
I submitted a PR to Matrix synapse to add compatibility for the new
version.
For now, it uses the pydantic.v1 compat module until pydantic v1 support can
be dropped completely.
I attended the FESCo meeting to discuss an issue relating to Fedora ELN.
It seems we have reached some common ground.
I attended the Ansible Docs WG meeting and helped with the ansible-documentation
repository branching process.
In case you haven't heard, the Ansible community has a new forum at
https://forum.ansible.com.
I started a forum group for folks who maintain
Ansible-releated packages in Linux distributions.
So far, we have folks from Fedora, Arch, and the Ubuntu PPA!
I have spent a good amount of time on packaging pydantic v2 for Fedora. The
current state is documented on my wiki.
I have a couple more packages to fix,
and I need to actually write the change proposal.
I submitted an RPM PR to add a Provides generator for RPM lua
modules.
This was inspired by my work on the forge-srpm-macros lift and shift and
wanting a way to express a dependency on the shared forge.lua code without
needing to account for the old and new package name.
Panu merged it on Friday.
I worked on enabling the rust extension module and updating
python-libcst in Fedora.
I reviewed a couple other distgit PRs, including one from ELN.
I cut a small release of fedrq.
This release adds supoort for pydantic v2, which fedrq uses to parse its config
file.
It also adds an experimental --extra-exact flag that I used as part of my
pydantic v2 work.
I need to go back to clean up and document that feature.
The musical of the week is Come From Away.
It covers the experiences of the 7000 passengers stranded in Newfoundland,
Canada when their planes were diverted after the 9/11 attacks.
It is a touching story of community and human kindness.
The show boasts great music, innovative staging, and well placed humor.
I saw it in Chicago, and there's also a recording of the full show on Apple TV+.
Dental surgery recovery has been no fun. The whole thing has also irritated my
grinding problems and migraines.
I helped review a pyproject-rpm-macros PR that adds a flag to
%pyproject_check_import to allow passing the test if no importable modules are
found.
This will be used for automated pyp2spec builds in Copr.
It's a bit of a fun one, involving new pytest unit tests, argument processing
in lua, and escaping RPM macros.
I started a discussion amongst the Ansible Community Steering
Committee about how the new Ansible Galaxy codebase should name roles.
I worked on packaging pydantic-core for Fedora. See my musings on
Mastodon. Thanks to Fabio for reviewing the Rust dependencies.
This week's musical of the week is Shucked.
Alex Newell is great in it, but the show is a bit kitschy.
I got dental surgery this week. I'm currently mourning solid food.
I submitted a couple PRs to the ansible-documentation repo to improve our
workflow automation (lockfiles, issue/PR labeling, etc.).