Thanks @Ted! A lot of the inspiration for zero downtime stems from the same forums and CMS systems we're purportedly replacing*: Installing a plugin is literally a one-click affair, whereas in NodeBB, it's more like:
- Click "install" (or run
npm install {plugin_name}
)
- Activate plugin
- Restart NodeBB
- Refresh the page to expose the new admin page for the plugin (if any)
- Optionally - Set up the plugin and restart NodeBB again
Two restarts and a refresh just to install a plugin? I found that unacceptable. It was done this way because NodeBB is a server, not just an app sitting atop a server. That's part of the reason why it's fast, but also means the server needs to be restarted if things like routes, or minified scripts change.
You might also remember a very very brief time when every time you activated a plugin or saved plugin settings, NodeBB would automatically restart. It become unbearable quickly, since restarts could take up more than 30 seconds for forums with many plugins enabled. With this new reloader system, I'm contemplating re-introducing automatic reloading for plugin activations.
* Not that I consider NodeBB a CMS, but who am I to argue when people use NodeBB that way?