OpenD, ein D-Sprach-Fork, der Beiträge willkommen heißt
(dpldocs.info)- Weil sich über lange Zeit Unzufriedenheit darüber aufgestaut hatte, dass Beiträge über die bisherige D-Führung blockiert wurden, wechselten einige Mitwirkende zu OpenD, einem Fork der Programmiersprache D
- Der Kern des Konflikts ist weniger die Frage, ob D Closed Source ist, sondern dass Entwicklungsweise und Entscheidungsfindung selbst nach der GPL-Veröffentlichung und dem Release von gdc der Community nicht ausreichend offenstanden
- Als Begründung für den Fork werden der Fall Ares/Tango, der später zu druntime führte, der Rückgang der Phobos-Aktivität, liegen gelassene PRs und die mangelnde Umsetzung nach „D gripes and wishes“ angeführt
- Nach dem Wechsel zu OpenD werden PRs, Bug-Reports, User-Support, DLF-Meetings und die Teilnahme an DConf Online für Upstream-D eingestellt; dpldocs.info bleibt bestehen, solange die Kosten gedeckt sind
- Bestehende D-Bibliotheken und -Anwendungen ohne bezahlten Supportvertrag erhalten keine garantierte Kompatibilität mit Upstream-D mehr; der Weg für langfristigen Support verlagert sich zur Beteiligung an OpenD
Warum zu OpenD gewechselt wurde
- OpenD ist ein Fork der Programmiersprache D und entstand aus der Einsicht, dass der Prozess, über die bisherige D-Führung Beiträge in Upstream einzubringen, seit Langem sehr frustrierend war
- Die immer wiederholte Behauptung, D sei eine Closed-Source-Sprache, ist nicht korrekt
- Die D-spezifischen Teile des Compilers wurden 2002 unter GPL veröffentlicht
- gdc als vollständiger GPL-Compiler wurde 2004 veröffentlicht
- Kritisiert wird jedoch, dass die Entwicklungsmethodik von D nicht ausreichend offen war und die Community bei Entscheidungen nur sehr wenig sinnvollen Einfluss hatte
- Viele Kernfunktionen und Konzepte von D sowie ein erheblicher Teil des heute existierenden D-Codes stammen aus Community-Beiträgen und -Arbeit, doch wenn man nur auf angenommene Beiträge schaut, kann man leicht in einen Survivorship Bias geraten
Alter Beitragsengpass und der Fall Ares/Tango
- In der Geschichte von D gab es viele angenommene Patches, aber auch viele Patches, die über lange Zeit liegen gelassen wurden
- Der Code, der heute als druntime bekannt ist, ging aus einem Fork hervor, der entstand, weil Walter keine Community-Beiträge annahm
- 2004 forkten Entwickler, die mit Upstream zusammenarbeiten wollten, D, um ihre Beiträge nicht zu verlieren
- Dieser Fork hieß zunächst Ares und wurde später mit anderen Community-Bemühungen zu Tango zusammengeführt
- Tango verstand sich als „The Developer's Library for D“ und funktionierte als Raum, in dem Beiträge von Entwicklern tatsächlich willkommen waren
- Im Tango-Ökosystem gab es viele Elemente, die im Phobos-Ökosystem fehlten
- Nachdem der Fork vier Jahre lang Bestand hatte und an Popularität gewann, suchte Upstream die Versöhnung; aus dieser Entwicklung entstand das heutige druntime
- Dahinter steht die Einschätzung, dass D ohne den Fork Ares/Tango keine relevante Position im Markt erreicht hätte und dass dieser Fork D in einer Krisenphase gerettet habe
Sinkende Beteiligung nach der goldenen Zeit
- Die Zeit, in der die Kernentwickler von Tango zurückkehrten und sich Andrei Alexandrescu und andere anschlossen, wird als vergleichsweise offene Phase der D-Entwicklung und als goldene Zeit mit steigender Aktivität rund um 2013 beschrieben
- Hervorgehoben wird auch, dass nahezu alle kommerziellen Nutzer von D direkt von Code abhingen, der aus dem Ares-Fork hervorgegangen war
- Die alten Gewohnheiten verschwanden jedoch nicht, und viele Mitwirkende aus der goldenen Zeit blieben der Community nicht erhalten
- Einige gingen ausdrücklich, weil sie den kaputten Prozess als Grund nannten, in dem ihre Arbeit nicht gewürdigt wurde
- Andere wurden aus persönlichen Gründen weniger aktiv, und es blieben nicht genug neue Mitwirkende dauerhaft dabei
- Die Entwicklungsaktivität von Phobos nahm ab Mitte 2018 stark ab; danach gab es zwei kleinere Anstiege
- berni44s Ergänzung von CTFE-fähiger Gleitkommaformatierung
- die Übernahme von Paul Backus’ sumtype-Modul als
std.sumtype
- berni44 erklärte 2020 nach fast drei Monaten Wartezeit auf ein PR-Review, dass er die Community verlassen werde; ein Jahr später kehrte er zurück und sorgte für den jüngsten Anstieg der Phobos-Aktivität, verließ sie aber wenige Monate später erneut
- Auch bei dmd selbst blieb Walters persönlicher Beitragsumfang insgesamt relativ konstant, doch weil die Beiträge anderer zurückgingen, stieg sein Anteil von etwa 1/6 in der goldenen Zeit auf heute etwa 1/3
Wiederholtes Sammeln von Beschwerden, aber zu wenig Umsetzung
- Rund um Weihnachten 2022 bat Mike Parker die Leute, ihm eine Liste mit „D gripes and wishes“ zu schicken
- Viele gingen davon aus, dass daraus nichts werden würde, dennoch gab es viele Antworten
- Etwa sechs Monate später, am 18. Mai 2023, wurde ein öffentliches Dokument mit den gesammelten Antworten veröffentlicht
- Danach beschränkten sich die öffentlich erkennbaren Ergebnisse auf die Festlegung folgender Ziele
- Stabilisierung von Sprache, Compiler und Standardbibliothek
- Verbesserung des Ökosystems einschließlich Unterstützung für Tools und Third-Party-Bibliotheken
- Stärkung der Community durch Aufräumen der Website, Aktualisierung veralteter Dokumentation und Tutorials sowie ein Redesign der Website
- Zwar lautete die Bitte, nicht allgemein, sondern konkret zu schreiben, doch viele konkrete Beschwerden wurden am Ende nur mit übergeordneten Ziel-Bullets beantwortet
- Schon im Vision Document 2016H1 gab es ähnliche Ziele wie mehr Beteiligung, bessere Tools, Stabilität von Sprache und Verbesserungen an der Spezifikation sowie zusätzliche Bibliotheken; deshalb sei nun eher Umsetzung als weitere Zielformulierung nötig
Was sich mit dem Wechsel zu OpenD ändert
- Versuche, zu Upstream-D beizutragen, werden eingestellt, stattdessen erfolgt der Wechsel zu OpenD, einem Fork des gesamten Compilers
- Das Dokumentations-Hosting von dpldocs.info wird über Patreon gerade so finanziert und läuft einschließlich der Unterstützung für dub-Pakete weiter, solange die Kosten gedeckt bleiben
- Updates von Upstream-D werden nicht übernommen
- Bestehende Funktionen werden vermutlich weiter weitgehend problemlos funktionieren
- Im Blog wird der auf Upstream-D spezialisierte Support eingestellt
- Statistiken werden nicht mehr aufgenommen
- Der Name ändert sich zu „This Week in ARSD“ und könnte später zu „This Week in OpenD“ werden
- PRs und Bug-Reports für Upstream-D werden mit sofortiger Wirkung eingestellt
- Was für die eigene Arbeit hilfreich ist, wird nicht an Upstream geschickt, sondern in OpenD gemergt
- Auch der Support für D-Nutzer wird eingestellt
- In der Vergangenheit wurden pro Woche mehrere Stunden in die Unterstützung von D-Nutzern unterschiedlicher Erfahrungsstufen investiert, nun gibt es keine Zusage mehr, auf Fragen zu Upstream-D zu antworten
- Falls doch geantwortet wird, dürfte die Empfehlung oft lauten, OpenD auszuprobieren
- An DLF-Meetings wird nicht teilgenommen, sofern nicht vorab Änderungen an der Governance zugesagt werden
- Einladungen zu DConf Online Livestreams werden abgelehnt
- Bei D-Bibliotheken wird das Kompatibilitätsversprechen zwischen internen Versionen und externen Compiler-Updates nur noch für Ziele mit bezahltem Supportvertrag aufrechterhalten
- Für alle anderen Nutzer entfällt die Kompatibilität mit Upstream-D mit sofortiger Wirkung
- Der Code wird ohne jede ausdrückliche oder stillschweigende Gewährleistung so bereitgestellt, wie er ist
- Wer sich dem OpenD-Fork anschließt, erhält für diese Bibliotheken weiterhin Support
- Für D-Anwendungen gilt wie bei Bibliotheken kein Kompatibilitätsversprechen gegenüber Upstream-D; da sie ursprünglich für den Eigengebrauch entwickelt wurden, war diese Garantie ohnehin lockerer
Verbleibende Haltung
- Es wird erklärt, dass in den vergangenen 16 Jahren sehr viel Zeit in D investiert wurde und dass ein Großteil der eigenen Programmierkarriere D und davor Digital Mars C++ zu verdanken sei
- Walter Bright und seine Kollegen hätten das eigene Leben stark beeinflusst, und Walter wird als bedeutender Mitwirkender an Programmiersprachenprojekten gewürdigt
- Dennoch fällt nun die Entscheidung, Walter Brights D zu verlassen und mit OpenD einen eigenen Weg einzuschlagen
- Damit OpenD Erfolg haben kann, ist noch viel Arbeit nötig, und die Wahrscheinlichkeit des Scheiterns ist sehr hoch; die Verantwortung für ein mögliches Scheitern liege nun aber nur noch bei OpenD selbst
1 Kommentare
Meinungen auf Hacker News
Zumindest Walter und vermutlich auch andere aus der D-Führung sind hier aktiv, daher ist die Wahrscheinlichkeit groß, dass sie diese Kommentare sehen
Ich hoffe, man erinnert sich daran, dass auch sie Menschen sind, dass ihnen D wirklich am Herzen liegt und dass sie meiner Erfahrung nach im Grunde anständige Leute sind, die ihr Bestes geben wollen
Ich weiß nicht, warum es diesmal anders sein sollte, und es fühlt sich an wie eine Wiederholung von Tango, Teil 2
Nur mit dem Unterschied, dass der Zug inzwischen schon vor langer Zeit abgefahren ist
Wenn das Projekt unter einer anderen Führung besser laufen könnte, sollte man diese Möglichkeit prüfen
Persönlich wünsche ich mir wirklich, dass D wieder auflebt; es ist bis heute meine Lieblingssprache
Es geht nicht darum, Walter oder irgendwen sonst anzugreifen, sondern nur um Leute, die etwas retten wollen, das sie mögen
Leider war so etwas am Ende unvermeidlich. Seit Jahren wurde einfach zu viel über einen D-Fork gesprochen
Als 2010 Andrei Alexandrescus Buch erschien, wanderte fast alles, was an D gut war, in C#, Java und C++
Die Umsetzung mag nicht so sauber sein wie in D, aber wenn man es in irgendeiner Form in einem besseren Tool- und Library-Ökosystem nutzen kann, ist dieser Unterschied nicht mehr besonders wichtig
Zu viel Zeit ging bei der Jagd nach goldenen Features verloren, die Leute anziehen sollten, und diese Features wurden nicht einmal stabilisiert
Andrei scheint heutzutage auch mehr mit C++ und CUDA beschäftigt zu sein als mit D
Dazu kam in den letzten zehn Jahren noch die Renaissance nativ kompilierter Programmiersprachen, wodurch die Konkurrenz noch härter wurde
Deshalb ist es umso bedauerlicher. In der Community selbst gibt es viele großartige Leute, mit denen man gut diskutieren kann
Ich nutze täglich Python, und es gibt vieles, das ich aus D vermisse
Von der Performance ganz zu schweigen
Als Außenstehender, der sich D angesehen hat, habe ich etwas Ähnliches beobachtet
Als Rust noch neu war, wurde das Konzept der Lifetimes in der D-Community vorgeschlagen, aber Walter hielt es für unnötig
Einige Jahre später brachte Walter einen eigenen Lifetime-Vorschlag, der sich ausreichend von Rust unterschied und deshalb weniger erprobt war als der frühere Vorschlag aus der Community
Inzwischen habe ich das Interesse an D verloren, daher weiß ich nicht, wie ausgereift das neue Lifetime-Feature ist, aber ich wäre überrascht, wenn es so nützlich wäre wie in Rust
Bei jedem Feature gibt es Trade-offs wie Interaktionen mit anderen Sprachfeatures, kognitive Belastung, langsamere Kompilierung, höhere Komplexität beim Design der Standardbibliothek und Brüche der Abwärtskompatibilität
Ich halte es nicht für vernünftig, eine große Umgestaltung zu erwarten, nur um ein Feature zu unterstützen, das man aus einer anderen Sprache mag
Meine Forschungsgruppe ist vor einigen Jahren wegen mangelnder Reaktionsbereitschaft und einer schlechten Richtung in der Sprachentwicklung von D zu Rust gewechselt
Ich hoffe, dass Adam und die anderen mit OpenD Erfolg haben, aber ich fände es gut, wenn sie diese Gelegenheit nutzen würden, um einen markanteren und einprägsameren Namen zu wählen
Ein neues Governance-Modell beginnt nicht damit, eine Liste neuer Features zu verkünden oder festzulegen, dass einige gestrichen werden, sondern damit, dass ein Quorum interessierter Parteien über Governance diskutiert
Das ist keine Änderung des Modells, sondern nur ein Machtwechsel
Es kann berechtigte Beschwerden geben, und die Art, wie D sich auf Walter als Gatekeeper verlässt, kann für manche zu strikt sein
Aber die Art, wie dieser Fork gestartet wurde, ist langfristig kein gutes Zeichen
Damit der Fork erfolgreich ist, braucht er breite Unterstützung und muss am Ende nicht nur ein paar wenige produktive Beitragende mitnehmen, sondern nahezu eine Mehrheit der D-Community
Sonst scheitert auch der Fork, und die Aufmerksamkeit für das Original wird weiter aufgespalten, sodass selbst die verbleibende Überlebensfähigkeit verloren gehen kann
Außerdem braucht es die Fähigkeit und den Willen, das Ganze über Jahrzehnte zu unterstützen
Offenbar wurde ein Update veröffentlicht: https://dpldocs.info/this-week-in-d/Blog.Posted_2024_01_08.h... und es scheint auch ein gewisses Interesse geweckt zu haben
Persönlich hätte ich es lustiger gefunden, den Namen Died zu wählen
Dann wären coole Sprüche wie „It never Died“ möglich, es würde auch zeigen, dass es ein Fork ist, und später bliebe bei Bedarf Spielraum, die Sprache in eine neue Richtung zu führen
OpenD erweckt den Eindruck vollständiger Kompatibilität
Natürlich bin ich an der Sache nicht direkt beteiligt und wünsche ihr Erfolg
Im D-Forum gibt es einen großen Thread zu diesem Thema: https://forum.dlang.org/thread/beykokfitddfdsjyqjjy@forum.dl...
Im ursprünglichen Beitrag geht es hauptsächlich um Beschwerden über zwischenmenschliche Konflikte, während dieser Link mehr technische Diskussion enthält
Danach zu urteilen wollen die Leute hinter dem Fork im Grunde eine andere Sprache und sind dafür offenbar auch bereit, mehrere Breaking Changes in Kauf zu nehmen
Persönlich finde ich es verwirrend, welche Nische D anpeilt, wenn es sich voll auf den Garbage Collector konzentriert
Eine klare Nische gab es auch früher nicht wirklich. Im Kern war es „10 % besseres C++“, und ohne klar differenzierendes Killer-Feature war es schwer zu verkaufen
Die meisten werden wegen bestehender Unterstützung, Codebases und industrieller Basis wahrscheinlich bei C++ bleiben, für neue Projekte Rust verwenden oder, wenn sie Einfachheit wollen, Zig nehmen
Besonders seit C++20 gibt es im Grunde bereits ein „10 % besseres C++“
Ich weiß auch nicht, ob der Fokus auf den Garbage Collector wirklich viel hilft
Dann konkurriert man mit C# und Java; beide waren von Anfang an als Sprachen mit Garbage Collection, Sicherheit und Knappheit als C++-Nachfolger gedacht, und ich sehe derzeit nicht recht, wie man mit ihnen konkurrieren will
Besonders C# bietet neben ziemlich guten Low-Level- und unsafe-Funktionen wie rohen Zeigern, Kontrolle über Referenztypen/Werttypen und Kontrolle über das Speicherlayout auch ein für eine ältere, objektorientierungszentrierte Sprache ordentliches Typsystem und Reflection und übernimmt weiterhin Features aus der ML-Familie
Ehrlich gesagt war Ds Vision für mich immer verwirrend
Ich habe Dokumentation zu bestimmten Sprachfeatures wie BetterC, dem safe-Modus und Lifetimes gelesen, aber sie war syntaktisch schwer zu lesen, und trotz vieler Detailerklärungen insgesamt nicht gut erklärt
Ich konnte keine kohärente Designvision oder keinen klaren Zweck der Sprache wirklich erkennen
Der Autor spricht dieses Problem zwar an, aber ihre Vision wirkt auch nicht wesentlich klarer
Es ist gut, dass es einige konkrete mittelfristige technische Ziele gibt, aber es ist nicht klar, wofür diese Ziele da sind
Ich bin Rust-Programmierer, daher ist klar, was ich für neue persönliche Projekte verwenden würde; müsste ich aber etwas anderes wählen, würde ich eher OCaml, C++ oder sogar C# nehmen
Erstens ist D ein Ersatz für C++, aber nicht C++; viele C++-Entwickler waren von diesem Unterschied frustriert
Zweitens kann D weit mehr leisten als nur ein C++-Ersatz zu sein
Man kann es für Skripte, als universelle Programmiersprache und besonders für C-Interoperabilität wie ImportC und BetterC verwenden
Eines der Ziele des Forks ist es, sich wegen des Garbage Collectors nicht mehr zu entschuldigen
In der Standardbibliothek gibt es weiterhin auch Reference Counting, Unique Pointer usw.
Wenn jemand Funktionen beitragen möchte, die den Garbage Collector vermeiden, werden sie meiner Ansicht nach akzeptiert werden
Allerdings wird man in diesem Fork Adam vermutlich seltener dabei sehen, wie er sich übermäßig bemüht, den Garbage Collector zu vermeiden, wenn er der Standardbibliothek neue Funktionen hinzufügt
Er glaubt, dass die Angst vor dem Garbage Collector übertrieben ist
In den letzten zehn Jahren gab es viel darüber zu lernen, wie Governance bei Programmiersprachen funktioniert
Wenn man sich aufstrebende Sprachen im Wandel ansieht, haben auch sie große Konflikte oder Fehler im Zusammenhang mit Governance erlebt
Ich denke, dass Governance inzwischen ein zentraler Punkt ist, auf den man bei Programmiersprachen achten sollte
Man sollte betrachten, wie sie über ihre Arbeitsweise sprechen, wie sie tatsächlich arbeiten, welche Ergebnisse es bisher gab und wie es voraussichtlich weitergeht
Die Weiterentwicklung von Programmiersprachen ist fast schon Komplexitätsmanagement und muss zugleich die Anforderungen mehrerer Stakeholder ausgewogen berücksichtigen
Fast alle Governance-Konflikte sind dadurch entstanden, dass eine Interessengruppe Anforderungen beanstandete, die für eine andere Gruppe unverzichtbar waren, und man kann nicht immer beide Seiten zufriedenstellen
Rusts
asyncist ein bekanntes Beispiel dafür und erklärt ein Design, das zwar funktioniert, insgesamt aber unbefriedigend istGo ist eine seltene Ausnahme: Das Kernteam hatte keinen Grund, alle Stakeholder gleichermaßen zu berücksichtigen, und hatte genug Ressourcen und Willen dazu, dennoch gab es auch dort einige Konflikte
Das Modell der Standardisierung aus den 1960er- bis 1980er-Jahren war deutlich besser und begrenzte politische Kämpfe auf kurze Zeiträume
Mir ist nicht klar, welche Nachteile es haben soll, mehrere Compiler-Implementierungen zu geben
Persönlich halte ich das für einen Hauptgrund, warum C so weit verbreitet ist
Compiler können unterschiedliche Richtungen erkunden, und Spracherweiterungen, deren Wert sich gezeigt hat, werden schließlich auch von anderen Implementierungen übernommen und schaffen es manchmal in den Standard, ohne im Konsensprozess eines Komitees zu stark beschädigt zu werden
Zumindest nahm ich an, dass es mit gcc und der dlang-seitigen Implementierung mindestens zwei gibt