The Open Source Story Behind Mattermost Boards
Mattermost Boards started as an innovation project that came up during a hackathon we held in late 2020.
At Mattermost, we’re focused on helping the world build better software by aligning teams, tools, and processes. We work like most other software development teams do, with stuff all over the place — in chat, emails, Google Docs, and systems like Jira and GitHub.
With information scattered across these places, we often resorted to spreadsheets for project management, which wasn’t the right tool for the job by any stretch of the imagination. We found Jira too heavyweight for our use case, so we began searching for a better solution: something that was open source, lightweight, and could be self-hosted.
At this point, we realized that there was nothing on the market that met these requirements. It was our eureka moment, so two Mattermost developers — Chen Lim and Jesús Espino — started hacking some React and Golang code together, and a project called Focalboard was born.
How building Mattermost helps us build Boards
Since Mattermost is a more mature project, it takes a lot more time to incorporate new features because you have to do everything in a stable and highly secure way.
As a brand-new project, Focalboard enabled us to play around with many technologies and concepts and iterate rapidly to see what worked and what didn’t. We were also able to leverage code from the Mattermost platform to build Focalboard, copying-and-pasting good patterns for things like APIs and databases — which, to us, is one of the more magical things about open source software.
Since we already had a proven working environment with Mattermost, we took advantage of the architecture to build Focalboard. We also copied a lot of ideas, concepts, and structures from it. This process helped Focalboard evolve rapidly to become the Boards product that ships today as an integral part of the Mattermost Platform – less than a year after the hackathon project.
Behind the scenes on a key design decision
One of the most interesting things about the Boards project is the idea of a lightweight server and a heavyweight client. A lot of Boards data is stored in blocks, which are interpreted by the client-side; the server-side doesn’t do much. In general, we took a more modular approach to development — there are more libraries, more services, and more separation around the different functionalities.
Those familiar with Mattermost code will feel comfortable in the Boards code because they’re pretty similar. At the same time, however, the libraries, modules, and packages for Boards are smaller and more well-defined in the API.
Due to this design, Boards has a much smaller server footprint and consumes far fewer resources; the client handles many processes.
How building Boards helps us build Mattermost
As we began building Boards, one of our guiding philosophies was not to reinvent the wheel, so we leaned on things already battle-tested in Mattermost.
To this end, we used the same databases — PostgreSQL, MySQL, and SQLite — and followed the practices Mattermost had already established (e.g., around security).
At the same time, we also had to build the functionality that Mattermost didn’t have. For example, we had to add the ability to have multiple people collaborate on the same board in real-time and see the same thing. We also had to add the ability to undo and redo actions, which isn’t a big deal for chat but is an entirely different operation for kanban-style project management.
Today, the Boards team shares all learnings during vibrant, technical conversations with our colleagues as we build Mattermost together. As the Boards product matures, these collaborative dialogues are becoming more robust, nuanced, and always centered around the developer experience ‘cause that’s us, too!
Looking ahead: What’s next for Boards?
When we first built Focalboard, we quietly released it to the community with no particular expectations. For the first few weeks, nothing happened. Then one day in March, Focalboard was shared on Hacker News, and the project took off from there.
The community response has been tremendous — which has absolutely inspired us, and we are very grateful for all the contributors who have shared ideas and added to the project. At the time of writing, Focalboard has nearly 5,000+ stars on GitHub, and the platform has been translated into 18 languages.
We’ve also integrated Focalboard into Mattermost, starting with Mattermost v5.36. With Mattermost 6.0, Boards is a core component of the full collaborative platform alongside Playbooks and Channels. Boards has helped us align teams, communicate plans, manage projects, and run team meetings both internally and with the open source community.
As we continue building Mattermost, we’d love to hear how you use Boards, your feature requests, and what is most valuable to help you do your best work. To get involved with the project, check out the GitHub repo and stop by our ~Focalboard community channel to say hello. You can give all of Mattermost a try on the Community server or start a Cloud Trial to explore deeper. See you soon!