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.


What would I like to see in Thunderbird?

Mozilla Thunderbird, for my needs, is one of only two viable open-source email clients — the other being Evolution — but it has woeful shortcomings. I have been wanting to express my thoughts on what is most important.

Now I am pleased to see Thunderbird’s new Community Manager Ryan Sipes is considering a new future for thunderbird and running a quick poll to “get an idea of where folks are at”. This is the answer I submitted to the main question, “What would you like to see in Thunderbird?”

In priority order:

  1. Proper first-class “conversation view”. Existing plug-ins and options get somewhere towards it but aren’t nearly close enough relative to the bugginess they add.
  2. Drastically clean up the UI, especially all the different search activation UIs (menu, toolbar, “quick filter”) and all the different search results displays that all look and behave infuriatingly differently.
  3. Address book: separation of UI & storage. API: use CardDAV. UI: use CardBook. Storage: assume an external server as the preferred option for most modern situations; support a local store option for “traditional” self-contained installations where TB is the user’s only mail client.
  4. Calendar: separation of UI & storage. API: use CalDAV. (Same considerations as for Address book.)
  5. Message Filters: separation of UI & storage/service. API: use Sieve. UI: look at “Sieve Message Filters” plug-in for a basic example. Only a few open-source-y providers (e.g. FastMail) seem to be offering Sieve so far, so a local filtering service is probably going to be the more common option for now.

We should be facilitating and encouraging the use of open APIs for services such as address book, calendar and filtering.

I also think partitioning these services from the main program is an important part of preparing Thunderbird to be more portable to different environments, especially mobile.

Subversion Hackathon 2017

in Aachen, Germany

Today I am going to meet up with other Subversion developers to hack, talk, invent, fix, inspire.

For those who are volunteer contributors, who may have little time to devote to Subversion usually, the hackathon provides a few days to concentrate on their favourite improvements and fixes, and to bring their ideas together.

For me, employed by Assembla to improve Subversion’s support for modern cloud work flows, this gives me a chance to gather ideas from other developers, bounce my ideas off them and see where they lead, and find new inspirations and enthusiasm.

Shelving and Checkpointing is my focus right now — the ability to quickly save and restore work in progress, without having to commit it to the repository. My initial version of shelving was merged to trunk last week, and Assembla is helping to make it available for users to try. (Download it here — and please let us know what you want it to become.)

Now I have started on checkpointing, discussing the design on the dev mailing list and implementing it on the ‘shelve-checkpoint’ branch. One of the next bits of coding, that I may try to complete during the hackathon, is when restoring or ‘unshelving’ a saved change to make Subversion first check whether any of the files it will touch is already modified in the working copy, so it can warn me that applying the saved changes may conflict.

More important, though, is to come up with longer term directions. One high on my list is the ability to send a locally prepared change to a code review system, and later to commit a change that has been reviewed, like the popular ‘merge request’ or ‘pull request’ work flows. Systems built on top of Subversion including RhodeCode, Rietveld, and Assembla provide these merge-request work flows. What we have now is the opportunity to streamline and standardize how these work, making them more generally available and interoperable.

 

I wonder how my list of topics will have changed by the end of the week.

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.