NodeBB 1.6.0: faster (rendering) and prettier (emails)

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.

New Digest Template

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.

IP blacklist

There is also now a post approval queue for new users.

Approval queue for new user posts

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
  • Full noscript support, allowing users with JavaScript turned off to both browse and reply to topics (previously only browsing was possible)
  • 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.

Jay Moonah

Read more posts by this author.