Synapse enters beta with the release of v0.5.0!

20.11.2014 00:00 — TechMatthew Hodgson

We're really excited to release the biggest update yet to Synapse (the python/twisted reference Matrix homeserver implementation) - version 0.5.0 is out!

This effectively concludes our alpha testing phase - Synapse's security model is now feature complete and we are now cautiously encouraging people to run their own Synapse installation on the 'net; federate up; and help us squash all and any bugs as we get beta testing.

Synapse 0.5.0 has huge database schema changes from previous versions as we have landed both the event-signing and federation-authorisation branches and so added full cryptographic signing of all matrix events and unified the client-server and server-server model of events/PDUs.  As a result, migrating history is Hard - we recommend a clean start if possible; if not, come talk to us in #matrix:matrix.org.  UPGRADE.rst has the details.

The full changelog is as per below - please upgrade your homeserver or install a new one if you're new here and join Matrix and help us create a robust open distributed messaging fabric for the web!

Changes in synapse 0.5.0 (2014-11-19)
=====================================
This release includes changes to the federation protocol and client-server API
that is not backwards compatible.

This release also changes the internal database schemas and so requires servers to
drop their current history. See UPGRADES.rst for details.

Homeserver:
 * Add authentication and authorization to the federation protocol. Events are
   now signed by their originating homeservers.
 * Implement the new authorization model for rooms.
 * Split out web client into a separate repository: matrix-angular-sdk.
 * Change the structure of PDUs.
 * Fix bug where user could not join rooms via an alias containing 4-byte
   UTF-8 characters.
 * Merge concept of PDUs and Events internally.
 * Improve logging by adding request ids to log lines.
 * Implement a very basic room initial sync API.
 * Implement the new invite/join federation APIs.

Webclient:
 * The webclient has been moved to a separate repository.

Matrix on the road - September to November 2014

13.11.2014 00:00 — In the NewsAmandine Le Pape

Matrix has been showing off in various places these last months. But whilst drowning in the launch we haven't managed to keep the blog updated with what's been going on! We are now much more back on track and able to catch up at last, as well as start on new ground for upcoming events!

So you'll find here a summary of the 4 events Matrix attended in September and October as well as all the presentations we gave!

Disrupt San Francisco (September 6-10)

IMG_4849[1] 

Disrupt SF was the launchpad of Matrix! We participated in the Hackathon as both a sponsor and a competitor (see our live update!), and exhibited at the conference as a Product Sponsor.

Three teams announced that they were using Matrix to build their hack but eventually only Go Social presented their project: a social network for travelers with a very nice UI! Go Social used Matrix APIs to add chat to their platform. The video of Go Social's presentation is here.

Matrix team worked on Animatrix: a chat app allowing you to build your own 3D animated cartoon and share it with any other friend using Matrix-compliant app using Unify. We had to hack together a basic Matrix Android client in order to do the demo .... You can see our project's presentation here!

IMG_4858[1]

The three days conference was great in terms of reaching out to devs and getting good feedback on Matrix! We love seeing people's eyes lighting up and people saying "Eventually someone is doing it!" when we explain what Matrix is about :) So thank you all for your support!

Disrupt Europe (London, UK - October 18-21)

After getting public in SF, Disrupt London was the next steps to release a more stable version of Matrix and encourage even more people to build on Matrix. Again we sponsored both the Hackathon and the Conference and we brought with us a very cool PhantomX robot from Trossen Robotics which was also the price we gave away during the hackathon.

IMG_5019[1]

Two teams pitched a Matrix project at the Hackathon this time:

Hujambo is a very cool chat app allowing you to chat in your native language to someone who is going to read you in their own native language.

Movidiam did a very ambitious hack, modelling the trends of conversation in the Matrix ecosystem and displaying them a force-directed graph visualisation using D3.

Matrix team worked on a MIDI to Matrix bridge allowing to share and display music you play in a chatroom and jam together even if in different places. Here is the demo video:

http://youtu.be/LXDBoHyjmtw

Another great time to meet a lot of interesting people and build partnerships!

WebRTC Summit Europe and Rich Communication Conference (Berlin - October 27-29)

Matrix was a Silver sponsor at WebRTC Summit and the Rich Communication events and it was a great opportunity to show the multiple ways that Matrix can be considered.

The first day was the WebRTC Summit where the focus was on the challenges and next steps of the standard. Matthew presented Matrix explained how it can be used as the missing signaling layer to WebRTC raising lots of questions and interest. You can see the presentation here.

photo

