Flock 2016 & my talk on ABI checking in Fedora

Flock is the annual Fedora conference where you can find Fedora contributors as the main audience. This year the conference was held at the beautiful city Kraków, Poland from 2nd to 5th August. Being a schedule of 4 days, it was split into first 2 days of talks and later on workshops. Majority of talks were enriched with various Fedora related topics.

Most of talks have been recorded and has been uploaded on YouTube. Link to recordings and slides for talk can be found at Fedora wiki.

Workshops

With my interest to have patches in Kernel, I attended workshop on Building the Fedora Kernel by Laura Abbott. During this workshop I successfully built Fedora Kernel locally in fast mode using ./scripts/fast-build.sh x86_64 kernel_srpm. Also, learned building upstream kernel with enabling/disabling desired modules during build using command make menuconfig (Need to try out!)

I am not usually a design person but still went to try out my chances in Fedora badges workshop organized by Maria Leonova and Marie Nordin 🙂 To design badges you need to have inkscape software (dnf is our friend) installed. To use Fedora specific color, copy palettes files (*.gpl) into ~/.config/inkscape/palettes/ and get one of badges templates. Now pick up new open ticket and you are ready to go. I tried working on an opened ticket which was to create a badge for “You helped get NodeJS 4 into Fedora”. So far, it seemed easy but seriously placing NodeJs logo in the right way in Fedora template was not so easy. I tried some ways and thought it’s better I stay away from it otherwise Fedora might get some ugly badges 😉

Our (I and Dodji Seketeli) talk on Ensuring ABI stability in Fedora

Our main goal to have this talk in Flock was to make more people aware of the concept of Application Binary Interface and how one can ensure that application which they are writing/maintaining are ABI compatible across various releases. Slides and recording of our talk are also available to view.

Depending upon abicheck result, status message (PASSED, FAILED or NEED_INSPECTON) with log is sent to package maintainer(s) ( whoever has subscribed) for review. This is already running in production which you can view anytime.

Other than abicheck task run, libabigail provides tools which can be used by package maintainers (fedabipkgdiff, abipkgdiff) and developers (abidif, abipkgdiff) during development phase to avoid releasing ABI incompatible applications.

Verifying ABI changes log with live example taken from abicheck task run on gpgme package.

Various future improvements in our tooling like reducing memory consumption during ABI check run, extending ABI check run to all koji packages(right now runs only on packages mentioned in critpath), running ABI checks in rawhide on two distinct packages.

Talk was well taken by attendees and they had various curious questions (which have been recorded in our talk video).

During this conference, We managed to talk to some taskotron maintainers (Tim Flink and Kamil Páral) and got their feedback on existing status of abicheck task run. They seem pretty ok with its current status. We also discussed on following future works which needs to be done to improve ABI checking experience in Fedora:

Running abicheck task on all koji packages – We are already running ABI checks on important userspace packages with few exceptions due to memory constraints (kdelibs, firefox, thunderbird). Existing runs are stable now and it is time to extend to run on all packages and we all agreed in favor of. A task has already been created on phabricator which will get done soon.

Compare abicheck on two distinct builds in rawhide update – Currently, when abicheck run on rawhide packages, it ends up comparing between same nvr which is not very useful. This is because there is no tags like update-testing which we have in Fedora branches. In rawhide, latest build become the greatest. We thought of multiple solutions to fix it but for now we agreed to go on easily doable solution. We will compare latest build in rawhide with second immediate latest one. More details is getting tracked on phabriactor.

Run abicheck task only if package has Shared library – Right now abicheck task is only relevant if run on C/C++ shared libraries. Lot of packages in Fedora are non c/C++ and without shared libraries. So, it doesn’t make sense to waste resources by running on all packages. We have a task created in phabricator which will look into rpm package content first and look for shared libraries. Regex which we will use to find out shared libraries files are \.so[0-9.]*$’. If a package has at least one shared library then only perform abicheck run on it.

Overall, the conference was productive to me both technical and community wise. I met a lot of people in person to whom I have only talked over IRC channel/mailing lists. Also met some new people from the community. Thanks to all the organizers who did a great job with the organization. Everything was so great including venue, arrangements and evening events (sadly I couldn’t attend walking tour to city). I captured some pictures during my Flock trip which can be found at flickr.