Software-update: Sailfish OS 3.3.0

Jolla heeft eerder een update van zijn Sailfish OS uitgebracht met als het volledige versienummer. Voor de naam van deze uitgave is gekozen voor Rokua, een nationaal park ongeveer 75km ten zuidoosten van Oulu in Finland. Sailfish kan gebruikt worden op toestellen van Jolla, de Sony Xperia X, XA2 en 10, en de Gemini PDA. De aankondiging van deze uitgave ziet er als volgt uit:

Sailfish OS Rokua is now available

Rokua forms part of Finland’s first UNESCO Geopark. In Rokua it is easy to see traces of the Ice Age. The park’s many esker ridges and wooded sandhills are blanketed with silvery lichens. Scattered through the park are many kettle hole lakes nestling in sandy hollows.

It has been almost a year since my previous blogpost aimed at a more tech savvy audience. With Sailfish OS Rokua it felt again like a good opportunity for such a blog post. The changes to the Sailfish OS user experience are available at the end of the document, if you want to skip the technical topics.

There are a lot of things that are not visible for a casual Sailfish OS user. This 3.3.0 release contains a vast number of updates for the lower level of the stack. We’ve included for example the updated toolchain, a new version of Python and many updates to core libraries such as glib2. In this blog I will go through a few of the changes and what they mean in practice for users, developers and Sailfish OS in general.

It is not just about updating one component – “Distribution jenga”
As many of you know operating systems consist of hundreds of components. These components are connected to each other at either compile time, link time or run time. When we conduct low level updates, as we have in this release, the changes for one component multiply and we end up updating tens of components because of their dependencies.

One such case was the update of the gobject-introspection package to version 1.63.2. The librsvg library started to fail during the process. This librsvg failure looked like an issue with vala. We decided to update vala also to reduce future maintenance work. This required the autoconf-archive package that we haven’t previously provided. Packaging the latest autoconf-archive then conflicted with gnome-common, which needed a small modification to make it compatible with autoconf-archive. After all the above, we finally got autoconf-archive installed and got back to vala and got all the pieces compiled together.

After compiling these changes together we had to integrate everything in one go to prevent the development branch from breaking. This was just one example of the many changes we have provided with this release. With the toolchain it was much more time consuming to actually get all the build failures fixed.

Binary compatibility with the Toolchain update
The most difficult, and at the same time one of the most anticipated updates by the whole Sailfish OS development community is the update of the toolchain. This includes an update of GCC from version 4.9.4 to version 8.3. We did not update to version 9.x or 10.x, as the work was started when the latest release by linaro/ARM was 8.3. We wanted to finalize this version before taking the next step. As mentioned also in the Hossa blog post, it is better to take smaller steps when updating complex components. While we did not get the latest and greatest, the changes are still extensive. GCC 4.9.x series was released in 2014 while GCC 8.3 is from Feb 2019. Even though the change is significant, we managed to preserve binary compatibility. All the binaries and applications compiled with the old toolchain should work just as they did before.

New code optimizations and support for the more recent C++ standard are a couple of the possibilities we gained with the update. The GCC update rebuilt the whole OS multiple times because of circular dependencies in the code, as expected. This process revealed dozens of packages that needed to be fixed. Some of the fixes were trivial, such as bluetooth-rfkill and buteo-mtp. At times we had to just take into use a fix that had already been available for the previous toolchain. This was the case for example with gst-plugins-base. There were tens of similar PR’s that had to be accomplished all over the stack to get everything built.

Some of the problems do not become visible at compile or linking time, making them very hard to notice. For example, we ran into problems with the old perl. We considered first to update perl to a newer version, but decided to develop a small patch instead. The rationale for this decision was to reduce risk for the release, as the amount of changes all combined was already considerable. In addition it should be noted that perl by default is not installed on the devices, it is in the stack because it is needed for the builds. Nevertheless we’ll need to look into updating perl later.

All things considered the toolchain update is a major step forward and with this change we will have development opportunities which we do not even know of yet. We invite you to comment and collaborate if you think of new ways or have additional ideas about how these changes will benefits us all.

Python 2 support ended
Python 2 support ended on 1st of January 2020. Python by default is not installed on Sailfish OS devices, it is used in our build environment. It also provides us the pyotherside bindings to Qt which allow developers to create Qt based applications using python. In this release python3 was updated to version 3.8.1 and python2 to the latest version 2.7.17. Having two Python versions in the stack means increased maintenance, and thus we have decided to start deprecating Python 2 and will focus exclusively on Python 3 in future.

