LWN.net Logo

Tizen releases source code and SDK previews

January 18, 2012

This article was contributed by Nathan Willis

The nascent Tizen project unveiled its first set of materials on January 9, consisting of "preview" releases of the operating system source code and SDK, both intended to elicit feedback from developers. The announcement was accompanied by the launch of two new mailing lists and online documentation of the project's architecture and APIs. Tizen was announced in September 2011, but Intel took a markedly different approach to publicizing and promoting the project than it had with MeeGo. While MeeGo was launched with fanfare, the Tizen governance structure, policies, community resources, and ultimately code have been delivered at a much more measured — if not downright conservative — pace. Critics (particularly those upset over the demise of the MeeGo project) labeled the new project "vaporware" early on, but they — and everyone else — can now examine the source code up close.

Sources

[Tizen emulator]

The source code release comes in the form of a git repository, which hosts both Tizen packages and trees pulled from upstream projects. Tizen is often referred to as the successor to MeeGo, which was an Intel-Nokia collaboration on a "consumer electronics" Linux base layer derived from merging the two companies' existing projects. But even though Tizen's goals are the same, the actual software is a significant departure from MeeGo — the stack is based on the LiMo Foundation's work and is expected to integrate Samsung's Bada platform. More significantly for third-party developers, the application framework is centered around HTML5 rather than Nokia's Qt.

The components beneath that application framework are quite similar, of course (as they are in most embedded Linux distributions): the kernel (version 2.6.36), EGLIBC (2.13), Busybox, D-Bus, PulseAudio, GStreamer (0.10), ConnMan, and so forth. Among the other notable modules are a multi-lingual input framework derived from SCIM, hardware acceleration for OpenGL ES 1.1 and 2.0, and a WebKit-based web runtime. There is also a security module which provides Smack access control, secure data storage, and certificate management.

Perhaps the most significant departure from MeeGo is that Tizen's graphics toolkit is provided by the Enlightenment Foundation Libraries (EFL), rather than GTK+ or Qt. It has been a few years since Enlightenment and EFL were headline-makers on Linux desktops, but they have been in active development all the same, with support from Samsung, among others. LWN looked at EFL back in August.

EFL provides a canvas (called "Evas") that supports multiple back-ends; the Tizen project's is currently using the X11 back-end, which came as a mild disappointment to some observers, considering the work Intel had put into porting MeeGo to the Wayland display server. EFL's Carsten Haitzler told the mailing list that the hurdle was a lack of Wayland drivers for the system-on-chip video hardware targeted "at this stage," however, so there remains hope for Wayland support in the future.

EFL also provides application developers with a scripting environment called Embryo, a widget set (with touch support) called Elementary, as well as various utility libraries for timers, callbacks, event loop management, and data structures. Tizen includes the E17 version of EFL's Enlightenment window manager which supports compositing.

Web APIs

EFL does not encompass as much as Qt, however — richer APIs for hooking into system services and support for device features (like cameras and sensors) are both provided through Tizen's HTML5 application framework. The framework consists of three pieces: the "Tizen Web API," the Wholesale Application Community (WAC) "Device APIs," and the World Wide Web Consortium (W3C) "Widget Specification."

The Tizen Web API covers generic application objects, and interfaces to the communications, system information, and personal information management (PIM) subsystems. The supported communication frameworks include Bluetooth, NFC, cellular phone calls, and a general "messaging" module that encompasses email, IM, SMS, and MMS. The Tizen Web API's Contact, Calendar, and Messaging modules are each extensions of the corresponding WAC Device API modules, apparently with minor additions only. For example, The Tizen Web API's MessagingMessage adds message IDs and inResponseTo attributes, which allows an application to thread conversations.

WAC is an organization formed in 2010 by telecommunications companies and device OEMs. It publishes its own suite of OS-independent application development APIs, which are intended to provide a uniform HTML5 target for developers across the members' products. This effort is similar to the work produced by the W3C's Device APIs Working Group, but WAC does not develop its APIs in the open. Further confusing the situation, some of WAC's APIs require compliance with the corresponding W3C API, but some do not.

The Tizen alpha makes use of WAC's PIM APIs (the contacts, calendaring, and messaging modules mentioned above), its sensor APIs, its camera module, and its filesystem module. The sensor APIs provide interfaces to a mobile device's hardware sensors: accelerometer, digital compass, ambient light sensor, rotation/orientation sensor, and so on. The camera API covers both still and video capture, as well as displaying a preview image on screen. The filesystem module provides a single view of a device's storage, combining all on-board or removable storage into a unified virtual filesystem.

Finally, in spite of its name, the W3C Widget Specification is actually a standard for "installable" web applications — a storage format for compressed HTML5, CSS, and JavaScript applications, with an XML-based manifest. The Widget specification supports digital signatures and a device-controlled security policy to limit applications' access to network resources and local data.

