Tizen 2.0 loads up on native code
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.
Posted Feb 21, 2013 7:54 UTC (Thu)
by ncm (guest, #165)
[Link]
Posted Feb 21, 2013 15:37 UTC (Thu)
by alankila (guest, #47141)
[Link] (1 responses)
Posted Feb 21, 2013 16:09 UTC (Thu)
by halla (subscriber, #14185)
[Link]
Posted Feb 21, 2013 18:52 UTC (Thu)
by ikm (guest, #493)
[Link] (4 responses)
The same thing happened to Android and Windows Phone. Both initially featured managed code only, and both yielded after being for some time on the market and realizing that managed code only is simply not enough. It's great that Tizen got the same lesson *before* hitting the market.
In fact, Tizen's offering of HTML5 looks very weak compared to Java/.NET offered by competitors, so I doubt it could have stood a chance with HTML5 only.
Posted Mar 7, 2013 10:03 UTC (Thu)
by job (guest, #670)
[Link] (3 responses)
(Which always surprised me. Not that they have a change of heart, but that they push somewhat platform independent technology so hard. The lockin effects offered by native applications must be worth a truckload of money.)
Posted Mar 7, 2013 15:46 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link] (2 responses)
I actually think it more likely that they wanted their nice, sacred, internal APIs for themselves and not allow third party apps to compete with their apps (cf. apps forced to use the system webkit and any other renderer is banned…and the Nitro JS implementation is off limits to not-Apple). Now they just gate everything instead of just not providing the API via HTML5 in the first place.
Posted Mar 7, 2013 16:00 UTC (Thu)
by Cyberax (✭ supporter ✭, #52523)
[Link] (1 responses)
Posted Mar 7, 2013 17:03 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link]
Posted Feb 21, 2013 21:05 UTC (Thu)
by tzafrir (subscriber, #11501)
[Link]
What's missing for bidirectional text support? EFL has now support for it at the toolkit level.
Posted Feb 21, 2013 23:12 UTC (Thu)
by butcher (guest, #856)
[Link] (1 responses)
Posted Mar 1, 2013 8:48 UTC (Fri)
by massimiliano (subscriber, #3048)
[Link]
I'm messing around with a WebGL virtual reality thing, and I got it to run on both my laptop and cell phone last night.
This is funny, I was also thinking about something similar!
Just out of curiosity, what did you use to model the scene? I was thinking to use threejs as a "platform", initially .md2 models for humans and things, but I am lacking an easy solution for creating the "world".
If you want to chat about it you can drop me a mail at "massimiliano (dot) mantione (at) gmail (dot) com"...
Posted May 8, 2013 23:13 UTC (Wed)
by jstaniek (guest, #72333)
[Link]
No no, the native API is a Linux port of bada OSP. IIRC EFL is hidden from the public users and only employed to do some visual effects and window management.
Posted Jul 1, 2013 19:23 UTC (Mon)
by tempest (guest, #91654)
[Link]
Thanks,
Context
Is there any clearly-expressible reason why this release is based on such an old kernel? If it's because it is heavily patched, where?
Tizen 2.0 loads up on native code
Tizen 2.0 loads up on native code
Tizen 2.0 loads up on native code
Tizen 2.0 loads up on native code
Tizen 2.0 loads up on native code
Tizen 2.0 loads up on native code
Tizen 2.0 loads up on native code
Tizen 2.0: bidirectional text support
Tizen 2.0 loads up on native code
Tizen 2.0 loads up on native code
Native
Tizen 2.0 loads up on native code
I was unable to find any other documentation regarding this.
Tempest
