October 2017

Devcon 2017 Part II – Day Three

The final day of Devcon – still lots to get through, although, for the sake of some team members, we might need to speak slowly and quietly…

We started the day with a Foundation financial overview from natethomas. Even as a non-profit, volunteer-run organisation, keeping Kodi going is an expensive undertaking by the time you take into account events and conferences, hosting, legal, development hardware, and similar. This in turn led to a conversation about future logistics: we have a large team now, and it’s getting increasingly challenging to get the team together to meet, discuss, work, and socialise while we continue to make your favourite media centre software. We also want to continue to attend and increase our engagement with FOSDEM, ELC, CES, VDD and other open source and multimedia events.

Our next topic was infrastructure with kib. The Kodi systems respond to literally millions of requests per day for such things as downloads and addon updates, so we’re looking after a significant infrastructure. We have multiple servers for the forum, wiki, main web site, build server and mirroring, all of which need to be managed, backed up, maintained, upgraded. Given our recent extended forum downtime, that was clearly part of the discussion as it’s unacceptable in every respect. We need to look again at how we host our content, our architecture, and any weak points.

We then moved onto a brief conversation about addon security. This is a big topic that will need to be progressed separately: addon sandboxing to protect the core code and operating system, for example, or signing and hashing to ensure code integrity.

Tooling was our next topic, led by razee and martijn. Do we have all the tools that the developers need? Are there better ways and methods? How do we take work out of the system, perhaps through automation of some basic sanity checks? How do we make it easier for people to contribute code and get it accepted and merged?

We then moved on to forum moderation, with a discussion led by darrenhill. All forum users should be aware that we do not allow forum conversations or support threads that touch on piracy, guided by a non-comprehensive list of banned addons on the wiki. However, new piracy addons appear all the time, so we need to consider how we better maintain and publicise this list, including making it clearer to new forum sign-ups: we still get too many people who sign up specifically to ask for help with an unsupported addon, for example. The conversation then moved on to log files, and users who edit these to deliberately try to hide addons/repositories. Finally, we moved on to the sanctions we take against users who repeatedly breach the forum rules, and the basis on which we take action while trying to remain fair and transparent.

Moving on, we came back to a topic we covered earlier in the conference: whether an addon should ever be allowed to modify another addon, or whether an addon should be allowed to disable anything when it finds something that it’s decided is somehow “undesirable”. This is clearly a contentious issue. As a rule, nothing should ever break a working installation, either by changing core Kodi files or by altering some other part of a user’s installation that was already there. The current issue with addons checking for the presence of others, however, is clearly more complex as there may be legitimate reasons for such behaviour, such as a compatibility check. Expect a more formal announcement on this subject in the forums in the near future.

Our final conversation of the day, then – and the final one of the conference – was alwinus and the addon subsystem. He talked us through the current addon system, and some of the problems and limitations it presents: it’s not easily extensible, there are limitations on interoperability between addons, SQL dependencies impacting performance, and there are some inherent instabilities in the addon handling code that can trigger a crash. Simply put, there is a series of improvements proposed that will address these issues: limit SQL dependencies, remove async thread handling, cache more information, move away from dependency on cpluff.

And that’s it for Devcon 2017: time for people to head out, to airports, train stations, wherever.

Thank you to everyone for their attendance and contributions!


Devcon 2017 Part II – Day Two

Day Two dawns… most people are bright-eyed and ready for another day, although, if I’m honest, some people may be here more in body than in spirit…

LibreELEC Logo

First on today, chewitt from LibreELEC gave us an update: the installed base continues to grow, with the Raspberry Pi in different forms easily remains the dominant platform, although this is slowly declining in favour of SoC (Android stock) devices. Given the appliance nature of LE – operating system and applications – a large part of the presentation was given over to security, including automated updates and the overall integrity of the process.

GSoC Logo

Next up, a series of sessions led by our newest team members – our Google Summer of Code students (or maybe “graduates” now, given their contributions!).

Vel0city presented his work on multi-pass shaders – programs that run on the GPU to manipulate an image frame at a pixel level between decoding and display – so, blur, enhance, scale, and so on. These are particularly useful for improving image quality when perhaps the display technology has advanced significantly beyond what the source material was created for (resolution, colour depth, frame rate, etc.).

Next, yol took us through his work on touch and Wayland (vs X11) integration. While we’d had some Wayland implementation previously, this work brought it right up-to-date with native support within Kodi on Linux.

And finally, arpitn30 talked about his project to port over to Python 3 (Python 2.x goes end of life in 2020). As would be expected, this involved changed library calls, removal of deprecated syntax, and updated dependencies and versions. There are significant differences between Python 2 and 3 – they’re almost different languages – which give rise to real challenges in a cross-platform, multi-version environment. Of course, the shift to Python 3 will require rework in all Python addons, so this is a long-term migration across many different packages. If you’re an addon author, keep an eye out for further information on this topic in the coming weeks and months, as it’s not negotiable.

