DevCon 2019 - Belgrade - Part I
Prof Yaffle
Another year passes, and here we are once again, locked in a windowless room to discuss all things Kodi-shaped. Genuine thanks to the generosity of our sponsors and users - that means you, you lovely people - whose donations make these meetings possible. Old faces, new faces, guests - these events really do help us to come together, share ideas and shape the direction of our favourite media software.
So, where are we? Well, this blog post comes to you from Belgrade, the capital of the Balkan state of Serbia, at the crossroads of central and south-east Europe. A city of some 1.25 million people, Belgrade has a long and turbulent history: the area has been inhabited for some 8,000 years, and has been home to, or part of, the Vinča culture, Celts, the Roman Empire, Slavs, the Bulgarian Empire, the Hungarian Empire, the Ottoman Empire, the Habsburgs and Yugoslavia.
On with the show...
After the usual round of introductions, kambala opened the show with a session on crash reporting: whether and how we could collect more crash logs by making it semi-automated or just generally easier ("Kodi has had a problem, would you like to send a report to the developers?" sort of thing). If we can get better insights, particularly into "silent" crashes, then we can get to work on eliminating bugs without waiting until someone gets annoyed enough to report it. Of course, we need to balance data volumes, human workload, user privacy, platform/component-specifics, and several other factors before we go down this road, so it isn't something that would appear tomorrow.
Next up, DarrenHill gave an update on forum activity and moderation. Overall, we've got a solid, worldwide team of moderators and a good suite of supporting tools that have had a significant positive impact on volumes of spam or undesirable posts. There's more user-led engagement around what we can and can't support on the forum; we've improved how we can notify our users when there's an upstream problem (e.g. with metadata providers) that might cause issues with Kodi; spammers are either blocked at source or removed from the forum very swiftly. What we're perhaps lacking, though, is more diligence around the wiki as a source of help - keeping this up-to-date as Kodi continues to grow and improve. As usual, volunteers are always welcome.
Our 2019 Google Summer of Code student, gusandrianos, took the microphone next to talk about his work on multi-pass shaders in RetroPlayer. Shaders are GPU routines that handle scaling, colours, lighting, shading, etc., and are used in RetroPlayer to change the look-and-feel of games as individual frames are rendered: pixellation, colour saturation, scaling, video effects, and similar. More information can be found via the GSoC website here.
Keith then stepped up to lead a discussion about Kodi's trademark policy and how we work with community groups that wish to use our code and/or branding. This covers projects which effectively bundle or build Kodi for specific purposes (e.g. LibreELEC or Debian) as well as complete rebranding (e.g. OSMC, SPMC). What we're really trying to do is protect our intellectual property while being as easy to work with as we can be: we've probably been a bit heavy-handed in the past, and this isn't helpful when people are simply trying (for the most part) to do the right thing. This conversation then led into how we include more "stakeholders" into our conversations - people who aren't team members, who maybe aren't specifically contributing to Kodi, but who are still doing interesting, relevant things that should be embraced. The conversation also covered "best practices" and how we can more easily advise people what they can and can't do, or under what conditions.
The afternoon session kicked off with Keith giving an overview of Kodi's financial position - where our money has come from, where it's gone back out to, what we have left. Changing financial regulations around the world also mean that we need to re-assess our bank account setup, specifically in terms of how we keep "local" accounts to receive donations and pay expenses in e.g. EUR when we're incorporated in the US.
Within the team, we use Slack extensively to talk to each other on both broad (e.g. "moderators") and narrow (e.g. "HDR on Windows") topics, so we had a conversation about all the channels we have that team members may have missed. We also talked about external channels, which we have so we can invite guests, bridge to IRC, and similar. If you collaborate with Team Kodi in any way and would find this useful, please let us know and we'll set something up.
Next up, yol and DaVu led a conversation about how, now we've completed the move, switching bug tracking from Trac to GitHub Issues has worked out. In general, it's working well, although we need to tighten up how we tag issues to both make sure they get routed correctly and, ultimately, to ensure that they get closed off once complete. You can find the current list of open and closed issues on our GitHub code repository. We've adopted a similar process for tagging pull requests, although we clearly need to improve our approach for notifying, reviewing and merging PRs given the backlog we've built up.
We talked a little about the European Union's General Data Protection Regulation (GDPR) and what this means for us - specifically, the forum, as that's arguably personally-identifiable information. Generally, we don't aim to collect such information, and people's posts are made publicly and thus outside of the scope of the legislation. However, there are still perhaps some tweaks we can make to ensure all "fingerprints" are removed should someone ask.
The next topic was around the vision for Kodi and how it fits into the streaming world we find ourselves in. The conversation was started off by da-anda, reflecting how we, as individuals, have seen our viewing habits change in recent years. This is a big topic, as there are as many political issues as there are any others: as part of the battle between themselves, the "walled garden" content providers fiercely defend the 'user experience' via their specific interface and applications. This obviously has real implications for any attempts to bring streamed content into a combined library view.
The conversation moved on with a conversation about add-ons - specifically, how they're listed and shown, which is currently best summarised as "in a long list, not all of which will work for everyone even if you know what they might be for". Can we group them? Can we tag them? Who would, how? We also touched on use cases - how clumsy it is to add your own home videos or similar content, for example - and also how else people do or could use Kodi. And we also talked about the implications for core developer time (both as mentors and programmers), and our constant need for more people who are motivated and interested in contributing significant features to the project; if nothing else, it's futile to have a roadmap or list of features if we then can't actually implement them. Kodi is a fantastic playground for experienced C++ developers and for those who wish to develop these skills; you don't need to be a video guru either, as there's an awful lot of code around the core player/renderer routines. Go on: you know you want to...
The day continued with a1rwulf and the work he's been doing on metadata and database storage. This is major re-work that impacts large pieces of code throughout the application, so merging it needs to be done carefully. However, it brings about significant performance improvements, scales to large databases better, and brings new functionality around music sources and playlists. Some of these functions might better implemented as binary add-ons so they can be ported to the core application sooner rather than later - the benefit of taking a more modular approach.
Rounding off the session, then, garbear introduced a discussion around Kodi versioning which quickly led into plans for Kodi 19 "Matrix". New features or capabilities notwithstanding, Python 2 goes end-of-life on New Year's Day 2020 - the clock is literally ticking down - and that gives a growing imperative to release the Python 3 version of Kodi into the wild. There are, of course, other issues to address and other code to include before we can release, and a final check that Python 3 doesn't break more than it solves, so it's a balancing act now.
And that concludes our first day. As the sun sets on Belgrade, it's time to head out into the Balkan night in search of beer and something to eat. Okay, mostly beer.