Gearing Up for a Summer of Code (Again!): GSoC 2025 Acceptance
It’s that time of year again, and I’m excited to share that I’ve been accepted into Google Summer of Code 2025! This will be my second time participating in GSoC with the MetaBrainz Foundation, and I’m looking forward to diving into a new project.
Back for More!
For those who followed my journey last year, you’ll know I had an amazing experience developing a new email service with internationalisation support for MusicBrainz. The opportunity to contribute to a project I care about, improve my skills, and collaborate with the MetaBrainz community was fantastic.
This year, I’ll be tackling a different challenge: building a Matrix Archiver (codenamed ‘libretto’).
The Project: Archiving Matrix for Posterity
Since MetaBrainz migrated its primary communication from IRC to Matrix, there’s been a need for a better way to archive chat history. While the trusty BrainzBot (an IRC-based logger) has been bridging the gap, it’s time for a Matrix-native solution.
My GSoC project aims to create a service that will:
- Act as a Matrix ‘bot’ to record all messages in designated rooms.
- Produce portable, human-readable HTML archives of these conversations.
- Faithfully represent Matrix features like replies, redactions, reactions, and media.
- Store a backup of message content in a PostgreSQL database and provide a search index using Tantivy.
The goal is to create an archiver that is not only functional but also resilient, ensuring that valuable community discussions are preserved and easily accessible for years to come, even if the primary Matrix server encounters issues.
You can read the full details in my GSoC 2025 Proposal (Rust edition).
Choosing the Right Tools: Evaluating the Tech Stack
Deciding on the technology stack is important for any project. For libretto, after evaluating both the Matrix ecosystem and taking into account the preexisting knowledge of the MetaBrainz team, the primary language choice came down to Rust or Python. I drafted proposals for both, which helped clarify the trade-offs.
With both technology stacks, what was achievable was very similar. Everything needed to do the project was available in both languages, and performance wasn’t a particular concern, so it came down to evaluating more qualitative properties.
Ultimately, we made the decision to use Rust because of the long-term sustainability of the Matrix ecosystem in Rust and the benefits of a strong backwards compatibility guarantees and typing system. I hope that this helps guarantee that this service will be able to run long into the future.
Do you want to participate?
This project is primarily for MetaBrainz’ needs - But they’re not the only open source project using Matrix! If you’re interested in this project and how it could help your community, I would love to hear from you. I’m @jade:ellis.link
on Matrix and you can find me in the rooms for libretto, MetaBrainz and Continuwuity.
What’s Next?
The official coding period kicks off in June, but as many of you know, my university exams ran through most of May. I’ve already started some groundwork and prototyping. Now that exams are over, work will begin in earnest.
I’m grateful to my proposed mentor, julian45, the rest of the team, and the MetaBrainz community for this opportunity. I’m looking forward to another summer of learning, coding, and contributing.
Stay tuned for updates as the project progresses! I intend to share some cool and exciting stuff.