sunnuntai 2. helmikuuta 2014

Hydra for Sailfish progress

Many of you may already know about it, but let's make this official. Hydra is being ported to Sailfish. I don't have an ETA just yet, but I can give you some sense of the work involved and the current progress on it. Currently the biggest challenge seems to be the web layout engine used by Sailfish QML components, more specifically Webkit's version 2. On MeeGo, Webkit version 1 was used, but Sailfish strongly discourages use of that (it is forbidden for Harbour application store) and this is understandable due to the newer version being significantly better in performance. The drawback is that due to the improved multithreaded architecture of Webkit2, interaction with controlling application is very limited.

Known limitations of Qt5's Webkit2 implementation:

  • Web storage (including cookies, web storage and web sql, but excluding preferences) is stored between web applications, posing a security threat
  • Web access cannot be controlled, i.e. all web applications may access any URIs without restrictions
  • Synchronous JavaScript platform APIs are challenging/impossible due to not being able to invoke C++ code synchronously
  • Web application folder based localization is not possible (always reverting to default language)
  • Unable to change user agent string of the web interface, possibly resulting in denied access to Firefox Marketplace (working to overcome this somehow..)

Current overall progress with the Sailfish port:
  • Core functionality port to Qt5: Done
  • Sailfish manager UI: Ongoing (~70%)
  • Sailfish web application UI: Ongoing (~50%)
  • Sailfish cover view supporting minimized web application: Ongoing (~50%)
  • Refactoring Widget API to work with Webkit2: 0%
  • Refactoring platform APIs to work with Webkit2: 0%
  • Reintegrate Cordova: 0%
  • Rewriting Firefox OS config parsing: 0%
  • Multiprocess support via D-Bus: 0%
  • Update embedded widgets for new resolution and feature set: 0%