Archiv für den Monat: September 2020

Was Entwickler über .NET 5.0 wissen sollten…

Ich hatte ja in einem Blog-Eintrag vor ein paar Tagen eher beiläufig erwähnt, dass es kein .NET 5.0, sondern ein .NET 6.0 geben wird. Das ist nur teilweise richtig. Es wird ein .NET 5.0 geben, aber ohne neue Funktionalitäten. Die ursprünglich bei der Ankündigung im Mai 2019 (https://devblogs.microsoft.com/dotnet/introducing-net-5/) für .NET 5.0 geplanten neuen Funktionalitäten (Stichwort: „A unified platform“) wird es erst mit .NET 6.0 geben, das aktuell für Herbst 2021 (!) geplant ist.

.NET 5.0 soll dagegen im November 2020 offiziell freigegeben werden, aktuell gibt es bereits den RC 1. Die offizielle Roadmap, die nicht ganz so einfach zu finden ist, da sie lediglich über das Projektportal angeboten wird, gibt es unter der folgenden Adresse:

https://github.com/dotnet/core/blob/master/roadmap.md

Richtig in meinem Blog-Eintrag war sicherlich, dass es nur wenige .NET-Entwickler geben dürfte, die das Ganze brennend interessiert.

Eine sehr gute Übersicht über alles Wissenswerte zu .NET 5.0/6.0 gibt ein Artikel auf dotnetcurry.com, den ich nur empfehlen kann, da er alles Wichtige auf den Punkt bringt:

https://www.dotnetcurry.com/dotnetcore/dotnet-5-new-features

BASIC lebt

Für viele Entwickler war BASIC damals die erste Programmiersprache. Auch ich kann mich noch sehr gut an den richtig leistungsfähigen BASIC-Interpreter auf unseren vier Computern in der Schule erinnern (das war bereits irgendwann in den 70er Jahren und es war aber kein Microsoft BASIC).

Die jüngste Entscheidung eines Microsoft-Managers, den Quellcode von GW-BASIC auf GitHub zu veröffentlichen, hat mich veranlasst nach BASIC-Interpretern zu suchen, deren Quellcode frei verfügbar ist.

EIn Thread in einem Google-Forum ist sehr ergiebig, auch wenn der Thread schon ein paar Jahre alt ist:

https://groups.google.com/forum/#!topic/comp.lang.basic.misc/3yflBQV35M8

Von den zahlreichen BASIC-Interpretern, die im Laufe des Threads (dankenswerterweise) genannt wurden, hat mir Cheesecake Basic am besten gefallen, da es mit QBasic (meiner Lieblingsprogrammiersprache;) kompatibel ist:

http://www.noktosoft.megafolio.com/

Wenn ich einmal viel Zeit habe, probiere ich es auch, ob sich das Gorilla-Spiel tatsächlich unter Cheesecake Basic ausführen lässt;)

Kurzer „Rückblick“ auf die Build 2020 und die erste Microsoft European Open Source-Konferenz und neues von GW-Basic

Gleich vorweg: Ich habe an keiner der beiden Konferenzen teilgenommen und alle Anmerkungen und Gedanken sind rein subjektiv. Und dieser Blog-Beitrag hätte bereits im Juni erscheinen sollen. Jetzt ist es bereits Mitte September.

Wer sich für die „harten Fakten „, sprich die Ankündigungen, interessiert, findet speziell zur Build 2020 ein paar gute Zusammenfassungen, u.a. von DotnetCurry (einem wirklich guten Magazin für .NET-Entwickler, das seit vielen Jahren kostenlos im Pdf-Format erscheint):

https://www.dotnetcurry.com/dotnetcore/1538/microsoft-msbuild-2020-developer-highlights

Auch der Dotnet-Doktor (aka Holger Schwichtenberg) hat etwas zur Build 2020 geschrieben und wie immer alles sehr schön und detailliert auf den Punkt gebracht:

https://www.heise.de/developer/artikel/Nachschau-auf-die-Microsoft-Build-2020-4767864.html

Und es gibt natürlich auch eine offizielle Webseite von Microsoft, auf der man sich die Vorträge anschauen kann:

https://news.microsoft.com/build2020/

Die wenigen für .NET-Entwickler relevanten Ankündigungen lassen sich für mich auf drei Themen zusammenfassen:

  1. Mit dem Projekt MAUI (netter Name, die Abkürzung steht aber für Multi Platform App UI) wird es endlich eine gemeinsame .NET-GUI für Windows und andere Plattformen (vor allem Android) geben (Linux wird bewusst ausgelassen – hier soll die Community aktiv werden). Das Ganze basiert auf einer künftigen Version von Xamarin Forms, einem Produkt, das es schon eine ganze Weile gibt.
  2. Der gemeinsame Nachfolger von .NET Framework 4.8.x und .NET Core 3.x wird nicht .NET 5.0, sondern .NET 6.0 heißen und erst 2021 erscheinen. Als Begründung wird die „Corona-Krise“ angegeben (warum dafür eine Versionsnummer ausgelassen wird, erschließt sich mir nicht, aber Visual Studio hatte damals auch mit einer Version 6.0 begonnen bevor dann mit .NET 1.0 im Jahr 2002 auf Jahreszahlennummerierung umgestellt wurde). Trotzdem soll es Ende 2020 ein .NET 5.0 RTM geben. Das interessanteste Feature ist für mich „Single-File-Publish“.
  3. Mit Blazor WebAssembly soll es endlich möglich sein, C#-Code in modernen Browser auszuführen, ohne dass irgendwelche Erweiterungen installiert werden müssen. Sozusagen ein funktionierender Nachfolger von ActiveX (ca. 23 Jahre später), der zudem keine Sicherheitslücken in der Größe eines Scheunentores öffnet.

Ich kann mich nicht entscheiden, welche der beiden Konferenzen insgesamt seltsamer war, jede auf ihre Weise.

Zur Build 2020 lässt sich als Fazit feststellen, dass Microsoft eindrucksvoll demonstriert hat, dass es eigentlich nichts wirklich Neues für Entwickler gab, sieht man von den aufgezählten Neuerungen ab und jenen, die ich nicht explizit erwähnt habe. Und leider auch, dass der klassische Desktop-Entwickler schon lange keine Rolle mehr spielt. Es gab natürlich Neuerungen, aber welche davon wird auf die aktuellen Projekte, an denen die überwiegende Mehrheit der Entwickler im Windows-Umfeld aktuell arbeiten, einen Einfluss haben?

Zu „.NET 6.0 “ (oder wie immer es am Ende heißen wird) lässt sich lediglich feststellen, dass nur wenige Entwickler wirklich darauf warten dürften. Auf der einen Seite ist es immer relevant, was Microsoft in diesem Bereich macht. Alleine, um sicherzustellen, dass die eigene Anwendung auch unter .NET xyz läuft. Auf der anderen Seite gibt es kein Feature, das so wichtig wäre, dass man darauf die Entwicklung eigener Anwendungen abstimmen würde. Ein „Single File Publish“ (am Ende erstellt der Compiler eine Exe-Datei mit Maschinencode) klingt praktisch, aber so etwas war theoretisch (ohne Maschinencode) auch beim .NET Framework immer schon möglich, wenn auch nicht „out of the box“ und wahrscheinlich nicht in der Granularität, in der es dann in naher Zukunft möglich sein wird. Und die Neuerungen in C# 9.0 sind bestimmt für einzelne Entwickler sehr attraktiv, aber sicher nicht für die Mehrheit. Ich hätte schon Schwierigkeiten, Neuerungen der Version 7.0 oder 8.0 aufzuzählen. Wann wurde noch einmal LINQ eingeführt;)

Terminal 1.0 und GW-Basic

Das neue Terminal 1.0 ist (endlich) fertig. Das Programm, mit dem sich beliebige Konsolenanwendungen in einem Fenster zusammenfassen lassen (z.B. Cmd, PowerShell und die Bash aus dem WSL) ist wirklich nett und auf eine gewisse Weise auch innovativ (es lohnt sich defintiiv, sich ein paar der Demos anzuschauen oder das Programm gleich zu installieren), aber es ist kein Entwicklerthema, sondern eher ein nettes Zubehör, auf das man auch gut verzichten kann (im Notfall führt Cmd.exe immer zum Ziel;).

Eher per Zufall habe ich irgendwo gelesen, dass auf der Build 2020 angekündigt wurde, dass der Quellcode von GW-Basic (kein Scherz!) freigegeben wurde. GW-Basic! Etwa 40 Jahre, nachdem es in der Version 1.0 auf der Bildfläche erschien. Irgendwann gab es auch eine Version 1.1. Danach habe ich die Weiterentwicklung aus den Augen verloren. Aber, ganz so unattraktiv scheint das Programm nicht zu sein, im GitHub-Projektportal gab es Stand Anfang Juli 2020 bereits 341 Forks:

https://github.com/microsoft/GW-BASIC

Da scheinen einige große Pläne zu haben. Mich würde im Quellcode speziell die Formelauswertung interesieren, die in Maschinencode geschrieben wurde. Ich hatte Anfang der 80er Jahr auch den Traum, einen kleinen BASIC-Interpreter zu schreiben und hatte mich mit der Formelauswertung damals wirklich schwer getan (damals gab es halt noch kein StackOverflow;). Es gibt ein sehr gutes Buch zum Thema Microsoft BASIC, in dem die Arbeitsweise des Basic-Interpreters ausführlich beschrieben wird (aber leider nicht der Formel-Parser). Der Autor ist Luidger Röckrath, das Buch erschien damals (1985!) im Franzis-Verlag. Bei https://www.abebooks.de gibt es sogar noch ein Exemplar zu kaufen.

