Frontend Team's 2017

The year is coming to an end, all the 🎁 lie under the 🎄 and the 🍾 is already cold for 🎆. Being the good agile folks that we are, we think this is the perfect time to reflect on 2017. On all the code, the bugs and fixes, features and refactorings, the tunes and adjustments we have introduced to our code base, process and tool belt. Not only to trace the steps of our journey, but also to get ideas how to become more effective in 2018.

So let’s look at some of the highlights that have happened this year. Bear with us, this is a very long post, but one worth reading, promised!

January

The year started off with some changes to the team, Evan joined mid-December 2016 so at beginning of this year he was still shiny and had this new developer smell we all like so much. Code wise the year kicked off with a Ruby 2.4 port, the introduction of property tests into our suite and a new API route to get the GPG key and SSL certificate for a project.

January is also around the time we started to invite guests to our review meetings to expose more people to what we achieve.

February

February is traditionally the time Free Software developers gather in Brussels for FOSDEM. So a couple of us went there and Christian held a talk about Continuous Integration with the Open Build Service.

After the event, we used the opportunity that people already were on the move to hold our first “official” get together as a team in the SUSE headquarters. We kicked off the Grand OBS Development Boot-camp where we met many of our stakeholders (distribution packagers & maintainers, OBS admins and customers etc.) to understand how they utilize what we produce. We also talked about our mid/long term plans and explored new technologies together in one room. For us as distributed team, that works from all over Europe, being together is always very refreshing.

We also integrated the backend tests into our CI cycle on Travis, refactored the build results and participated in SUSEs Hack Week 15, where everyone was busy exploring and learning new things.

March

In March we introduced pundit for authorization into our attribute system, some new service classes for the Project model and foreman to manage all processes that need to run for our application.

Henne had his 17(!) year anniversary with SUSE, we helped run the SUSE Students Day and also helped to make room for new servers by moving the complete SUSE Studio rack to another floor with less than 6 hours downtime. Yay!

April

This month started off with a bang when it was announced on the 1st of April that Microsoft acquired the build service to integrate it into Visual Studio 😜

On the more serious side of things it was release time for OBS 2.8 with loads of new features and fixes. We also celebrated the 3000th pull request to our git repository and the 10000th CI build in Travis!

Then after releasing 2.8 we started a little cleanup round for our code base. Christian enabled peek to profile SQL and memcache queries, Evan encapsulated all our authentication code into the Authenticator class and Björn added Kerberos support to it.

Some of us also participated in a hands-on workshop that the openQA team held. Not long after that workshop we had our own openQA test suite for the appliances we ship.

May

In May we started to take over deployment of the openSUSE instance, shipped the the OBS 2.8.1 bugfix release, started to track flickering tests in our CI suite and introduced the job history page in the UI. We also came out with the KIWI import service, in combination with the image template page, as first shot at the Studio Express workflow. And additionally to all of that we started to research message queues. Phew….

May is also the month where we first started to publish sprint reports to make it even easier to follow the OBS frontend development. At the end of the month most of us gathered in Nürnberg once again, to organize, attend and speak at the openSUSE Conference. We contributed 8(!) talks & workshops about various topics to the oSC17 schedule.

June

Because someone invented the beer garden and other summer goodies like vacation, June was a bit more quiet. Nevertheless we introduced a page to the UI where you can look up the reason why your package has been built and some of us started to hack away at a big refactoring of BsRequest.collection and a first stab at extending our Event subsystem.

July

The next month we where picking up pace again. An unexpected downtime of the backend left us with 2+ million delayed jobs our queues. This amount exposed many issues with this sub-system so a bunch of us dived into this, head first.

We also shipped another bugfix release (2.8.2), introduced the Studio Express repository/package list editor and made it possible to subscribe to an RSS feed for your personal notifications. To address the rising demand for LDAP support we also looked deeper into this code and respective tests.

July was also the month where we started to make use of the brilliant depfu service (hey Florian 💚), and the month we wrote our first post-mortem report for failed deployments.

August

In August we start to use codeclimate and git-cop in pull requests, shipped another bugfix release (2.8.3) and started to use build stages for our CI cycle on Travis.

Moises introduced a brand new backend abstraction layer (Backend::Api), we based all our delayed jobs on ActiveJob and fixed a lot of issues with this sub-system while at it.

September

The next month we introduced the concept of a demolition squad, a 2 person team that is responsible for all the repetitive tasks (issue/exception triage, package/gem updates, deployments and so on) for a week. This spread this knowledge fast, by end of September we deployed on 4 out of 5 days a week, so we practically switched to continuous deployment! 🤡

We collaborated with the SUSE documentation team to refresh all our OBS books/guides, dockerized our development environment and a bunch of us went to Euruko in Budapest. Björn celebrated a full decade at SUSE, Alex started his apprenticeship in our team and sadly it’s also the month we see another departure from the team, as we all have to wish Jan farewell because he leaves SUSE. We were also involved in managing the Open Build Service booth at the annual SUSECon in Prague.

But September also the month we finally launch the Studio Express workflow to the public that we have worked on for so long!

October

In October we finished off the implementation of a RabbitMQ based message bus for the OBS, updated the hashing algorithm of the passwords in our database and enabled notifications for projects in your watchlist. Eduardo and Björn hold a well received workshop at the Open Source Summit Europe and Ana visited openSUSE.asia.

November

Last month the shutdown of SUSE Studio was announced, another round of innovative coding happened at SUSEs Hackweek 16 and we gathered for our second workshop at the SUSE headquarters in Nürnberg. There we mostly talked about how we can replace the OBS frontend technology, which was a bit dated by now, and how to extend the Studio Express workflow.

In the code-base we saw the first contributions from Alex, lots of Studio Express workflow fixes and the usual round of refactorings and bugfixes.

December

This month we continued with improvements to our SCRUM process: As we spent 30% of our time in the sprint on development tasks (refactoring, extending the test suite, writing architectural documentation etc.) we introduced the concept of a Development Owner additionally to the Product Owner. The DO is responsible for grooming/planing development tasks.

We also started to implement the feature of uploading appliance images directly to Amazon EC2/Azure from the OBS and by today have a first prototype ready. David has been going off on our rubocop configuration and Ana has completly refactored the way we structured our Event classes.

2017. A. Lot. Of. Stuff.

37 authors have pushed 3219 commits to all our branches. On average 17.41 authors pushing 268.25 commits per month. On master, 2335 files have changed and there have been 278759 additions and 114210 deletions. 1060 Pull Requests have been merged, 210 issues opened and 292 issues closed. All in all this makes 2017 the busiest year in the history of the Open Build Service!

Commits by Year

These are the highlights of our year, we for sure have been busy 🐝s. But it has been a lot of fun, we learned so much from you & from each other and we are still full of new ideas. Hence, we are very much looking forward to keep on hacking the Open Build Service! Merry Christmas and a Happy New Year (if your into that kind of thing), we see your around in 2018!

Your OBS Frontend Team