engineering
Mattermost's 10,000 Message Limit and How I Moved to Matrix
January 11, 2026 · 6 min read
When the Castle Gate Closed
Two years ago, setting up the communication stack for an early-stage startup, we had two roads in front of us. One was the closed systems, paid per user in dollars, where the data sits in the cloud and out of your hands. The other was an open setup where we held all the strings ourselves.
When you run a startup in Turkey, cost is not a line item for savings; it is a survival question. Mattermost, with its Community Edition back then, gave us exactly what we wanted: our own server, behind our own firewall, with us as the real owner of the data. Built on Go and React, deeply integrated with GitLab, loved by tech teams. For that day, it was the right call.
Then Mattermost quietly turned Community Edition into “Entry Edition” and put a 10,000 message limit next to it. This is not a technical limit, it is an artificial barrier. Cutting a team off from its past messages is not just restricting a feature; it is locking that team’s memory behind a paywall.
Data Is Not Just Bytes
A company’s data is more than the space it takes in a database. The tone of a message from two years ago, the logic of a decision made during a crisis, the post-mortem written after a failure. They add up to how the company thinks.
This is why I take the memory question seriously. In the heart of Anatolia, at Hattusa, the Hittites carved their victories and their famines alike into clay tablets, because what is not written down is forgotten, and what is forgotten gets repeated. What we call “company culture” today is those clay tablets moved into database rows. Cut off access to your past, and every decision about the future turns into a guess.
So here was my call to make: accept the limit and rent our memory month to month, or take the strings back into our own hands?
Weighing the Options Honestly
We were leaving Mattermost, but for where? Every option had its own snag.
Rocket.Chat looks strong but can get heavy architecturally, and it carries the same potential to push enterprise features like LDAP behind a tighter paywall later. The risk of watching the same film again. Zulip’s topic-based model is great, but the limits on mobile push notifications and the technical cost of self-hosting mean other bottlenecks down the road for a fast-moving team.
It would not be honest to ignore Discord either. If I scored only on user experience and stability, it would beat everyone on the list. But a technology lead’s desk does not say only “ease of use”; “sustainability” and “legal ground” take up as much room as code quality. If you run a startup in Turkey, Discord is not a safe harbor: access blocks, data kept in a closed box and outside the country. Waking up to find your main channel shut by a court order is not risk management, it is your operation simply stopping. I could not leave one uncertainty only to take shelter in another.
A Protocol, Not Software
Matrix and its reference server Synapse came onto my radar. You have to see Matrix as a protocol, not a piece of software. The way email is not owned by a single company, the way you can mail from Gmail to Outlook, Matrix promises that same open ground for messaging.
Let me be honest: I do not cling to Matrix blindly either. Today Element carries most of the ecosystem, and one day they could take the same road Mattermost did. But the decentralized nature of the protocol is an insurance policy. If one server tries to restrict me, moving the data to another server or standing up my own is far easier than escaping a closed system. I have seen enough storms to learn not to fully trust anything in tech. For now, this is the freest option I have.
When the Market Won’t Hand You a Key
The decision was made, but when I looked at the existing bridge tools I found a clumsy setup. Most arrive with configurations that wear you out at install time, and they cannot resume from where they stopped after an error. Manual transfers between servers, half-finished migrations. And a half-migrated archive with broken metadata is, in practice, an archive that never existed.
This is where the maker in me took over. What I needed was a tool that let me run the whole process from my own machine instead of wrestling with remote servers. I could not find it, so I wrote it, letting AI speed up the plan I already had in my head. That is how MatrixMigrate was born.
The tool is still growing. To get a clean start, I set up and delete Synapse dozens of times, chasing the question “where could this break?” every round. Because if I do not lay the foundation of the migration well, I will fight the same memory problem on Matrix tomorrow. The aim is not to throw data from one place to another, but to build a transfer path that checks itself step by step and keeps the error margin small.
Ownership Is Not Paying the Bill
This process showed me again that in tech, ownership is not something you get by paying the bill. Ownership is the control you hold over your data. A few things I wrote down for myself:
- Memory cannot be a bargaining chip. A team’s past should not be held hostage for a price increase.
- Ownership comes from the protocol. Trusting a protocol rather than a single piece of software is the first step toward independence.
- If the market won’t hand you a key, you forge it yourself. What looks “impossible” is often just code that has not been written yet.
Mattermost’s business model pushed us into this move today; similar winds may blow on the Matrix side tomorrow. But a technology lead’s real job is not which harbor the ship docks at, it is keeping the cargo, the company’s memory, safe. For now, we are building our own bridge and walking, with our memory on our shoulders, onto freer ground.
The Turkish version of this piece is here.