Am 27. Oktober wird sich die Node LTS-Version von Version 12 auf Version 14 verändern. Was das bedeutet, will ich im Folgenden kurz darlegen.
Was ist Node?
Node ist eine Basis-Software, um Javascript-Programme auf einem Computer laufen zu lassen. Da die Homebridge und ihre Plugins zum größten Teil in Javascript geschrieben sind, wird Node immer benötigt, damit überhaupt etwas geht.
Was bedeutet Node LTS?
LTS ist die Abkürzung für Long Time Support und bezeichnet Software-Versionen, die der Hersteller über eine längere Zeit pflegt. Das ist sozusagen die Haupt-Version von Node. Hier wird garantiert, dass alle kritischen Fehler über 30 Monate repariert werden. Der wesentliche Punkt dabei ist, dass es keine funktionalen Änderungen mehr gibt, egal was dem Hersteller einfällt, an Node noch zu schrauben. Das heißt, dass Plugins, die beispielsweise für Node 12.0 geschrieben wurden, auch unter Node 12.19.5 laufen. Der wichtige Teil der Versionsnummer ist hier die 12.
Was sind funktionale Änderungen?
Node stellt Funktionen (oder Methoden) bereit, die Programmierer benötigen, damit ihr Programmcode funktioniert. Ein Hersteller kann sich entscheiden, derartige Funktionen umzugestalten, so dass sie anders verwendet werden müssen, oder er kann sich sogar entscheiden, bestimmte Funktionen nicht weiter anzubieten. Plugins, die derartige Funktionen verwenden, würden dann im besten Fall abstürzen und im schlimmsten Fall falsche Ergebnisse liefern. Tatsächlich kommt aber kein Software-Hersteller auf die Idee, das einfach so zu machen. Solche Änderungen werden sehr lange vorher angekündigt, so dass jeder Programmierer die Möglichkeit hat, seinen Programmcode an die neuen Gegebenheiten anzupassen.
Hier kann man sehen, dass die Node-Entwickler schon lange vorher wissen, wann sie eine Version auf den Markt werfen: https://nodejs.org/en/about/releases/
Da steht beispielsweise, dass die älteste Version, die sich noch in irgendeiner Pflege befinden, die Version 10 ist, dass die Version 12 die aktive LTS-Version ist, dass in ein paar Tagen die Version 14 die aktive LTS-Version werden wird und somit die 12er-Version ablöst.
Was sagt die Versionsnummer?
Zunächst mal: die Node-Versionen, die wir benutzen sollten, haben alle gerade Nummern (8, 10, 12, 14...). Die ungraden Versionen befinden sich in der Entwicklung, sind im Test, verändern sich möglicherweise stark oder sind nicht vollständig. Gar nicht weiter beachten.
Die Node-Programmierer verwenden wie viele andere Programmierer ein System für ihre Versionsnummern. Die Versionsnummer besteht da aus drei Teilen, die durch einen Punkt getrennt sind. Die Teile haben Namen, die MAJOR, MINOR und PATCH heißen. Am Beispiel von Node 12.18.4 bedeutet das:
- 12: MAJOR. In der Version 12 hat es manche Änderungen gegeben, die nicht kompatibel zur Version 10 sind. Damit das jeder kapiert, hat sich die erste Nummer geändert (von 10 auf 12).
- 18: MINOR. In der Version 12.18 hat es Änderungen gegeben, die aber nicht inkompatibel sind zu allen anderen 12er-Versionen. Möglicherweise wurde etwas hinzugefügt, aber auf keinen Fall wurde etwas entfernt oder in seiner Funktion verändert. Plugins für Version 12 laufen weiterhin ohne Einschränkungen.
- 4: PATCH. In der Version 12.18.3 hat es einen Programmierfehler gegeben, der ausgebügelt wurde.
Viele Plugin-Programmierer machen es mit ihren Versionsnummern übrigens ganz genauso.
Maaaann, komm jetzt mal langsam auf den Punkt, sschuste
Am 21. Oktober wird sich die LTS-Version von 12.x.x auf 14.x.x verändern. Alle diejenigen, die bislang ihr Node auf der neuesten LTS-Version gehalten haben, werden nun eine neue Version bekommen, die sich im MAJOR verändert hat. Eine Änderung im MAJOR kann dazu führen, dass manche Plugins nicht mehr laufen werden. Das betrifft möglicherweise Plugins, die schon lange nicht mehr von ihren Programmierern gepflegt wurden. Dass muss nicht zwingend so sein, aber es kann sein.
Was nun? Profis nehmen nun einen neuen Raspi, duplizieren darauf ihre laufende Homebridge, unterziehen sie einem Update auf die neue MAJOR-Versionen und sehen, was geht und was nicht. Typen wie ich knallen die neue Version einfach drauf und nehmen eine Unterbrechung ihrer Homebridge in Kauf. Etwas Ängstlichere machen lieber gar kein Update und begründen das mit der alten Wahrheit "never change a running system". Jede dieser Vorgehensweisen hat etwas für sich, wobei die erste und die letzte von äußerster Vorsicht zeugen und meine Holzhammer-Methode eher nicht.
Wie vorgehen?
Es gibt hier im Forum einige, die bereits seit einer geraumen Zeit die Version 14 einsetzen. Man hört wenig Drama aus dieser Richtung, eigentlich gar nichts, aber vielleicht gibt es ja schlechte Erfahrungen mit dem einen oder anderen Plugin. Wär schön, wenn wir da mal was hören würden.
Wichtig: niemand muss jetzt updaten. Damit kann man sich erstmal schön Zeit lassen und dem Forum lauschen.
Wer doch updaten will, sollte dazu immer die Software n verwenden. Die wird installiert mit:
sudo npm install -g --unsafe-perm n
Wenn man nach der Installation sudo n aufruft, wird einem die aktuell installierte Version angezeigt. Hat man n bereits verwendet, um Node-Versionen upzudaten, dann werden einem alle damit installieren Versionen angezeigt und man kann eine Installation auf einfache Art und Weise wieder rückgängig machen.
Node updaten geht dann so:
sudo n lts (installiert die neueste Node LTS-Version, meine Empfehlung) oder
sudo n latest (installiert die neueste Node-Version überhaupt - ich rate den meisten davon ab und ich mach das auch nicht) oder
sudo n 12.18.4 (installiert Node 12.18.4)
Ich werde in der nächsten Woche die neue 14er-Version mit sudo n lts installieren und dann berichten, wie das vor sich ging.