[SailfishDevel] Porting Harmattan to Salfish Silica: Conundrum of the "missing" components

christopher.lamb at thurweb.ch christopher.lamb at thurweb.ch
Sat May 11 07:16:22 UTC 2013


Hi All


I am in the middle of porting a set of apps from Harmattan to Sailfish  
Silica using an abstraction component set / library as detailed at the  
bottom of this mail.

My apps make rich use of Harmattan components, for which I need to  
find Sailfish Silica equivalents.

I have quickly discovered that there are 3 cases:

a) components that have a direct equivalent: often with the same name.  
(e.g Button)

b) components that have an indirect equivalent: looking and behaving  
slightly different due to the differing UI paradigms (e.g menu  
components)

c) components that are present in Harmattan, but are currently  
"missing" in Sailfish Silica. Some examples are:
ToolBarLayout
MenuLayout
ButtonColumn
ButtonRow
ButtonStyle

So far it seems to be components that support layout and style.

This raises a number of questions:

1) Is the current set of Sailfish Silica components pretty much "it";  
or is it just an alpha subset that is likely to grow further, perhaps  
including some of the above?

2) If these components were deliberately not ported to Sailfish Silica  
what was the reasoning for not doing so?

3) If these components are not going to appear, what approach should  
an app porter take? I see some options:

i) lowest common denominator: change the app  to use only common  
subset of both component sets.

ii) where Sailfish is missing a component that I cannot do without, I  
continue to wrap the Harmattan component in my abstraction library.  
--> continued dependency on com.nokia.meego

iii) where Sailfish is missing a component that I cannot do without, I  
add clones of the com.nokia.meego components to my abstraction library.

iv) I program my own custom equivalents.

The problem can only get worse when other qml platforms are added to  
the soup (Cascades, Ubuntu, iOS, Android) as pointed out in this  
article:

https://lwn.net/Articles/532801/

I welcome your thoughts

Chris

Porting methodology:

I first set up an abstraction components set / library  to abstract  
out the imports of Harmattan components from my apps. i.e my apps now  
import org.flyingheep.abstractui rather than com.nokia.meego  
(following the approach suggested here  
http://thpmaemo.blogspot.ch/2013/03/porting-harmattan-apps-to-sailfish.html)

The abstract library will have 2 favours,:
a) Harmattan one that wraps com.nokia.meego components, and thus  
depends on these
b) SailfishOS that currently temporarily wraps com.nokia.meego, but is  
now being migrated to wrap Sailfish.Silica components instead.




More information about the Devel mailing list