What Happened at Hackfest 2017

The 2017 hackfest was organised to promote Inkscape development and coordination between developers. We invited developers and other contributors to join us in Paris for a week of intense programming, discussion and project designing.

The first day of the hackfest was Tuesday 27th June. It started a little late with different groups not entirely sure where other attendees were and where people needed to go. But after coordinating over phone, everyone was settled into the main hacking room we had been graciously given by the Carrefour Numérique². The space was open, contained many bean shaped desks with plenty of power, chairs, and had presentation equipment which we used right away to walk through some designs and talk about Inkscape's development. There were some minor network issues accessing our git repositories and email at the same time over the wifi.

Because Inkscape has moved to Gtk3, there were many issues to talk about with the design and coding of different parts of the user interface (UI). Gtk3 was needed because Inkscape's older Gtk2 versions struggled to be packaged properly for Mac OSX as well as failing to keep up with the advancements in the tool kit available with later editions of the widgets library.

The first design we wanted to talk about was the filter editor dialog. This dialog is how users of Inkscape design and edit new filters which apply to SVG objects. These filters apply just like pixel based filters found in programs like Gimp, but of course are non-destructive and can be edited at any time. The problem was that the dialog was not only hard to use, but also not working well with the new version of Gtk3 which Inkscape has recently moved to. Design ideas for how to condense the complex notions of hierarchy as each filter affects the ones that came before, into more basic Gtk widgets which would remain easy to use. Marc then took these designs and worked on getting them implemented using the Gnome glade interface. This method actually allows the Glade UI files to be shipped with Inkscape and other non-programmers can then edit the designs if they wish.

Elisa and Cédric helped with talking about design and testing various ideas as well as bringing with them books and educational materials, showing the importance of sharing knowledge about how to use Inkscape, not just code. Improving documentation and translating were their main goals for the hackfest.

Other developers were around cleaning up the code base further. Martin worked on moving all the duplicated file listing code into a central location. This allowed for improving the code using the new methods available in C++11 as well as improving the functionality and consistency of each place where the program lists files on the hard disk. Examples include listing palette files, looking for extensions and looking for themes. Each of these tasks are now more fault tolerant and can also look within sub-folders for the resources they want to list.

As well as providing coffee and presenting us all with amazing branded cups, Chris also worked on a new colour picker feature. While not a coder, he was able to edit XPM cursor image files in Gimp and make his first commits to the Inkscape repository with the guidance of the rest of the team. His contributions allowed us to have better graphics for these cursors. He also worked with Martin to clean up the cursor code so it would be more consistent.

Alex worked on moving the Inkscape code base towards using normal Gnome based icon themes and removing Inkscape's own icon generation code. The goal was to allow not only better themes for Inkscape, but also to improve the ease of adding icons and editing the icon files without causing issues. There were a lot of regressions in this work, so we expect that the task will continue for a time after the hackfest. But this was expected as the icons in Inkscape have been around for a long time and the task of removing them all was very large.

The second day, we were moved to a new and smaller space. Although this was fine as our group was not excessive. The new space was slightly easier to get to.  chr[] provided a presentation on his work using Inkscape in the making of sails for ships and boats. The machines being used were large and the equipment could be quite old. Using Inkscape and having extensions output vectors was very useful for the making of these items. The only issue seemed to be the projector, which needed manual switching, see the photo of Martin balancing on a chair trying to turn the projector on for the presentation. Mostly people continued to work on items they had set up the previous day.

Sylvain worked on upgrading Inkscape's connector tool with a new version of libavoid, this is the code that makes lines automatically avoid and contort around objects to produce elegant graphs of connected items. The work involved pulling in a large amount of code from the upstream library and the upstream library is not packaged and available generally in Linux or other platforms. But the task of keeping libraries up to date is an important one and the improvements will help if we choose to separate out the code in the future.

Tav acted to support many of the projects that were under way at the hackfest, making sure we had the right meetings and discussed usability issues to the text GUI and with Style dialog. He also worked hard with CRogers on line spacing, improving the user interface and debugging issues with the way line spacing works. Jabier worked remotely and achieved quite a lot, despite not being able to attend. His node selection work will allow the nodes that control tools such as the star and rectangle tools to be selected and then nudged with the keyboard.

The evening of the first day, we all went out on our Inkscape Dinner. A meal kindly paid for by the Inkscape project to foster social interaction and to thank everyone for making such efforts to attend this voluntary event. The location was a Japanese/Asian restaurant. Also attending were family members of some attendees who got to join in the fun and meet some of the fellow professionals that we all work with online. These social events continued each night as different people got together to have a meal or a drink. On the third evening, for example, Marc acted as guide to Paris, taking people to a traditional restaurant on the river Seine. The food was widely acclaimed to be good and we stayed for dessert. Afterwards Marc then led us all on a long walk around Paris, taking in many of the famous sights and commenting on the history of the city. Hopefully Marc will not take the opportunity to become a tour guide, as his code would be missed.

Because no space was available for the finale day on Saturday. Tav invited everyone to take the train out to the outskirts of Paris and to enjoy his home and continue to hack on code while he cooked food on a barbecue. A big thank you to Tav's family for hosting us on the last day of hacking proper. Although a few of us who were in Paris for some extra days got together to hack further in our hotel rooms, this was the last day for the majority of us.

Each participant spent time with each of the others to help them with understanding code, getting to grips with technology or technique. As with the social interactions, this ability to ask questions quickly is really the strength of being physically in the same place, and is one great reason why we will continue to have hackfests in the future. The next hackfest will almost certainly be in Boston USA, in 2018 and preparations are already under way to secure the space. If you'd like to help, you can donate here. So until next year! Happy Hacking!

The team!