RDK Community Updates

RDK Community Updates – How and Why We Upstreamed the RDK

RDK Community Updates
By Wouter-lucas van Boesschoten, VP of Technology and Innovation, Metrological

RDK code contributions have primarily moved in the “downstream” direction — into the RDK repository, from companies like Technicolor, ARRIS and, well, us.

Contributions in the “upstream” direction are also important to the growth of the RDK, to attract more development and grow the community.

So far, we’ve moved RDK code upstream to open source entities like Webkit and Gstreamer.

For Gstreamer, we contributed a way to expose the video fragments, e.g. MPEG DASH smooth streaming, from the browser using Media Source Extensions (MSEs) — essentially, a Gstreamer integration that the RDK needed for video IP playback and extensions.

Two or so years ago, we started to recognize what looked like considerable size/bloat issues with the Chromium open-source browser, and QTWebKit appeared to be going nowhere.

That’s what led us to Wayland, which is the replacement made by the Linux open source community for the X11 display server. It’s an extremely lightweight graphical environment that provides the possibility for multiple graphical applications to coincide. Wayland manages the focus and composition of multiple graphics applications, and makes sure that whomever is in focus, gets the input.

For WPE (Webkit Pure Embedded), we’ve developed code contributions around MSE, a browser extension for supporting programmable video, so that the video protocol can be decrypted and provided to a device’s codec, and EME (Encrypted Media Extension), to enable DRM interoperability.

A big question, at the time, was whether Wayland and WPE were the best way to go, vs. other open-source browsers. The answer is still Wayland, for lots of reasons, but the short version is this: It’s Newer, it’s faster, and it’s smaller.

Newer: Because it’s a new webkit, it runs from the Apple trunk. This translates into RDK being able to merge changes from Apple in a comparatively timely manner.

Faster: We also get to take advantage of a new JavaScript Core optimization feature, added by Apple, called “faster than light just in time compiler,” or FLT JIT. The JavaScript Core in the browser, combined with four tiers of JIT compilers, will kick in as functions are used more frequently within an application. The JavaScript Core JIT compilers optimize the code to a level that is hard to accomplish with one’s own C/C++ implementation.

Smaller: In the RDK community, we are perpetually silicon-restrained. Compared to QTWebkit, WPE is about 30% smaller — around 22 Megabytes, on average, compared to 32 Megabytes while packing 60% more features.

Plus, QTwebkit was essentially on a dead branch, whereas WPE is future-proof. Quite often in the past, proprietary solutions were based off of something that was open source, but then diverged from open source with closed modifications.

Now, we’re turning our focus to further enhancements, like working on OpenCDMi (Content Decryption Module Interface). Essentially, EME is a Javascript API that lets HTML5-based applications to interact through the browser with different DRM systems. Using OpenCDMi to abstract the DRM modules from the browser, making the DRM more or less a plug-in.

We’re also working on WebDriver, an automated test framework, to test applications from within a browser, as well as a speech APIs, to add text-to-speech and speech recognition from within a browser.

Unquestionably, upstreaming RDK code is a big task that takes time and commitment. By definition, any open source license must protect the unconditional right of any party to modify, or redistribute modified versions of, open-source software. That means contributing your work knowing that anyone can do anything they want with it.

But it’s also rewarding, and that’s how we at Metrological choose to approach the matter.

This is a promotion by an RDK MSP member and the content is not the responsibility of RDK Management nor do we explicitly endorse the message provided by this MSP member.