LWN.net Logo

Distributions

Tizen 2.0 loads up on native code

By Nathan Willis
February 20, 2013

The Tizen project has released version 2.0 of its consumer electronics–focused Linux platform, accompanied by an updated software development kit (SDK). The new release offers a host of updates and changes to the Web runtime and the various HTML5 APIs that support it, but Tizen 2.0 also addresses native application development—which the 1.0 release largely skipped over.

What's in the box

The 2.0 release was previewed in an alpha release back in September 2012, and was declared final on February 18. The SDK is Eclipse-based, and installers are provided for Ubuntu (32- and 64-bit) as well as for Windows and Mac OS X. Platform source code is available through the project's git repository. As was the case with the 1.0 release, the target platform is ARM-based mobile phones.

As to the make-up of Tizen 2.0 itself, the platform consists of the core operating system, the Web application framework, and the newly-added native application framework. The core operating system has changed little; the kernel has been bumped to 3.0, with support added for the contiguous memory allocator (CMA), external connector (extcon) class devices, and some input/output memory management unit (IOMMU)-capable DMA devices.

The other system frameworks have received bumps as well, of which only the Smack security framework and the SyncML-based synchronization framework are discussed in the documentation. Smack now supports recursive behavior on directories with the "transmute" bit set, and the Tizen source includes a reference Smack policy that does not enforce access control for applications (and thus may not be a good fit for real-world deployment). The synchronization framework has been updated to version 1.2 of the Data Synchronization (DS) and Device Management (DM) profiles, and has a plugin API. The current plugins in the source release support plain text files, vCards, and xCal files.

Web things

Tizen's primary application development message has been "HTML5 and JavaScript" since day one, and the Web framework has received top billing in the 2.0 development story as well. There are a number of updated and newly-supported Web APIs, both from the World Wide Web Consortium (W3C) and from Tizen's custom API stockpile. New from the W3C side is support for the Vibration, Network Information, Web Audio, HTML Media Capture, and Clipboard APIs. Network Information and Web Audio are perhaps less self-explanatory than the others; the former allows applications to access connection information (specifically, bandwidth and whether or not the connection is metered), while the latter is a high-level API for synthesis and audio processing (as opposed to general sound output or microphone capture).

In addition to the W3C APIs, Tizen supports several platform-specific APIs for HTML5 applications. Some of these tackle application development matters that may differ wildly between HTML5 platforms, such as application lifecycle management, which covers (among other things) installation, update, and removal. Others, however, address areas where there are competing APIs from the W3C or other third parties, such as Alarms, Messaging, Bluetooth, and device power management.

This is arguably the point at which the "write once, run everywhere" promise of HTML5 web applications starts to show some kinks. Other mobile platforms that base their application development pitch on HTML5 support custom APIs, too. In some cases these APIs overlap with W3C specifications, and in others they overlap with competing vendors' offerings. Firefox OS, for example, boasts a long list of supported W3C APIs as well, but it too has its share of original interfaces—such as WebSMS for text messages, a feature which Tizen handles in the Messaging API.

Still, the Tizen 2.0 release offers a detailed changelog (as an ODS spreadsheet file) covering the new and updated features of the non-W3C-standard APIs. The spreadsheet enumerates all of the changed methods and attributes in the new release; 479 changes in total. That may sound daunting, but the availability of the changelog itself is a welcome addition. Several of the non-W3C APIs are slated to be addressed by one W3C Working Group or another, and the W3C prefers to keep its discussions on mailing lists and publish its specifications in updated documents. Compared to wading through multiple revisions of a "draft specification," sifting through a spreadsheet is child's play. In fact, Tizen's developer resources and documentation have improved markedly since the 1.0 days; there are tutorial- and reference-style documents for almost every API and feature, and the wiki has filled in nicely.

Lastly, the Tizen Web runtime has received some minor updates. It now supports running installed Web applications from external storage (e.g., memory cards), and it supports the NPRuntime plugin standard supported by most other major web browsers. The runtime has also dropped support for the W3C's Widget URI scheme, which was used to address application components in a more secure manner than simply linking to them with file:/// URIs. A replacement URI scheme is said to be coming in a Tizen 2.1 update.

Here come the natives

The Tizen project's promotional material still emphasizes HTML5 as the development method of choice, but the 2.0 release finally fills in the missing or undocumented pieces of the native application framework. The general outline has long been known, of course: Tizen provides a Linux userland that is intentionally similar to that found in desktop distributions (with D-Bus, GStreamer, ConnMan, GeoClue, and other familiar components), and uses the Enlightenment Foundation Libraries (EFL) as a GUI toolkit and framework. A few intrepid developers set out to build or port applications to Tizen during the 1.0 period—some of whom were quite successful—but 2.0 unveils the complete application model, libraries and utilities, and an API covering most if not all of the functionality provided to HTML5 application developers.

The SDK fully supports developing native C++ applications in the Eclipse-based IDE. Both GUI applications and background services are supported, and Tizen supports multitasking (although, as is common with mobile phone platforms, only one GUI application can run in the foreground at a time). There is a low-memory killer that will zap background applications in least-recently-used order until memory pressure has been relieved. The developer's guide points out a few areas where Tizen native applications differ from typical C++ conventions, such as error handling (Tizen uses error results rather than exceptions).