Removing Python 2 may cause extra work for our development community, as some may still be using it. Despite this, the decision to remove Python 2 and concentrate our efforts on upgrading the stack is necessary and evident. Python 2 packages will remain in our repositories with this release and partly also on the next release as well, as removing the dependencies will take time. Nevertheless please consider moving all your code to Python 3 as soon as possible.

As a side effect of this work we were able to improve our build time, for example for dsme. Many of the dependencies on Python were not really needed, so removing them reduces the need for rebuilds.

QEMU is an important part of our toolchain, used to compile our ARM and aarch64 binaries with x86 based machines. Over time we have experienced some problems with QEMU and it has become evident that we needed to update it to a newer version. Even though the release includes version 4.2.0 (update from the old 2.x branch), internally we conducted the upgrade in two steps, first to 4.0 and then to 4.2 release.

The change required a notable amount of work and resulted in no visible improvements for Sailfish OS end-users as such. However, developers will now be able to enjoy the new capabilities.

Library updates
Some of the updates would not have been possible with the previous version of the toolchain, as was the case with glibc which we’ve now updated to version 2.30 from the previous version 2.28.

We have also worked on different system components, such as expat, file, e2fsprogs, libgrypt, libsoup, augeas, wpa_supplicant, fribidi, glib2, nss and nspr as part of our normal maintenance work.

Included are also updates to lower level components that improve the user experience. The updated Gstreamer 1.16.1 offers better support for selected video and audio codecs. We also switched gstreamer to use ffmpeg for all SW codecs on the devices.

Technical debt installment
As part of our move towards a more maintainable system we have also been switching to use busybox more widely. In this release we moved coreutils, tar and vi to busybox. An additional benefit of using busybox is that it reduces the memory footprint of our image. With the coreutils replacement we saved ~4.2MB and with tar ~1.4MB from all device images. The vim-minimal replacement saved ~1.6MB of space from images with developer mode.

As with any platform there are times when one needs to look back a bit in order to consider how to proceed in the future. We have had our fair share of issues with statefs and we have come to the conclusion that it is not worth maintaining anymore. As such we will deprecate statefs after the 3.3.0 release. Instead of using statefs we will be moving to our other APIs. For example in future status information will be moving to libqofono that is already available in the stack. Other examples that used to require statefs are maliit and the browser.

We also started to deprecate qtaround. Qtaround is a small helper function library that is not used anymore and thus maintaining it in the stack does not make sense. We also removed other repositories and packages that are no longer used, such as cutes-js, cutes-qt5, meego-lsb, and libtalloc to name a few.

Sandboxing system services
There was also work done to further limit access to system services, which was mostly achieved using the systemd sandboxing feature. Surely this is just a small step, and we have the older systemd currently in use which does not include all of the latest features, but still provides a clear path forward for limiting our attack surface. Examples of how it was done can be seen in the mce and sensorfw repositories.

While systemd sandboxing is a small thing and currently only used by the system services, we have also been looking to provide similar capabilities for applications as well. There are no updates on the matter within this release, but there is already firejail packaging available for those who want to do early experiments. Whether we will make it part of the official API remains to be seen, and any feedback would again be welcome at together.

Changes for upcoming features
As mentioned in our earlier blog post we are working on providing multi-user functionality. This is something that has been requested by our partners. Access for different users on the same device is something that’s needed particularly in corporate environments where, for example, devices may be mounted in cars. Some lower-level enablers are already included in this 3.3.0 release.

We also noted that the community has been working on FlatPak. To help the community effort we merged libseccomp and json-glib into the Sailfish OS. We undertook internal research regarding FlatPak with our partners, and While FlatPak seems nice, the conclusion was that we do not see FlatPak as the selected Sailfish OS application bundling framework, mainly due to its high resource usage. Application sandboxing techniques need further research and we’re still looking in to the right approach.

Visible changes
Sailfish OS 3.3 is a major release including also visible changes. Here is a recap of some of them.
  • Weather icons - The new icon set is based on the current design language. We’ve highlighted key elements like the sun, moon, as well as rain so that they visually stand out from the symbol. Hence the sun will look ‘sunny’ on dark as well as on light Ambiences.
  • EAP-TLS Support - In this release support for connecting to WPA-EAP(TTLS) and WPA-EAP(TLS) networks with certificates has been added.
  • Global Address List (GAL) support - For all Exchange Active Sync users, you will now find support for searching contacts from the Global Address List (GAL) when adding recipients to an email. This support will be extended further in the future.
  • Nextcloud account - Nextcloud accounts can now be added directly. The support includes the most comprehensive collection of features available so far with any integrated account, including backups, contacts, calendar, images and notifications.
  • Location stack - For some time we have been offering Mozilla Location Services for our community. As explained on their blog, Mozilla will unfortunately be ending support for this. This is visible in positioning performance for the community releases. While our commercial partners have their own solutions for assisted location providers, we do not have an alternative for our community at this point in time. We have identified a few fixes in our location stack that improved the performance and we are looking for more. We are also checking alternative services we could take in to use.
