We've always liked to think that NodeBB is pretty fast in comparison to other forum softwares out there — our code has been reasonably tight, and of course building on Node.js doesn't hurt. When one of our newest hires said "Hey, I think NodeBB can be faster," who were we to say no?
"If you think it can be faster, make it faster."
... and you know what? He totally did.
NodeBB v1.6.0 features a completely re-written templating engine, Benchpress. The gentleman responsible for it is our newest dev team member, Peter Jaszkowiak (a.k.a. PitaJ). Peter posted a detailed explanation of Benchpress on our community forum, but the tl;dr version is: it's way faster.
Here's Julian's take on Benchpress:
We load tested NodeBB v1.6.0 with ApacheBench, a standard load testing tool that gave us some good metrics to gauge increases in throughput from one version to another.
v1.5.2 had a requests per second score of 7.98, while v1.6.0 can boast a requests per second score of 24.30, a 204.5% increase1. We're beyond thrilled with this boost in throughput and are excited to see it in action in v1.6.0.
Going forward, we're likely to switch our load-testing strategy to Loader.io for a more objective result2.
What else does v1.6.0 bring?
In addition, 1.6.0 features better looking templates for automated emails, such as confirmations and digests.
The IP Blacklist has been updated to record analytics and allow integration with third-party plugins (e.g. nodebb-plugin-blacklist-country). Some spammers were getting past our automated filtering due to manual intervention (these are some very dedicated spammers!) so some drastic action had to be taken to block entire countries from forums. This is not an ideal solution but works as a temporary measure.
There is also now a post approval queue for new users.
Other changes include:
- Bug fixes and security enhancements -- we recommend all NodeBB users upgrade to this version to make sure they are protected against possible security exploits
- Widgets will now render on cold load, enhancing SEO by ensuring that widget content is read by search engine crawlers
- Ability to place HTML and Text widgets on specific categories, instead of just site-wide
- Enhanced drafts functionality so that if a window is closed and re-opened, your existing draft as saved will automatically re-open as well
- Option for navigation header links that are shown only to guests, such as "Sign Up" button that members don't see (is this a good example?)
- Minor updates to the chat page interface to make it more seamless
- Activating a plugins via the admin panel now show the plugin's license file text (disclaimers, etc.)
- Ability for administators to view the ban durations for banned users
- Scoped plugins installed via npm can now be activated via the admin panel
- Updated the "Running NodeBB" section of our system documentation
Breaking changes for Plugin and Theme devs
This is a minor release which means there are breaking changes for plugins and themes. If you are a plugin author, please
check out the issue list in GitHub.
Of note is the requirement for Node.js version 6+. We've included code that takes advantage of the latest Node.js has to offer, and so older versions (e.g. 4.x, 0.12.x, etc.) are now no longer supported, and NodeBB will refuse to start on those environments. The easiest way to install and manage Node.js is via a package manager.
Starting with this version we are trying to revamp our approach to new releases through better internal tracking and communication. We hope this will lead to more organised and more frequent releases, and less likelihood that changes will fly under the radar. We also have a new "testbed" instance of NodeBB located at https://try.nodebb.org which you can check out any time to see the latest features in action.
Vote for us!
Finally, if you've read this far we hope you won't mind taking a few additional seconds to vote for NodeBB at CMS Critic Awards — we'd really appreciate it!
1 This score is calculated as the number of requests successfully handled by the destination server, averaged. We send 100 concurrent requests, with at total request count of 10,000. The destination server is our support forum at https://community.nodebb.org.
2 In our case, we're making calls via ab from servers hosted on DigitalOcean to another server hosted on DigitalOcean, so preferential routing may bias results in our favour somewhat.