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.
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
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.
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.
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.
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.
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).
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.
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.
to post comments)