© utti_frutti/Shutterstock.com, © S&S Media
Eine Analyse der offiziellen Roadmap

Angular - quo vadis?


Die neue Roadmap beinhaltet neben notwendigen Wartungsarbeiten auch ein paar Features, die frischen Wind bringen. Generell setzt man auf eine evolutionäre Weiterentwicklung. Das kommt großen Enterprise-Projekten sehr entgegen.

Bis Version 9 hatte das Angular-Team mit Ivy alle Hände voll zu tun. Das Ziel war es, den neuen Compiler, der u. a. in vielen Fällen deutlich kleinere Bundles erzeugt, in einer abwärtskompatiblen Version bereitzustellen. Angular 10 nutzte das Team vor allem für Aufräumarbeiten. Nun stellt sich natürlich die Frage, wie es mit Angular und Ivy weitergeht. Diese Frage wurde im August mit einer zuvor auf der ng-conf 2020 angekündigten Roadmap [1] überblicksartig beantwortet. Mit diesem Artikel möchte ich diese Roadmap ein wenig analysieren und auch aufzeigen, was man zwischen den Zeilen findet.

Arten von Neuerungen

Das Angular-Team hat die Roadmap nach dem Zeithorizont in zwei Kategorien gegliedert: „in Arbeit“ und „zukünftig“. Um etwas mehr Übersicht zu schaffen, habe ich mir die Freiheit genommen, eine weitere Dimension hinzuzuziehen. Sie betrifft die Art der Neuerung:

  • Wartung: Notwendige Anpassungen an externe oder interne Abhängigkeiten

  • Feature: Neue Möglichkeiten

  • Konsolidierung: Vereinheitlichungen, die dem Angular-Team das Leben erleichtern

Natürlich lässt sich über die eine oder andere Kategorisierung streiten. Trotzdem empfinde ich diese Vorgehensweise als nützlich, da sich damit die vielen Punkte der Roadmap auf sechs Felder reduzieren lassen (Tabelle 1).

in Arbeit

zukünftig

Wartung

  • Support TypeScript 4.0

  • Evaluate future RxJS changes (v7 and beyond)

  • Operation Bye Bye Backlog (aka Operation Byelog)

  • Angular libraries use Ivy

  • Angular language service uses Ivy

  • webpack 5 in the Angular CLI

  • Migration to ESLint

  • Remove legacy View Engine

  • Refresh introductory documentation

Feature

  • Expand component harnesses best practices

  • Support native Trusted Types in Angular

  • Optional NgModules

  • Optional Zone.js

  • Ergonomic component level code-splitting APIs

  • Angular DevTools

  • Strict typing for @angular/forms

Konsolidierung

  • Integrate MDC Web into Angular Material

  • Offer Google engineers better integration with Angular and Google’s internal server stack

  • Angular versioning & branching

  • Commit message standardization

Tabelle 1: Roadmap untergliedert nach Planungshorizont und Art der Neuerung

Abhängigkeiten aktualisieren (Wartung – in Arbeit)

Google ist dafür bekannt, Abhängigkeiten zügig auf den neuesten Stand zu bringen. Man will mit alten Versionen keine Zeit verschwenden. Das spiegelt sich auch in der Nutzung eines unternehmensweiten Monorepos wider. Deswegen verwundert es auch wenig, dass das Angular-Team in Sachen TypeScript und RxJS am Puls der Zeit bleiben möchte. Das war auch schon in der Vergangenheit so. Konkret bedeutet das, dass derzeit an einer Integration von TypeScript 4 [2] und RxJS 7 [3] gearbeitet wird. Während sich TypeScript 4 auf die klassische Anwendungsentwicklung unmittelbar wenig auswirken wird, lassen sich Bibliotheken damit besser typisieren. Anwendungsentwickler*innen werden beim Einsatz solcher Bibliotheken an der einen oder anderen Stelle also wieder einmal überrascht sein, wie gut der JavaScript-Aufsatz den richtigen Datentyp herleitet.

Issues abarbeiten (Wartung – in Arbeit)

Ein Vorhaben, das auch gerne als Operation ByeLog oder Bye Bye Backlog bezeichnet wird, dreht sich um die Abarbeitung offener Issues. Da es hier um die Stabilität des Systems geht, liegen diese Arbeiten auch der neuen Managerin Jules Kremer, die als Director u. a. auch dem Angular-Team seit der zweiten Jahreshälfte 2019 vorsteht, sehr am Herzen. Erste Erfolge hierzu gab es schon mit der Veröffentlichung von Angular 10 zu verkünden: Den Release-Notes [4] zufolge hat das Angular-Team für diese Version mehr als 700 Issues beseitigt und über 2 000 analysiert.

Ivy-Bibliotheken (Wartung – in Arbeit)

Daneben sollen künftig auch Angular-basierte Bibliotheken direkt auf Ivy aufsetzen. Das ist derzeit bei jenen aus dem Angular-Team nicht der Fall und wird auch für Bibliotheken von Drittanbietern aus Gründen der Abwärtskompatibilität nicht empfohlen (Abb. 1).

steyer_angular_roadmap_1.tif_fmt1.jpgAbb. 1: Der Angular Compatibility Compiler (ngcc) wandelt derzeit noch ViewEngine Libraries in Ivy Libraries um

Durch diese Maßnahme lassen sich aktuelle Bibliotheken sowohl mit Ivy-basierten Anwendungen als auch mit Anwendungen, die auf dem Vorgänger ViewEngine basieren, verwenden. Für das Zusammenspiel mit Ivy wandelt der sogenannte Angular Compatibility Compiler (ngcc) solche Bibliotheken in Ivy-Bibliotheken um. Nun ist bekannt, dass das Angular-Team eine rasche Umstellung auf Ivy forcieren möchte. Deswegen wurde auch viel Aufwand zur Sicherstellung der Abwärtskompatibilität betrieben. Somit wird es bald möglich sein, Bibliotheken direkt als Ivy-Bibliotheken zu veröffentlichen. Die Notwendigkeit für ngcc fällt somit weg, was den Prozess ein wenig beschleunigt.

Language Server und Ivy (Wartung – in Arbeit)

Eine weitere anstehende Wartungsarbeit betrifft den Language Server, der in IDEs wie Visual Studio Code oder WebStorm/IntelliJ für Angular-bezogene Codevervollständigung sorgt. Er basiert nämlich noch auf der alten ViewEngine und soll deswegen ebenfal...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang