Home User Seeks Modular Matrix Hosting

This week the Matrix core team launched hosted Matrix servers at Modular.im.

This is excellent news as I expect it will boost the take-up of Matrix. I would like to see organizations using Matrix in place of IRC, Slack, etc. The early adopters are likely to be those into open source such as (I hope) the Apache Software Foundation, although perhaps commercial organizations are more likely to pay somebody else to run a hosted service.

But there is a catch, at present. Using your own domain name is only offered on Modular’s large plans. I think this is a mistaken policy.

My reasons for embracing Matrix can be summarized as “Own Your Own Identity and Data“. It is essential to identify myself using my own domain name — @julian:foad.me.uk — and not by choosing a username or subdomain in a domain controlled by the provider company.

I believe it is essential for the future health of Matrix that we encourage users to bring their own domain name. That will teach users about decentralization, empower them to change their hosting provider, and encourage developers of other software in the ecosystem to embrace decentralized design. If we expect users to default to registering on a large central server, then the system is in danger of degenerating into an almost centralized future where many bridges, integrations, and other ecosystem components would only support the the large central servers, and most users would feel like it was just another silo. That would be a failure.

If you register your interest in Modular’s future smaller plans, you may receive a survey invitation, as I just did. I took the opportunity to let them know my thoughts. If you care about this sort of thing, perhaps you could do so too.

How Firefox Login Could Teach Own-Your-Identity

If there’s one thing that reinforces the expectation that BigCorp controls my data, it’s a login like this:

You can use your own sync server if you are prepared to configure the sign-in procedure like this:

To configure desktop Firefox to talk to your new Sync server, go to “about:config”, search for “identity.sync.tokenserver.uri” and change its value to the URL of your server with a path of “token/1.0/sync/1.5”:

identity.sync.tokenserver.uri: http://sync.example.com/token/1.0/sync/1.5

That’s if you ever guessed it was possible and went looking.

I would love to see Firefox promote owning one’s own identity and data, by prominently displaying the option to use one’s own server. An example from Matrix:

Matrix login

Matrix: click my user id to contact me

I was mentioning my Matrix user id in my last blog post, and I wanted to mark it up as a hyperlink so that readers could click on it to contact me through Matrix. Or rather I want that to be possible in general.

Shall I use a “matrix:” URL scheme?

    matrix:@julian:foad.me.uk

or microformats?

    <span class="p-matrix">@julian:...</span>

Perhaps a URL scheme is a good place to start. How will software know to act on it? Before it’s universally implemented, we might expect to install a browser plug-in to act on it. What should it do? Bring up the user’s preferred Matrix message composer, if and when such a thing is configured in the user’s operating system (as is nowadays common for email links and some other kinds of links). Alternatively, bring up a “compose” action in some web UI that the plug-in knows about, such as https://riot.im/app/ .

Has anything like this been declared or implemented yet?

A partial answer:

    https://matrix.to/#/@julian:foad.me.uk

brings up a web site offering ways to connect to my user id in Riot (using a direct link) and others that don’t support direct links. The Riot link is

    https://riot.im/app/#/user/@julian:foad.me.uk

and the page has a link to issue #455 tracking this problem.

My own Matrix id

Another step in my personal quest to own my own (online) identity and control my own data.

One of the most important Internet developments these days is the Matrix. Think about how email is not controlled by any single provider: you can message any other user of the system, no matter which company you choose to host your account, and no matter what software you use to access it, commercial or open-source, free or paid. Matrix is like that, but for instant messaging and voice/video calls (and potentially much more).

This week I set up my own copy of the Matrix server software at home. Why? Not because I like running servers — I’d rather somebody else did it for me. What I do want is ownership of my user identifier. Just as now I use an email address
    julian@foad.me.uk
instead of one like …@gmail.com that’s totally under the control of a third party, so too I now have a Matrix id in my own domain
    @julian:foad.me.uk

Right now, running my own server is the way to achieve that. In future it should be possible to register an account with my own user identity on a server run by somebody else. For email, I use julian@foad.me.uk but I don’t run the email server software on my own domain, I pay another company to host it for me. That option is not yet mature in Matrix.

I would like to detail how I set up my server but although I got it working I can’t recommend the way I did it this time. I’m going to set it up again, and this time I will use https://github.com/spantaleev/matrix-docker-ansible-deploy which appears to be by far the best available guide or method.


Sandstorm & Giftr: Sharing among a Group

“Giftr” is an extremely simple gift-list app: I write a list of things I want, share it with other people (my family, friends), and the other people in my group can add comments that all of them can see but I can’t see. Each person in the group can similarly write their own list.

The author released it as a Sandstorm app. Sandstorm handles user identities, login, and sharing of “grains” of data. A grain is a smallish unit of my data, such as a photo album, managed by exactly one app, that I might or might not share. Sharing means giving another user access to my grain, and that access could be anything from full privileges to add, edit and delete data (photos, metadata, etc.) or any lesser level of access such as just commenting on existing photos. What levels of shared access are offered depends on how the app has been programmed.

As a demo app for Sandstorm, Giftr doesn’t work in the right way. It creates a grain (my grain, owned by me) which it calls a “Giftr group”, which not only holds my list but also invites the other members of my group to create their lists inside it, inside my grain.

Instead, when Giftr invites the friend (with whom I shared my grain containing my list) to create their own list, it should create it in a new grain that they will own, and reciprocally share access to that grain back to me.

Furthermore, if I have already shared with a group (more people than just that friend), the new grain should automatically be shared with the same group of people, in order to make joining the group work in the same easy way that it currently works inside Giftr.

