Zum 14. Jahrestag der Veröffentlichung von Go als Open-Source-Projekt
- Einer der Mitbegründer der Programmiersprache Go hielt am 10. November 2023 auf der GopherConAU in Sydney seinen letzten Vortrag.
- In dem Vortrag wurde das 14-jährige Bestehen von Go als Open-Source-Projekt gewürdigt und über die bisherigen Erfolge sowie Punkte zur Selbstkritik gesprochen.
- Der Redner betonte, dass er weder das Go-Team noch Google vertrete, sondern seine persönliche Sicht darlege, und dankte der Community für ihren Beitrag zum Erfolg von Go.
Erfolgsfaktoren von Go und Verbesserungspunkte
- Das ursprüngliche Ziel von Go war nicht, eine neue Programmiersprache zu schaffen, sondern die Art und Weise zu verbessern, wie Software geschrieben wird.
- Go sollte die Komplexität beim Bau moderner Server-Software lösen, etwa bei Dependency-Management, Zusammenarbeit in großen Teams, einfacher Wartbarkeit, effizientem Testing sowie der effektiven Nutzung von Multi-Core-CPUs und Networking.
- Go ist nicht nur eine Programmiersprache, sondern ein Projekt, um produktive Software einfacher und produktiver zu entwickeln.
Das Go-Maskottchen, der Gopher
- Der Gopher, das Maskottchen von Go, spielte eine wichtige Rolle für den Erfolg der Sprache.
- Der Gopher war das Symbol der Go-Programmierer und die Fahne der Community und damit wesentlich für das Wachstum des Projekts.
- Die Veröffentlichung des Gopher-Designs unter der Creative Commons Attribution-Lizenz half dabei, den Community-Geist zu fördern, brachte aber auch Schwierigkeiten durch Urheberrechtsfragen mit sich.
Technische Erfolgsfaktoren von Go
- Die offizielle Spezifikation, mehrere Implementierungen, Portabilität, garantierte Kompatibilität, umfangreiche Bibliotheken, die einfache Entwicklung von Tools und das automatische Code-Formatierungswerkzeug
gofmt trugen zum Erfolg von Go bei.
gofmt beeinflusste die Programmier-Community insgesamt und trug dazu bei, dass die meisten Sprachen heute über einen Standard-Formatter verfügen.
Concurrency und Interfaces
- Go machte Concurrency zu einem zentralen Bestandteil der Sprache und half damit, die Struktur von Server-Software zu vereinfachen.
- Interfaces sind eine charakteristische Idee von Go, Go’s Antwort auf objektorientiertes Design, und spielen eine wichtige Rolle in der Standardbibliothek und beim Dependency-Management.
Generics und Compiler
- Die Existenz von Interfaces war einer der Gründe, warum es lange dauerte, Generics zu Go hinzuzufügen.
- Dass der frühe Go-Compiler in C geschrieben war, war in der Community der Programmiersprachen umstritten, erwies sich jedoch als passende Entscheidung für die Entwicklung von Go.
Projekt- und Paketverwaltung
- Go wurde als Open-Source-Projekt in der frühen Entwicklungsphase zunächst nicht öffentlich entwickelt, doch nach der Öffnung stiegen die Beiträge aus der Community explosionsartig an.
- Die Entwicklung der Paketverwaltung verlief nicht reibungslos, und es fehlte an Verständnis dafür, wie man mit der Community zusammenarbeitet.
Dokumentation und Beispiele
- Die frühe Dokumentation von Go entsprach nicht den Erwartungen der Community, wurde später aber verbessert, etwa durch ausführbare Beispiele im Web.
Meinung von GN⁺
- Der Erfolg von Go beruht auf Faktoren wie einer starken Standardbibliothek, Unterstützung für Concurrency, interfacebasiertem Design, klarer Paketverwaltung, schnellen Build- und Testing-Tools, konsistenter Code-Formatierung, Fokus auf Lesbarkeit und garantierter Kompatibilität.
- Go brachte nicht nur als Programmiersprache, sondern auch in der Art der Softwareentwicklung Innovationen, was der Vielfalt und Unterstützung der Community zu verdanken ist.
- Der Entwicklungsprozess von Go und die anschließende Selbstkritik liefern wichtige Lehren für den Betrieb von Open-Source-Projekten.
1 Kommentare
Hacker-News-Kommentare
Dankbarkeit gegenüber den Schlüsselfiguren, die Zeit in die Retrospektive des Projekts investiert haben
Zuneigung zur Go-Sprache und zur Community
Geteilte kritische Erfahrung mit Gos Paketmanagementsystem
Eine kritische Sicht auf die Go-Sprache
Interessanter Punkt zur Entscheidung, Ken Thompsons C-Compiler zu verwenden
Betonung der erfolgreichen Einführung von gofmt
Als Organisator der GopherConAU wird die vollständige Playlist geteilt
Vorteile von Go, mit dem sich Monorepos einfach erstellen und Apps schnell bauen lassen
Fehlende Erwähnung von Gos Interoperabilität und der Wahl bei C FFI
Meinung dazu, Compiler in der eigenen Sprache zu schreiben