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.)