It was fun to read a recent article on the PIABlog about how to escape the ‘Smartphone Duopoly’ with Sailfish OS. The author, David Rutland, talks about his experience with Sailfish OS, what in his opinion makes it great, but without overly-rose-tinted spectacles. It reads like a fair and balanced analysis, but with a positive conclusion.
All-in-all, though, I like Sailfish. It offers a partial escape from the seemingly unassailable grip that Apple and Google have on the smartphone ecosystem, and the interface looks great.
Reading the article led me to return once again to why I enjoy using Sailfish OS so much.
Ask a Sailfish user what they like about the platform and you’ll hear many different answers: the elegant gesture-based experience, a clean and responsive user interface, the ability to run both native and Android applications, the privacy benefits of a platform that doesn’t rely on user-data to fund its development, the familiar Linux-based libc environment that underpins it all, and the control afforded by having root access to your own phone built on strong open-source foundations.
But for me, one of the biggest strengths of the platform has always been the Sailfish community itself. It’s a community that engenders passion, one that’s built on principles, and one that demonstrates real commitment. You can see this in so many areas.
Take the Sailfish developer community. Each newsletter I take a look at the apps that sail into Harbour, and report on the results in the Apps Ahoy section of the newsletter. It’s always a joy to see how the apps develop, to appreciate the love and care that developers put into their creations, and to see them evolving with new ideas. Recently we’ve seen a new commitment from authors to update their apps as the operating system evolves. If you want to see the impressive collection of updated apps this fortnight, you’ll find them below.
One app you won’t see in the list below, but which is enjoying some special attention this week is Whisperfish. If you’re in any doubt about the amazing work the Sailfish app developers are doing, you’ll want to read about what Ruben De Smet (rubdos) and Matti Viljanen (direc85) have been up to in the next section.
It’s not just developers either. Take the army of localisation experts who update the translations for the over forty languages the operating system officially supports, with even more in development. These contributors are not only building strength into the operating system itself, they’re also enabling other members of the community to use their chosen OS in their chosen language.
There are porters who offer device adaptations which make Sailfish OS available far beyond the official Jolla-supported devices. Their work increasing the audience for Sailfish OS immeasurably. They and other members of the community are routinely contributing to the Sailfish OS source code, adding features, fixing bugs and driving development forwards. Damien’s Repository Roundup below gives a flavour of this work and the work that goes on behind the scene every day on the Sailfish OS source code.
We also see the energy and commitment of all users in the official forum sharing ideas, experiences, help, support and just occasionally gripes with one another. Although it may not always be apparent, there are numerous Jolla employees who also spend time contributing to the discussion and answering questions in the forum. But the fact is the full breadth of support is made possible not by Jolla employees alone, but by other members of the community from all walks of life and with a range of different skill sets.
In the last newsletter I highlighted the amazing work of community members testing beta VoLTE support on carriers around the world. The work has continued unabated and the list of supported providers grows daily. And I’ll never tire of thanking our Community Bug Coordination Team, who over the last ten weeks have read hundreds of bugs on the forum and liaised with dozens of posters to test and improve their bug reports. Their tireless work has ultimately resulted in nearly seventy bugs being recorded in our official Jolla issue tracker, or having their forum tags updated correctly. I take my hat off to all five of them.
It’s particularly heartening to see community members looking for new ways to help fund and support their favourite OS, and I was taken by the suggestion of thigg to run a Sailfish license key game. I won’t comment on the relative merits of the scheme itself (maybe it’s crazy? Maybe it’s genius?), but seeing such a pro-active approach to improving the software and community we all enjoy reminds me why I love being part of the Sailfish community so much.
So if you want to know why Sailfish OS is so great, just have a read of the next few sections, and you’ll see how much energy the community puts in to making it that way.
As a final note before then, when we released Sailfish OS 184.108.40.206 for the Xperia 10 III we were clear that it should only be flashed on devices running Android 11. We had to be strict about this because we’d not yet done testing on phones running Android 12. After your feedback, and after further internal testing, we’re now happy to adjust our advice. We still recommend ideally flashing on top of Android 11, but if you’ve already upgraded your Xperia 10 III to Android 12, then you can flash your phone with Sailfish OS without downgrading to Android 11 first. Thanks to everyone who gave us feedback on this, and the impetus for us to perform the required testing.
Regular readers of this newsletter will know all about Whisperfish. Not only is it a superb and secure native Signal client for Sailfish OS, it’s also flying the flag for Rust development on the platform. On top of that, it’s also been one of the most actively developed apps over the last couple of years.
Development of Whisperfish is spearheaded by Ruben De Smet (rubdos), who took over the previous Whisperfish version — then written in Go — from Andrew E. Bruno back in 2020. It’s enjoyed an upward trajectory of both functionality and stability ever since.
It’s also picked up support from a number of other developers, including Matti Viljanen (direc85). As Matti explains:
At first I updated the Finnish translation, and from there I drifted into other areas of the application, as I started using Whisperfish (instead of Signal for Android). After fixing one annoying bug I ran into — I couldn’t delete a session — I fixed another, slowly getting into more complex stuff. Starting to learn Rust by trying to understand the inner workings of Whisperfish isn’t perhaps the easiest path, but it sure is rewarding!
And Ruben admits this was his plan all along.
I think I attracted direc85 by leaving just enough bugs in Whisperfish to get to annoy him.
What started out as an informal collaboration has grown much more concrete this week, with them meeting for the first time on Monday for a real life Whisperfish Hackathon in Brussels. The plan is for them to spend the week hacking on the Whisperfish code, with Monday to Wednesday spent in-person and coding together.
The idea of this hackathon matured over a few weeks, and finally I managed to take a week off, so I could fly here and meet Ruben in real life for the first time.
Despite setting some very challenging goals for the work they want to complete, even after two days they’re making impressive progress. “We’re 50% through the issue count” Ruben explains, “some are huge, some are smaller. Some are practically duplicates with different symptoms…”. Matti confirms, “I have fixed a few of the more challenging ones already (some uncommitted still), but overall it looks quite promising! I still have one more day to go, and I’ll sure continue the hackathon when I get back to Finland!” So will they make it? “yes, I think we’re going to make it.” says Ruben. “Maybe we should add a few more for extra challenge.”
Ultimately though, the experience isn’t just about writing code. Ruben again:
For me, being together here is not necessarily about getting things done together, but more about getting the motivation going. We have been discussing things over coffee, and it makes it easy to throw a quick question whenever that’s useful. Oh and it’s also about getting time dedicated to the job! The Whisperfish job
It’s sure nice to discuss a thought over a cup of coffee, and it somehow doubles as a small break. I joined the hackathon to both get some annoying bugs fixed (Ruben was basically right!) and get some new features out. I also wanted to meet Ruben, and I’m happy I was able to make this trip!
It’s exciting to see Whisperfish bringing people together, in a quite literal sense, and we’re also looking forward to the fruits of Ruben and Matti’s labour. And Ruben even suggests this could sew the seed for some more hackathon activities in the future.
I was thinking, maybe we should do a big big big hackathon with a bunch of application developers together, from different apps.
What a great idea that would be!
This last fortnight, over the 17 pull requests or activities reported in the open source repositories for Sailfish OS, 12 were contributions from the community. They cover fixes or improvements either for Sailfish OS but also for various other distributions (NemoMobile or others based on Yocto) where the code developed for and used within Sailfish OS is actually reused by other projects. This is a good signal for the health (and sustainability) of the project.
libwspcodec, a library to encode / decode MMS, slava added a fix for broken messages where the subject is empty but wrongly encoded with a quote. This is fixing the corresponding bug report from wetab73.
nemo-qml-plugin-calendar, the QML for calendar access, puretryout asked for feedback on his pull request to migrate from qmake to cmake. dcaliste asked for some changes to keep the automatic tests working.
buteo-sync-plugin-carddav, the plugin used by the synchronisation framework to sync contacts via the CardDAV protocol, nephros is suggesting to add “X-SIP” and “X-JABBER” properties in the exchange so they can be synced and appear in the people application.
nemo-qml-plugin-alarms, the QML for alarm access, jmlich would like to extend the type of alarms sent to
timed(currently restricted to clock, reminder, countdown or calendar type) with another type called “wakeup”. This distinction is used in Glacier UI. The difference between clock and wakeup is quite thin though and the pull request is still under discussion.
nemo-qml-plugin-dbus, the QML bindings for DBus, herrie82 is proposing a patch so the repo can compile with Qt6.
nemo-qtmultimedia-plugins, a plugin adding GStreamer as a QML video backend, karry found and fixed a null pointer dereference that without the fix leads to a crash in the initialisation routine.
libconnman-qt, QML bindings for the connection manager, herrie82 upgraded the source code base to be able to compile with Qt6. The pull request is not yet accepted but close to being and generated a vivid discussion. herrie82 also got a patch included so the “Nemo” prefix to the QML import can be dropped for other distributions other than Sailfish OS.
libqofono, the QML bindings to Ofono, herrie82 is proposing the same patch for Ofono this time to be able not to use the “Nemo” prefix in QML imports.
btrfs-balancer, a utility to reduce meta-data space used in the BTRFS file-system, olf contributed a patch to remove some Bash-only string substitution in the script calling the file-system balance operation.
udisks2, the udisks daemon serves as an interface to system block devices, implemented via DBus. olf fixed a shell script where various quoting was not properly handled, which if unfixed raises potential issues when used with user names having spaces or special characters.
android-tools-hadk, the Android tools for the hardware development kit, thaodan pushed a pull request cleaning and fixing issues in the
mer-android-chrootscript which was accepted.
droidmedia, thaodan continues his work on rewriting the miniaudiopolicy helper, adding support for earlier Android versions in addition to the existing 10 and 11.
python-rpm-generators, a tool to automatically add Requires/Provides and other types of dependencies based on egg/wheel metadata. thaodan is working in a branch to update this package from upstream.
nemo-qml-plugin-systemsettings, the QML bindings for global settings, neochapay continues to polish his pull request to make the “developer mode” optional (not used in Nemo Mobile systems), following pvuorela’s review suggestions.
docs.sailfishos.org, website sources, olf is proposing some formatting changes in the newly introduced release page, still under discussion with rainemak.
osc, the command line interface to work with OBS (the Open Build Service), thaodan and mkosola reached approval to upgrade from 0.168.2 to 0.178.0.
In the early days of the Community News when things were only just getting started, we restricted the number of apps we covered to just four from those that received an update in the fortnight before. While trying out the different apps — and having the opportunity to really shake out the details — was a lot of fun, it was also disappointing to miss out all of the other wonderful apps that could have gone in.
Writing an app is a labour of love, and that deserves recognition. And while the most important recognition comes from the app’s users themselves (please, if you’re using an app, take the opportunity to comment, rate or favourite it!), it’s always gratifying to be able to give a small additional nod to the authors in this newsletter too.
But while things have moved on, and we try now to be a bit more exhaustive with the apps that appear in this section, we still have to leave many deserving apps out. Among those are apps that are updated so frequently that we would have to include them every month if we were to stick to the principle. Apps like VideoWorks and Audioworks from prolific app-maintainer poetaster. And don’t even get me started on all the apps receiving updates on OpenRepos and Chum, but which don’t make it into harbour.
So we hope you enjoy the app updates below, but while you read them, please remember that these still represent just a small portion of the Sailfish OS apps that are getting love and attention from their authors all the time.
Octava from Rustem Abzalov (arustg) is a relatively new app, and yet in the last few months has seen multiple updates. It’s not a complex app, and doesn’t claim to be, billing itself as a “Simple Piano Keyboard”. If you want to play simple melodies you might just get away with it, as long as your tune doesn’t span multiple octaves, and doesn’t contain chords. Octava produces a nice rich piano sound, with some nice animations to highlight the key being played. If you’re itching to tinkle the digital ivories, this is your opportunity. The latest update provides some subtle user interface improvements. But let’s hope arustg adds multitouch support so we can really bash out those choruses! Version 0.3.1 of Octava is available from both the Jolla Store and OpenRepos.
Mark Washeim (poetaster) has been busy updating his apps again this fortnight. If you read the intro to this section, you’ll know I missed out a bunch of his updates. But one that made it, and which we’re really pleased to be able to cover, is All the News, which relaunches previous app News Aggregator but in a totally rewritten form. The story goes that poetaster wanted the app to live on, but after being unable to contact the original author, decided to rework the whole thing.
All the News makes use of the NewsAPI backend to provide news feeds from a whole host of different providers from across the world. You’ll need to get an API key from them for the app to work, but it’s a super-simple process as long as you accept that they’ll be storing some of your data.
You can filter news based on language, country or topic, although not all of the topics have feed items associated with them (where are the gaming articles?!). Without any filtering the main page will be filled out with news sources, each with a brief description. With all filtering disabled I counted a total of 128 different sources from across the world. Tapping through gives you the latest ten headlines from the source. Tapping again opens the article on the source’s website.
The app also supports searching by keyword, provides clear thumbnails for articles, and also proves to be a nice demonstration of the Sailfish OS language support.
Whether you’re addicted to the headlines, or just someone who occasionally likes to keep up with events, All the News is a great way to find out what’s happening all over the world, and avoid getting stuck in a social media news bubble. The latest version adds hints to help with API key usage. This latest version 0.4.0 is available from both the Jolla Store, OpenRepos and Chum.
Another release from Rustem Abzalov (arustg), Dino has also enjoyed multiple updates over the last few months. The game remains the same: our intrepid Tyrannosaurus must leap, bound and jump over all obstacles as they run majestically across the Upper Cretaceous plains of the past. Jump height is controlled by how long you press, and as our protagonist progresses further, it also runs faster, with new challenges in the form of floating obstacles that must also be avoided.
The latest version provides some subtle user interface improvements, a nice slick cover, and the same increasing difficulty curve. Version 1.1.1 is now available from the Jolla Store and OpenRepos
Babbage from Heiko Bauke (rabauke) is a new app for this newsletter, having just made the jump with the latest 0.18 update to 64-bit aarch64 devices. Babbage provides a nice and cleanly designed calculator that fits in well with the Sailfish Silica aesthetic. While ironically not Turing Complete, Babbage does nevertheless provide two different modes of different complexities. There’s a simple “Pocket” variant with the usual quartet of operations, plus square root, exponentiation, brackets and π for the edge cases that need them. But if you really want to make the most of Babbage you’ll want to switch to the free-form “Scientific” variant. Here you can apply any of the 41 unary, binary and multi-parameter functions that range from the standard trigonometric cos, sin and tan to more exotic statistical functions such as Student’s t-distributions and Gamma functions. Thankfully there’s a list of functions on the About page, so you don’t have to remember them all yourself.
There are no shortage of calculator apps for Sailfish OS, and for more complex operations you can always drop to a Python console. But while not being a fully-fledged programming language, Babbage provides a good selection of more advanced functions and an interface that is much easier to use than the console, managing to maintain a careful balance between usability and functionality.
The latest update to Babbage is available on the Jolla Store, and for aarch64 users for the first time.
Another nice app form Heiko Bauke (rabauke), once installed SailBabel will declare itself as simply “Dictionary” in your app drawer. A clean install will present a list of directories rather than a list of words: it’s up to you to provide a word list, which can either be a list of translations or a list of definitions, so this can act as either type of dictionary. The de-facto choice for translation lists being dict.cc with its rather peculiar email-based download process. The wordlists come as text files which you can load directly into SailBabel, after which you can search the lists to display the results in a clean way, using different highlighting to distinguish between the search result and the translation or definition. The app also provides an easily accessible search history so you can skip forwards and backwards through your search terms.
The obvious competitor to SailBabel is Sebastian Wolf’s (WerkWolf) Wunderfitz. While Wunderfitz has more features, with its scan-translations, toolbar and in-built dictionary list, there’s an elegant simplicity to SailBabel that also makes it feel more responsive and lighter to use.
When it comes to either app, the experience is ultimately tied to the quality of the database in use. I found translating between Finnish and English using the dict.cc database to be a bit hit-and-miss. Often the stem of the word — or vartalo — exists in the database, but because neither app supports fuzzy search, getting at it wasn’t always obvious, for me at least.
These are still both really nice apps to have for Sailfish OS, and if you want an offline dictionary you should definitely given SailBabel a try. It’s available from the Jolla Store.
We’ve covered Matti Viljanen’s (direc85) Picross 2 on several occasions in the past, and it still holds up as one of my favourite puzzle games for Sailfish OS. Officially described as nonogram, but in my experience often referred to as Hanjie puzzles, you must fill in the grid of squares with either blocks or crosses, using only the numbers around the edge of the grid as clues. Picross 2 offers 103 hand-crafted puzzles with a gentle difficulty curve that starts with some easy tutorial and ends up with the aptly titled “Insane” levels. If you have time to spare, you could do worse than unspare it playing Picross 2. The latest version adds support for My Backup and makes some adjustments to the user interface and translations. Version 2.5.0 is available from the Jolla Store and OpenRepos.
Rustem Abzalov (arustg) has been prolific in updating apps this fortnight. Frome is a simple app that makes it easy to calculate percentages, useful if you’re calculating interest or tips. The interface is unusual but intuitive, with the buttons displayed as a row in pairs down the left or — with a configuration option — right hand side. A history of calculations then fills up on the edge without the numbers.
The latest release 0.3.5 fixes the clear function and is available from both the Jolla Store and OpenRepos.
Updates to existing apps are great, but it’s always nice to be able to include a new app or two in the newsletter. Evento is our first this fortnight from Samuel Kron (black_sheep_dev). Evento is a rather nicely presented app for counting up away from or down towards particular events. The options are still fairly basic, for example there’s no way to have events that span multiple years like birthdays, to take events from the Calendar or to add alarms. But it makes for a nice first release. Getting used to the interface is near instant and I was very quickly able to add in some important dates, turning my general anxiety about how close my deadlines are into much more specific fear. Despite its early stage of development, there’s already the option to sort the list of events in a variety or ways: how close they are, when they were added, or their title.
The second new release from Samuel Kron (black_sheep_dev), Porthole allows you to control a Pi-hole server for your local network. Although originally intended for use on a Raspberry Pi, Pi-hole will run on any Linux device, although it probably doesn’t make sense to run it on your Sailfish phone directly. Pi-hole provides an add blocker that all clients on a network can make use of, essentially blocking content from certain domain names (those associated with ad providers) from being served.
Porthole allows you to see statistics about who is using the server and the sites being blocked, as controlling the server to enable and disable ad blocking.
Pi-hole is particularly useful for use with devices that don’t themselves provide ad blocking, including the Sailfish Browser, but also extending to other devices such as smart devices. If you’re running the server, you should definitely take a look at Samuel’s app. This first release is available from the Jolla Store, OpenRepos and Chum.
We covered Yatzy recently after it had spent a bit of a multi-year haitus without updates. So it’s great to see author rgrnetalk giving it some love and providing yet more updates to this rather nice dice game. Yatzy isn’t Yahtzee, but it is a related Nordic game that plays along similar lines. Six dice are thrown and a poker-style categorisation applied to the result. Getting one of each category, with the highest score possible, is the name of the game. It’s a careful mix of strategy and luck, with some nice dice animation thrown in for good measure.
The latest update fixes some issues with the instructions and some fixes to the gameplay logic. Version 0.7 of Yatzy is available from the Jolla Store.
Joni Korhonen (pinniini) is clearly into viewing photos in the cleanest way possible. Slideshow, as you might expect, allows you to create customisable slideshows of your best snaps.
Besides selecting the images using a variety of filtering techniques, you get a lot of configuration for your slideshow. Timing, looping and ordering can all be configured, and you can even set your slideshow to music. Once the slideshow is running the interface is — as you might hope — minimal. Everything is removed until you tap on the screen to pause, at which point you can continue again or back out of the slideshow completely.
Back in [November last year}(Sailfish Community News, 4th November, Berlin, Helsinki) we looked at SailPhoto for viewing photos. Slideshow is similar in many ways, but with a tighter focus on automated slideshows and less on photo organisation. Joni says this latest version 2.0.1 of Slideshow is a complete rewrite of the app, and it’s already working nicely, providing both configurability and a responsive, easy-to-use interface. If I had to choose, I’m not sure whether I’d go for Slideshow or SailPhoto, but both do a good job if you want to display your photos in a gently soothing way. Slideshow is available now from the Jolla Store.
One of the things I’ve always loved about Sailfish OS is the ability to write code directly on the device, whether it be Python, C++ or QML code, you can type, compile and run it all without having to leave the safety of your phone. A good code editor is essential for this, and while it may be a rather niche requirement, in my opinion it’s one of the things that makes Sailfish OS special. Consequently I always get a thrill of excitement when I see a good quality code editor getting a high quality update.
Up until now I’ve tended to use Editor. from Alexander Dydychkin (GoAlexander) or VIM in the console at a push. But Seabass from Mikhael Milikhin (milikhin) has now reached the stage where I’m seriously considering it as my go-to code editor of choice.
Recent updates have brought significant improvements to the interface. The switch to using the WebView makes everything that bit more responsive. The floating “swipe” button for enabling and disabling the pulley menus makes everything more functional, with nice unobtrusive positioning and iconography. The ability to set the file as read only remains a surprisingly useful touch, clearly the output of a mind focussed on how best to read and write code on a small display. And the same can be said for the arrow keys. Personally, I’d add arrow keys to the stock Sailfish OS keyboard if I could.
So I have to say, recent updates from Mikhael are bearing fruit, and Seabass is turning into a really nice developer-friendly editor. I’m looking forward to that tingle of excitement when new updates drop in the future.
Version 0.9.1 of Seabass is available from the Jolla Store and OpenRepos.
Patience Deck is another app that’s seen regular updates from my good colleague Tomi Leppänen (tomin) over the last year. If you’ve not yet tried it, then you clearly haven’t been reading previous newsletters carefully enough! Patience Deck provides seventy two different variants of card games you can play on your own (often referred to as Solitaire games, for obvious reasons). Some of the variants are classic (Klondike), some are excellent (Spider), some have odd names (Beleaguered Castle) and some are absolutely atrocious (Clock). All of them benefit from Tomi’s impressive implementation with a variety of card types to choose from and intuitive drag-and-drop.
The latest version adds Swedish translations courtesy of Åke Engelbrektson and improves card clarity. This version 0.8.2 is available from the Jolla Store and OpenRepos.
SeaPrint has become the way to print files from your Sailfish OS device. It should probably be built in to the operating system, but having it as a separate app doesn’t hinder its capabilities, especially when paired with the SeaPrint Share Plugin.
As long as your printer is on the network and supports the Internet Printing Protocol, you can send documents such as PDFs, LibreOffice, Microsoft Office and image files to it to be printed out. The results are generally excellent, and it really feels like attah has found the right way for printing to be implemented on a mobile device. Amazing work. In the background the app uses Calligra to perform conversion in case the printer doesn’t support the format directly.
The latest version 1.1.5 fixes a bug with zero-length printer responses and cleans up the user interface a little. It’s available from the Jolla Store, with the SeaPrint Share Plugin on OpenRepos.
We hope you enjoy this community news, which we’ll continue to refine over the coming months. This is your news, and frankly we can’t always keep up with all the exciting stuff happening in the Sailfish community, so please help us out by replying to this post in the forum if you’d like to see something included.
And do also join us at our community meetings on IRC, Matrix and Telegram. It’s a great place to discuss any of the content you see here, ask questions and share your ideas. The next meeting will be on the 23rd June.