Part I - Can it run OpenOffice?
My first job in Germany was for this T-Labs project: an innovative online-first, browser-based operating system which promised to make it simple for enterprises to manage the devices for their mobile workforce. The OS was based on Linux and Firefox and it offered a pretty standard set of features: users would have an SSO system and login directly to their office intranet through a VPN connection where they would get access to their web applications, base software updates would be delivered transparently; and any on the device would be encrypted. In theory, even if someone lost their device they could be re-issued a new one and continue their work without any worry.
We’ve built quite a lot of interesting components for that: custom Firefox profiles to substitute Linux login screens, specialized network managers that ensured users always had the best connection and didn’t need to know anything about its setup, extensions to display widgets that would usually be provided by base desktop environment (e.g, clock, network status, mounted usb), etc.
The project was already over an year in development after it got one interested customer. After the demo, they were enthusiastic about the product and its direction, but they had one important requirement:
Can it run OpenOffice?
All of the “secure access to the intranet” was useful, but they already had re-trained their workforce when they moved from MS-Office to OpenOffice, they were not interested in doing that again. Their intranet could give them access to the files, but the real work would be done at the device running OpenOffice.
When talking with their tech people, They pressed our management a bit: what happens if the user wants to upload a file and they don’t have internet access? Oh, the file gets to the local filesystem and is later synchronized, then why not do like Dropbox and have all documents in the local filesystem?! Then you could also run OpenOffice!
Part II - KISS’ing my entire contact list (management)
In my quest to de-google my digital life, I was looking for an
alternative to Google Contacts, specifically one that was easy to use
with my de-googled Android
phone. Being no stranger to self-hosting
services, I started to look into what were the most commonly used
alternatives and found that Nextcloud
provided a CalDav/CardDav server. A few docker-compose
commands
later and I had it nicely running on my home server.
Something didn’t sit right with the idea, though. Nextcloud does a lot of things that can substitute Google services, but would I even use them? All I cared about was my contact list. I already have an email provider with its own calendar server, I don’t use Google Docs and most of my “work documents” are git repositories - which by its very nature are easy to synchronize between computers. Sure, I’ve also later found radicale, which seems to be focused only on being Cal/CardDav server, but did I really need a whole web application just to keep some files in sync between my different devices?
The answer: of course servers are not needed, you can sync the files in a structured format which will then then allow your Android apps to work as a contact provider.
So now my phone may have 99 problems but at least contact management ain’t one.
Part III - Stream me not.
How does a stream-service-denier listens to music in 2021?
This is what I would do for my music collection of ~10000 songs and ~175GB of high-quality mp3 and FLAC files in different ways:
-
When at home, I connect to the NFS mount on my NAS that have all the music files and I can play with my local media player.
-
My laptop has a large-ish SSD, so I can have a music folder managed with Syncthing and all the songs are also there for me to listen.
-
For my phone, I’d upload my music to Google so that I could choose what to download to my phone later… and then I wake up in a jolt, realizing Google killed once-again a service that was useful.
Oh, well… I wanted to de-google anyway. So let’s look at the alternatives:
- Subsonic - “Your complete, personal media server”
- Ampache - Music Streaming server
- Jellyfin - enables you to collect, manage, and stream your media.
- Funkwhale - A social platform to enjoy and share music
Noticing a pattern?
I ended up installing Jellyfin and Funkwhale. Funkwhale claimed support for Subsonic API anyway and Jellyfin also had some android clients. As long as these clients had offline support and worked similarly to Google Music, I would be satisfied again.
Did it work?
Unfortunately, no. I’ve tried three different Subsonic players for Android which claimed offline playing ability along with the jellyfin client. None of them were able to save the downloaded songs to external storage, even with all relevant permissions granted. They only worked with internal storage and/or when using their own player. Songs that were downloaded by any one client would not be visible to an external media player.
So, we have four different projects all working on their own separate nice web
applications, when all I really wanted was to run OpenOffice
Metro?.
Everything is (still) a file.
The common thread around all experiences above: the premise that we need to have applications running on the cloud is broken. We accepted this because it made it easier for developers to distribute their software, not because their software is necessarily better for us.
What we need is to have a device-transparent way to see our data. We got so used to the idea that web applications let us work from “dumb terminals” that we failed to realize that there is no such thing as a dumb terminal anymore. With multi-core smartphones, many of them with 4, 8, 12, 16GB of RAM; it’s not too hard to notice that the actual bottlenecks in mobile devices are battery life and (intermittent and still relatively expensive) network connectivity. These are problems that can be solved by appropriate data synchronization, not by removing the data from the edge.
One of the early jokes about web2.0 was that to have a successful company you should take an Unix utility and turn it into a web app. This generation of open source developers are reacting to this by looking at successful companies and building “self-hosted” versions of these web apps. What they didn’t seem to realize is that we don’t need them. The utlities and the applications still work just fine, we just need to manage the data and how to sync between our mobile/edge devices and our main data storage.
If you are an open source developer and you are thinking of creating a web app, do us all a favor and ask yourself first: do I need to create yet-another silo or can I solve this with Syncthing?