Now, this is where I wonder if Sandstorm needs to add support for sharing to a group, or if enough mechanism is available that it could be programmed within the app. It depends on exactly what we mean by “a group”. My grain may be able to tell the friend’s new grain the set of people to whom my grain has been directly shared, at this moment. But the way we expect a group to behave is that when we invite a new member to join the group, all members will be equally linked. The group membership list must therefore be agreed between all members, so either the membership list is a single distinct object (perhaps owned by one member, perhaps not) or the members each keep their own membership list and have a way to synchronize. This surely is a well known general problem in computer science, with well known solutions.

Does Sandstorm already have something, or if not then what solutions could fit into Sandstorm?

My Own Video Calls

For a long time I’d been looking for free (libre) alternatives to Skype. I think I’ve found what I’m looking for.

The French seem to have a passion for liberty, and have done some good work in this area. I’d heard of Framasoft last year and then I listened to a talk from them at FOSDEM. [*]

What they have done is taken many open-source software services in the realm of personal information management, such as shared calendar, address book, photo sharing, and blogging; and packaged them into “Frama-” branded services that they encourage French people to use. Some are very popular.

For video calling they have FramaTalk.

For each service, as well as running a server for free (gratis) public use, they also encourage anyone else to install and run the same software on one’s own server: there is a button leading to instructions for doing so, on their front page, under “Cultivez votre jardin”.

The open-source software behind FramaTalk is called Jitsi Meet. It sets up a WebRTC video call between the web browsers of two or more participants. To use it you just visit the server home page and choose an identifier (“le nom du salon”) which can be a random string such as it suggests, or any word you type, so I choose “julian” for example, and it appends that to the URL. Or you can go straight to that URL in the first place, as that’s all the home page does.

(Google Chrome and Mozilla Firefox already support WebRTC. If you are using Internet Explorer or Safari you will need a WebRTC plug-in such as Temasys. Safari automatically prompts you to download it, and then installing it is quick and easy. I haven’t seen what IE does. Apparently a website needs to be “tweaked” to use such a plug-in. I expect Framatalk has the tweak.)

When your browser requests the page from that address, the Jitsi Meet server running on framatalk.org serves the small web page that presents the user interface, and also reveals the addresses of other browsers that are currently connected to the same “room”. The actual video and audio and text chat then goes directly between your browser and the other participants’ browsers, not through the Framatalk server. Roughly speaking that’s how WebRTC works. As a consequence, the server can be very lightweight.

My next step is to install an instance of Jitsi Meet on my own server, so that instead of using framatalk.org I can talk at an address I own — talk.foad.me.uk for example.

I’ll write about that in another post.

Go on, give Framatalk a try!


* (The speaker had his slides in French and was talking English and saying how he wanted to invite the wider world to join in the efforts. I’m thinking of offering my help in providing an English translation of the text on some of their sites. Maybe.)

There’s an Ad for That

“Did you know, there’s an app where you can arrange your photos in a grid and get it printed as a poster? The app’s icon is a pretty butterfly …,” said a friend.

“Wait,” I wanted to say, this smells like a particular company’s advertising wrapped up in an initially appealing but surely very limited functionality, designed to suck you in to their marketing. Don’t you know you can arrange your photos in a grid with any general-purpose editing software, and there are lots of companies who will print the resulting image for you?

So what you mean is “There’s an Ad for That”, an ad-app.

I’m reminded of a Weetabix promotion that I fell for as a 1980s child — send in three tokens plus postage cost and get a free computer game, “Weetabix versus the Titchies”. The game arrived (on a very short cassette tape) and was trivial and boring, like a first try before the author figured out what would make it either fun to play or visually pleasing.

But let’s think about why this mindset is prevalent.

I didn’t say what I wanted to say, because I know there isn’t an ideal alternative at the user’s fingertips. I know lots of programs (apps) exist that can arrange images in a grid. I’m equally sure it would be a comparative hassle for an ordinary user to do this task with them. Why would smartphone users turn to general-purpose software when ad-apps are so easy? And why should they?

You want to be careful about getting into the habit of downloading special-purpose apps that do trivial things. The app store managers try to check that each app is honest, but trivial ad-apps are quick and easy to write and will be submitted in ever increasing numbers and bad ones will slip through the net more and more often. Unfortunately this line of argument never has persuaded most people.

Instead we need to make the open alternative solutions easy to access. We should be making sure that open-source or at least non-vendor-tied general apps are provided and widely known, and that basic simple programmability is built in, like how you could turn on any 1980s home computer and immediately type “PLOT 20,20 : DRAW 20,40 : CIRCLE 10” and the computer would draw a lollipop. How many people know how to instruct a smartphone (or even a desktop computer) to do a simple task like that, but one relevant to today’s needs, such as forwarding your photos from WhatsApp to your online photo web site? Why are the means to accomplish such tasks not readily accessible and clearly described in the smartphone’s help screens?

It’s really not a problem to have and use an ad-app that sells photo grid posters. That’s not my point. I don’t suggest you uninstall that particular one. What interests me is the social mindset about such things, where it may lead, and what software development directions might help to redress the balance.

Permit me to end on a stretched simile. Trying to understand the sociology of what’s going on in the world of ad-apps, perhaps we could compare it with the popularity of quick-fix nutritional supplements: here’s a pill you can buy that’s all natural and will make you happy and energetic (yeah, right). Some people selling some of those some of the time is mostly harmless, just as long as our society isn’t taken in as a whole and mostly continues to recognize the true healthy options, and to have those options widely available in the shops.

Decentralized Web Summit — Lightning Talks

Here is one of the best resources I have found so far to hear about the exciting new technologies which may underpin the next phase of the World Wide Web.

Go to the Decentralized Web Summit home page, scroll down to the “June 9th, Meetup” section, and watch the lightning talks (5- to 10-minute presentations) about decentralized web technologies such as IndieWeb, micro-payments, and the Inter-Planetary File System.