Together, the Web API offerings may sound like a bit of a hodge-podge — after all, the WAC and W3C specifications overlap in many places, and conflict in others. Intel's Sakari Poussa responded to one developer's question by saying that Tizen was tracking the standards as best it could, considering that both APIs are still evolving, and that the project was committed to sticking with existing standards where possible.

Developing

[Tizen IDE]

In addition to the source code, the alpha release also includes the first look at the Tizen SDK. The SDK is available only for 32-bit Ubuntu (11.04 and newer), though the project says other distributions and operating systems will be supported in the final release. The SDK download is an installer script, which fetches and installs an Eclipse-based IDE, a QEMU-based emulator, testing tools, and support files.

The IDE includes project templates in two classes: "Tizen Web projects" and "native" Tizen projects. That is more-or-less in line with the messaging of the project, which emphasizes that HTML5 is the only supported application framework, but expresses tolerance for developers who wish to write code directly for the system APIs. The web project templates come in several flavors: WAC-only, generic HTML5, and jQuery (in several variations), and include Tizen packaging rules. The IDE experience also incorporates an event injector supporting mobile device hardware events, sensor data, and voice or SMS traffic.

Some web application debugging tools are also built in to the IDE, such as a WYSIWYG HTML5 editor and JavaScript/CSS syntax checkers. I was never able to get the IDE to launch the web project templates without crashing, so I cannot speak to their usefulness. There are known issues with the SDK mentioned in the release notes (including the fact that it is incompatible with OpenJDK — my experience suggests it may also be very picky about Sun Java 6); hopefully these concerns will be addressed between now and the final release.

The emulator has a few known issues of its own, of course, but the basic functionality is there. Currently only x86 targets can be created, with a handful of configuration options. The form factor of the virtual device is a keyboard-less mobile phone. The SDK documentation emphasizes that smartphones and tablets are the target devices for the alpha release, but that others will follow. Like MeeGo, Tizen is designed to eventually serve several distinct classes of hardware (including vehicles and smart-TVs).

[Tizen documentation browser]

The SDK also includes a documentation browser that encompasses an overview of the platform, the SDK tools themselves, and the various APIs. Some of this information is replicated on the Tizen developer site: the "Getting Started with Tizen" and "Tizen Web API Reference" sections in the documentation. But there is more in the SDK's browser, which covers packaging issues and hacking on the Tizen platform itself.

Community communications

Although it was not part of the developer preview per se, the SDK and code release coincided with the launch of two new Tizen mailing lists: one for application developers, and one for Tizen contributors. Up until now, the Tizen-General list and IRC channel had been the only communication channels for the project — very different from the approach taken with MeeGo, which had numerous mailing lists, forums, IRC channels, and a blog-aggregating Planet. Intel's we'll-announce-nothing-until-it-is-ready approach with Tizen has produced a slower trickle of discussion, but perhaps that is better than the publicity blitz that accompanied MeeGo's launch, when you consider that announcing the project and putting devices in consumers' hands can be many fiscal quarters apart.

A related development on the project management front was the sudden disappearance of the LiMo Foundation web site, which was replaced by the Tizen Association on or about January 1. The Tizen Association is essentially a re-branding of the LiMo Foundation, and, as yet, Intel itself has not finalized its membership. The Association's site describes its goal as enabling "key stakeholders to actively shape the industry role of Tizen and develop its market presence" by the "gathering of requirements, identification and facilitation of service models, and overall industry marketing and education." The project itself will continue to be hosted by the Linux Foundation.

The specifics of Tizen's project governance have not been fleshed out, but those are probably details that should come after the code itself has been released and developers have had a chance to work with it. In retrospect, the MeeGo project was very organization-heavy (as it was marketing-heavy), and in the end that did not help it make an impact in the marketplace. Tizen may still be a long way from shipping on commercial devices, but starting with the code rather than the other trappings of a large distributed project is a good first step.


(Log in to post comments)

No mention of WebOS

Posted Jan 19, 2012 7:50 UTC (Thu) by Felix.Braun (subscriber, #3032) [Link]

Given the apparent similarity of the project goals, it strikes me as strange that there seems to be no code sharing between Tizen and WebOS.

No mention of WebOS

Posted Jan 19, 2012 8:55 UTC (Thu) by zyga (subscriber, #81533) [Link]

Tizen and WebOS were made by different companies so there is no code sharing (unless they both bought some underdog and started from a common code base which is not likely). The APIs are similar as both companies were fighting against Android's and iOS'es application development model. By focusing on web developers (using familiar technologies and targeting a wide developer and user audience) they probably hoped to gain more backers to their platform.

Tizen releases source code and SDK previews

Posted Jan 19, 2012 11:11 UTC (Thu) by njd27 (subscriber, #5770) [Link]

Does anyone know where you can get a copy of the source to the Tizen reference kernel which isn't on their list of git repositories?

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds