v1.0.1... semver, automated builds, plugin upgrade tools, and more!

The NodeBB team is proud to release v1.0.1, a patch update for NodeBB containing many bug fixes and several new features!

Semver Changes

Upon the release of v1.0.0, NodeBB officially "graduated" to the intended usage of semver.

For those unfamiliar with the evolution of semver, many Node.js packages built before the introduction and unofficial standardisation of semver (including NodeBB), were pre-1.0 and had breaking changes in minor version bumps (e.g. 0.1.0 to 0.2.0). This conflict was due to v1.0 being a symbolically significant milestone, that many packages were not ready for. At the time, many dependencies were included as ranges: ~0.4.5, with the tilde signifying that updates to the most recent minor version were accepted. In our case, and for many packages pre-1.0, that meant breaking changes shouldn't occur in minor releases, but did anyway!

Fortunately, the standard was revised to state that for pre-1.0 packages, anything goes. We continued with our interpretation stating that "minor releases" contained breaking changes.

With the release of v1.0.0, unfortunately for us, that means we must be strict with our breaking changes if we wish to keep our plugin and theme developers happy!

From this point forward:

  • Patch releases will occur on a more regular basis, and are completely compatible with prior patch versions
  • Minor releases will occur more often than before, but will only contain changes that are backwards compatible with existing plugins/themes. New functionality and database schema changes can still occur via upgrade scripts
  • Major releases will be conducted whenever breaking changes are introduced.

Automated Builds

In addition to these changes, NodeBB will now be built more regularly, via an automated release manager bot. It will check for the latest passing TravisCI commit, and push to the weekly branch, and its versioning will always be marked a "prerelease", with a corresponding version suffix of -auto.#.

The impetus for automating our releases was this blog post, espousing the benefits of automated releases, as well as scripting a release so anybody could conduct one. Prior to today, the only way a release could be made was by following a strict set of steps outlined in a private gist, which in practice meant only I could release versions of NodeBB.

By making it easier to conduct releases (as well as weekly automated releases), I'm hoping to encourage releases at a faster pace, which should help mitigate the fairly severe case of moving goalposts we happen to suffer from :)

IP Blacklisting

For dealing with particularly troublesome users, IP blacklisting is now available to both administrators and global modsmods. For performance reasons, the best way to restrict access to an IP (or group of IPs) is via network firewall or blocking at the proxy level, but these options may not be open to all forum admins.

The blacklist will allow you to specify IPv4, IPv6, and IPv4 CIDR ranges, and restrict login/registration access to those requests.

As always, the best course of action is blocking at the server level, if such an option is open to you.

Plugin update checker

Lastly, v1.0.1 will ship with a plugin update checker that is run whenever ./nodebb upgrade is run, and additionally, can be manually triggered via ./nodebb upgrade-plugins. As described, the command will compare all of your installed plugins against the suggested versions from the NodeBB Package Manager, and allow you to update them all at once.

Updates!