Redecentralize Conference - taking back the net

19.10.2015 00:00 — General Oddvar Lovaas

rdc15 This weekend, I went to the first Redecentralize Conference. I thought it was a good mix of traditional tech talks and sessions where we discussed how to make people aware of why the net needs to be decentralised. There were a lot of interesting people and we had some really thought-provoking discussions. Sessions in the main room were filmed and can be found here.

I did a talk on Matrix in one of the tutorial rooms, and it was great to see people with lots of questions and comments in the session. If you missed the talk - or have further questions: the FAQ might have the answer, or maybe the Spec itself - and there's always #matrix:matrix.org where you can find me and the whole matrix team.

At the end of day-panel on the first day, the question "are there any projects that are ready for mass adoption" was posed, and Ira picked Matrix as her answer, which was great to hear. We have come a long way in the last year, and I think Matrix now has "enough" features to be a realistic option for your IM/VoIP and group chat needs.

I really enjoyed redecentralize and hope it will be repeated! Thanks to the redecentralize.org gang for arranging it!

Android Matrix Console 0.5.1 released!

07.10.2015 00:00 — General Oddvar Lovaas

Following from the addition of voice and video calling in the previous release, we have added some new features and fixed more bugs - and released v0.5.1 of the Android version of the Matrix Console app.

Please note that installing this update will log you out of the app and require you to sign in again!

This release includes:

  • Support for self-signed certificates
  • Support for recording and sending video messages
  • We have improved the performance when you resume the app
  • We fixed a bug where a picture/video would disappear after rotation
  • Fixed several reported issues/crashes - for the full list look at the CHANGES files in the console and SDK projects

Get it now from the Google play store!

Enjoy! And please do let us know your feedback in #matrix:matrix.org!

Congrats to our TADHack Matrix Winner!

06.10.2015 00:00 — General Oddvar Lovaas

A weekend of intense prototyping and hacking at TADHack-mini Chicago is over, and we were very happy to again see some really interesting projects using Matrix!

Team 'Vivo' - Nestor Bermudez and Arin Sime - used Matrix, Tropo, and Telestax to create an Apple Watch app that notifies your loved ones when you are having a heart attack. Find more information here - and a recording of their presentation here. This project won the Telestax prize.

Charles Solar and Jiang Shuyang used Matrix and Flowroute resources for a platform independent app called 'Samaritan' which allows users to post help requests like "I got a flat tire!" or "My computer crashed!". Others can then call / text / video chat with them to solve their problem. A video of their presentation can be seen here. This hack won the Flowroute prize.

Vladimir Beloborodov demoed his award-winning Matrix-hack from WebRTC Paris: using Matrix just to set up a WebRTC connection between his iPad and robot, thus proving that you can have a robot with telepresence functions without having to depend on a remote server - see his demo here.

Adnan Baleh, Caterina Lazaro, Javier Garcia, Ernesto G. Grabwosky, Sergio Gil and Marion Le Callonnec - Team 'ProbatioNerds' - created a mobile Matrix app to control the provided Trossen Robotics HR-OS1 Humanoid Endoskeleton robot over the Internet - even making it dance the Macarena! Presentation video can be seen here. We awarded team 'ProbatioNerds' the TADHack Matrix prize - an HR-OS1 - and we hope the team and the robot will keep learning new tricks and moves!

[caption id="attachment_1307" align="aligncenter" width="1024"]Daniel presenting the HR-OS1 to team 'ProbatioNerds' Daniel presenting the HR-OS1 to team 'ProbatioNerds' (Photo courtesy of Alan Quayle)[/caption]

We keep being impressed by the quality of projects developed at TADHacks - remember, in practice you only have around 12 hours to work on your hack. Congrats to all who participated - and thanks to Alan for arranging it!

TADHack Chicago - October 3-4

23.09.2015 00:00 — Events Daniel Wagner-Hall

