Welcome to release week!
I want to start off with a retrospective of the Persona theme — why it factored in to the Harmony theme project, what we aimed to achieve, etc.
Some of this was highlighted back in September, in our design preview, but I did not go into further details about how Persona influenced our decision.
Considerations re: Persona
The elephant in the room is why we decided to start fresh, and not continue to iterate on Persona. It's a very good question that deserves a proper answer.
As originally written in my internal high-level writeup:
Our current theme (Persona) has been developed organically over time, with new additions [often] made without the oversight of a designer. Additionally, we do not have a consistent design language and style guide. Different parts of the site have different design influences based on who developed it. Over time, this style of development has led to a theme that is functional, but not cohesive.
In addition to the above, we wanted to make the jump from the now-outdated Bootstrap 3 base (on LESS), to Bootstrap 5 (on SCSS). Doing so already necessitated an audit (and oftentimes a rewrite) of every template in Persona, and a rewrite of every stylesheet used. Even prior to the decision to work on a new theme, we were finding artifacts in Persona that showed its age: fallbacks for Internet Explorer 8, design decisions that were naive in retrospect, among many others.
The prevailing wisdom is to never rewrite your codebase from scratch. While we're definitely not rewriting NodeBB core, the front-end is a significant piece of the overall puzzle, and I will be the first to admit that we took a gamble here.
Did we go too far? Did we not go far enough? Did we miss anything in Harmony that Persona has?
At least on that last point — most definitely. Again, as per Joel:
The idea that new code is better than old is patently absurd. Old code has been used. It has been tested. Lots of bugs have been found, and they’ve been fixed.
It is a given that Persona contains fixes that Harmony does not. It does mean we'll run into them again (and we have already run into a number). What we're hoping here is that the perceived benefit will far outweigh the initial teething pain of a brand new theme.
What we do know already is that continuing to iterate on a Bootstrap 3 era theme in a Bootstrap 5 world would mean each individual feature would take longer, and that that debt builds over time.
All this is not to say that we dislike Persona. A great number of our clients use Persona, and will continue to use Persona, even once they upgrade to v3. Persona has served us — and will continue to serve us — well. The theme will continue to be supported by the NodeBB team.
The original impetus — the user profile
What started it all was the need for a refreshed user profile page.
As per a different internal document, and audit revealed the following problem areas:
- Sub-pages are hidden inside of the overflow menu, which has a discoverability problem (label A in Appendix A screenshot)
- The"profile stats" (profile views, posts, followers, etc.) seem too front-and-center for something that is at-most glanced at occasionally (label B in Appendix A screenshot)
- Conversely, items like "website" and "location" are more noteworthy but are rather muted in their presentation. (label C in Appendix A screenshot)
- “Feed” style display of user posts is actually two lists on top of each other: The user’s “best” posts, and the user’s “latest” posts. Only the latter need be kept in the re-designed page.
- The current design does not make the best use of available negative space, we’d be looking for a more efficient presentation of the elements on this page.
Once we took that critical eye to the user profile page, we started seeing other areas that needed improvement. At that time, we were still firmly aboard the "continue iterating on Persona" train, but what ultimately changed our mind was our revised long-term planning meeting. We identified the need to upgrade core aspects of NodeBB (that being our minifier and front-end framework), and those structural projects dovetailed nicely with the need to rework portions of the Persona theme.
To give a rough timeline for all of this:
- We had our roadmap meeting on 14 February 2022
- The original user profile audit was started on 16 February 2022
- NodeBB v2 was released on 4 May 2022
- We reached out to @vladstudio in July of that year
While I am relieved to (soon) wrap up this latest chapter culminating in the release of v3, we have not closed the book on NodeBB development quite yet — we will continue as we have always done, by iterating on our code, tackling technical debt, and making sure that NodeBB remains one of the top community forum platforms available.