Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does the technology stack for mobile app development on Jolla's Sailfish OS look like?

What does the technology stack for mobile applications (native and HTML5) look like for the new Sailfish OS announced by Jolla? There is little information available in one central place on the Sailfish OS technology stack, but the project websites of open source products used by Sailfish OS provide the following information:

  • Base operating system: Sailfish OS uses the Meego fork Mer as the main operating system. Mer is centered around a ultra-portable Linux + HTML5/QML/JS Core. For Sailfish OS, Mer project serves as the core OS, providing a functional core Linux stack that boots up to the screen, but without any UI and without any hardware adaptation
  • User interface: Sailfish OS uses parts of the former Meego UI - MeeGo Handset UX - which is now known as Nemo Mobile.
  • Sailfish SDK: Sailfish SDK is based on QtCreator and will be available in Windows, Linux and OS X. The SDK binaries are expected to be available in late 2012 or early 2013. The SDK consists of Mer Core’s tools, Qt Creator, Jolla UI components, Sailfish UI framework and Salfish handset app interfaces.
  • HTML5 apps: The Sailfish development team is investigating using Apache Cordova (formerly PhoneGap) for Qt to enable development of HTML5 based mobile apps.
  • Android apps on Sailfish: Many Android applications will run on Sailfish OS / Jolla devices unchanged. To take advantage of all UI and other features of Sailfish OS and make an app fast, the app might have to be ported to native QT/QML.

Based on the above information it seems that there will be three approaches to building mobile apps for Sailfish OS:

  • Native app using Mer's core APIs, Jolla UI components, Sailfish UI framework and handset app interfaces.
  • Re-using existing Android applications (although no details are available as to which features will be supported for such apps).
  • HTML5/JavaScript based using the Apache Cordova APIs.

And that would mean the following programming and markup languages can be used:

  • C++ and QT
  • Markup languages: QML (native apps) and HTML (Cordova)
  • JavaScript, CSS (both for Cordova based apps and QT/QML)

Is there anything missing, or did I misunderstand some of the information? I have not been involved with any QT/QML development so far, it would be helpful if someone with more experience could provide me some input.

like image 468
raju-bitter Avatar asked Nov 28 '12 00:11

raju-bitter


1 Answers

(1) I think you have committed: re-using existing MeeGo and Tizen (especially MeeGo Harmattan form Nokia N9) applications (although they will run when written properly with MeeGo standards and until will not do something significantly incompatible with Sailfish OS UI or with MeeGo API standard which is used by Mer).

Both MeeGo and Android apps may need a slight adaptation to gain Sailfish UI need and the full speed. When they are written in Qt it will be relatively easier.

I treat Tizen as a MeeGo fork, with backward compatibility as much as MeeGo standard was followed, hence and with above "but", I treat MeeGo and Tizen apps together in above aspect.

(2) You have also omitted that Sailfish OS as a full Linux can run a Linux software with RPM packages used by Sailfish. It was working with MeeGo Harmattan (but using DEB only) so this a possible option for Sailfish OS to use eg. LibreOffice or OppenOffice, as With MeeGo Harmattan OpenOffice was running and was functionally working with limitations of Nokia N9 device, however it was possible to write and edit texts. That gives access to a large software library, however a device dimensions can limit it in practice.

This is also a question of dev mode availability in Sailfish device, which now can't be verified.

(3) SDK as it was said during slush presentation will be with Mer tools but open and elastic, what mean an organisation/group/user will be able just to change it with eg. adding a particular tools needed for them what gives ability to create an environment which will be related to context or particular needs of a particular dev(s) like a company tools etc.. This will make development/coding easier, faster and cheaper. I think this can be important for devs and coders.

like image 90
Common N9 user Avatar answered Oct 06 '22 21:10

Common N9 user