Sep 072017
 

Many users are aware of the tug of war being played between piracy add-on writers on one side and legitimate services on the other that are using Kodi as a platform. Far fewer are aware of the other battle the Kodi project is dealing with on a regular basis. For some reason, when we announced the name Kodi would be replacing the name XBMC back in August of 2014, a number of individuals with what appear to be less than altruistic motives decided to act as trademark trolls. They attempted to register the Kodi name in various countries outside the United States with the goal of earning money off the Kodi name without doing any work beyond sending threatening letters.

We are not entirely sure why the name change prompted this behavior. When we went by XBMC, nobody ever did the trademark squatting thing. So when it started happening with the Kodi name, we were caught flatfooted without any real plan for dealing with these trolls or even tracking their actions.

There have already been lawsuits involving these trolls, though none so far that we have been a party to. A few trolls, after being contacted by us, agreed to hand back their illegitimate trademark registrations. The ones who agreed tended to be helped along by ongoing piracy-related lawsuits against them.

At least one trademark troll has so far not agreed to voluntarily release their grasp on their registration of our trademark and is actively blackmailing hardware vendors in an entire country, trying to become as rich as possible off of our backs and the backs of Kodi volunteers everywhere. His name is Geoff Gavora. He had written several letters to the Foundation over the years, expressing how important XBMC and Kodi were to him and his sales. And then, one day, for whatever reason, he decided to register the Kodi trademark in his home country of Canada. We had hoped, given the positive nature of his past emails, that perhaps he was doing this for the benefit of the Foundation. We learned, unfortunately, that this was not the case.

Instead, companies like Mygica and our sponsor Minix have been delisted by Gavora on Amazon, so that only Gavora’s hardware can be sold, unless those companies pay him a fee to stay on the store. Now, if you do a search for Kodi on Amazon.ca, there’s a very real chance that every box you see is giving Gavora money to advertise that they can run what should be the entirely free and open Kodi. Gavora and his company are behaving in true trademark troll fashion.

We are writing this blogpost today for a few reasons:

First, we want to let the users know that in some countries, trademark trolls are actively trying to make Kodi no longer free. By this we mean that today any user can take a clean and untouched copy of Kodi and distribute it however they please. Sell hardware with it installed. Give it away on USB sticks or online. Or, heck, a person could even sell it if they wanted to. As long as users follow our basic trademark requirements, they can do with Kodi as they please. Trademark trolls want to stop this. They want to make it so that if you want to distribute Kodi, you need to pay them a fee first. Want to sell hardware with Kodi pre-installed? Too bad, fees first. Heck, if they wanted to, they could try to prevent Team Kodi from distributing the software in their country by suing us for trademark infringement.

Second, we want to let the trolls know that we have caught on to this game and will not accept it. We are actively taking the necessary steps to ensure that the Kodi trademark trolls are dealt with appropriately. There is no value proposition in trolling the Kodi name.

And finally, third, while our goal has always been to avoid going to the court to ensure Kodi remains free in countries where trolls are attempting to get rich off of the Kodi name, we will not back down from protecting the free, open source nature of our software. If that time comes for legal action, we hope to have the community’s support. 

For the most part, this battle has been waged in lawyers’ offices, rather than on the front page of newspapers, but because the freedom of Kodi hinges on it, it is no less important. 

Right now, there is no call to action. There is nothing most of you need to do, save for reminding people that Kodi is free. We only ask that you be prepared for the future, as we move forward in defending the freedom of this software that we all take for granted. And if you happen to notice someone trademark trolling Kodi in your country, let us know. 


Kodi Trademark Trolls – The Hidden Battle
Source: Kodi

Aug 222017
 

It has been a while since we released 17.3 release which fixed several issues. Now the time has come to do another named 17.4 where we tackled several more issues that were identified. Although we already moved on with development towards v18 we do take the time to fix issues for the current release when we can. We recommend every one to upgrade to this version once it’s available for their platform to have the best experience possible. If you want to know what has changed you can browse the list below.

Fixes done in this release:

  • Potentially fix crashing on Windows due to an issue in Python
  • Potentially fix crashing on Windows when enabling zeroconf
  • Fix sporadic crash on Windows when installing or updating add-ons 
  • Fix issue for users with reverse proxies attempting to forward websockets.
  • Fix possible issue if Linux distro uses system ffmpeg and cause black screen with 10-bit H.265
  • Properly throttle scraping music information online to prevent overloading the provider
  • Fix native keyboard on iOS 11
  • Fix potential crash on Android O loading App icons
  • Fix non showing Kodi banner on Android O
  • Fix potential crash on Android with certain keymaps
  • Fix wrong detection of VP6 and VP8 videocodec on Android
  • Update FFmpeg to 3.1.9
  • Set hard requirement to use FFmpeg 3.1.x only
  • Fix for Hangup when viewing recording and pressing next/previous
  • Fix merged scraped album type and label correctly with that derived from tags from music files
  • Fix possible crash on Linux when using ALSA
  • Save skin settings immediatly after they have changed instead of only on shutdown

What else is new?

In the bugfix releases we never include any new features. They are as feature complete as the initial version with the difference is they contain stability and usability fixes. If you are curious you can read up on all the v17 changes here: Kodi v17.0 “Krypton”

Where can I download Kodi?

As alway you can find the official builds on our download page. Then click on the platform of choice and select the build you need. You can install these build just on top of your current Kodi installation without doing a reinstall or cleanup as we do a full migration if needed. All you add-ons or installed skin will keep working.

Apparel, donations or getting involved

