We recently adopted NodeBB as our software of choice for building the Netdata Community. We have many good reasons for why we wanted to provide our community with a proper home online, but I wanted to cover some of the technical reasons for choosing NodeBB for our platform, and the many parallels between the NodeBB and Netdata projects, which was certainly a driving force behind this decision.
At Netdata, we believe that complex problems are best solved by awesome tools. And, yes, what is “awesome” is a bit subjective! But for us, awesome means something like Netdata: free, open-source software; software that is democratic, extensible, customizable, easy to use, and ethical; software that keeps the user in control. And that is how we see the NodeBB project.
Open source and extensibility are often key differentiators in software selection. Since NodeBB is open source and very modular (also like Netdata), we believe that, even if we have advanced and somewhat non-standard requirements from the software (which yes, we already do), these qualities would allow us to extend and modify NodeBB in a way that would work for us, while still retaining a high level of control and visibility into what’s going on under the hood.
In software, extensibility is key, and should be considered an important part of basic functionality. Open-source software makes extensibility much easier by allowing users to learn about the project and then contribute directly. But when that open-source software is built from the get-go with modularity in mind, completely new approaches to complex collaboration become possible, often resulting in a successful ecosystem of preferably free and open-source mods or plugins.
Since NodeBB is a Node.js project, it relies heavily on npm for extensibility. I think at this point it is safe to say that npm is one of the more successful package managers out there, and NodeBB’s ability to easily install themes and plugins directly from npm, as long as they are packaged properly, was very important for us. We tested it extensively, at least for the use-cases we had.
One such case was the brand-specific custom theme for the Netdata Community. This was going to be more involved than a simple color or Bootswatch skin, but because we have limited time and resources, we also wanted to make sure we can easily keep up with upstream updates to the default Persona theme we forked. So far, so good, and even though we do plan to make quite a few UI improvements in the future, including support for dark mode, I think it should not be too time-consuming for us to stay up-to-date with upstream. And yes, pull requests are welcome!
Another important consideration was support for single sign-on through Google and Github, as these are the two SSO methods we already supported in Netdata Cloud. Both were easy to implement with out-of-the-box plugins already available in npm for NodeBB. Going forward, we also want to be able to provide a Netdata Cloud SSO option, and based on our testing this will also be easy to implement when the time comes to integrate it with the Netdata Community.
Since Netdata is an open source project, functional email support for notifications, digests, and replies was quite important to us, as many open source developers still prefer the email list experience.
And, of course, there is an entire laundry list of quality-of-life features we implemented quite easily, largely using out-of-the-box plugins: polls to gather feedback, question-and-answer topics for user support, Github and Twitter integration, and markdown support.
Each of these features has been selected to meet the needs of our community, which has many SREs, developers, home lab users, open-source advocates, and others. NodeBB has allowed us to take a community-first approach, because easily installable plugins exist for each of these features. What makes this great is that, because the plugins are also open source, we can easily contribute to them, or, if needed, fork them and publish them via npm, or even provide a way for our users and contributors to do so easily. Extensible FOSS projects rock!
Last but not least: The team behind the NodeBB project is responsive and very friendly to open-source projects; they provided great help with setting up our new community. Thank you!