4 Punkte von baeba 1 시간 전 | 1 Kommentare | Auf WhatsApp teilen

Kurzüberblick

  • Kernthema

    • Vorstellung von Büchern und begleitenden Materialien, in denen Entwicklerinnen und Entwickler selbst die interne Struktur und Designentscheidungen von Open-Source-Anwendungen erläutern.
  • Wichtigste Punkte

    • Softwareentwickler haben, anders als Architekten, historisch gesehen nur wenige Gelegenheiten, die Struktur großer, bedeutender Programme systematisch zu studieren.
    • Dadurch entsteht das Problem, dass ähnliche Fehler wiederholt werden, statt bestehende Erfolgsmuster zu nutzen.
    • Die Bücher fassen Struktur, Komponenten, Interaktionsweisen und Erkenntnisse aus dem Entwicklungsprozess wichtiger Open-Source-Projekte zusammen.
    • Einsteiger können die Denkweise erfahrener Entwickler lernen; fortgeschrittene und erfahrene Entwickler können sich an Lösungsbeispielen für komplexe Designprobleme orientieren.
    • Alle Materialien stehen unter der Creative Commons Attribution 3.0 License; Einnahmen aus dem Buchverkauf werden an Amnesty International gespendet.
    • Beiträge aus der Community sind möglich, etwa Fehlermeldungen, Übersetzungen oder das Verfassen neuer Kapitel.

Einleitung

  • Strukturelle Grenzen beim Lernen von Softwaredesign

    • Architekten betrachten in ihrer Ausbildung zahlreiche Bauwerke und lernen dazu auch die Kritik von Fachleuten kennen.
    • Softwareentwickler haben dagegen nur begrenzte Möglichkeiten, große Programme tiefgehend zu verstehen.
    • Viele Entwickler sammeln ihre Erfahrung vor allem anhand von Programmen, die sie selbst geschrieben haben.
    • In der Folge ist die Wahrscheinlichkeit hoch, ähnliche Designfehler zu wiederholen, statt auf herausragenden früheren Designbeispielen aufzubauen.
  • Ziel der Materialien

    • Ziel ist es, die reale Struktur von Open-Source-Anwendungen in analysierbarer Form bereitzustellen.
    • Die Projektverantwortlichen erklären selbst die Softwarestruktur und den Hintergrund der Designentscheidungen.
    • Entwickler sollen dabei unterstützt werden, die Design-Denkweise anderer Entwickler zu lernen.

Hauptteil

Die Struktur von Open-Source-Projekten wird direkt erklärt

  • Wichtige Analysegegenstände

    • Insgesamt vier Bücher behandeln verschiedene Open-Source-Anwendungen und verwandte Themen.
    • Jedes Kapitel erläutert die Struktur und den Designansatz eines bestimmten Projekts oder technischen Themas.
    • Die Autoren sind Entwickler des jeweiligen Projekts oder einschlägige Fachleute.
  • Zentrale Fragen der Analyse

    • Was sind die wichtigsten Komponenten des Programms?
    • Wie interagieren die einzelnen Komponenten miteinander?
    • Welche Designentscheidungen wurden im Entwicklungsprozess getroffen?
    • Welche Lehren wurden bei der Erstellung des Projekts gezogen?

AOSA Volume 1 behandelt die Struktur repräsentativer Open-Source-Anwendungen

  • Wichtige Inhalte

    • Behandelt werden unterschiedliche Projekte wie Asterisk, Audacity, Bash, Berkeley DB, CMake, Eclipse, Graphite, HDFS, LLVM, Mercurial, Selenium WebDriver und Sendmail.
    • Abgedeckt wird ein breites Spektrum, darunter Systemsoftware, Entwicklungstools, Datenbanken, verteilte Dateisysteme, Kollaborationstools und Visualisierungstools.
  • Bedeutung

    • Die interne Struktur von Open-Source-Projekten lässt sich aus der Perspektive der tatsächlichen Entwickler verstehen.
    • Designprobleme und Lösungsansätze, die in unterschiedlichen Technologiebereichen wiederholt auftreten, lassen sich vergleichen.