So quite a lot of things happened and more stuff to come, stay tuned 🙂

To celebrate the new release we offer Sailfish X with special price. You can get the offer by entering voucher code VAPPU when checking out from Jolla Shop. The offer is valid only for a limited time.

Versienummer 3.3.0
Releasestatus Final
Website Jolla
Licentietype Voorwaarden (GNU/BSD/etc.)

Door Japke Rosink


26-05-2020 • 00:01

22 Linkedin

Bron: Jolla

Reacties (22)

Wijzig sortering
Anoniem: 14842
26 mei 2020 07:50
Yes, eindelijk Nextcloud integratie! En daarmee een simpel alternatief voor alle Google meuk. Tot nu toe moest ik alle diensten afzonderlijk instellen (webdav, caldav, etc.).

Moet wel zeggen dat ik mijn Xperia 10 bijna niet gebruik. Door de simpele reden dat de gestures niet heel intuitief zijn. Als ik bijvoorbeeld een optie wil kiezen door naar beneden te vegen moet ik heel precies scrollen om de selectie te maken. Je wilt eigenlijk gewoon dat als je naar beneden veegt hij standaard daar op terechtkomt zodat je niet de hele tijd hoeft te priegelen...

Ook doodzonde dat de locatieservice van Mozilla gaat stoppen, zo is er eigenlijk geen alternatief voor Google op het moment :(
De Nextcloud-integratie m.b.t. synchroniseren van foto's is helaas nog nauwelijks bruikbaar.

Het stoppen van Mozilla Location Services komt doordat een patenthouder, Skyhook, heeft geklaagd over patentinbreuk. Bedank dat Amerikaans patentstelsel maar weer voor deze fsck-up.
Anoniem: 14842
@Fuzzillogic26 mei 2020 10:05
Nextcloud integratie gaat mij vooral voor de contacts en agenda. Foto's automatisch uploaden kan wel met de Nextcloud app. Alhoewel de Xperia 10 wel zulke belabberde foto's maakt dat ik dat maar niet ga doen. Om het over de ontstellend slechte camera app van Jolla nog maar niet te hebben :(

Zoals ik de blog van Mozilla lees is het misschien nog wel mogelijk om een api key aan te vragen voor jezelf. Maar goed, dat is natuurlijk ook geen doen.

Ik hoop dat Mozilla ook openbaar gaat maken wélk deel dan inbreuk maakt op de patenten. De source van de Mozilla location service is openbaar, je zou dus een alternatief op kunnen zetten. Maar dat heeft natuurlijk totaal geen nut als je niet weet welk deel van de code vermeend inbreuk zou maken op een patent. Heb je zo weer een rechtzaak aan je broek :(

Wel bizar eigenlijk, je zou als opensource/vrijheid van internet beweging eigenlijk je servertjes moeten hosten in een dictatoriaal regime welke zich van de rest van de wereld niets aantrekt. Stuk makkelijker :P
De camera-app van Jolla is inderdaad niet geweldig, maar de kwaliteit van de foto's wordt ook weer bepaald door drivers en firmware. En raad eens: die firmware zit achter DRM, en wordt geblokkeerd op het moment dat je de bootloader unlockt. (Althans, dat was zo bij de XA2). En dat is dan dus de software, waar je voor betaald hebt, voor de hardware, waar je voor betaald hebt, die je niet meer kunt gebruiken omdat je het gore lef hebt gehad om je toestel, waar je voor betaald hebt, te ontgrendelen, om er een ander OS op te zetten.
Anoniem: 14842
@Fuzzillogic26 mei 2020 10:50
Klopt, ik zeg ook niet dat dat iets is van Jolla hoor. Is gewoon een telefoon dingetje. Maar de Xperia 10 maakte ook onder Android al geen goede foto's. Maar de camera app was wel 10× beter :)
Los van de beperkingen die Fuzzilogic al benoemde is de standaard camera app niet fantastisch, iemand deze al geprobeerd?
Ook doodzonde dat de locatieservice van Mozilla gaat stoppen, zo is er eigenlijk geen alternatief voor Google op het moment :(
Heeft die locatieservice ooit gewerkt dan?

Een aantal keer op diverse Android apparaten geprobeerd. Deed helemaal niets.

Op mijn Jolla maak ik gebruik van Nokia Here. Doet het prima.
Ja hoor, werkt prima op mijn oude Moto G4 plus. En ook in Sailfish doet mijn Navi het ook prima, maar dat werkt ook wel met alleen GPS.
Ook doodzonde dat de locatieservice van Mozilla gaat stoppen, zo is er eigenlijk geen alternatief voor Google op het moment
Je zou eventueel nog de Apple, RadioCells of Deja-vu NLP kunnen gebruiken. Mozilla location services werkt nog wel bij mij. Ik dacht dat dat 1 maart zou stoppen?
Ik heb hier wel vaker naar gekeken, maar eigenlijk begrijp ik er nog steeds weinig van. Is dit een OS wat je op elke telefoon kunt flashen? Of is het juist iets waar je een speciale sailfish telefoon voor moet kopen? En wat is dan het voordeel tegenover normaal android? (en voor de mensen die het gebruiken, is het de moeite waard?).
Er zijn veel ports door de community gemaakt. Op deze site zie je de afzonderlijke projecten:

Let er opdat de ports om licentietechnische redenen niet zijn voorzien van de Android compatibility layer.
cool, misschien probeer ik een goedkope oneplus6 te vinden op marktplaats om hier een beetje mee te spelen, bedankt!
Ik heb een XA2 van MP geplukt voor 50€, mogelijk ook voor jou interessant om een officeeel supported toestel te kiezen als je toch een toestel van MP gaat kopen, als het wat is kan je altijd een licentie kopen. Dan heb je support op updates, issues, android support, en nog een paar voordelen.
thanks, ik ga wel even rondkijken :-)
En ik snap dat dit voor de meesten onbegrijpelijk is, maar dat je dit gewoon officieel en ondersteund door de leverancier kunt doen, is wel bijzonder:
$ ssh nemo@
Last login: Tue May 26 11:33:09 2020 from
| Sailfish OS (Rokua)
[nemo@Sailfish ~]$ python3
Python 3.8.1 (default, Mar 27 2020, 05:16:42)
[GCC 8.3.0 20190222 (Sailfish OS gcc 8.3.0-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
SailfishOS is daar niet helemaal uniek in denk ik, PostmarketOS en PureOS kunnen die vast ook, maar ja, (helaas) is het soms wel handig om toch Android-apps te kunnen draaien, en dat is dan toch nog het voordeel van een SailfishOS-licentie (dat kan dus NIET met de community edition)
Anoniem: 435630
@Drexz26 mei 2020 19:01
Heb een Xperia 10 plus met Sailfish als dagelijkse telefoon. Het werkt voor mij prima, maar gebruik wel de android app ondersteuning voor Firefox en de bank app bijvoorbeeld.
De keuze om dit OS te gebruiken is een morele, ik vind het leuk om een Europees OS te steunen en wil liever zo min mogelijk van google gebruiken. Het werkt, zeker na de laatste update voor mij perfect, had in het verleden wel eens problemen met het connecten met bepaalde bluetooth apparaten maar dat is nu ook verholpen.
wat in het begin even wennen was maar wat ik nu echt geweldig vind is dat eigenlijk alles werkt door te swypen.
Wat ook heel gaaf is, is dat er sinds kort Flatpak ondersteuning voor Sailfish is, ga binnenkort even kijken of Telegram hier mee wil werken. Tutorial is te vinden op het forum.

[Reactie gewijzigd door Anoniem: 435630 op 26 mei 2020 19:18]

Je kan het flashen op bepaalde toestellen van Sony, zoals de Xperia X, XA2 en 10. Je krijgt een handleiding die goed te doen is om je toestel te flashen, dat kan vanaf Windows en Linux. Het grootste voordeel is dat je helemaal Google loos kan werken. Met de native apps kan je best overweg er zijn goede apps in de comunity zoals bijvoorbeeld voor navigeren, (pure maps). Ook zit er standaard exchange support voor agenda en mail synchronisatie
Je kan als je wil ook Android support installeren en dan de android apps installeren en dat zonder de onderliggende malware van google (play store)

[Reactie gewijzigd door RdamRobin op 26 mei 2020 11:35]

Ik hoop van harte dat de oorzaak van traagheid die bij de vorige update op kwam zetten nu verholpen is.
Anoniem: 435630
@ocf8126 mei 2020 19:20
Had ik ook even last van, bij hulpmiddelen even alles herstarten/opschonen dan rebooten en nergens last meer van.
Ik draai hem nu een week of twee denk ik en ben er best tevreden mee. Voor mij heeft hij in ieder geval het probleem opgelost dat na een paar dagen Exchange mailboxen niet meer werden gecheckt tot je een volledige reboot deed.
Al heb ik ondertussen al een nieuwe GSM, het is best een leuke ervaring dat mijn jolla phone uit 2013 opnieuw een update krijgt. Ik denk niet dat er een andere GSM bestaat die zo lange support geniet?

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.


Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details


    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details