Once upon a time, there I used Jenkins as my CI system. It was my first CI system, and it wasn’t horrible. They provided a .deb package, and setting up a simple instance for a simple CI configuration wasn’t all that much work. I was happy.

However, I became less happy over time. Jenkins would make changes, and upon upgrade my personal instance would break. Sometimes it would be Jenkins itself, and sometimes a plugin, or the interaction between plugins.

Jenkins also turned out to not be a particularly nice CI system for building my personal projects, mostly because I build Debian packages, and to do that cleanly, things got complicated. Things like building a .dsc source package, and then a .deb package out of that. For three Debian releases and two CPU architectures.

Towards the end of my use of Jenkins, I had written a program to read a data file, and use the Jenkins API to create and trigger jobs to build all my projects, in as clean a manner as I could. There were around 500 Jenkins jobs, in the end. The Jenkins UI doesn’t deal gracefully with that many jobs, I found.

Anyway, one day Jenkins broke down for me, and I got angry. Two weeks of furious free-time hacking later I had the first version of Ick. It did all the things I needed my CI to do, and it worked. It is not, however, a very good program. The code is clunky, and it’s very rigid about the way projects get built. It’s also designed as a command line program to be run manually when I need CI to do something, and works badly as a background service. It can only run one job at a time, nothing in parallel. Not good.

However, it works. For the past two years, it’s what I’ve been using. I’d like something better. In disucssions with Daniel Silverstone the idea of a new architecture for Ick was born. It goes with the working name “Ick2”, but the 2 is not really a version number. The new Ick will be designed from the ground up as a service, and to do things concurrently. I aim to build it slowly and well, without compromising on quality to get there earlier.

The name “Ick” comes from Daniel. I was whinging about CI systems on IRC and he said “All CI systems are icky”, which gave me the inspiration for a name for my own CI system. Don’t give me names for software, or I will be forced to write them.