Twitch live streams of Ruma development

If you were linked here from Twitch chat, you probably want the FAQ at the end of this post.

This week I started live streaming development of Ruma on my Twitch channel. Surprisingly, I've never mentioned Ruma on my blog here! Ruma is a project I started in late 2015 to implement the Matrix communication protocol in Rust. It's been slow going, for a number of reasons, but in the last few months development has picked up again. Partly to motivate myself to continue working on it, and partly because I love to teach and help other people learn to program, I decided to start doing live streams of my work on the project. I did a couple of streams on the topic more than two years ago (and sadly only managed to save the recording of one of them), but I plan to do them more regularly now. I've already announced that I'm doing this on Twitter, reddit, and in the Matrix chat room for Ruma, but I'm doing it here as well, to have a central place to link to when talking about the streams.

If all you want is to check out the streams (or the recordings that are archived on YouTube after the fact), here are the relevant links:

If you were linked here from the chat on Twitch during a stream, the FAQ below is what you're here for. These are the most commonly asked questions on the stream, and to avoid repeating myself on-stream too much, this information is provided here to bring you up to speed. I'll keep this post updated over time if/when the most frequent questions change.

Frequently asked questions

Q: What is Ruma?

A: Ruma is a Matrix homeserver, client, and supporting libraries written in the Rust programming language. You can dig into the details of Ruma on the Ruma website.

Q: What is Matrix?

A: Matrix is an open specification for an online communication protocol. It includes all the features you'd expect from a modern chat platform including instant messaging, group chats, audio and video calls, searchable message history, synchronization across all your devices, and end-to-end encryption. Matrix is federated, so no single company controls the system or your data. You can use an existing server you trust or run your own, and the servers synchronize messages seamlessly. To get a better understanding of what Matrix is and why you should care, check out the Introduction to Matrix on the Ruma website.

Q: What is Rust?

A: Rust is a systems programming language from Mozilla built with safety, concurrency, and performance in mind. Its novel approach to memory safety and its rich type system make it an excellent choice for writing fast, secure, and reliable programs. Learn more about Rust on the Rust website. If you're ready to start learning Rust, the book is where everyone starts, and it's a fantastic resource.

Q: What type of software is Rust good for?

Rust was designed largely for use cases where you would otherwise have used C or C++. This means that it's suitable for high performance, low-level software, including kernel modules or even full operating systems. Rust also includes a lot of niceties from higher-level programming languages that have become popular since C and C++ were first introduced, so it's also a totally reasonable choice for people coming from languages like Ruby, Python, and JavaScript.

Q: Can I do web development in Rust?

Yes, but the ecosystem of libraries and frameworks is still pretty young. The best resource for learning about Rust's suitability for web development is Are We Web Yet?. Notably, asynchronous programming in Rust has been under heavy development, but is about to gain significant traction, as the long-desired async/await feature finally reaches Rust's stable release channel in November 2019. See Are We Async Yet? for details about this.