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