Die kuriosesten Versionsnummern bekannter Software mit Matthias Endler von Rust in Production.
Im Engineering Kiosk Adventskalender 2024 sprechen befreundete Podcaster⋅innen und wir selbst, Andy und Wolfi, jeden Tag kurz & knackig innerhalb von wenigen Minuten über ein interessantes Tech-Thema.
Unsere aktuellen Werbepartner findest du auf https://engineeringkiosk.dev/partners
Das schnelle Feedback zur Episode:
Links
- Rust in Production Podcast: https://corrode.dev/podcast/
- Engineering Kiosk Episode #98 Der Hype um Rust mit Matthias Endler: https://engineeringkiosk.dev/podcast/episode/98-der-hype-um-rust-mit-matthias-endler/
- LaTeX – A document preparation system: https://www.latex-project.org/
- Engineering Kiosk Episode #146 Warum ist Doom so faszinierend für die Software-Entwicklung?: https://engineeringkiosk.dev/podcast/episode/146-warum-ist-doom-so-faszinierend-f%C3%BCr-die-software-entwicklung/
- PHP 6: https://wiki.php.net/rfc/php6
- Raku Programming Language: https://raku.org/
- Windows 6.1 – Was ist das?: https://www.giga.de/downloads/windows-7/specials/windows-6.1-was-ist-das/
- Just noticed that my pdfTeX version is Pi: https://www.reddit.com/r/LaTeX/comments/etiuh4/just_noticed_that_my_pdftex_version_is_pi/
- Versionsnummer 100: Wieso Firefox und Chrome bald für Probleme im Web sorgen könnten: https://t3n.de/news/version-100-chrome-firefox-probleme-gruende-1452233/
- First official Doom version?: https://www.doomworld.com/forum/topic/16997-first-official-doom-version/
- Why is there no version 6 of PHP?: https://www.updatephp.com/why-is-there-no-version-6-of-php
- MS Office to skip past ‘unlucky’ 13 in 2009: https://www.computerwoche.de/article/2664506/ms-office-to-skip-past-unlucky-13-in-2009-2.html
- How does node.js version numbers work and how do I ensure compatibility?: https://stackoverflow.com/a/14791204/270334
- MySQL: Why the jump from 5.7 to 8.0?: https://news.ycombinator.com/item?id=16876304
- Oracle 18 to be released in 2018, let’s skip versions 13,14,15,16 and 17: https://monin-it.be/oracle-18-and-release-update-revisions/
- if (osName.startsWith("windows 9")): https://github.com/search?q=if+%28osName.startsWith%28%22windows+9%22%29%29&type=code
- Why "Windows 10" wasn't chosen because of "braindead" developers checking for Windows 95 or 98: https://gist.github.com/sixlettervariables/5571cecb5a9d04b41d03
- Microsoft - Bad version number checks: https://devblogs.microsoft.com/oldnewthing/20040213-00/?p=40633
- Lizenzen
- Music from #Uppbeat: https://uppbeat.io/t/kevin-macleod/monkeys-spinning-monkeys
- License code: AQYGZPHFNJBKEOXU
- Music from #Uppbeat: https://uppbeat.io/t/christian-larssen/weekend-croquet
- License code: 7AGE1HG54WTRDW9O
- Music from #Uppbeat: https://uppbeat.io/t/kevin-macleod/holiday-weasel
- License code: UPFZHTQDCKWNLYVG
Sprungmarken
Hosts
- Wolfgang Gassler (https://mastodon.social/@woolf)
- Andy Grunwald (https://andygrunwald.com/)
Feedback
- EngKiosk Community: https://engineeringkiosk.dev/join-discord
- Buy us a coffee: https://engineeringkiosk.dev/kaffee
- Email: stehtisch@engineeringkiosk.dev
- LinkedIn: https://www.linkedin.com/company/engineering-kiosk/
- Mastodon: https://podcasts.social/@engkiosk
- Bluesky: https://bsky.app/profile/engineeringkiosk.bsky.social
- Twitter: https://twitter.com/EngKiosk
Transkript
Andy Grunwald (00:00:02 - 00:00:49)
Endspurt im Engineering Kiosk Adventskalender. Der vierte Advent steht kurz bevor. Das bedeutet auch, dass die vierte Kerze angezündet wird. Immer wenn es um Feuer geht, geht es auch um die Sicherheit. Besonders bei Kindern. Deswegen die große. Aber nun genug von Streichhölzern. Reguläre Ausdrücke sind schon gefährlich genug. Zurück zum eigentlichen Inhalt. Diese Episode ist ein Community Beitrag von unserem Freund Matthias Endler vom Rust in Production Podcast. Dabei dreht sich alles um Softwareversionen. Wenn du nun denkst, ich kenne doch schon alles zu diesem Thema, dann bleib dran. Denn diesmal geht es nicht um ab Version eins ist die Software stable oder semantic Versioning. Das Mikrofon geht nun an Matthias. Los geht's.
Matthias Endler (00:00:49 - 00:06:04)
Legacy verdient das Geld, sagt der Andi immer. Mich als Softwareentwickler hat Legacy Code schon immer fasziniert. Denkt mal drüber nach. Die Software, die in Banken, Versicherungen und Betriebsratsmittel Systemen läuft, ist älter als so mancher, der gerade zuhört. Und genau hier wird es spannend. Wie schaffen wir es eigentlich, dass alte Software weiterhin funktioniert? Ein zentraler Baustein dabei sind Versionsnummern. Damit können wir Änderungen nachvollziehen und Programme kompatibel halten. Aber selbst bei so was Einfachem wie Versionsnummern kann einiges schiefgehen. Und manchmal sogar richtig spektakulär. In dieser Weihnachtsepisode vom Kiosk nehme ich euch mit auf die Reise durch die kuriosesten Versionsnummern bekannter Software. Mein Name ist Matthias Endler und normalerweise bin ich Host vom Rust in Production Podcast. Vielleicht habt ihr auch schon Folge 98 gehört, in der wir über den Hype um Rust gesprochen haben. Aber heute geht es um Versionsnummern. Fangen wir mit dem Textsatzsystem LaTex an. Das basiert auf Tags oder tech von Donald Knut. Knut ist vieles Mathematiker Informatiker Genie und ein bisschen verrückt. Er hat die Versionsnummern von tags nämlich so gestaltet, dass sie sich Pi annähern. Der Grund ist, dass in Text keine neuen Funktionen mehr eingebaut werden sollen. Es ist fertig. Nur Bugfixes sind erlaubt. Tags nähert sich also immer weiter seiner finalen Version an. Übrigens soll die Versionsnummer von tags nach Knuts Tod eingefroren werden. Und die Versionsnummer wird exakt auf Pi gesetzt. Und jetzt ohne welche browser Versionsnummer benutzt ihr eigentlich? Früher war die Welt ganz einfach. Es gab Internet Explorer sechs und Firefox drei. Aber Google Chrome ist bei Aufnahme dieser Episode bei Version 102 und dreiig und Firefox bei 104 und dreiigste. Dabei ist das Parsen solcher Versionsnummern gar nicht so einfach. Viele User Agent Parser hatten schon mit den zweistelligen Versionsnummern vor ca. 12 Jahren Probleme. Damals hat man oft nur eine Ziffer erwartet und die zweite Ziffer einfach ignoriert. Habt ihr Folge 146 über Doom gehört? Eine Sache, die Andy dort nicht erwähnt hat, ist die Versionsnummer von Doom. Natürlich geht es dabei um die Zahl des Teufels. Das war eine der finalen Versionsnummern von Doom und das fanden die Entwickler so lustig, dass es auch eine Version von Doom zwei gibt. Ein weiteres Beispiel für Entwicklerhumor ist PHP. Die Version sechs war Jahre in der Entwicklung und es gab sogar schon Bücher darüber. Aber PHP wurde nie veröffentlicht. Es wurde komplett verworfen und stattdessen kam PHP siebte. Aber zumindest war PHP der einzige PHP Release, der keine Sicherheitslücken hatte. Die Hauptaufgabe der Roadmap für die Entwicklung von PHP war das sehr ehrgeizige Ziel, echte Unicode Zeichenunterstützung in der gesamten Sprache einzuführen. Die Arbeit daran begann schon 2005, aber 2009 war noch immer kein Ende in Sicht und die erforderlichen Änderungen waren immer noch nicht zwischen den Entwicklern abgestimmt. Die Zeit verging und es wurde beschlossen, die Verbesserungen von PHP einfach in den Fünferzweig von PHP zu integrieren. Um diese Änderungen von der negativen Online Presse bezüglich der fehlgeschlagenen Unicode Arbeit in PHP abzugrenzen, wurde der neue Zweig PHP genannt. Das Perl Team hat so lange an Perl sechs gearbeitet, dass es zu einer komplett eigenen Sprache wurde. Der Designprozess für Perl sechs begann im Jahr zwei tausendste. Es gab so viele Änderungen und Verzögerungen, dass Perl sechs im Jahr 2019 offiziell umbenannt wurde. Heute heißt die Sprache Raku. Java ging von Version 1. Apr. Direkt auf. Intern war die Version allerdings als 1. Mai. Bekannt. Java sechs war intern 1. Jun. Erst mit Java SE hat man sich entschieden, die Versionsnummer zu vereinfachen und einfach nur Java 11 zu sagen. Wir bräuchten wahrscheinlich eine eigene Episode, um die Unterschiede zwischen Jese, JeE, Java SE, JRE und JDK zu erklären. Node hat ein zweigleisiges Versionierungssystem. Geradzeilige Versionen also sind stabil und ungeradzeilige Versionen sind instabil. Als ob bei Node jemals irgendwas stabil gewesen wäre. Linux hat die semantische Versionierung schon lange nicht mehr verwendet. Bis 2003 verwendete Linux ungerade und gerade Versionen. Ungerade sind instabil, gerade sind stabil. Dann kam 2. Jun. Das ein geologisches Zeitalter in Bezug auf Software überdauerte, und zwar acht Jahre. Bis dann, ziemlich willkürlich, erhöhte Linus die Version auf und damit endete die Anwendbarkeit der semantischen Versionierung auf Linux. Versionen und als fällig war, ging Linus dazu über, die Hauptversion einfach immer dann zu erhöhen, wenn die miner Version so groß wurde, dass ihm die Finger und Zehen zum Zählen ausgingen. Lustig ist auch MySQL, die von 5. Jul. Direkt zu acht gesprungen sind. Tatsächlich wurde MySQL sechs um das Jahr 2008 eingesetzt und hat einige Alphas erlebt. Im Laufe der Zeit wurden die meisten Dinge darin in die ER Serie zurückportiert und einige Ideen für haben sich nie bewährt. Ich bin mir nicht sicher, wann oder wie die Version sieben verwendet wurde, aber beim Sprung von 5.
Matthias Endler (00:06:04 - 00:08:38)
Auf acht fällt einfach die erste Ziffer weg, die schon eine Weile bedeutungslos war. Oracle hat sich entschieden, die Versionsnummer von Oracle 12 c auf 18 hochzudrehen. Damit wurden die Versionsnummern 13 bis 17 übersprungen. Die 18 steht für das Jahr 2018, in dem die Version veröffentlicht wurde. Tatsächlich macht das sogar irgendwie Sinn. Wahrscheinlich hat Oracle einfach gemerkt, dass man für jede neue Version Lizenzgebühren verlangen kann. Zu guter letzt kommen wir zu Ÿousand Windows. Warum gibt es Windows sieben, Windows acht und Windows 10, aber kein Windows neun? Es wird oft behauptet, dass Windows neun nie veröffentlicht wurde, weil es zu viele Probleme mit der Versionsnummer gab. Als die Entwickler alte Programme analysierten, stellten sie fest, dass viele Anwendungen Windows 95 oder 98 nur an der führenden neun erkannten. Sie standen vor der Wahl, entweder den alten Code zu patchen oder die Versionsnummer einfach zu überspringen und entschieden sich für letzteres. Allerdings handelt es sich dabei höchstwahrscheinlich um eine Legende. Zumindest gibt es keine offizielle Bestätigung von Microsoft und einige Argumente, die dagegen sprechen. Siehe dazu auch den Link in den Shownotes. Deswegen zum Trost ein kleiner Bonus. Nach Windows 3. Nov. Kam Windows fünf und neunzigste. Viele Entwickler wollten damals sicherstellen, dass ihr Programm mindestens auf 03.01. Läuft. Sie verglichen dazu die Versionsnummer. Die Hauptversion musste mindestens drei sein und die Nebenversion mindestens 10. Die Nebenversion wurde nämlich damals als zweistellige Zahl dargestellt. 03.01. War intern als 3. Okt. Gespeichert. Das Windows 95 war intern eigentlich Windows und da ist null natürlich kleiner als 10. Die Programme hätten also fälschlicherweise gedacht, sie würden auf einem zu alten Windows laufen. Microsofts Lösung war pragmatisch. Windows 95 gab sich einfach als Version aus. Damit liefen die Programme weiter, denn 95 ist größer als 10. Und ja, das ist kein Gerücht. Das hat sogar Raymond Chen, ein bekannter Microsoft Mitarbeiter, auf seinem Blog the Old New Thing gepostet. Und das bringt uns zurück zu Legacy verdient das Geld? Das ist nicht nur ein Spruch, sondern eine Lebensweisheit. Denn hinter jeder krummen Versionsnummer steckt die Geschichte von Entwicklerinnen und Entwicklern, die Software am Leben halten. Ich hoffe, ihr hattet Spaß bei dieser Reise durch die Welt der Versionsnummern. Falls ihr mal genug von Legacy Code habt, hört euch auch gern mal eine Folge von Rust in Production an. Alle Referenzen zum Nachschlagen findet ihr in den Shownotes. Ich wünsche euch eine erholsame Weihnachtszeit und einen guten Rutsch ins neue Jahr. Euer Matthias.
Andy Grunwald (00:08:38 - 00:08:44)
Danke, Matthias, für diesen Einblick und ob Rust nicht auch Legacy Code sein kann.
Andy Grunwald (00:08:44 - 00:09:09)
Ich würde sagen, da sprechen wir uns in ein paar Jahren wieder. Die Links zu Matthias und seinem Ruß in Production Podcast findet ihr wie immer in den Shownotes. Falls ihr noch weitere wilde Versionsnummern entdeckt habt, lasst es uns wissen, entweder in unserer Discord Community oder auf Social media. Ansonsten freuen wir uns immer, wenn ihr diesen Podcast auf der Streaming Plattform eurer Wahl bewertet. Bis dahin, eine schöne Adventszeit, euer Engineering Kiosk.