2023 Roadmap Update
-
Hello everybody!
I meant to post this weeks ago, but some significant life events got in the way () and as it turns out I've completely forgotten how much of a time sink those little ones can be
That said, on with the news!
On 21 May 2023, the NodeBB team met up to conduct their semi-regular roadmap meeting. This meeting was the second part of a two-part series, the first being a retrospective on the past year's work. If you have been around this past year (two years), you'll have noticed some big changes as we launched v2.0 and more recently, v3.0.
The purpose of the roadmap meeting was to formalize and clarify the direction of NodeBB. There were many years where NodeBB's journey was directionally-challenged; we wilfully and often let our own whims dictate what to pursue.
Another high-level goal of the roadmap meeting is to plan out the next few successive releases of NodeBB, and what larger projects we could possibly expect to see achieved when tied to a rough release schedule.
A couple highlights that you could expect to see in the coming months:
A Revamped ACP
We've tasked @vladstudio with a re-design of the admin control panel. We're hoping to have the ACP maintain visual compatibility with Harmony, our new default theme, as well as fix a couple minor, long-standing, issues that we've just learned to live with over the years.
If you're running the latest code in the
develop
branch, you'll already be able to see itEdit: While this topic was sitting in my drafts, @baris went ahead and finished up the ACP refresh! See more glamour shots on the v3.2.0 release notes, and experience it live by upgrading your NodeBB
More tech debt repayment
There were a number of items that caught our attention years ago, that needed addressing. Two particular ones:
-
component
is the attribute used to discriminate against different element sets in NodeBB. Technically this does not validate against HTML validators as the proper attribute should bedata-component
.- We decided not to pursue this one, as there was no perceived benefit, but only pain (as it would break a lot of plugins and themes). It is not conceivable that html as a markup language will change so much that invalid attributes would block rendering. Simply put, decades of the internet would have to be rendered inaccessible before our use of
component
became an issue.
- We decided not to pursue this one, as there was no perceived benefit, but only pain (as it would break a lot of plugins and themes). It is not conceivable that html as a markup language will change so much that invalid attributes would block rendering. Simply put, decades of the internet would have to be rendered inaccessible before our use of
-
The second tech debt issue pertains to our language strings. Each string has a key, and those keys are used in the templates themselves. As the internationalization effort continued over time, new keys were added, but we never formalized the key structure.
- Some keys use
camelCase
, and some usekebab-case
. - We'll want to formalize these in such a way that existing translations are preserved
- Some keys use
Federation (via ActivityPub)
We wanted to address a common problem with starting a forum from scratch — how do you solve the chicken and egg nature of community building?
You don't have posts if you have no users, and users don't tend to join if you don't have posts.
Conversely, how can we as forum providers lower the "activation energy" (if you'll allow me to borrow a physics term) of a community launch, and jumpstart community growth?
Up until now the traditional advice has been to create content, even if you're the only one talking. Still others hook in data feeds (via RSS, and others) to automatically populate forums with content. Many forums are able to bootstrap this into a thriving community, and get the ball rolling over time.
The key is building and maintaining that "content engine". Content begets content, and oftentimes there is a tipping point that can be reached where the content generated by your users is enough to hook in new users.
... but what if you could short-circuit that entire process, and plug in to a wider universe of content just ready to be interacted with? Enter ActivityPub.
The ActivityPub protocol is the underlying technology that networks an entire web of sites under a common method of communication. Collectively called the fediverse (federated universe), these sites all talk to each other freely because they were designed to do so. Blogs, microblogs, Facebook-style social networks, Instagram style photo-sharing sites, the list goes on!
We're hoping to add forums to that list
Re-designed Group Chats
We plan to turn our attention to the chat system as well!
When originally designed, chats were a replacement for the "DMs" (direct messages) ubiquitous in older forum softwares. We added real-time capability to this, and styled it more like chats.
We later added in the ability to maintain chat "rooms" with multiple users, although the actual implementation was less than ideal.
@baris will be rectifying this oversight with an in-place refactor that will allow for more granular permissions, public and semi-public rooms, and — get this — a "create chat room" interface. Kind of important, huh.
-
-
Congrats if I'm reading it right on the new arrival! It's the best thing.
-
@julian said in 2023 Roadmap Update:
Re-designed Group Chats
We plan to turn our attention to the chat system as well!When originally designed, chats were a replacement for the "DMs" (direct messages) ubiquitous in older forum softwares. We added real-time capability to this, and styled it more like chats.
We later added in the ability to maintain chat "rooms" with multiple users, although the actual implementation was less than ideal.
@baris will be rectifying this oversight with an in-place refactor that will allow for more granular permissions, public and semi-public rooms, and — get this — a "create chat room" interface. Kind of important, huh.
Hooo great news
These functionnality replace the shoutbox plugin I guess or it will be something else ?
-
@julian said in 2023 Roadmap Update:
component
is the attribute used to discriminate against different element sets in NodeBB. Technically this does not validate against HTML validators as the proper attribute should bedata-component
.- We decided not to pursue this one...
Just curious, can you explain more where this component attribute is used? And does it still function the same if not called data-component?
-
@eeeee sure!
If you look at the source of this page, you'll see them in the html. They're present in the template files and are used in the client side code to find specific elements (in addition to using things like class names and identifiers).
They would function exactly the same no matter what they were named, it's just the change itself that is troublesome, since it would instantly break every older plugin or theme that relied on the old name.
-
@julian said in 2023 Roadmap Update:
since it would instantly break every older plugin or theme that relied on the old name.
And also custom css. Certainly true in my case as I have multiple classes where I use
component
to provide direct attribution to css elements without it targeting other elements that it shouldn't.