The two next days were focusing more on Rich Communication Services (RCS) and again Matrix didn't go unnoticed, and not only because of the lightspeed presentation from Matthew waking everyone up on Wednesday morning! This time Matthew addressed Telcos and RCS vendors with the compelling proposition of using Matrix as the bridge between RCS/IMS/PSTN and the world of over-the-top applications.  The presentation is downloadable here.

Again some great feedback and lots of animated discussions over the future of the IP communication world!

apex

Sebastian_2

WebRTC Summit (Santa Clara - November 4-5)

Beginning of November Matrix was back on the West Coast  to sponsor the WebRTC Summit, collocated with the CloudExpo. Matthew opened the WebRTC track with another presentation again raising a lot of interest and question, and greatly supported by Hookflash in their following session. The presentation is available here.

And the tour continues: this week Matrix sponsored the TADSummit in Istanbul and next week we will be in San José at the WebRTC World Conference & Expo: meet us there and watch out for the upcoming TADSummit news!

"What is The Matrix?"

05.11.2014 00:00 — ThoughtsOddvar Lovaas

As part of our semi-regular series of having Matrix core team members write about how they see the overall project, here's Oddvar Lovaas' view.  Oddvar helps out with project management and promoting Matrix.

According to the homepage, Matrix is "a new open standard for interoperable Instant Messaging and VoIP, providing pragmatic HTTP APIs and open source reference implementations for creating and running your own real-time communication infrastructure. "

That's all good - but you might be asking yourself "sure, but what can it do?" And more importantly, "what can it do for me?"

The original inspiration for Matrix was to fix the problem of fragmented IP communications, by creating a standard for creating and running your own real-time communication infrastructure. This means that if you want your app or program or website to be able to communicate user to user for example, you can use Matrix. Matrix is the protocol through which your communication packets are sent and received, and we provide HTTP APIs to make it easy to make use of this protocol in your code.

The nice thing here is that the user can to talk to any other user anywhere in the Matrix ecosystem, much like email or the web. For example, let's imagine I have an app whose goal is to keep the user updated on anything happening in the football world. Whenever any news drops in, the app is notified and thousands of users check the app for the news. This app could have a communication element where the users can talk in rooms (maybe a #general room and rooms for each football club) - or even between themselves or in groups of friends. Today, a lot of people would use an IM-client to do this, but with Matrix it wouldn't matter if you use a dedicated IM-app or talk inside the football app - since you are using the same Matrix account, you will get the same conversations in both clients!

In fact, imagine that later on you are chatting with some (non-football) friends on your Matrix-supporting chat-application. You can then easily check the previous conversation to see if anyone's appreciated the great joke you made earlier - without having to go back into the football app.

But Matrix's real potential and ultimate mission is to be a generic messaging and data synchronisation system for the web - allowing people, services and devices to easily communicate with each other with full history. It's easier to visualise the chat-application because we are used to chat-messages going back and to, but there's nothing stopping you from putting other data instead of chat-messages. For example, you could use the Matrix protocol to exchange moves - encrypted and secured, of course - in your Chess-game. In fact, your Chess-game could use Matrix both for chatting and exchanging payloads of data.

Imagine if you open up your favourite chat-application, and your contacts there include other users of the same app and also other Matrix-users (so the app has exposed itself to Matrix). Your friend, however, much prefers a different app, but he can still talk to you over the Matrix protocol. And if he ever moves to the other app (or any other Matrix-supporting app) - he would still have all the backlog and history of the conversation!

Obviously the problem here is that we can't instantly make the various chat-applications support Matrix. We believe if we can encourage and grow a truly open communication ecosystem, users will get used to the availability and benefits of interoperable services and they will demand it everywhere.

Synapse 0.4.2 released!

31.10.2014 00:00 — GeneralMatthew Hodgson

Hi all,

There's been loads of work going on in various branches on Synapse (federation_authorization and event_signing) as we land the final features needed for Synapse to be used in production as a Matrix reference server.  Meanwhile the iOS demo client and SDK has been coming on leaps and bounds too over at https://github.com/matrix-org/matrix-ios-sdk.

However, stuff has also been happening on the main Synapse development branch too, and we've just released 0.4.2 onto master for lots of various goodies - see release notes below.

Please upgrade your homeservers and play with the new client - the new JSON viewing/editing features are particularly useful and interesting for powerusers and developers!

Matthew

Changes in synapse 0.4.2 (2014-10-31)
=====================================

Homeserver:

 * Fix bugs where we did not notify users of correct presence updates.
 * Fix bug where we did not handle sub second event stream timeouts.

