When LG acquired the WebOS project from HP early last year, it was a stripped down Linux-based mobile operating system hardly fit to run on any hardware. Then in January, less than a year later, LG debuted its new WebOS smart TVs at the Consumer Electronics Show in Las Vegas. And until the first WebOS TVs hit retail shelves earlier this month the team was working around the clock for the release.
“It's been a roller coaster year for us,” said Steve Winston, LG's WebOS project lead. “We have taken the stripped down OS and turned it back into a fully fledged embedded operating system for a TV.”
To accomplish this transformation, the development team had to back port most of the components from LG's first-generation smart TVs, built on their own Linux-based OS called Netcast, onto the WebOS platform. LG's proprietary TV stacks and loads of additional components for supporting streaming media and interconnectivity to other devices, for example, needed to learn how to “speak WebOS,” Winston said.
So they set out to convert all of the necessary LG components to the OpenEmbedded environment – the open source software framework used to build the original WebOS project. Now the core technology behind the Yocto Project, OpenEmbedded is a set of recipes, classes and associated files tailored for building a Linux distribution for embedded devices.
OpenEmbedded ensures that all the parts that end up on the final hardware are very well contained, Winston explained. In other build environments the machine you build on really determines what you end up building, he said.
“We wanted a fully predictable and reproducible build environment,” Winston said. “So that at any time in the future we can go back and do the same build and get the same results.”
Creating a Standard Build Environment
In the process, they ended up building a customized Yocto Project/ OpenEmbedded environment in order to simplify the metadata and abstract standard build instructions. Component owners can inherit that information instead of relying on binary drops to the other build teams, which allows easy sharing and component integration.
It was difficult at first to train LG's small army of engineers, who were contributing those components from teams and branches across Korea, the U.S. and Europe. They were accustomed to working in basic make files under the former proprietary build system, rather than the metadata and layers standard in OpenEmbedded.
“It's a new and different concept and that learning curve can be frustrating,” Winston said. “We even had some pushback but were able to convince them it was the way to go.”
After the initial pain of switching, they're reaping the benefits of having a standard build environment used across all of LG's engineering teams. After several months, and many lessons learned, they have a set of plug and play components that all connect via the WebOS luna service bus, Winston said.
More open source WebOS components to come
Now that the initial WebOS TV release is done, the team can again focus on adding new features to the platform. They also plan to go back over their work from the previous year and decide which new WebOS components must stay proprietary and which they can release as open source, starting with their recently released Enyo application development framework for TV called Moonstone.
“The core of the operating system is out there on Github, including the luna-service2 and core JSON library, which works together with OS/2 to be a fundamental part of everything that's WebOS,” Winston said.
They're also planning to work with the Yocto Project community in the future to share some of what they've learned about setting up international engineering teams, as well as to help integrate their custom changes into future releases.
“We love Linux. When you look at the list of core technologies, WebOS is built on we definitely owe a debt of gratitude to the open source and Linux community,” Winston said. “We leveraged the great work other people have done to put together this operating system.”