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
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.
Br,
Sage
Great work, thanks for the update!
great, keep the momentum! 😉
hipefully updating Qt will come next…
but before that, please, hive us VoLTE/WoWiFi – c’mon, it is 2020.
It is widely available in EU and in Russia, too…
btw. was it really.posted on 8th of April?
Amazing update. Keep the good work you are doing with this incredible operating system.
+1 Great post, and I appreciate the update to Sailfish!
Had a hickup installing and phone rebooted with network functionality gone, but together.jolla.com had the solution.
Thank you, a most appreciated update! I’m looking forward to the comming updates. Keep sailing!
Very informative, kiitos! I really appreciate these kinds of posts. I now know the reason of the broken Mozilla Location Services (patents…), and know of the existence of libqofono, which has QML bindings!
If I understand the Mozilla blog correctly, MLS is still available to individuals, etc if you stick within the limits (an create an account). Couldn’t one add an MLS account to the phone and have it use that? Then the agreement is between the user and MLS, not Jolla, the commercial entity, and MLS. Of course, I’m not a lawyer 🙂
Hi guys
It appears that individuals can still use MLS by adhering to its limits and creating an account, according to the Mozilla blog. One could potentially link an MLS account to their phone, making the agreement between the user and MLS, rather than involving Jolla, the commercial entity.
Thank you for this update of Sailfish OS. So many small improvements for me as an end-user.
Oletteko suomentaneet Jollan Rokua päivitysohjeita? Teillä on suomenkielisiäkin käyttäjiä – ehkä olisi enemmänkin 🙂 Onnistuuko järjestelmän päivittäminen suoraan puhelimella ?
Järjestelmän päivittäminen onnistuu suoraan puhelimella suomenkielisiä ohjeita seuraten kunhan laitteen kieleksi on valittu Suomi.
I have an Xperia 10 i4193. Would it be foolish to get an Xperia XA2 because Jolla might cease support (updates) on that model this year or what?
Why would Jolla do that? I am now updating my Jolla 1, bought in 2014, after having updated my Xperia XA2plus. The XA2 is a nice device, buttons on the right place, not too long. If you can get one…
Thank you for the update and information of all kind. Hopefully we shall see the integrations of many kinds of smart watches to Sailfish X smart phones, incl. the applied control apps. Looking forward to what comes to be in the categories in the increasing of the user experiences. When needed, also android-bt support should be of very nice surprise.
Addition: If some excess options cost something, ex. android-bt support, why don’t you give us a chance to buy it eg. from Jolla shop? It’s clear that we have paid only for the UI Sailfish (X) OS. The excess options will be bought with extra costs.This is very clear without any doubts.
Euhm …
Guys … I’m still here ! Stil waiting … stil wanting my money back !
Just bought the license with full price. Been just waiting for Rokua to come before installing. Well. Guess it’s good to support your work with the full amount
Next weekend will flash my Xperia 10 and become a proud user of SailFish. 🙂
Great update ! Thank you !
SFOS installations have over ~850 rpm’s. Only ~83 are the same has in 3.2.. 90% recompiled with the new toolchain. Great work! Thanks.
Thank you guys for keeping things up.
Do not hesitate to put such “news from the trenches” even between Sailfish release.
(Or even release thematic update about the team’s work, like “how are we tleworking during the COVID situation”).
+1
Thanks for the update!and thanks for the best operating system.
Good news after long silence!
Hope for the next good news about refund!
Thank you for all this incredible works. I’m a happy user of Sailfish os since november 2014. And i don’t want to change 😉
I too am still happy with my Jollas. The design and UI are so nice and the OS became more stable. Have some wishes though:
more sharing options, possibility of mirroring, I miss the double tap for opening, banking apps, a paying system (with Ideal?) and last but not least a flashing service. I know, some of these wishes are beyond Jolla’s power, but maybe we can ring the bell of the EU for help?
We appreciate all ideas and feedback for features, thank you! Please join together.jolla.com for more detailed discussion. As you also commented, some of these requests are out of our control, like banking apps which are developed by banks. Some of the features are developed with our customers, such may be for example new cloud solutions. Nevertheless, ideas and discussion is always welcome!
Such a pity that not many people voted for an annual subscription for updates. To my opinion it is the best guarantee for a sustainable system.
Yeah, that’s true.
But they should have kept the survey open longer than a week, so that more people would have been able to participate. I, unfortunately missed it, cause i wasn’t in time to take part… But, that’s the only thing i had to complain.
So, thank you for another great Update and long lasting Support. 😀 Sail on,…Jolla
Thank you for this very informative blog post.
Since OMP co-operation, I can notice that SFOS is getting better and better.
Agreed, paying for a subscription would have been a good option.
So I bought another license that I don’t have a phone for (yet?). Almost like a subscription 🙂
Good update! But please keep an (small) eye also on previous devices like JP-1301, JT-1501, JP-1601 and F5121
Is Jolla planning to support the Pinephone beyond the community effort already made? that would be just great.
I just want to congratulate Jolla on their excellent work! With my J1 I managed an uptime of 4 months and 5 days with the previous version before I upgraded to Rokua! That is astonishing! Everything just kept working smoothly.
As very long time Sailfish OS user I think it a usable everyday mobile OS, and when the QT stack and Webkit update will finally come, it is gonna be great, because you will finally be able to use native browser for all websites and it will make porting new QT apps a lot more easier.
What buggs me the most about how the whole project is managed is how rarely some things get updated. Only now we got GCC update, QT version is crazy old (and they can’t even tell yet to which version will they update it), gecko in native browser is 4 years old, kernels are crazy old and so on.
But even as the UI concept is very similar to MeeGo, it still is so much better to use than new Android and its clunky gestures.
I reckon it’s finally time to sort out the rest of the tablet refunds
Until now I have never reminded you of my missing second part of the tablet refund. Looks like you are hoping that people will die in time so that you will be spared to confess that you are not even thinking of repaying the rest as you originally did announce.
This is the same story of cheating and disguising as it was when you were still Nokia and my 808 kept crashing and I never would have a true answer or repair.
Be honest for once and tell us that you will never pay the remaining part of the refund!
One lurking issue for the future is the forced migration of cellular communications to VoLTE starting in January of 2021 and continuing through 2022. If this is not implemented, sailfish will gradually become unusable as an operating system over the next two years.
Thanks for this update been waiting for it so long ago read here
As prolonged stretch of time Sailfish OS client I think it a usable ordinary versatile OS, and when the QT stack and Webkit update will at long last come, it is going to be extraordinary, on the grounds that you can at long last utilize local program for all sites and it will make porting new QT FMWA significantly more simpler.
What buggs me the most about how the entire task is overseen is the means by which once in a while a few things get refreshed. Just now we got GCC update, QT variant is insane old (and they can’t advise yet to which rendition will they update it), gecko in local program is 4 years of age, portions are insane old, etc.
In any case, even as the UI idea is very much like MeeGo, it actually is such a ton preferable to use over new Android and its inconvenient signals.
If I understand the Mozilla blog correctly, MLS is still available to individuals,Best Luxury Pens etc if you stick within the limits (an create an account).GBWhatsapp Apk
Good job on this article! I really like how you presented your facts and how you made it interesting and easy to understand. Thank you. WhatsApp Plus APK
Really great post admin thanks for sharing this.
https://www.playitplayerforpcdownload.com/
Your post has been so helpful because it was clear and concise writing made it easy to understand. 192.168.1.254
Good job on this article!! With the passage of time, I think the SMS bomber tool play the best role in marketing sms bomber apk
Is Jolla planning to support the Pinephone beyond the community effort already made? that would be just great. For any kind of additional infor, you can visit gbhouse site
Thank you for sharing this. It was helpful. Keep sharing such things. Also checkout Nulls Clash.
Thank you for this very informative blog post…for mods, check out Clashmod
I really love sailfish os rokua.. Check out 9to5wordpress
Thanks For This osm Blog, I am Very Happy, Keep It Up! Pet Filler Machine
I love this OS. Thanks for info. Download GBWhatsApp APK
Great, your post is helping me a lot. Thanks for the detailed info on this topic. It’s hard to find nowadays to know about the basics but you did it so much well. I would love to see more about FMWhatsApp. Keep sharing and updating. Also share more posts with us. Thank you.