TADHack ChicagoMatrix is sponsoring another TADHack, this time TADHack mini in Chicago on October 3-4. Come hack something cool together using Matrix, either in Chicago or remotely! At past TADHacks we've seen a robot controlled with Matrix, collaborative web page viewing with Matrix as the underlying protocol, and more.

HR-OS1 Humanoid EndoskeletonAs well as being lots of fun, we've teamed up with Trossen Robotics to offer a HR-OS1 Humanoid Endoskeleton for the best hack using the Matrix standard. The HR-OS1 is a hackable, modular, humanoid robot development platform designed from the ground up with customization and modification in mind. With a Raspberry Pi 2, webcam, wifi, bluetooth, and all of the limbs you expect for a human, there's a lot of scope for exciting projects to be had with it!

I for one would love to ask an open source robot to bring me snacks over chat. (Wow that's a sentence I never thought I would be able to say) I'll be on site, (and also hanging out in on Matrix in #matrix:matrix.org) to help out with whatever creative things y'all come up with - I hope to see you there!

Also in Chicago the following week I'll be giving a tutorial on Federated Identity as well as attending and speaking about the problem of fragmented communication at the IIT Real-Time Communications Conference & Expo.

If you're going to be around, please do say hi - I only recently joined the Matrix team, and there's a lot of people I've yet to meet - I look forward to seeing you at one (or all) of these events!

Matrix Console iOS 0.5.3

21.09.2015 00:00 — General David Baker

Heads up that we've just pushed the big red release button on Matrix Console iOS 0.5.3. This includes a bunch of updates to MatrixKit that you can take advantage of in your MatrixKit powered app. These include:

  • Animated Gif support! banana
  • Support for pasting images, videos and documents into the input field
  • Inclusions of matrix IDs when searching
  • Options to customise the thumbnail thumbnail display box
You can see the full MatrixKit change list in CHANGES.rst.

Happy GIFing!

Upcoming conferences

18.09.2015 00:00 — Events Oddvar Lovaas

The Matrix bandwagon goes on, and we have several conferences and events lined up in the next few weeks.

First up is TADHack mini in Chicago, October 3-4, where Matrix is sponsoring and handing out prizes to the best two hacks using Matrix in some way or another. The previous TADHack mini and the Global TADHack were both excellent events where we saw some really cool hacks - we are looking forward to see what people will put together this time!

Also in Chicago, a couple of days later, is the IIT Real-Time Communications Conference & Expo - October 6-8 - where we will be exhibiting and speaking about the problem of fragmented communication.

At the same time, we will also be represented at Elastix World, in Bogotá, Columbia, October 7-8, where Matthew is one of the keynote speakers! Matrix is also sponsoring this event.

Finally, we will be in Orlando, Florida for AstriCon, October 13-15. Matrix is sponsoring this conference as well, and we also have a speaking slot.

If you are going to any of these events, please do say hi - we are looking forward to talking to both old and new acquaintances! See you there!

VoIP calling now supported in Android Matrix Console!

10.09.2015 00:00 — General Oddvar Lovaas

The Android Matrix Console app has been updated to v0.4.4, and now supports voice and video calling! Get it now from the Google play store!

In addition to the new voice and video support, and all the related call management, this release includes:

  • One-tap "autocomplete": clicking on a displayname inserts that into the message box
  • Click on any (textual) event to copy its content
  • The app can now be installed either in device memory or on the SD card
  • Notifications can be enabled per room
  • Fix for an edge-case where messages could be duplicated
  • Fixed several reported issues/crashes - for the full list look at the CHANGES files in the console and SDK projects

Enjoy! And please do let us know your feedback in #matrix:matrix.org!

Matrix: One year in.

07.09.2015 00:00 — Tech Matthew Hodgson

Hi all,

Just realised that the release of Synapse 0.10.0 on Sept 3rd 2015 was precisely one year from the initial launch of Matrix. As such, it feels only right to have a quick update on where we've got to so far, and where we expect things to go from here!

Back at the original launch, all we had was a very rough and ready Synapse homeserver, an early draft of the spec, and precisely one client - the Angular webclient, much of which was mainly written at the last minute on the plane to TechCrunch Disrupt SF (and has never quite recovered :S). From this initial seed it's been incredibly exciting and slightly scary to see how much things have advanced and grown - the big headlines for the past year (in roughly chronological order) include:

  • Making Federation Work:
    • Switching all of federation over to SSL, using perspectives for key management
    • Crypto-signing all the events in a room's message graph to assert integrity
    • Sorting out 'power levels' and 'auth events' to allow totally decentralised kicks/bans/etc to work in an open federated environment
  • Decentralised content repository and thumbnailing
  • Reference mobile "Matrix Console" clients for iOS and Android
  • Official client SDKs for iOS and Android - both at the API wrapping layer and the reusable UI component layer
  • Push notifications for APNS and GCM (both on server & clients)
  • Official client SDKs for JavaScript, Python and Perl
  • Typing notifications
  • The sytest integration test harness
  • Proper WebRTC support for VoIP, including TURN.
  • Application Services and Bots - actually letting Matrix defragment communications :)
    • Bridging to all of Freenode, Moznet and other IRC networks
    • Matrix<->SMS bridge from OpenMarket
    • SIP bridges via FreeSWITCH and Verto
    • Parrot Bebop Drone <-> Matrix bridge via Janus
    • ODB2 telemetry <->  Matrix bridge via Android SDK
    • Reusable bridging framework in Node
  • Many iterations and refinements to the spec, including designing v2 of the client SDK
  • Switching from Angular to React for all of our web-client development
  • Customisable skins and embedding support for the matrix-react-sdk
  • End-to-end encryption (not quite formally released yet, but it's written, specced and it works!)
  • VoIP support on mobile (landed in Android; still experimenting with different WebRTC stacks on iOS)
  • History ACLs
  • Delivery reports
  • Switching from access_tokens to macaroons for authentication (not yet released)
  • Lots and lots of performance work on Synapse, as we've tried to get the most out of Twisted.
...and last but not least, the evolution of the #matrix:matrix.org community - including loads of 3rd party clients, SDKs and application services, synapse packaging and even experimental home servers :)

Overall the last year was an exercise in actually fleshing out the whole ecosystem of Matrix and getting it to a stable usable beta acceptable to early adopters. The plan for the next 12 months is then to make the transition from stable beta to a properly production grade environment that can be used to run large scale services used by normal end-users. In practice, this means:

  • A major rearchitecture of Synapse.
    • Synapse currently has no support for horizontal scaling or clustering within a single instance, and many will have seen the performance problems we've hit with a relatively monolithic Twisted app architecture. Profiling deferreds in Twisted has been a particular nightmare.
    • During September we are starting the process of splitting Synapse apart into separate services (e.g. separating reading eventstreams from writing messages) both to allow horizontal scalability and to experiment with implementing the services in more efficient languages than Python/Twisted.
    • We will continue the normal Synapse release process in parallel with this work.
  • Ensuring Matrix can support a genuinely excellent UX for normal end-users on glossy clients, and supporting glossy client development as required.  The days of Matrix being just for powerusers are numbered... :)
  • Switching to use 3rd party IDs as the primary means of referring to users in Matrix, hiding matrix IDs as a feature for powerusers and developers.
  • Finishing the spec. You may have noticed the spec has been quietly evolving over the last few months - finally gaining a versioning system, and with larger chunks of it being automatically generated from formal API spec descriptions. We will be finishing off and filling in the remaining holes.
  • Improving the documentation (and FAQ!) on matrix.org in general by switching to a git-backed jekyll system for all the staticish content
  • Replace the Angular-based reference webapp bundled with Synapse entirely with a matrix-react-sdk based reference app, and providing better examples and documentation for using it to embed Matrix functionality into existing websites.
  • Moving to v2 of the client-server API. This fixes some significant limitations in the v1 API that everyone's been using all year, and should improve performance significantly for many use cases (especially when launching apps). The v1 API will hang around for a very very long time for backwards compatibility.
  • Writing *lots* more bridges and integrations to other protocols, now we have a nice framework for rapidly developing them.
  • General security audits and double-checking the security model.
  • New features, including:
    • Multiway VoIP and Video conferencing, most likely using FreeSWITCH's new conferencing capabilities via an Application Service bridge (should be ready very shortly!)
    • Getting E2E crypto reviewed/audited and putting it live across the board.
    • Adding VoIP to iOS
    • Implementing delivery reports in all clients
    • Improving how invites work (ability to reject them; metadata about where they came from)
    • Search API
    • Improved file management
  • ...and an awful lot of bug fixing as we work through the backlog we've accumulated on JIRA.
Hopefully this won't take up all year(!) and is just a beginning - there's a huge list of interesting ideas beyond this baseline which we'll be looking at assuming the core stuff above is on track. For instance, we need to work out how to decentralise the identity services that mapping 3rd party IDs to matrix IDs. We need to work out how to avoid spam. And it could be fascinating to start bridging more internet-of-things devices and ecosystems into Matrix, or decentralising user accounts between homeservers, or perhaps using Matrix for synchronising more sophisticated data structures than timelines and key-value state dictionaries...

Finally, we also want to save as much time as possible to help support the wider community in building out clients, services and servers on top of Matrix. Just like the web itself, Matrix is only as useful as the content and services built on top of it - and we will do everything we can to help the pioneers who are interested in colonising this brave new world :)