To close off GSoC 2017, then, razze led a conversation about GSoC 2018 – a call for more mentors, for more developers to get involved. We can bring in students, we can offer project ideas, but we need the experience of the existing developers to be successful: to help orientate people to the code and guide them through the best way to get code accepted into Kodi for release.


After a brief but passionate conversation about trademarks, licensing and similar, the sessions moved on to usability, and the “out-of-the-box” appeal of piracy addons versus “raw” Kodi. While we don’t provide any content, we could maybe make it easier for people to catalogue their media, perhaps with more pre-defined skin nodes or similar. We also covered interaction between addons and skins, and what the implications are of some modules either demanding or objecting to the presence of other modules, and what this means for the user experience.

Following this – in a deja vu moment for many people – the discussion moved to what we can realistically do to support DRM-protected content. People have an understandable desire to watch their legitimate, paid-for content, so we continue to explore what can be done in this area. This is likely to be a conversation that will run for some time, however.

Next up, Martijn talked about our next major release. We’ve just launched the latest point release of Krypton 17.x, so it’s time to be looking towards Leia 18.x; the code is broadly ready and stable, so it’s now a process of locking down features, freezing code, building alphas, and so on. As always, this is a major piece of logistics, so it needs to be planned and timed properly.


Linux (Tux) Logo  Windows Logo  Apple Logo  Android Logo

As the day started to lurch towards the finishing line, the sessions moved on to platform specifics.

Fresh from the Embedded Linux Conference Europe, lrusak covered Kodi on embedded Linux – specifically, where we are with Kodi now, and where we want to be as the SoC/embedded market continues to develop. The plethora of boards has caused immense fragmentation, and this is becoming impossible to maintain because of different approaches to windowing, rendering, and so on. There are technologies to address this, however: Linux kernel support for Atomic DRM (Direct Rendering Manager) starts to simplify the problem; V4L2 augments this further. These are not implemented on all platforms, though, so it’s sadly not that simple. The level of support, and dependency on specific kernel versions or proprietary blobs, varies between Broadcom, Amlogic, Allwinner, Rockchip, Qualcomm, and Freescale. There’s thus more work from the vendors while software packages develop in parallel: improved V4L2 in FFmpeg, Kodi changes, kernel work.

Most Windows-specific activity revolves around Kodi under UWP, which we’ve covered before. There were no major updates to report on Apple or Android platforms.

Final thoughts before we tail away… further conversations about the migration to Python 3 and how that might be phased/implemented, and anything else needed in the 17.x branch for a further point release.


And that’s it for Day Two – a few attendees are going to leave early today (or maybe we’ll just leave them in a bar somewhere), but there’ll still be more Devcon tomorrow.


Devcon 2017 Part II – Day One

Well, 2017 has turned out to be unusual, and we’re not just talking world politics. This year, we’ve managed to bring the newly-extended team together for a second time; it’s something we’d like to do more often, although it’s unlikely that we’ll be able to do it every year.

So, it’s a grey day in Czechia, with ominous clouds hanging expectantly over Prague (picture above not actual weather, sadly!). Team Kodi is assembled – developers, skinners, moderators, the Board – and has been joined by some of our newest team members, Google Summer of Code students, and a couple of key partners.

Ludi incipiant!

Keith once again played MC and opened up the session while Natethomas valiently wrestled to overcome the inevitable hotel AV equipment challenges. Our rough format for this meeting will be a partner day today (Friday) before the internal Kodi stuff takes over for the weekend.



First up for presentations, then, Jason from FLIRC took the floor. He gave us an overview of the FLIRC products, the history of the company, the rationale behind the FLIRC USB learning adapter, a demonstration of the device in action and a brief glimpse of some possible future plans. It’s amazing how excited you can get at, and how long you can discuss, what are perhaps the finest Raspberry Pi cases in the world (but maybe we’re a little biased).


VLC Icon

Next up, JB and Etix from VideoLAN – if you don’t recognise that name, they’re the VLC guys, who came resplendent in their traffic cone hats. Topics covered included what’s gone into VLC 3.0, code cleanup and convergence, new features. They also covered some other VideoLAN technologies, some of which go beyond VLC – Mirrorbits, for example. And we finally touched on equivalencies and common interests between the projects, and where we might perhaps collaborate more than we do today.


That’s it for Day One – I know that looks short, but it wasn’t. There were many side-bar conversations and parts of the presentations that we simply can’t put onto a public blog, so you’ll have to trust us on those…