This weekend I spent in Brussels for my first FOSDEM. As someone who has been actively involved with open source since 2003, stories of FOSDEM have floated around in communities I’ve participated in for a long time, so I was happy to finally have the opportunity to attend and present.
Events kicked off Friday night with a gathering at a dinner with the Software Freedom Conservancy. It was great to start things off with such a friendly crowd, most of whom I’ve known for years. I sat with several of my OpenStack colleagues as we enjoyed dinner and conversation about StoryBoard and bringing the OpenStack activity board formally into our infrastructure with Puppet modules. It was a fun and productive dinner, I really appreciated that so many at this event took the initiative to gather in team tables so we could have our own little mini-meetups during the SFC event. After dinner I followed some colleagues over to Delirium Cafe for the broader pre-FOSDEM beer event, but the crowd was pretty overwhelming and I was tired, so I ended up just heading back to my hotel to get some rest.
On Saturday I met up with my colleague Devananda van der Veen and we headed over to the conference venue. The conference began with a couple keynotes. Karen Sandler was the first, giving her talk on Identity Crisis: Are we who we say we are? where she addressed the different “hats” we wear as volunteers, paid contributors, board members, and more in open source projects. She stressed how important it is that we’re clear about who and what we’re representing when we contribute to discussions and take actions in our communities. I was excited to see that she also took the opportunity to announce Outreachy, the successor to the Outreach Program for Women, which not only continues the work of bringing women into open source beyond GNOME, but also “from groups underrepresented in free and open source software.” This was pretty exciting news, congratulations to everyone involved!
The next keynote was by Antti Kantee who spoke on What is wrong with Operating Systems (and how do we make things better). Antti works on the NetBSD Rump Kernels and is a passionate advocate for requiring as little as possible from an underlying Operating System in today’s world. He argues that a complicated OS only serves to introduce instability and unnecessary complexity into most ways we do computing these days, with their aggressive support of multi-user environments on devices that are single user and more. He demonstrated how you can strip away massive amounts of the kernel and still have a viable, basic user environment with a TCP/IP stack that applications can then interface with.
The next talk I went to was Upstream Downstream: The relationship between developer and package maintainer by Norvald H. Ryeng of the MySQL project. Over the years I’ve been a contributor on both sides of this, but it’s been a few years since I was directly involved in the developer-packager relationship so it was great to hear about the current best practices of communities working in this space. He walked through what a release of MySQL looks like, including all the types of artifacts created and distribution mechanisms utilized (source, packages, FTP, developer site direct downloads) and how they work with distribution package maintainers. He had a lot of great tips for both upstream developers and downstream packagers about how to have an effective collaboration, much of it centering around communication. Using MySQL as an example, he went through several things they’ve done, including:
- Being part of Ubuntu’s Micro Release Exception program so packagers don’t cherry-pick security vulnerabilities, instead they can take the full micro-release from the trusted, well-tested upstream.
- Participating in downstream bug trackers, sometimes even bumping the priority of packaged software bugs because they know a huge number of users are using the distro packages.
- Running their own package repos, which gives users more options version-wise but has also taught their upstream team about some of the challenges in packaging so they can be more effective collaborators with the in-distro packagers and even catch pain points and issues earlier. Plus, then packaging is integrated into their QA processes!
He also talked some about how cross-distro collaboration doesn’t really happen on the distro level, so it’s important for upstream to stay on top of that so they can track things like whether the installation is interactive (setting passwords, other config options during install), whether the application is started upon install and more. Their goal being to make the experience of using their application as consistent as possible across platforms, both by similar configuration and reduction of local patches carried by distributions.
At lunch I met up with Louise Corrigan of Apress, who I met last year at the Texas Linux Fest. We also grabbed some much needed coffee, as my jet lag was already starting to show. From there I headed over to the OpenStack booth for my 2PM shift, where I met Adrien Cunin (who I also knew from the Ubuntu community) and later Marton Kiss who I work with on the OpenStack Infrastructure team. I was one of my more fun booth experiences, with lots of folks I knew dropping by, like Jim Campbell who I’d worked with on Documentation in Ubuntu in the past and a couple the people I met at DORS/CLUC in Croatia last year. I also got to meet Charles Butler of Canonical whose Juju talk I attended later in the afternoon.
At 5PM things got exciting for my team, with Spencer Krum presenting Consuming Open Source Configuration: Infrastructure and configuration is now code, and some of it is open source. What is it like to be downstream of one of these projects? In addition to working with us upstream in the OpenStack Infrastructure team, Spencer works on a team within HP that is consuming our infrastructure for projects within HP that need a Continuous Integration workflow. The OpenStack Infrastructure team has always first been about providing for the needs of the OpenStack community, and with Spencer’s help as an active downstream contributor we’ve slowly shifted our infrastructure to be more consumable by the team he’s on and others. In this talk he covered the value of consuming our architecture, including not having to do all the work, and benefiting from a viable architecture that’s been used in production for several years. He noted that any divergence from upstream incurred technical debt for the downstream team, so he’s worked upstream to help decouple components and not make assumptions about things like users and networks, reducing the need for these patches downstream. The biggest takeaway from this, was how much Spencer has been involved with the OpenStack Infrastructure team. His incremental work over time to make our infrastructure more consumable, coupled with his desire to also further the goals on our team (I can always depend upon him for a review of one of my Puppet changes) makes his work as a downstream much easier. Slides from his presentation are online (html-based) here.
My day of talks wrapped up with one of my own! In The open source OpenStack project infrastructure: Fully public Puppet I gave a talk that was complementary to Spencer’s where I spoke from the upstream side about the lesson’s we’ve learned about crafting an effective upstream infrastructure project using Puppet in the past year to make our infrastructure more consumable by downstreams like the team at HP. I outlined the reasons we had for going with a fully open source Puppet configuration (rather than just releasing modules) and why you might want to (others can contribute! sharing is nice!). Then I outlined the work we did in a couple specs we’ve finished to break out some of our components from the previously monolithic configuration. I think the talk went well, it was great to talk to some folks about their own infrastructure challenges afterwards and how our thorough specifications about splitting modules may help them too. Slides from the talk as pdf available here.
I spent the evening with some of my colleagues at HP who are working on OpenStack Designate. I had intended to call it a somewhat early night, but dinner didn’t manage to wrap up until 11PM, cutting severely into beer time!
Sunday morning I headed over to the conference venue at 9AM, noticing that it had snowed over night. I spent the morning at the OpenStack booth, my booth volunteer slot sadly overlapping with Thierry Carrez’s talk on our OpenStack infrastructure tools talk. Wrapping up booth duty, I met up with a friend and made our way through the campus as the snow came down to check out another building with project booths.
I then made my way over to Testing and automation dev room to see Aleksandra Fedorova speak on CI as an Infrastructure. The talk diverged from the typical “process” talks about Continuous Integration (CI), which often pretty abstractly talk about the theory and workflows. She instead talked about the technical infrastructure that is actually required for running such a system, and how it ends up being much more complicated in practice. Beyond the general workflow, you need artifact (logs and other things that result from builds) management, service communication coordination (CIs are chatty! Particularly when there are failures) and then hooks into all the pieces of your infrastructure, from the bug tool to your revision control system and perhaps a code review system. Even when running a very simple test like flake8 you need a place to run it, proper isolation to set up, a pinning process for flake8 versions (need to test it when new versions come out – else it could break your whole process!) and preferably do all of this using QA and language-specific tools created for the purpose. Perhaps my favorite part of her talk was the stress she placed upon putting infrastructure configuration into revision control. I’ve been a fan of doing this for quite some time, particularly in our world of configuration management where it’s now easy to do, but perhaps her most compelling point was keeping track of your Jenkins jobs over time. By putting your Jenkins configurations into revision control, you have a proper history of how you ran your tests months ago, which can be a valuable resource as your project matures.
I attended one more talk, but spent much of the rest of the event meeting up with open source friends who I hadn’t seen in a while. Astonishingly, even though I got to catch up with a number of people, the conference was so big and spread out around the campus that there were people who I knew were there but I never managed to see! One of my colleagues at HP I never saw until after the conference when a group met up for dinner on Sunday night.
The closing keynote was by Ryan MacDonald who spoke on Living on Mars: A Beginner’s Guide: Can we Open Source a society? He spoke about the Mars One program which seemed well on its way. I’m looking forward to the video being published, as I know more than a few people who’d be interested in seeing it from the perspective he presented.
Finally, the wrap-up. Looking back to the introduction to the conference, one of the organizers told the audience that unlike other conferences recently, they didn’t feel the need to adopt a Code of Conduct. They cited that we’re “all adults here” and pretty much know how to act toward each other. I was pretty disappointed by this, particularly at a conference that served alcohol throughout the day and had a pretty bad gender ratio (it’s one of the worst I’ve ever seen). Apparently I wasn’t the only one. Prior to the keynote, a tweet from FOSDEM said “message received” regarding the importance of a Code of Conduct. I’m really proud of them for acknowledging the importance and promising to improve, it makes me feel much better about coming back in the future.
Huge thanks to all the volunteers who make this conference happen every year, I hope I can make it back next year! A few more photos from the event here: https://www.flickr.com/photos/pleia2/sets/72157650191787498/