Hey all, Pomax of the engineering team here.
A bunch of folks have been (rightly) asking when Glitch’ll finally offer a current version of Node, because how hard can it possibly be to just update the version, and I’ll be the first to admit I’ve asked that same kind of question but things are rarely about “just” doing something and I’d like to explain why it looks like we’re doing nothing (when in fact we’re quite hard at work).
Some Details:
The main problem is an Operating System problem. Glitch projects are effectively virtual machines that are based on Ubuntu 16 and Linux kernel 4.4 - and those of you familiar with Linux might be raising an eyebrow at that because that version of Ubuntu is no longer supported by Canonical. And that’s really the source of why it looks like nothing is happening: we can’t just update Node because the current versions of Node need a version of glibc that isn’t available for Ubuntu 16, and even if it was, the current versions of Node need a version of Python (used when you need to install a node package that needs to be natively compiled) that isn’t just unavailable for Ubuntu 16 but used to be available and then got pulled from the package repository.
That leaves us in a position where we can’t really “just bump” packages up in version, and instead we’ve been stuck with having to essentially redo all the Glitch code relating to project hosting: creating VM images using a more modern version of Ubuntu so that we can even install the toolchains necessary for a project to install a current version of Node. And Python. And Rust. Etc. etc. etc.
How we’re working on this:
This is a relatively big undertaking, and it’s also a mostly invisible one: there’s no parts in that dev work that we can land early and go “look, we’re making progress”, we can’t land it until all the work is done, and we’ve confirmed that not just new projects, but also old projects that were backed up on Ubuntu 16 and then “woken up” on the new version work properly. There are a lot of subtle dependencies that we need to work through before we can consider that work a success, and unfortunately we often can’t give meaningful updates other than “turns out X also needs to be updated so that Y can be updated because that has a single Z that allows us to at least run this code path that we’re trying to uplift”.
And of course, this work takes a backseat when users report problems with their projects that we need to fix, or when someone decides that it would be hilarious to DDoS Glitch and distract the entire team for a few days to deal with the fallout. That work often takes precedence over long-term tasks like a complete backend uplift.
Where that leaves us:
While I’m sure this won’t satisfy folks: we are absolutely still working on this, we’re probably even more frustrated than you are that it’s taking so long (because we also can’t take advantage of all the modern features of Node on the dev side while we’re stuck on these old Ubuntu images), and we’re trying to get this pushed out as soon as we can.