Things I learned at the Koha Hackfest in Marseille

Last week we (aka HKS3) attended the Koha Hackfest in Marseille, hosted by BibLibre. The hackfest is a yearly meeting of Koha developers and other interested parties, taking place since ~10 years in Marseille. For me, it was the first time!

Things I learned (and other notes)

  • While I still don't like traveling by plane, the route Vienna - Marseille is very hard to travel by train (or bike).
  • Airbnb hosts come up with the weirdest ways to allow guests to access their apartment, which of course fail spectacularly on Sunday at 20:30. (We had to call a number, which should then automatically unlock the door. Didn't work, so the owner called somebody to open the door for us. And told us to basically reboot the system by toggling the main breaker. The system then worked for the rest of our stay).
  • I still like Cidre and Galettes a lot.
  • Do not underestimate what you can do with a shared online spreadsheet, a few tabs in said spreadsheet, and some smart formulas: No need for a fancy conference orga tool.
  • There is no competition who will eat the most from the overflowing shared sweets tables featuring nice (but unhealthy) stuff brought by all the attendees. I think I still tried to win.
  • Once you have koha-testing-docker up and running, sending patches and signing them off is not too hard.
  • I still find the process not too easy (and it can take quite some time, making "drive by commits" nearly impossible, but then Koha is a piece of software that is distributed and installed onto thousands of (different) servers, so it unfortunately does make sense to take a bit more care.
  • We had some interesting discussions on various ways to implement Plugins and Hooks, mostly about explicit hooks (sprinkling the code with method calls to various named hooks) vs implicit hooks (using Perl magic to wrap methods). I'll post a followup blog post on that soon. Here are my extended thoughts on that subject.
  • I still like Moules Frites and Sirup, but find Diabolo (Sirup with Lemonade) too sweet (and I like sweet!)
  • Another nice thing about Marseille: When you forget your jacket at the venue, and the temperature drops from nice to cold, you can drop into a Kilo Shop and get a cheap (and weird) second hand jacket.
  • I learned how to spell Marseille!
  • Wow, the cheese lunch...
  • The table football ("Wuzzler", as we call it) has a very weird layout; using a soft ball has the advantage that it's less noisy (but plays like crap). Tomas was a fierce adversary :-)
  • I learned that koha-dpkg-docker exists (a container to build Debian packages of Koha), but could not get it to work. Yet!
  • The last day of Ramadan and Eid al-Fitr causes a lot of happy activity in the town center.
  • It's nice to have a harbour as a town center.
  • Andreii again tried to get the Koha people to join the Perl community and the Perl community to start to care about Koha, eg by inviting Koha devs to submit talks to the upcoming Perl and Raku Conference in Las Vegas and inviting Perl people to the upcoming Koha Con in Montréal. So if you identify as one or the other (or both!) and want to attend one of those events, please do so! And maybe also submit a talk!!
  • Very little sleep, drinking coke instead of water and not being young anymore is not a very good combination, which caused me to have to take half a day off on Wednesday.
  • Getting to know the actual people behind email addresses and IRC handles helps a lot.
  • I got told the not-so-secret story behind the name ByWater by their exceptionally friendly and generous CEO Brendan Gallagher over beer and cider that for a change we paid for.
  • Fridolin Somers explained why the ElasticSearch configuration / mappings exist in two data stores (the DB and a yaml file), and why this probably cannot be avoided: For bulk changes (when you manage lots of libraries) the yaml file is easier than manually clicking through the UI; they don't trust people who have access to that UI to not fuck up the mappings (then IMO access to this should be more restricted). I still thing that a change to the DB via UI should be reflected in the yaml file, especially as there is a big fat button in the UI that will reset whatever is in the DB with the yaml file. To be discussed...
  • The colleagues from KIT are also working on Elasticsearch and fixed a very annoying bug with the UI: Ability to add search fields from UI. We used that as training bug to learn the sign-off process. And by now it's even pushed to 24.05, yay!
  • When a bunch of stakeholder meet in a room and want to cooperate, complex decisions can be found quickly (switching from IRC to Mattermost for Koha Chat)
  • When this decisions is not what you preferred (Matrix/Element), but pushing your preference would probably only work if you volunteered a lot of time and effort, it's wiser to accept it. (Plus, Mattermost has a few features that Element lacks)
  • While trying to sign off one bug fix, it can happen that you discover two more (only one reported yet, though)
  • You have to apply for the job of QA person (i.e. to check that each bug/feature actually works before it's committed) and have to win a vote. This might explain why it often takes very long to get a patch into Koha, as there are very few people on the QA team. I'm only very slowly getting used to this (in my eyes) very slow and cumbersome process, but I guess "move fast and break things" is not something libraries care about..
  • Update: There are actually a lot of people on the QA team , I was looking at the wrong list. They do a great job! But it could always be more members!!
  • Katrin Fischer is a walking Koha encyclopedia and happily shares her knowledge.
  • Having a beach withing walking distance (barely, but still) is very nice. Especially if the weather turns out sunny, warm and not windy. And the water cold, but manageable.
  • While I initially found the concept of high end food courts a bit strange, they are very nice for a large group of people to randomly show up. Also, I can find some weirder food ("African" sweet potatoe waffles with fried chicken and plantain (fried bananas)) while others can have their boring burgers and pizzas.
  • If I had known before that joubu not only QAs Koha, but also random blog posts, the inital verison of this post would have containted much less errors!

Achievements

  • I quickly hacked together a Vue3 Island Architecture Prototype showing how you can load distinct components that are distributed in one vue app into existing backend rendered HTML, thus for example making it easy to reuse the navbars, auth etc from the backend rendered app, while still having a shared router and state in the Vue app.
  • We finally got our GeoSearch signed off and passed QA. Thanks Nick & Martin!
  • We signed off a few bugs / features, finally learning (for good, I hope) how to work with KTD and git-bz.
  • eg this one Add a plugin hook to modify patrons after authentication, which was a pain to set up, because the Keycloak SSO integration has to be manually configured in KTD.
  • The German speaking attendees decided to try to set up a Koha-DACH German language hackfest-y event in autumn.
  • I added a new flag, --dbshell to KTD for easy access to the DB shell.
  • I tried a different approach to get Plack hot reload into KTD, but that's still in discussion.
  • Probably more..

Thanks

Thanks to BibLibre and Paul Poulain for organizing the event, and to all the attendees for making it such a wonderful 4 days!