Sailfish OS update from Jolla
We had a good and lively community meeting last week. Great deal of this fortnight newsletter builds around that discussion. Today’s Energy from the Community is based on the discussion that flypig had with Adam Pigg (piggz) regarding PINE64 work that he has been doing and what’s happening in there. Big thanks to dcaliste for his effort on this newsletter on preparing Repository roundup.
Last week we published a 4.5.0 hotfix release. Based on comments it seems that more frequent smaller releases are appreciated. Thank you all for your feedback.
Read on to find out what’s cooking and enjoy this fortnight.
Energy from the Community
As many in these forums will know, long term member of the porter community, self-described hobbyist developer and keeper-of-the-smartwatches Adam Pigg (piggz) has been working on Sailfish OS ports for PINE64 devices for may years now. Adam’s Sailfish OS port for the original PinePhone was released back in 2022.
Since January 2022 Adam has been working on a port for the PinePhone Pro, the second phone from PINE64. We already covered some of the work Adam has been doing for this port in the newsletter back in February. In the world of phones the original PinePhone and PinePhone Pro are unusual in their exceptional support for native Linux. PINE64, the company behind them, goes out of its way to support a range of Linux distributions across their full range of devices, which includes laptops and smartwatches too. PINE64 have been actively supporting Adam’s Sailfish OS ports for their phones.
PINE64 have been very good at seeding the developer community with devices to work on. I have Sailfish OS ports for the PinePhone, original Pinetab, PinePhone Pro and recently got sent the Pinetab2 to port to. I’ve worked with the Pinetime watch, adding firmware features and supporting it in my Amazfish watch companion app, and have received other goodies like the Pinebook Pro and a Pinecil soldering iron.
So this isn’t the first PINE64 device Adam has ported Sailfish OS to. If you’ve already had experience with the original PinePhone then the PinePhone Pro will provide a similar experience, but also a welcome upgrade. The form factor is the same as the original PinePhone, but with improved specifications. But given that it’s a newer device, where is Sailfish OS at in terms of support?
Well, about two weeks ago, when this all started, it certainly wasn’t as good as it is right now.
Adam explains.
As of today, I can make and receive calls and SMS, and use mobile data. Use WiFi and be connected to my car via Bluetooth. Sensors are fine as far as I can tell. Battery life seems okay and the phone correctly goes into deep sleep when it can.
In the last week, I’ve fixed up the sleep and resume issues, and am currently running a test build of Ofono which seems to handle the sleep and resume cycle better.
It sounds like great progress. The port has come on a long way in the last few weeks through a combination of Adam’s incredible work, but also some extra motivation from PINE64.
You can see the results of the proposal, both the submission Adam made and Jolla’s response, in the agenda and logs from the Community Meeting last week. The signs look very positive. As you can see from Raine’s reply (on behalf of Jolla) during the meeting:
First, it’s great to hear that you were approached by PINE64 regarding your Pine Phone Pro port. There shouldn’t be major roadblocks in this. However, there are different aspects that we should clarify and check.
So while there are a few things that would need to happen still in order for this to go ahead, none of them look insurmountable. Most important is the branding used. The pre-installed port won’t lose the Sailfish OS branding and can be functionally-equivalent to other community-developed Sailfish OS ports. But the status of the port also needs to be made clear. Adam explains where things are at with this.
The main things to check over before giving full consent are around trademarks, branding and copyright, and making some changes to the About page which makes it clear that this is community supported, and not supported by Jolla. All of which is fair enough I think. I’m just waiting to hear back about making changes to the About page and any other feedback after Jolla have tried out the port internally. After that, I guess I build an image and give instructions to PINE64 on how to pre-load it.
Are there any software or hardware issues still to be resolved?
One major issue seems to be around Mesa, Lipstick and the graphics drivers. I’ve not pinned it down yet, but sometimes Lipstick just segfaults and restarts. I’m guessing it’s a mesa driver issue and am hoping that with more users and devs getting this in their hands, it might get fixed.
Another major headache has been Ofono, the telephone stack used by Sailfish OS. Most other distros on the Pine hardware are using ModemManager, so most devs work with that, and Ofono support doesn’t get much love. On top of that, Jolla uses a highly patched version of Ofono and keeping up with updates to upstream Ofono, where all the “qmimodem” work happens for the Pine modem, has been a major pain. I’m effectively running a hybrid of Jolla and Upstream Ofono and it would be great if Jolla could eventually rebase on the upstream version.
While the branding requirements will be essential changes, getting all of the hardware capabilities fully working isn’t necessarily a requirement for the port to be made available pre-installed. Adam is clear that it’s not quite ready as a daily driver. “I don’t want to make any great claims about this being suitable as your only phone” he says. He doesn’t want anyone to be disappointed, but as he explains. “when people are buying Pine devices, they generally know what they are buying into, something open, hackable, and not-quite-ready!”
This makes it a very exciting time to be a Sailfish OS user. Adam has already been working closely with both the Sailfish OS and Pine communities while developing the port and is keen to thank all the contributors. If you’re super-keen to get involved yourself you don’t have to wait until Sailfish OS is available pre-loaded to do so.
This wouldn’t be possible without others in the Pine community. Kernel and Modem devs for sure! I’m using Megi’s kernel and bootloader… and recommend Biktorgj’s modem firmware. I"ve also had to work closely with the libcamera devs. To get the camera working required me writing my own application based on libcamera.
You can already buy the device, use it, give feedback and if you can, fix bugs and send Pull Requests And try not to grumble too much if things aren’t perfect!
I’m sure we can all agree that Adam is doing amazing work and that this is a big step forwards. We’re all very keen to see it succeed and I’d also like to thank Adam for taking the time (he’s a very busy person!) to answer questions for the newsletter.
To find out more about the PinePhone Pro and Adam’s work, check out the following links.
- The PinePhone Pro official pages.
- Sailfish OS PinePhone Pro port wiki.
- Sailfish OS on the Pine64 repos.
- Adam on Mastodon
Repository roundup
The community continued their work to update all packages where Sailfish OS is the upstream maintainer, to be used in conjunction with Qt5 and Qt6. While flypig continues his tremendous work of upgrading the Gecko engine from ESR 78 to ESR 91, the browser that is based on, received some nice polishing, with changes allowing to interact with images.
Communication services
-
buteo-sync-plugin-carddav
, a plugin for synchronising contacts, jmlich opened a request to support Qt6. -
messagingframework
, the email Qt framework, dcaliste updated it to the latest upstream, bringing a way to flag encrypted emails and also some better attachment detections in some corner cases. -
libsocialcache
, a library and a QML plugin that is used to manage cache from social networks, jmlich worked on upgrading it for Qt6. -
buteo-mtp
, an MTP library, jmlich has a work in progress on updating it to Qt6. -
nfcd
, a daemon for near-field communications, monich pushed several commits improving test support and documentation.
Browser
-
embedlite-components
, QML components for the browser, rainemak added a title in the context menu when long tapping on an image that is not a link by itself. -
sailfish-components-webview
, the high-level QML components exposing a web page, mal and rainemak added an entry in the context menu to copy the URL of an image to the clipboard and to make this menu appears when long tapping an image. thigg mentioned that this change would now allow to read all XKCB… rainemak then later updated this change with another, adding an expander for the cases of long titles.
User interface
-
sailfish-utilities
, the setting page to restart failing services, ichthyosaurus contributed a patch to add a restart button for the keyboard subsystem.
Audio and video layer
-
libwebp
, a library for encoding and decoding image in WebP format, attah upgraded it to 1.3.2, bringing a fix for CVE-2023-4863.
Low level libraries
-
libglibutil
, a library extending GLib with convenient utilities, JamiKettunen replaced explicit calls tomake
with a variable, and later removed the overload of this variable. This gives the possibility to use the build system of the package with another make implementation. -
lz4
, an extremely fast compression algorithm, mal created a new repository for this upstream library. - Thaodan is fixing the packaging of Qt components, putting data in architecture specific directories when needed.
-
nemo-qml-plugin-dbus
, the QML bindings for DBus, jmlich updated it to be used with Qt6.
SDK and developer tools
-
python3-jinja2
, a template engine in Python, mal updated the package to version 3.1.2. -
python-markupsafe
, implements a XML/HTML/XHTML markup safe string, mal moved it to version 2.1.3. -
scratchbox2
, the cross-compilation tool used by the SDK, Thaodan proposed various fixes in the way the package is built. -
rust-cbindgen
, utilities to create C/C++11 headers for Rust libraries, flypig updated it to 0.19.0. -
icu
, International Components for Unicode, flypig also updated it to 70.1 during his odissey to upgrade Gecko engine. rainemak mentioned during the last community meeting thatrust-cbindgen
and/oricu
updates actually fixed a build issue withxulrunner
on armv7hl architectures, nice! -
gcc
, the GNU compiler collection, direc85 investigated a compiler crash reported by flypig and backported a patch from upstream.
App roundup
The newsletter is back in full-swing, but we’ve not yet covered the backlog in apps submitted over the summer period for appearance in the Jolla Store. So let’s move to our second set to showcase the work that Sailfish OS developers spent the summer months putting together.
First up is Solver from inveterate app developer Mark Washeim (poetaster). Although we have featured the app in previous newsletters, it’s come a long way in the last few months. The app has three main functions. It can differentiate, it can integrate and it can solve limits. If you’re not actively using them you’d be forgiven for forgetting the details. All three operate on functions and perform related but different tasks. Differentiation will tell you the gradient (the slope) of a function; integration will tell you the area under a graph; while the limit will tell you the value a function approaches, even if it never quite gets there.
Apart from the functionality itself, the app does an impressive job of rending mathematical functions using mathematical — as opposed to programming — notation, although for practical reasons it’s the latter that’s used to enter the functions in the first place.
The update to version 0.4.1 brings with it bug fixes, new exponent and square root shortcuts, clipboard notification and an improved user interface. It’s available from the Jolla Store, openrepos and Chum.
Yura Beznos (yurabeznos) has had a busy summer with both an update to DjVu Viewer and an entirely new Screen Recorder app. The DjVu app looks similar to the default Sailfish OS Documents app, but while Documents opens text files, PDFs, Office/LibreOffice documents and the like, DjVu is focused entirely on providing access to .djvu
files. Such files are specifically designed for scanned documents.
It works very well. The latest update bring it to version 0.1.34119 with fixes for rotation and the introduction of Table of Contents pages. It’s available from the Jolla Store and OpenRepos.
Yura’s Screen Recorder app takes things in a different direction, although the name rather gives away what this is. The purpose is to record video of your phone’s screen, super useful if you want to capture a walkthrough. It’s not the first screen recorder app for Sailfish OS and back when I worked for Jolla I found coderus’s app with a very similar name (and similar functionality too) an invaluable tool for capturing bugs or bug reproduction steps to store in the bug tracker. One challenge was that the videos were large and converting them with ffmpeg
could be slow. Two of the key questions for any software like this are: does it affect performance of the device while recording; and what is the quality/framerate of the recorded video. It is possible to tweak these values in the settings for the app, but in practice on an Xperia 10 II I found the capture topped out at between five and ten frames per second. Use during capture was smooth though, which is important so as not to affect flow during recording. I’m sure use on an Xperia 10 III will be even better. It’s a great app; definitely recommended. It’s available from the Jolla Store and OpenRepos.
The Situations app from Pastilli Labs / Heikki Haveri (hhaveri) is a long-standing favourite amongst Sailfish OS users. A quick glance at the Situations App Feedback thread on the forums tells you everything you need to know about how passionate people are about it.
It comes with the tagline “Put the smart on your smartphone!” and that’s not overstating it. The underlying idea is that Situations will configure your phone based on your context: where you are, what the time is, whether you’re in a meeting, whether you have headphones attached and a whole lot more. The things you can control include controlling your network settings, audio settings, open apps, web pages, display settings and more. The design of the app is unusual, given that it’s truly cross platform, and so has a very slick but slightly Material vibe about it. It is a native Qt Sailfish OS app though, and all the better for it.
The latest update brings it to version 3.3.286. Heikki reports that there have been huge changes under the hood for this release, primarily to bring it inline with Sandboxing requirements (something which — I can imagine — provide quite a challenge for an app like this). It’s available from both the Jolla Store and OpenRepos.
Next up, Zimpedia by Michal Kosciesza (mkiol), is — it could be said — another document viewer app. Unlike DjVu, this one is designed to read and display ZIM archives. What is a ZIM archive I hear you ask? It’s essentially an offline packaging of a website. Originally developed to allow Wikipedia to be viewed offline, there are now a whole host of ZIM archives available from the Kiwix non-profit. While there’s no shortage of computer stuff (e.g. the contents of Wikis from Arch, Termux and ZDoom; snapshots of Stack Overflow, Ask Ubuntu and Drupal Answers and much more), there’s also plenty of literary, scientific, sport and historical content (WikiMed, Gardening and Landscaping; ProofWiki, Ray Charles, D&D, Football, History, …). All of it can be downloaded to your phone and read anywhere. It works really well and may prove an invaluable resource. The latest update brings it to version 3.1 with Italian translations, bug fixes and an update to the underlying LibZIM at the heart of the app. Zimpedia is available from both the Jolla Store and OpenRepos.
Last, but certainly not least, is Reisplanner from rgrnetalk. Sailfish OS has no shortage of journey planners, although all have their niche. The hook for Reisplanner is the focus on journey planned provided via the Dutch railway system (although the area covered goes beyond the Netherlands), and the rather slick user interface. Enter your journey details and it will provide a selection of potential times. You can then drill down into the suggested journey to find intermediate stations, potential disruption alerts, and other useful info. The Silica interface works beautifully with the content and cute icons that rgrnetalk has provided.
The latest update brings version 0.27-1 into your hands, with improved display of messages within the app. Reisplanner is available exclusively from the Jolla Store.
No shortage of apps to be enjoying this fortnight. If you’re a user of one of these apps, make sure you upgrade to the latest and greatest, and if you’re not, maybe now is the time to take a look. Thanks again to all the Sailfish OS developers for your continued amazing work over the summer. Your work really is the bedrock of the platform.
Please feed us your news
Once again hope you enjoyed reading this community newsletter! As always, please do not hesitate to share your ideas, thoughts, or suggestion for future newsletter topics!
Please do also join us at our community meetings on IRC, Matrix and Telegram. Next community meeting will be on the 28th September