What Happened at Hackfest 2016

This year's Inkscape hackfest was held at the Devonshire Hall, University of Leeds, in the UK. The meeting space was a grand old set of buildings, which was a beautiful setting to hack on Inkscape.

Ten developers attended the hackfest, only the host was from Leeds and everyone else was from outside of the UK and transported in during the weekend. The first night, we met up for a social drink and pizza in the local pub, before adjourning to our respective hotels. This allowed us all to get to know each other and feel more comfortable the next day at the venue.

The first day, we attended a meeting room in the back of Devonshire Hall. We were given tea, coffee and biscuits in the hallway, a social space room and then went onwards to the main room where a set of tables were set. Each table had space enough for three people and we began with introductions, interests in the project and then setting the focus for the Hackfest. These were:

  1. CMake: We want to finish our move to the CMake build system, so we have a common build system on all platforms. This is the main goal before a 0.92 release.
  2. Fixing the flickering bug in the GTK3 branch. We want to move to GTK3 after 0.92 is released. This will greatly simplify our code, as we have about 700 conditional branches in our code based on GTK2 vs GTK3. GTK3 will allow more flexibility in the GUI (e.g. larger/smaller icons) and is also better supported for OSX.
  3. There were also plenty of discussions and smaller bug fixes, some website additions and cleanup.

Each lunch time, Devonshire Hall would bring in a fully catered lunch. Everybody agreed that the host was the best ever for an Inkscape hackfest and will set a high bar for future events.

That evening we spent a short time socializing and eating in a pub called "The Library" before making our way to our hotels.

The next day, we spent most of the time working on the code. Probably the biggest accomplishment is that Krzysztof has a fix for the Gtk3 flickering bug. The fix breaks previews in the file dialog, so that will still need to be dealt with. While the Gtk3 build is usable, there is much, much more work that needs to be done. Alex and Martin have been working on this. We've discussed switching the default build from Gtk2 to Gtk3 after the 0.92 release to ensure that more eyes are focused on Gtk3. Progress was also made on the CMake build system as well as many other areas.

We had a preview of the C++ plugin system from Sebastian and Moritz of Semiodesk, including a demo of the Grid extension implemented in C++. They will put documentation, including a "Hello World" example, on the Inkscape Wiki. The focus now is on getting C++ extensions to work on Windows. These extensions will compliment our existing Python extensions and would not replace them.

Alex took us for a local speciality for our second day social, a curry at a restaurant in town. This involved a lot of walking, but was very much worth the effort.

The final day brought more hacking! About 70 commits were made to the Inkscape code tree during the whole hackfest, some just a line or two, others quite large. The main success was fixing the GTK3 flickering bug, which took quite a few iterations. It was good to have so many testers in the room for instant feedback, while Krzysztof was working on the fix. After the 0.92 release, we'll make GTK3 the default build in trunk to get more developers working on the many additional fixes that will be needed. Alex and Martin already got a good start on reducing the literally thousands of lines of deprecation warnings when compiling the GTK3 build.

The other major effort, fixing the CMake build, is almost there. CMake works fine on Linux, but on Windows, there remains a linking problem. The folks from Semiodesk are eager to get this done, as it is necessary in order that they can use the C++ extension system on Windows.

We also spent some time discussing infrastructure issues. The consensus is to move our code to Git. This will have some real benefits. Git is more familiar among the developers, so it will be easier for new developers to start contributing. Git also allows "submodules", which means that Inkscape can move code into separate libraries. We won't need to keep a duplicate copy of lib2geom in our tree anymore.

Martin worked on some improvements to the Barcode plugin and some cleanup there.

Tav got everyone together after lunch for a quick meeting.

  1. We decided on GitHub as our source control host. There is a bit of reluctance to use a closed source host, but they offer the best CI (continuous integration) solution for automated builds and testing. We don't have a lot of developer time to manage a more complex solution. GitHub's issue tracker is not usable for Inkscape right now, so the bugs and answers will stay on Launchpad.
  2. We want to move our mailing lists to our own servers and to upgrade from Mailman 2 to Mailman 3. This is a low priority for our host OSUOSL, but Martin has offered our services in doing the work to install Mailman 3.
  3. We had a consensus for moving to C++11 after the 0.92 release. Some of the libraries we depend on have already made it a hard requirement. There are real benefits to C++11, especially in code simplification and code readability.

The final activity for the last day was an official hackfest dinner at a Leeds pub with the best desserts and very good discussion. Hacking did continue the next day, before people made their way to London and onto LGM (Libre Graphics Meeting) for stage two of this adventure.

Overall it was a very successful hackfest. We would like to thank our contributors who made the hackfest possible! See full gallery here!