The native development platform offers a file I/O layer (with several pre-defined locations like the media folder), an "SQLite-compatible" database API, internationalization of strings and numbers, symmetric and asymmetric cryptography, key and certificate management, and all of the multimedia and networking APIs one would expect. There are C++ APIs for accessing the device sensors and telephony framework as well. EFL provides the user interface widgets, complete with scene management and animation effects, but OpenGL ES is available, too.

HTML who?

In fact, the list of features not supported via the native API is considerably shorter than the list of features which are. There are certainly several: so far, for example, there is no bidirectional text support, map service, or secure SIM card file storage. And that is not a comprehensive list by any means; rather, what is striking is the extent to which Tizen is now supporting native application development at all, when one considers the HTML5-only message that dominated Tizen's early days. In contrast, in this month's 2.0 release, even the reference applications are written in native code, not in HTML5.

A skeptic might take this influx of native development tools as a change of heart—as yet-another-OS-vendor-backing-away-from-HTML5. But it is not clear that Tizen has lost any enthusiasm for HTML5; considering that plenty of developers already express suspicion that HTML5 will ever be able to compete seriously with native applications' speed and power, the project may simply be reaching out to attract hordes of those developers to the platform, rather than settling for just the HTML5-only crowd.

After all, some application developers will no doubt be happy just to write in C++ rather than JavaScript because they are more comfortable doing so. In addition, the HTML5 application development story is far from complete. Among the non-W3C specifications supported by Tizen's Web API are well over a dozen APIs for which either the System Applications, Web Apps, or Device API Working Group is expected to eventually produce a W3C Recommendation. Since it is hard to lose money betting against the speed of the W3C standardization process, perhaps the Tizen project is simply interested in providing a complete development framework that it can advertise as stable, especially considering that project co-sponsor Samsung is rumored to be bringing Tizen-powered devices to market this year.

In the short run, the challenge for Tizen will be seeing how its native APIs fare in the wild when compared to Qt, which has both a large installed base and the support of several independent mobile OS projects (such as Ubuntu and Sailfish OS). The Tizen project recently announced its second Tizen Developer Conference, to be held May 22 through 24 in San Francisco. It will be interesting to see how the content of the program balances out between the HTML5 and native APIs. Should the native API framework take off, that would no doubt be welcome news for Tizen. For HTML5 fans, however, that would leave Mozilla's Firefox OS as the sole remaining Web-application driven mobile platform in the arena—and push the likelihood of a real HTML5-versus-native showdown much further down the road.

Comments (11 posted)

Brief items

Ubuntu for tablets announced

Canonical has announced an upcoming version of its distribution for tablets; it seems to have come a long way since we reviewed an early release last November. "Take calls in Skype while you work in a document, make notes on the side while you surf the web, tweet while you watch a movie. Or use apps collaboratively – drag content from one app to another for a super-productive day. We’ve reinvented the tablet as a bridge between phone and PC."

Comments (19 posted)

Ubuntu for phone to be previewed February 21

Canonical has announced that a preview version of its distribution for phones will be made available on February 21. "The release also marks the start of a new era for Ubuntu, with true convergence between devices. When complete, the same Ubuntu code will deliver a mobile, tablet, desktop or TV experiences depending on the device it is installed on, or where it is docked. Ubuntu 13.10 (due in October) will include a complete entry-level smartphone experience." The initial images will be for Galaxy Nexus and Nexus 4 handsets.

Comments (19 posted)

Ubuntu 12.04.2 LTS released

The second point release of Ubuntu 12.04 LTS is available. "To help support a broader range of hardware, the 12.04.2 release adds an updated kernel and X stack for new installations on x86 architectures, and matches the ability of 12.10 to install on systems using UEFI firmware with Secure Boot enabled."

Full Story (comments: none)

GNU Linux-libre 3.8-gnu

GNU Linux-libre 3.8-gnu is available, based on the recent 3.8 release of the Linux kernel. "The GNU Linux-libre project takes a minimal-changes approach to cleaning up Linux, making no effort to substitute components that need to be removed with functionally equivalent Free ones. Nevertheless, we encourage and support efforts towards doing so."

Full Story (comments: none)

Distribution News

Debian GNU/Linux

Debian Installer 7.0 RC1 release

The first release candidate of the Debian installer for 7.0 (wheezy) is available for testing.

Full Story (comments: none)

Fedora

Fedora 16 End of Life

Fedora 16 reached its end of life on February 12. There will be no further updates. Users of Fedora 16 are encouraged to upgrade to Fedora 17.

Full Story (comments: none)

Newsletters and articles of interest

Distribution newsletters

Comments (none posted)

Introducing the Korora Project

Kororaa Linux has become the Korora Project. Lead developer Chris Smart announced the name change on his blog. "The motivation for this was not only the dropping of an excess letter ‘a’, but it’s also a reflection of the community which is starting to grow nicely and I wanted something people could better associate with and belong to." Korora 18 beta is available for testing.

Comments (none posted)

Sabayon 11 with UEFI SecureBoot support (The H)

The H takes a look Sabayon 11. "The 64-bit live images of Sabayon 11 can now boot and install on UEFI systems with Secure Boot enabled, as the Sabayon developers decided to adopt Matthew Garret's signed-shim. A SecureBoot key is in the /SecureBoot directory of the live media and can be used on initial booting, while a SecureBoot keypair is generated during installation and can then be added to the firmware's database, which allows users to sign their own binaries."

Comments (none posted)

Page editor: Rebecca Sobol
Next page: Development>>

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