Tools need stable interfaces

For the last 18 months I've been working in an environment that uses Github Actions as its CI platform. I don't have good things to day about it. Outages aside, of which there have been quite a few, Github is developing Actions the way many companies would develop a consumer app.

There's a regular cadence of breaking changes. Some come with warnings and deprecation notices, like the change to how outputs from steps are handled. Others, our team wakes up in the morning and finds out an update has made our version of Python unavailable.

It feels like we're sinking way too much time into keeping up with changes forced upon us for a part of the system that desperately needs to be set and forget 99.9% of the time. The collective productivity lost across the industry to Github's CI changes probably adds up to billions of dollars a year.

There are companies that make tooling, SaaS platforms, etc... that are doing it right. Github needs to take notes from them. In the same CI space, I remember CircleCI's 2.0 release. Rather than a constantly moving target, CircleCI gave people a timeline for the 2.0 release. With plenty of time to update, teams were able to handle all the breaking changes in one go, then get on with more important tasks.

In other spaces, AWS retains remarkably stable interfaces to its products over extremely long timelines. I never worry about an AWS service ceasing to work properly because they decided to change an API.

The Debian Linux distribution takes the approach of freezing the version of all the packages available for a release and only permitting security patches to added to the frozen version. This ensures stable and reliable tooling for the lifetime that an organization uses a given Debian release.

So please, Github, stop treating Actions like a consumer app you can change whenever and however you want. I know it's not the fasionable thing to do, but CI is the sewing machine, not the clothes it makes. Give me one or two releases a year that bundle up the breaking changes, and just release backwards compatible bugfixes inbetween. I need my CI to work without having touch it for long, LONG, periods of time, so I can get on with doing more important things.

Subscribe to Thoughts 'n Shit

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.