Noch ein paar Worte zum Microsoft European Virtual Open Source Summit, der mit Juni 2020 ebenfalls virtuell (und kostenlos für alle Teilnehmer) stattfand. Eigentlich hätte es eine sehr interessante Konferenz werden können, alleine der Name war vielversprechend (wenngleich der Schwerpunkt eigentlich nicht auf Europa lag und es bei einer reinen Webkonferenz ohnehin keinen Sinn ergibt, den Fokus auf einen Kontinnent zu begrenzen – der Zusatz „Europe“ wird wohl irgendetwas zu bedeuten haben). Nervig war nicht nur die simulierte Konferenzumgebung im Browser und warum muss Microsoft immer noch so sehr betonen, wie der Konzern Open Source liebt? Vor jedem Vortrag die Animation mit dem roten Herz? Meines Wissens, wurden bislang weder Windows, Office noch Visual Studio auf Open Source umgestellt.

Das Ergebnis war dann aber nicht wegen dieser Nebensächlichkeiten doch ernüchternd – was auch an der „seltsamen“ Themenauswahl lag (u.a. „Bursting to the cloud with Consul and Nomad on Azure“ oder „Spring and the Clouds“ – weder von Consul noch von Nomad habe ich jemals etwas gehört – Letzterer ist natürlich jedem Trekkie ein Begriff;). Ich habe daher nur einige Vorträge verfolgt, so dass mein Eindruck sehr subjektiv geprägt ist.

Mein Eindruck ist, dass die Verantwortlichen bei GitHub die Enwicklungsabteilung bei Microsoft übernommen haben und dabei von Canocial, RedHat und Zuse unterstützt werden (was natürlich nicht grundsätzlich schlecht ist). Seitdem Brian Harry Microsoft verlassen hat (u.a. https://adamcogan.com/2018/04/06/farewell-brian-harry-father-microsoft-source-control/), dürfte Visual Studio Team System langfristig keine Zukunft mehr haben. Die Online-Version dürfte nach und nach durch GitHub Actions ersetzt werden. Es war schon wenig lustig, wie Microsoft-Mitarbeiter auf der Build 2020 versuchten, die berechtigte Frage nach den Unterschieden zwischen GitHub Actions und Azure Team DevOps zu erklären. In etwa „Also, Azure DevOps kommt eher für große Projekte in Frage, was natürlich nicht heißen soll, dass GitHub Actions für große Projekt nicht geeignet sei. Wie war noch einmal die Frage?“

Auch das ist nichts Schlechtes, denn wenn ein Unternehmen Erfahrung in diesem Bereich hat, dann ist es GitHub. Microsoft-Chef Satya Nadella wird 2018 nicht 6,4 Milliarden Euro (in Aktien) für ein Verwaltungsportal für Open Source-Projekte ausgegeben haben, wenn man damals nicht schon größere Pläne mit dem Know-how von Chris Wanstrath und den anderen Gründern gehabt hätte (https://en.wikipedia.org/wiki/GitHub). Ungewöhnlich für eine Entwicklerkonferenz war auch, dass gleich vier (!) Keynotes von Frauen in Führungspositionen gehalten wurden. Wie es aussieht, geht mit Open Source auch gleich mehr Diversität einher. Irgendwie interessant, das „neue“ Microsoft. Und sicherlich nicht ganz spannungsfrei in einer Welt, in der Entwickler, vor allem aber die Entwicklungsleiter, bislang gefühlt zu >90% Männer waren.

Natürlich war auch Scott Hanselmann als Keynote-Sprecher dabei, der seit vielen Jahren gefühlt auf jeder Microsoft-Konferenz, die direkt oder indirekt etwas mit Software-Entwicklung zu tun hat, das Fähnchen für uns „Old-School-Developers“ hoch hält. Der Begriff „Quoten-Mann“ fiel natürlich nicht;)

Was bleibt als Fazit unter dem Strich stehen? Microsoft ist auf einer Mission und die heißt seit vielen Jahren Azure. Für die Entwicklung von skalierbaren Cloud-Anwendungen wird Know-how benötigt, dass es offenbar nur bei den großen Open Source-Firmen wie Red Hat oder Canoical gibt. Mit der neuen Strategie wächst vielleicht das zusammen, was schon länger zusammengehört hätte.

Die klassische Desktop-Entwicklung spielt schon seit vielen Jahren keine Rolle mehr in der Entwicklerstrategie in Redmond. Das muss man akzeptieren, denn die Welt dreht sich immer weiter. Schade nur, dass es die Kommunikation zu den klassischen Entwickler so dermaßen schlecht ist. Es gäbe sicherlich einige jenseits der 50, die sich auch für die neue Cloud-Welt begeistern ließen, und deren Know-how auch in diesem Bereich gefragt ist.

.