AOSA Volume 2 bietet erweiterte Technologiebereiche und Designbeispiele

  • Wichtige Inhalte

    • Behandelt werden unter anderem skalierbare Webarchitekturen, Firefox Release Engineering, FreeRTOS, GDB, GHC, Git, GPSD, MediaWiki, Moodle, nginx, Open MPI, Puppet, PyPy, SQLAlchemy, Twisted und ZeroMQ.
    • Enthalten sind vielfältige Themen wie Web, Compiler, Betriebssysteme, verteilte Systeme, Language Runtimes, Frameworks und Infrastrukturtools.
  • Bedeutung

    • Es werden Beispiele dafür geboten, wie komplexe Softwaresysteme entworfen und betrieben werden.
    • Für fortgeschrittene und erfahrene Entwickler ist dies nützlich, um reale Beispiele für Designentscheidungen zu prüfen.

POSA behandelt Performance-Probleme in Open-Source-Anwendungen

  • Wichtige Inhalte

    • Behandelt werden unter anderem High-Performance-Networking in Chrome, die Entwicklung von SocialCalc zu EtherCalc, das Build-System Ninja, Optimierung beim XML-Parsing, MemShrink, Performance in Mobilfunknetzen und Big-Data-Verarbeitung in der Bioinformatik.
  • Bedeutung

    • Es zeigt, dass Verbesserungen der Software-Performance nicht nur einfache Codeoptimierung sind, sondern mit strukturellem Design, Deployment-Ansätzen, Netzwerkumgebungen und Datenverarbeitungsweisen zusammenhängen.
    • Performance-Probleme lassen sich anhand konkreter Praxisbeispiele analysieren.

500 Lines or Less setzt Kernideen mit wenig Code um

  • Wichtige Inhalte

    • Behandelt werden unter anderem visuelle Programmierwerkzeuge, Continuous-Integration-Systeme, dynamische Build-Systeme, Webcrawler, In-Memory-Graphdatenbanken, ereignisbasierte Web-Frameworks, ein Python-Interpreter, OCR, Web-Spreadsheets, statische Analyse, Template-Engines und einfache Webserver.
  • Bedeutung

    • Die grundlegenden Designprinzipien werden innerhalb eines begrenzten Codeumfangs erklärt.
    • Die Inhalte sind so aufgebaut, dass sich komplexe Systemkonzepte über kleine Implementierungen erlernen lassen.

Lizenz und Beitragsmöglichkeiten sind klar geregelt

  • Lizenz

    • Die Materialien werden unter der Creative Commons Attribution 3.0 Unported License bereitgestellt.
    • Sie können genutzt werden, sofern die Bedingungen zur Namensnennung erfüllt werden.
  • Verwendung der Einnahmen

    • Alle durch den Buchverkauf entstehenden Tantiemen werden an Amnesty International gespendet.
  • Beitragsmöglichkeiten

    • Fehler können gemeldet werden.
    • Man kann sich an Übersetzungen in andere Sprachen oder Formate beteiligen.
    • Es können Kapitel verfasst werden, die die Architektur neuer Open-Source-Projekte erklären.
    • Wer Interesse an neuen Übersetzungen oder dem Schreiben von Kapiteln hat, kann Kontakt mit den Projektverantwortlichen aufnehmen.

Fazit

  • Kernaussage

    • Diese Materialien sind eine Sammlung von Fallbeispielen, mit der sich die interne Struktur und Designentscheidungen von Open-Source-Anwendungen systematisch lernen lassen.
    • Entwickler können nicht nur einzelne Codefragmente, sondern den Aufbau des Gesamtsystems und die Gründe für das Design verstehen.
    • Für Einsteiger sind sie ein Ausgangspunkt, um die Denkweise erfahrener Entwickler zu lernen.
    • Für fortgeschrittene und erfahrene Entwickler dienen sie als Material, um reale Fälle gelöster komplexer Designprobleme zu vergleichen und zu analysieren.
  • Praktischer Wert

    • Sie sind nicht nur für Entwickler nützlich, die Open-Source-Projekte verwenden, sondern auch für jene, die selbst Systeme entwerfen und betreiben.
    • Sie helfen dabei, wiederkehrende Designfehler zu reduzieren und bewährte Designbeispiele zu lernen.
    • Sie zeigen, dass communitybasierter Wissensaustausch zur Verbesserung der Fähigkeiten in der Softwareentwicklung beitragen kann.

1 Kommentare

 
desmond2 1 시간 전

Vielen Dank