Matrix's spec and the SocialWG

Hello all!

I had the good fortune to speak to some of the Matrix authors at OSCON.
I hadn't realized how interesting their work was, and how close it was
already to some of the work we're doing.  There's a "living
specification" up:

  http://matrix.org/docs/spec/

At present, the canonical Matrix implementation looks very similar to
what's being done in ActivityPump especially, in that it's mostly about
pushing around json snippets.  However, there are some differences:

 - There are "rooms" which sounds very chat-room-oriented, but in
   reality is very similar to ActivityStreams streams.  Rooms have an
   ACL attached.

 - Rather than Activities, there are Events, but they're similar enough.

 - There are a lot more endpoints at present than in ActivityPump.

 - There is no single server controlling a channel of communication!
   This was really interesting to me.  You can have multiple servers
   connected together via WebRTC or the like.

 - Of course, that immediately leads to the question: how is a stream of
   data represented?  In this case, a room's data is not a list/queue,
   it's a directed acyclic graph, like git or a blockchain.  However, it
   is possible within the protocol to only pay attention to the DAG
   after a certain point... there is no requirement to keep a full DAG
   around for a room to participate, in case you wish to drop old data.
   (Anyway, depending on the ACL of the room, you may or may not have
   access to the past history of the room before you joined.)

   I *really like* this feature!

 - It looks to me that the ActivityStreams spec is a lot more clearly
   defined, as is mechanisms for extensions, but "java-style namespacing
   is possible".

The current canonical implementation is written in Python and Twisted,
but a rewrite is being considered.  Despite some performance issues
which seem resolvable (for instance, data is currently being serialized
from json to a string and then written to an SQL database; not the most
efficient representation, something like jsonb in postgres might be
considered for the future, though the protocol is not tied to this of
course.)

The person I talked to (Matthew Hodgson, technical lead) wasn't
interested in investing the time in social working group participation
but would still be interested in collaboration... I suggested maybe I
could be a liason between the working group and Matrix, and keep Matrix
updated of things of interest to them as they may happen, and hopefully
vice versa.

Thanks all!
 - Chris

Received on Sunday, 26 July 2015 17:57:22 UTC