Huge thanks to everyone over the last year who have supported us - whether that's by creating an account and using the system, running a homeserver, hacking on top of the platform, contributing to the core project, enduring one of our presentations, or even paying for us to work on this. The coming year should prove incredibly interesting, and we hope you'll stay and bring along all your friends, family and colleagues for the ride as the adventure continues!

Matthew, Amandine & the whole Matrix.org team.

Synapse 0.10.0 is released!!

03.09.2015 00:00 — Tech Matthew Hodgson

Hi folks,

Whilst the blog has been a bit quiet, we've actually had an incredibly busy summer refining Synapse, building the new matrix-react-sdk and example apps, building an entirely new matrix-appservice-bridge framework for rapidly creating Matrix<->other-protocol bridges, getting end-to-end encryption ready for primetime and lots more fun stuff as we keep chipping away to take Matrix out of beta. We'll write about all of these once they're ready, but right now the big news is that after 6 release candidates we have a major new update for Synapse out today - version 0.10.0. This also includes 0.9.4, which we never quite got around to releasing and ended up skipping from 0.9.4-rc1 straight to 0.10.0-rc1.

The release focuses mainly on performance, bugfixes, and infrastructure work to support forthcoming features like end-to-end encryption, read receipts, etc. Some of the more exciting new features include preset ACLs for room creation; history visibility ACLs; SAML2 single-sign-on login (courtesy of Ericsson, thanks guys!), filename support when sending files, support for specifying a canonical alias for a room, support for intermediary SSL certificates, etc.

