A circle with a large open source initiative logo at the top and a road leading up to it. At the bottom left, there is a sign showing "50%".A circle with a large open source initiative logo at the top and a road leading up to it. At the bottom left, there is a sign showing "50%".

road to open source

Halfway Point

Illustrated drawing of Amadeus Maxmimilian StadlerIllustrated drawing of Amadeus Maxmimilian Stadler

Amadeus Stadler

June 16, 2024

Just like that, it’s already the middle of June—six months since my journey on the road to open sourcing Mattrbld started. With the year reaching its halfway point, I thought it would be high time for an update on how the process is going and what my progress on that important goal is.

This post is also the first written and published completely in the Vite-based version of Mattrbld—so if you’re seeing this, it means that the newest version is at least good enough for dogfooding, like I did during initial development.

What Happened So Far

The first half of 2024, I was focussed on migrating the project from vue-cli to vite. This transition not only provides a boost in developer experience, but also makes it possible to upgrade all dependencies to their latest versions, creating a fresh and modern base for moving forward. The code-base is well over three years old at this point, and it could use the dusting (and much more of it, to be honest).

While most of the migration went rather smoothly, thanks to a lot of good documentation and information from the Vue community, there were some unforeseen challenges. For example, Webpack polyfilled some things that Vite doesn’t, which unfortunately required additional dependencies to be included in the project.

I also had to rewrite the system that turns a folder full of SVGs into a sprite of optimised icons that you can enjoy throughout Mattrbld’s interface. Thankfully, I had already built a Vite-based system for other projects, so I could resort to that.

And last but not least, I decided to migrate from using Stylus as my CSS preprocessor to SCSS—for two reasons:

  1. SASS/SCSS is more popular and much closer to “regular” CSS, which should make it easier for potential contributors to work with

  2. Stylus support in Vue single file components in VS Code is very basic (bordering on non-existent), which made the developer experience a pain

This migration also allowed me to make use of some modern CSS features like custom properties, which further cleaned the codebase and might make custom theming / white-labelling the CMS easier in the future.

However, going through so many components and updating (and testing) their styles proved to be quite a lot of work, despite some automatic conversions from Stylus to SCSS. I’ve also not had as much time to work on Mattrbld as I would’ve liked to in the past few months, but I finally ported the last bunch of components last weekend. I’m still stumbling over some broken styles here and there, but I hope I’ll be able to iron all of them out in time for the next release.

There’s still plenty I’d like to do to the code, including some bugfixes and perhaps even minor features, but I think for now it’s more important to focus on other aspects of the project. Done is better than perfect, right?

Up Next

A project like Mattrbld is nothing without good documentation and while I’ve managed to document every feature, the current website and documentation aren’t quite up to my standards any more—and they’re built on a dead static site generator. So I will spend the next few months on rebuilding everything in Astro, while adding features such as dark mode for the docs and a search-function to quickly find what you’re looking for in the increasing amount of documents available.

I’m not going to lie, I’ve been looking forward to this for a while now, especially after doing so much “maintenance” type of work for the project.

After the new website is ready and published, all that’ll be left to do (famous last words) is picking a licence and tackling the more administrative portions of open-sourcing the code. These include updating the README, migrating all the issues from my personal to-do list into the public issue tracker, and so on. I also want to do a little more research into what it means (and takes) to steward an open source project properly and productively, so we can be off to a healthy start.

Exciting Times

Looking at how things have been progressing so far, I think it’s safe to say that I’m well on track to publishing this new version and releasing the code by the end of the year—and that’s just the first step! There’s so much left to do and improve afterwards.

Going open source is a big deal for Mattrbld—and for myself. It’ll come with new challenges and hopefully many new opportunities. First and foremost, however, I hope that it can increase the project’s reach and ensure its longevity. I think it’s extremely important to have a headless content management system that supports a broad range of static site generators and Git providers. A CMS that is accessible to all and leaves you in control over your data.