Odysseus

2nd Jun 2018 — Adrian Cochrane

Encouraging a More Open Web via a Stronger App Ecosystem

Native vs Web, it’s a heated argument. But perhaps it’s not an argument we should be having.

If we want the open web to succeed over centralized platforms, we need the web itself to take on some of their features. And native apps can help with that!

Besides if the reason you want the Open Web to succeed is because it’s built on open standards, elementary OS is as well. It, and most operating systems other than Windows, Mac OS X, Android, and iOS follow the POSIX and FreeDesktop.Org standards. Which means that while Odysseus caters specifically to elementary OS, it should still work great on any of those other systems.

Extending the Web with native apps

Odysseus has long used native apps to open (most) anything other than a webpage or HTTP(S) link. That is mailto: links opens Mail’s compose dialog, xmpp: links could open an instant messenger, magnet: links could start the download in Torrential, etc. This already works today.

But there’s an adoption hurdle. If you don’t have, say, Torrential installed your magnet: won’t do anything.

Fixing the adoption hurdle

It’s been argued before that the way to fix this adoption problem is to build the features1 into the browser. But doing so would significantly increase the complexity of Odysseus, making it harder for you to learn and significantly harder for me to develop. And as such it would detract from me making Odysseus the best web browser I can accomplish, besides it’s against the elementary HIG.

So instead I improved the error messages (and error reporting) so that they smooth out this adoption curve a little. Now the relevant error pages show a grid of compatible apps you can install, and clicking on one shows more information about it in your package manager (i.e. the elementary AppCenter).

So now the adoption hurdle is just a single straigtforward decision, and two clicks to get past it. Not that bad!

Technical details

These app recommendations will work on any operating system2 which supports the FreeDesktop.Org AppStream standard. Which ofcourse includes elementary OS’s AppCenter.

Behind the scenes the error messages are implemented as Prosody templates which embeds a new template tag which in turn fetches information from an XML database (as per the AppStream standard) to render via a second Prosody template. Furthermore I used the MIME Info standard (another XML database) to show human readable descriptions of these filetypes and URI schemas where possible, and the Icon Theme, Desktop Entry, and MIME Application specs to refer to the correct package manager no matter which it is. So while it may look like I’m referring specifically to the AppCenter in Odysseus, I actually am not.

The latter two of those standards are the same ones I’ve been using all along to open otherwise unknown filetypes and URI schemas.

This all really serves to illustrate that free desktops like elementary OS are fully built on open standards, just as much as the Web. And at no point in developing this feature could I get away from from thinking about at least one open standard.


  1. Things like feedreaders and instant messaging.
  2. Specifically relating to the package repository and package manager components

@ 2018-06-02 21:54:15 +0000


Talk Page for App Suggestions — Odysseus Development Blog