Pymmich – an AI-first OSS project 🐍✨

Pymmich – an AI-first OSS project 🐍✨
Photo by Herbert Goetsch / Unsplash

A couple of months ago, I decided to switch to Immich, the photo management software, for storing and managing photos.

I had used Nextcloud Memories before that, but found the Immich app more intuitive and easy to use.

What was missing, was a good way to quickly upload albums from Nextcloud to Immich. This is how Pymmich was born, an AI-first CLI written in Python for uploading and downloading albums to and from an Immich server (and nothing much more). Usage is really easy, and only require uv to be installed:

uvx pymmich --help

At the time, I was using an Immich 2.7.5 server and the CLI worked great for that version. Porting my albums was easy, flexible enough for my needs and reduced the effort significantly.

Last weekend I realized that a new version 3.x of Immich had been released, so I added support to Pymmich for the API of this new version yesterday. And because I wanted better testing, I also added docker based live Immich servers to the project, to not only mock things, but test against actual server APIs.

So what is this AI-first thing ? ✨

I have been working with agents since last year, pretty much on a daily basis. At first, I had the usual problems with hallucinations and the agents wondering off into the weeds, but since late last year, this has changed dramatically. Agents only rarely hallucinated anymore, you could actually tell them not to and instead ask for help or add comments where they did not have enough information.

This improved a whole lot between January and February this year, and then continued to improve pretty much on a bi-monthly basis.

Nowadays, the agents produce code which is of high quality, they follow specifications a lot more thoroughly and generally keep better focus. Things are not perfect yet, and they sometimes have bad days (or I'm getting A/B tested), but I'm at a point now, where I wouldn't want to miss these excellent tools anymore.

But doesn't AI kill open source ? What about all those vibe coded PRs/MRs hitting OSS projects ?

Well, I don't have a good answer for dealing with AI slop, except maybe to use the same AI tooling to identify and filter such slop – agents are very good at reviews and detecting code which doesn't do what the author says it does.

But there's an alternative to all this. Just like you need to start to feel comfortable working in pair programming mode with an agent, you have to accept that programming is has shifted to specifying what you want to achieve, rather than writing the code yourself, these days.

Accordingly, accepting code patches doesn't seem like the right strategy for AI driven open source software anymore. Instead, I chose to turn off PRs on the Pymmich Github repo and ask users who want to contribute to open discussions threads for new features, providing prompts or specifications for those new features instead of code.

How does that make a difference ? 🤝

I don't have to spend time reviewing PRs, but instead can think through whether a feature or enhancements makes sense or not – at a much higher level. Just like what I do on a daily basis these days.

And what's even better: I can use my own agent tooling for actually having the feature or enhancement implemented – using my own workflows and review strategies.

This what I call an "AI-first project".

IMHO, this is a good strategy for new open source projects. In any case, have fun with Pymmich 0.4.0.

Cheers,
Marc-André Lemburg