The full changelog is below.

To upgrade, go read https://github.com/matrix-org/synapse/blob/master/UPGRADE.rst - to install for the first time, go to https://github.com/matrix-org/synapse/blob/master/README.rst.

Changes in synapse v0.10.0 (2015-09-03) =======================================

No change from release candidate.

Changes in synapse v0.10.0-rc6 (2015-09-02)

  • Remove some of the old database upgrade scripts.
  • Fix database port script to work with newly created sqlite databases.

Changes in synapse v0.10.0-rc5 (2015-08-27)

  • Fix bug that broke downloading files with ascii filenames across federation.

Changes in synapse v0.10.0-rc4 (2015-08-27)

  • Allow UTF-8 filenames for upload. (PR #259)

Changes in synapse v0.10.0-rc3 (2015-08-25)

  • Add --keys-directory config option to specify where files such as certs and signing keys should be stored in, when using --generate-config or --generate-keys. (PR #250)

  • Allow --config-path to specify a directory, causing synapse to use all \*.yaml files in the directory as config files. (PR #249)

  • Add web_client_location config option to specify static files to be hosted by synapse under /_matrix/client. (PR #245)

  • Add helper utility to synapse to read and parse the config files and extract the value of a given key. For example::

    $ python -m synapse.config read server_name -c homeserver.yaml localhost

    (PR #246)

Changes in synapse v0.10.0-rc2 (2015-08-24)

  • Fix bug where we incorrectly populated the event_forward_extremities table, resulting in problems joining large remote rooms (e.g. #matrix:matrix.org)
  • Reduce the number of times we wake up pushers by not listening for presence or typing events, reducing the CPU cost of each pusher.

Changes in synapse v0.10.0-rc1 (2015-08-21)

Also see v0.9.4-rc1 changelog, which has been amalgamated into this release.

General:

  • Upgrade to Twisted 15 (PR #173)
  • Add support for serving and fetching encryption keys over federation. (PR #208)
  • Add support for logging in with email address (PR #234)
  • Add support for new m.room.canonical_alias event. (PR #233)
  • Change synapse to treat user IDs case insensitively during registration and login. (If two users already exist with case insensitive matching user ids, synapse will continue to require them to specify their user ids exactly.)
  • Error if a user tries to register with an email already in use. (PR #211)
  • Add extra and improve existing caches (PR #212, #219, #226, #228)
  • Batch various storage request (PR #226, #228)
  • Fix bug where we didn't correctly log the entity that triggered the request if the request came in via an application service (PR #230)
  • Fix bug where we needlessly regenerated the full list of rooms an AS is interested in. (PR #232)
  • Add support for AS's to use v2_alpha registration API (PR #210)

Configuration:

  • Add --generate-keys that will generate any missing cert and key files in the configuration files. This is equivalent to running --generate-config on an existing configuration file. (PR #220)
  • --generate-config now no longer requires a --server-name parameter when used on existing configuration files. (PR #220)
  • Add --print-pidfile flag that controls the printing of the pid to stdout of the demonised process. (PR #213)

Media Repository:

  • Fix bug where we picked a lower resolution image than requested. (PR #205)
  • Add support for specifying if a the media repository should dynamically thumbnail images or not. (PR #206)

Metrics:

  • Add statistics from the reactor to the metrics API. (PR #224, #225)

Demo Homeservers:

  • Fix starting the demo homeservers without rate-limiting enabled. (PR #182)
  • Fix enabling registration on demo homeservers (PR #223)

Changes in synapse v0.9.4-rc1 (2015-07-21)

General:

  • Add basic implementation of receipts. (SPEC-99)
  • Add support for configuration presets in room creation API. (PR #203)
  • Add auth event that limits the visibility of history for new users. (SPEC-134)
  • Add SAML2 login/registration support. (PR #201. Thanks Muthu Subramanian!)
  • Add client side key management APIs for end to end encryption. (PR #198)
  • Change power level semantics so that you cannot kick, ban or change power levels of users that have equal or greater power level than you. (SYN-192)
  • Improve performance by bulk inserting events where possible. (PR #193)
  • Improve performance by bulk verifying signatures where possible. (PR #194)

Configuration:

  • Add support for including TLS certificate chains.

Media Repository:

  • Add Content-Disposition headers to content repository responses. (SYN-150)

Upcoming events

06.08.2015 00:00 — Events Oddvar Lovaas

After a successful visit to OSCON in Oregon last month, Matrix is this week represented at Clue Con in Chicago. We have a speaking slot later today - see the full schedule here. However, this time, we will be calling in remotely from London, but what better way to demonstrate video calling than by using it?

More upcoming events include Fosscon in Pennsylvania (August 22nd), where we have two talks scheduled, and ElastixWorld in Columbia (Oct 7 & 8), where we are participating as a keynote speaker. We hope to see you there!

As always, for questions or comments - or just to say hi - please join #matrix:matrix.org using your favourite Matrix-client!