Getting involved is quite easy. We encourage you to report problems with these builds on our forum first and after that, if asked, submit bugs on Trac (following this guide: How to submit a bug report). Do note that we need detailed information so we can investigate the issue. We also appreciate providing support in our Forums where you can. You can of course also follow or help promote Kodi on all available social networks. Read more on the get involved page. We are always happy to receive a donation by which you show your support and appreciation, and t-shirts and Raspberry Pi cases may still be found on the sidebar for purchase. All donations and other income goes towards the XBMC foundation and are typically used for travel to attend conferences, any necessary paperwork and legal fees, purchasing necessary hardware and licenses for developers and hopefully the yearly XBMC Foundation Developers Conference.


Kodi v17.4 final: Just a bunch of fixes
Source: Kodi

Aug 142017
 

Finally, we turn to Philipp, who is working to upgrade the Kodi windowing system in Linux from X11 to Wayland. As a PR is already posted, we are extremely excited about this project!

Wayland Support – yol

My main goal was quite simply to get Kodi to natively support Wayland again, if possible as well as it currently supports X11. The Wayland protocol is slowly but steadily gaining traction in the Linux world as successor to the X11 display server and is generally seen to replace it in the long term, which is why it is essential for Kodi to support it if it wants to continue to deliver a good user experience on Linux. As some may know, Kodi did already have a Wayland windowing implementation originally written by Sam Spilsbury during GSoC 2013, but it got removed from master for unsolved infrastructure reasons some time ago and was never on-par with the X11 implementation feature-wise.

June

I subdivided the main goal into a number of sub-goals/features in my initial proposal categorized as “basic” (i.e. necessary so you can reasonably use it at all), “additional”, and “possible extension”. In the first month, I dealt with all basic and some of the additional features. I had planned to salvage as much of the previous code as possible, but different design choices I made ultimately meant that I ended up writing most of it from scratch. Still, I was frequently checking the prior implementation to see which parts of Kodi I have to touch and how I can go about solving some specific aspects.

To get a bit more concrete here, where the approach differs most is how the Wayland protocol objects are used in object-oriented C++. Previously a home-grown approach was used, probably because there were no C++ bindings for libwayland-client at the time. The resulting wrapper code is quite tedious to write and maintain, which is why I decided to use the C++ waylandpp library as base. Even though it is not quite mature yet, I figured that my time would be better spent improving waylandpp than trying to come up with something new on my own. It is of course possible to use the C API of libwayland-client directly without any wrappers, but this is not a very nice solution since the Wayland protocol is really made out to be used in an object- oriented fashion if the language allows for it. Much to my delight, the author of waylandpp was very responsive and supporting, which means that all improvements and feature additions I made to waylandpp at this point are already merged upstream.

Unfortunately, it soon became clear that the aging windowing infrastructure of Kodi is not a good match for Wayland which does some things in a very different way. Wayland is designed such that clients have minimal control over the desktop for security reasons. This for example means that, unlike on X11, Windows, and most other windowing systems, applications cannot just set arbitrary video modes. They can only tell what their preference would be to the compositor, which then decides and in turn tells the applications what size they get. I do think that this is a good design decision since it solves a lot of problems that XRandR has like leaving the desktop in a bad resolution when a program crashes, but it does mean that a lot of things have to be done differently. The Kodi code assumes the traditional procedure of fetching a list of valid resolutions and then being able to switch to any resolution immediately and basically without failure. Changing this in a satisfying way would require quite a lot of refactoring that would have to touch all of the current windowing implementations, too. This is a lot of work, requires coordination with all platform maintainers, and is not realistic to be completed within the GSoC timeframe, so I have put this off for now and instead tried to make minimal adjustments to the Kodi resolution switching code that allow the Wayland implementation to work without impacting any other windowing system. The downside to this is that the Wayland code is not as clean as it could or should be and that there is an increased risk of weird stuff happening.

July

After getting most of the basic stuff out of the way in June and the first week of July, I focused on the two big remaining issues: Support for the wp_presentation Wayland protocol extension and windowed mode, the first of which was just merged this week. Put simply, Kodi now has a reliable way of determining how much time it takes from rendering a video frame until it appears on screen and does not have to resort to guesswork, improving AV sync. Also, it can be used as source for the video reference clock so that slight mismatches of the video fps with the screen refresh rate can be corrected by resampling the audio.

I worked on windowed mode support for the remainder of the month. I guess that it would not usually be expected to be a complicated issue, but most Wayland compositors require applications to draw and handle window decorations themselves (called client-side decorations) if they want to have any. I discussed with my mentor how to go about this and we decided to once again keep things local to the Wayland implementation and draw the decorations there as none of the other windowing systems currently requires this. The other option would have been to somehow integrate the decorations into the Kodi skinning system. This is of course nicer, but far more complicated and probably not worth the trouble. As media center, most users will use Kodi in full screen mode which is also the default, so window decorations that don’t look that nice will not be a big problem.

During the past two months I also had to learn that Wayland is still quite new to the scene and that a lot of bugs still lurk in the various components. I had to report and sometimes fix bugs in compositors and other third-party components such as mutter, weston, and libva. Finding these bugs and determining whose fault it is that something did not work as expected took more time than I had initially anticipated. I would like to thank the #wayland IRC community and specifically pq and SardemFF7 for their time and advice that helped me move forward several times.

August

In the last few weeks I finished windowed mode, investigated some outstanding issues not directly related to Wayland such as touch screen handling, and am now trying to get my work merged mainline. I do hope that no big issues pop up that could prevent the merge, but I’m optimistic – the pull request is already live [https://github.com/xbmc/xbmc/pull/12664]. Apart from fixing the outstanding review comments, I plan to look at identifying possible memory leaks and multi-threading races with valgrind and ThreadSanitizer.


GSOC 2017 Update – Wayland Support
Source: Kodi