Webclient:

 * Add ability to click on messages to see JSON.
 * Add ability to redact messages.
 * Add ability to view and edit all room state JSON.
 * Handle incoming redactions.
 * Improve feedback on errors.
 * Fix bugs in mobile CSS.
 * Fix bugs with desktop notifications.

Alpha builds of native mobile Matrix SDKs available... and Synapse 0.4.1 released!!

18.10.2014 00:00 — GeneralMatthew Hodgson

It's been an incredibly busy few weeks in Matrixland - we've had our heads down rushing to get new stuff ready for today's TechCrunch Disrupt London hackathon.

The big news is that we have our first alpha releases of native Mobile SDKs available today for Matrix for iOS & Android! These are entirely new projects - you can check out the SDKs and demo apps (which implement a basic Matrix chatroom client similar to the webclient demo at:

We still have a lot of polishing and lipstick to apply to these, but it should be a good starting point for folks who'd like to hack on mobile apps for Matrix! We haven't had a chance to generate appledoc/javadoc for these yet, but we'll post them on matrix.org shortly.

There's also been some work going into restructuring our documentation and finalising the spec - all Matrix generic documentation now lives in a new git project at http://github.com/matrix-org/matrix-doc. We're still working on wrapping all the details of the spec into a single canonical document, but it's getting there and should be locked down shortly.

Meanwhile, we're also pleased to announce the new Synapse 0.4 release series of the reference Matrix homeserver. Our focus on Synapse over the last few weeks has been on implementing the remaining pieces of the Matrix security model and getting the server to the point where folks can deploy it properly in production environments.

Synapse 0.4 deliberately breaks backwards compatibility on the server-server federation protocol, as we now cryptographically sign all federation traffic at the HTTP layer (using Authorization headers) in order to have a strong assertion to the identity of the servers which exchange traffic. We can't really use SSL client/server certificates for this as it's incompatible with Synapse deployments which are hosted behind generic SSL loadbalancers.

Meanwhile we have two other major development branches on Synapse which will land shortly - one of which cryptographically signs all events, thus preventing tampering with room history, and the other of which performs strict authorization on all traffic received through federation to avoid malicious events being injected and breaking the consistency of the distributed room. These should be landing shortly - at which point the full security model of Matrix will be implemented in Synapse and we can finally remove the "don't use this in production!" warnings!

API developers: be aware that this release also fixes the confusion over timestamps in the client-server (and server-server) API. Events now have only one well-defined timestamp - event.origin_server_ts; the localtime on the homeserver which first receives a message. This replaces the previous confusing event.ts and event.content.hsob_ts timestamps. This should be a trivial change to implement.

Finally, we've also had a detour into robotics to build our new mascot (Sentinel)... pictures forthcoming shortly!

Thanks for supporting Matrix - please let us know how you get on with the new releases at #matrix:matrix.org!

Changes in synapse 0.4.1 (2014-10-17) ===================================== Webclient:
  • Fix bug with display of timestamps.

Changes in synpase 0.4.0 (2014-10-17)

This release includes changes to the federation protocol and client-server API that is not backwards compatible.

The Matrix specification has been moved to a separate git repository: http://github.com/matrix-org/matrix-doc

You will also need an updated syutil and config. See UPGRADES.rst.

Homeserver:

  • Sign federation transactions to assert strong identity over federation.
  • Rename timestamp keys in PDUs and events from 'ts' and 'hsob_ts' to 'origin_server_ts'.

Who is Matrix.org?

16.10.2014 00:00 — Generaladmin

Matrix.org is a team of around 10 developers working together on the Matrix project, defining the Matrix open standard and developing the opensource reference client and server implementations. Most of the team has day jobs at Amdocs or OpenMarket (who kindly sponsor us to work on Matrix), and we gladly welcome contributors from the wider open source community.

Matrix was started by Matthew Hodgson and Amandine Le Pape whilst building Amdocs Unified Communications, on realising that traditional VoIP and IM standards were insufficient to power featureful apps which can openly federate with one another. Matrix is designed to support open federation for the current and future state-of-the-art in communication apps using a simple web-friendly HTTP API standard. Our dream is to break down the walls between today's communication silos, and make VoIP and IM as ubiquitous and open as email.

Matthew

Matthew Hodgson

Matthew Hodgson is technical co-founder of matrix.org, responsible for defining Matrix's vision with Amandine and moving obstacles out of the way of the team in order to build it. Matthew has spent the last 15 years mainly designing and building various communication solutions on top of an alarming array of different technologies (IRC, IM, NNTP, IMAP, IAX, SIP/RTP, RTMP, XMPP... and now Matrix).

Matthew's day job is running the Unified Communications team at Amdocs, creating communication apps for large mobile network operators (e.g. Blah for TIM Brasil). Previously he ran "The Next Generation" telephony/media team at MX Telecom (acquired by Amdocs in 2010), building a highly distributed SIP softswitch and mobile-optimised WebRTC-compatible graph-based media framework and VoIP stack to power MX's voice and video services. Matthew has also been known to dabble in sysadmin (running MX Telecom's sysadmin team), dubious graphic design and CGI, and wishes he had more time to play piano. He has a degree in Computer Science and Physics from the University of Cambridge, and has previously worked at Accenture, the Rutherford Appleton Laboratory, TheOneRing.net as well as misguidedly co-founding a digital marketing startup in Bahrain. [LinkedIn]

Amandine

Amandine Le Pape

Amandine Le Pape is business co-founder of matrix.org, responsible for defining the Matrix vision with Matthew and then organising the non-technical activities required to support and promote it and make it successful.

Amandine has spent the last 2 years setting up and leading the Unified Communications line of business within Amdocs as a Product Manager, and has more than 10 years of experience in mobile services and telecommunications. She has a degree in telecommunications engineering from Ecole Supérieure de Chimie, Physique et Electronique de Lyon and an EMBA from ESC Rennes. [LinkedIn]

Synapse 0.3.4 released!

25.09.2014 00:00 — TechMatthew Hodgson

Hi all,

Synapse 0.3.4 is out! The main changes here are a huge fleet of bugfixes to the webclient, and the addition of TURN support for VoIP relaying. This makes VoIP/Video call setup much more reliable (although the UI still needs some love).

Meanwhile, we set an IRC bridge (https://github.com/tm604/Matrix-IRCBridge) running linking #matrix:matrix.org and #matrix-dev:matrix.org to their Freenode counterparts (#matrix & #matrix-dev respectively) - much fun to see innocent IRC users assimilated up into Matrix, and for us to now be using Matrix for /all/ our development chat and interaction (whether it's through a Matrix client or an IRC client).

To upgrade to the latest homeserver, just git pull && ./synctl restart. If you want to start playing with VoIP in earnest on your own homeserver, you'll need to install a TURN server - see docs/turn-howto.rst for details on how to set one up.

http://matrix.org/alpha has already been upgraded to 0.3.4, so feel free to play with all the new stuff there.

thanks,

Matthew

Changes in synapse 0.3.4 (2014-09-25)

This version adds support for using a TURN server. See docs/turn-howto.rst on how to set one up.

Homeserver:

  • Add support for redaction of messages.
  • Fix bug where inviting a user on a remote home server could take up to 20-30s.
  • Implement a get current room state API.
  • Add support specifying and retrieving turn server configuration.

Webclient:

  • Add button to send messages to users from the home page.
  • Add support for using TURN for VoIP calls.
  • Show display name change messages.
  • Fix bug where the client didn't get the state of a newly joined room until after it has been refreshed.
  • Fix bugs with tab complete.
  • Fix bug where holding down the down arrow caused chrome to chew 100% CPU.
  • Fix bug where desktop notifications occasionally used "Undefined" as the display name.
  • Fix more places where we sometimes saw rooms as IDs rather than aliases.
  • Fix bug which caused lag when entering text in the text box.

Synapse 0.3.3 released

22.09.2014 00:00 — TechMatthew Hodgson

Hello world,

Synapse 0.3.3 was released today, concentrating on both feature & stability improvements on the webclient. The big news is that 1:1 video calling via WebRTC is implemented (although we're still working on some stability issues, and Synapse doesn't support TURN yet. This will be coming in the next few days however!).

Play with the demo server at http://matrix.org/alpha, or update your own homeserver with a git pull && ./synctl restart or by cloning a new checkout with git clone https://github.com/matrix-org/synapse.git

--Matthew

Changes in synapse 0.3.3 (2014-09-22)

Homeserver:

  • Fix bug where you continued to get events for rooms you had left.

Webclient:

  • Add support for video calls with basic UI.
  • Fix bug where one to one chats were named after your display name rather than the other person's.
  • Fix bug which caused lag when typing in the textarea.
  • Refuse to run on browsers we know won't work.
  • Trigger pagination when joining new rooms.
  • Fix bug where we sometimes didn't display invitations in recents.
  • Automatically join room when accepting a VoIP call.
  • Disable outgoing and reject incoming calls on browsers we don't support VoIP in.
  • Don't display desktop notifications for messages in the room you are non-idle and speaking in.

Synapse 0.3.2 released

18.09.2014 00:00 — TechMatthew Hodgson

We just pushed out a major new release (0.3.0) of Synapse: the current reference Matrix homeserver, swiftly followed by some hotfixes (0.3.1, 0.3.2).

The big changes are:

  • Change the VoIP setup API to be more efficient (bundling together media stream candidates into a single setup object). API breaking change!
  • Change the Registration API to be more consistent. API breaking change!
  • Lots of nice usability refinements to webclient - e.g. per-message notifications; cursor-key history navigation; faster room loading
  • More bugfixes and stability fixes on the homeserver

Please reload the page if you're lurking on http://matrix.org/alpha to pull in the new webclient.

If you're running a homeserver - please upgrade with a quick git pull && ./synctl restart.

If you're not running a homeserver... why not? ;D

--Matthew

Changes in synapse 0.3.2 (2014-09-18)

Webclient:

  • Fix regression where an empty "bing words" list in old accounts didn't send notifications when it should have done.

Changes in synapse 0.3.1 (2014-09-18)

This is a release to hotfix v0.3.0 to fix two regressions.

Webclient:

  • Fix a regression where we sometimes displayed duplicate events.
  • Fix a regression where we didn't immediately remove rooms you were banned in from the recents list.

Changes in synapse 0.3.0 (2014-09-18)

See UPGRADE for information about changes to the client server API, including breaking backwards compatibility with VoIP calls and registration API.

Homeserver:

  • When a user changes their displayname or avatar the server will now update all their join states to reflect this.
  • The server now adds "age" key to events to indicate how old they are. This is clock independent, so at no point does any server or webclient have to assume their clock is in sync with everyone else.
  • Fix bug where we didn't correctly pull in missing PDUs.
  • Fix bug where prev_content key wasn't always returned.
  • Add support for password resets.

Webclient:

  • Improve page content loading.
  • Join/parts now trigger desktop notifications.
  • Always show room aliases in the UI if one is present.
  • No longer show user-count in the recents side panel.
  • Add up & down arrow support to the text box for message sending to step through your sent history.
  • Don't display notifications for our own messages.
  • Emotes are now formatted correctly in desktop notifications.
  • The recents list now differentiates between public & private rooms.
  • Fix bug where when switching between rooms the pagination flickered before the view jumped to the bottom of the screen.
  • Add support for password resets.
  • Add bing word support.
  • Update VoIP implementation to use new API

Registration API:

  • The registration API has been overhauled to function like the login API. In practice, this means registration requests must now include the following: 'type':'m.login.password'. See UPGRADE for more information on this.
  • The 'user_id' key has been renamed to 'user' to better match the login API.
  • There is an additional login type: 'm.login.email.identity'.
  • The command client and web client have been updated to reflect these changes.

Synapse v0.2.3 released

13.09.2014 00:00 — TechMatthew Hodgson

We're back home from TechCrunch where we had a great time arguing the pros and cons of Matrix versus XMPP with anyone and everyone - thanks to all who came to talk to us!

Meanwhile, Synapse v0.2.3 was released yesterday: the emphasis this week has been on improving stability issues on the server, and lots of cosmetic and functionality fixes on the webclient.

If you're running a homeserver, please upgrade asap - upgrading has never been easier - assuming you've checked out the master branch, simply:

git pull
./synctl restart

...and you will be up and running on 0.2.3. We keep the master branch tracking the latest release.  http://matrix.org/alpha is already on the latest release should you wish to experiment first!

Alternatively, if you're installing from scratch, try:

git clone https://github.com/matrix-org/synapse.git
python setup.py develop --user
./synctl start # to generate a default config
./synctl start # to actually set it running

and then head over to http://localhost:8008 to play with your very own Matrix homeserver!

Changes in synapse 0.2.3 (2014-09-12)

Homeserver:

  • Fix bug where we stopped sending events to remote home servers if a user from that home server left, even if there were some still in the room.
  • Fix bugs in the state conflict resolution where it was incorrectly rejecting events.
  • Many stability fixes

Webclient:

  • Display room names and topics.
  • Allow setting/editing of room names and topics.
  • Display information about rooms on the main page.
  • Handle ban and kick events in real time.
  • VoIP UI and reliability improvements.
  • Add glare support for VoIP.
  • Improvements to initial startup speed.
  • Don't display duplicate join events.
  • Show message sent/sending state via opacity
  • Multiline message sending support
  • Many other bug & stability fixes