As we hurtle our way through 2022, it’s always good to look introspectively and see how far we’ve gone, and how our goals have changed1. Earlier in the year, I published our Roadmap for 2022, with plenty of caveats that things may change as the year progressed.
So how are we doing so far, what succeeded, and what failed?
v2 (Webpack 5)
We released v2.0.0 on May 4th, 2022, to much internal fanfare2. It was a big release for us not only symbolically (as we ticked over from 1 to 2), but also technologically, as we took another step towards modernizing our platform to make good on our tagline — a better community platform for the modern web.
Accelerated Release Schedule
A couple versions after v2 was released, we felt the need to adjust how we conducted our releases. Specifically, we wanted to systematically guarantee that patch versions would never break an existing install, and to decrease the waiting time between a bug report and a patched version of NodeBB.
I laid out our rationale for this change here, as well as how things would change for site admins.
v3 (Front-end framework decoupling)
Admittedly, here we bit off more than we could chew. Our initial vision was to allow for theme developers to pick and choose which front-end framework they wished to use. We wanted to incentivise the creation of new themes while reducing our lock-in to a particular framework.
Unfortunately, during the initial brainstorm phase, we ran into an issue that had no clear resolution — the freedom to choose your own framework quite ironically conflicts with the extensible nature of NodeBB.
To clarify what I mean, I will provide an example problem we encountered:
- If we built out a new theme based off of Foundation CSS, it would mean that any bundled plugins would also need to be re-written in that opinionated format. Bootstrap 3 classes (i.e. col-xs-6, hidden-sm, etc.) don’t exist in other frameworks, or are named differently.
- Rewriting the bundled plugin would mean an incompatibility toward Persona v12, which would stay on Bootstrap 3 (for backwards compatibility and design reasons)
- While this could be resolved with separate version branches, there was no way to easily ensure that the proper version was installed for any given theme.
- Additionally, this problem also occurs for any third-party plugins, and we did not wish to place this burden on our third-party developers.
- If we continued down this path, any additional themes utilising additional frameworks would linearly complicate matters. With two frameworks, we’d have twice the work, with three frameworks, we’d have three times the work, etc. — there was no logical way for us to support multiple frameworks without second-order effects that would almost certainly never be fully resolved.
What this ultimately means is that we needed to fall back to our somewhat less exciting solution3: upgrade to Bootstrap 5.
- Persona would be upgraded to Bootstrap 5, and a new major version would be released (hereafter referred to as Persona v13).
- The previous major version (still on Bootstrap 3) would be maintained going forward, with bug fixes backported as-needed. This is necessary as any theme currently based off of Persona is utilising Bootstrap 3. Forcing a dependency upgrade to the base theme (to Bootstrap 5) would be an incompatible change for every existing theme
- Persona v12 would continue to live on in the v2.x branch of NodeBB
- Persona v13 would be shipped with the v3.x branch of NodeBB
v3 (SASS)
As outlined in the initial 2022 roadmap, it seemed that while LESS and SASS were both going strong, SASS has since dominated, especially with it being the primary CSS pre-processor for Bootstrap 4 (and now 5.) Due to that switch, we will also follow suit and update Persona to use SASS in a new major version, along with a corresponding framework upgrade to Bootstrap 5 (see above). This would be a breaking change, but we will continue to maintain the previous version and backport changes, as we have many themes that still rely on Bootstrap 3 Persona.
New Base Theme
At the same time as the Persona Bootstrap 5 upgrade, we are also embarking on a design for a brand new theme, in order to experiment with new design concepts and to start fresh with a blank slate. As we proceed with the design and implementation of the new theme, we will be posting in-progress screenshots for public feedback. We’re all very excited for what the new theme will turn out to be! Stay tuned.
Persona on Bootstrap 3 will continue to be supported
One thing I want to make clear right now is that the Persona theme will continue to be supported. Many site admins create their own themes (or derivations of Persona) for their own customizations, and an upgrade to Bootstrap 5 would throw a huge wrench in the works.
Persona running Bootstrap 5 would be shipped with v3 of NodeBB, while v2 would continue to be maintained via backported bug fixes. We want to allow theme developers to upgrade to Persona(BS5) at their own pace.
We’re very happy with how the Persona theme has grown through the years, and while it serves the community well, there are portions of it that have evolved with the platform, incurring amounts of technical debt that cannot be easily resolved without a fresh start.
The first step in our design is gathering feedback. We certainly have our own opinions on what we want to see, but we want to hear from you — what do you like about the theme, what don’t you like about the theme? Do you think you have a grand idea that will set NodeBB apart4?
Let us know in the comments, or better yet, let us know in our survey, where you can also enter to win a t-shirt and some swanky NodeBB stickers5!
Notes
- This also happens to be a variation on the central thesis of The Gap and The Gain, which I am currently reading through.
- May the fourth be with you! (lightsaber noises)
- By the way, there’s nothing wrong with a boring solution. Sometimes they are the best solutions.
- Unofficially, we have a second motto: “to make things no other forum has”
- We’ll be collecting feedback for the next few weeks (so, we’ll close the survey sometime mid-September, likely.)
Cover Photo by DALL·E, subjectively terrible prompt by Julian.