Open-Source-Softwareentwicklung - Open-source software development
Open-Source-Softwareentwicklung ist der Prozess, bei dem Open-Source-Software oder ähnliche Software, deren Quellcode öffentlich zugänglich ist, von einem Open-Source-Softwareprojekt entwickelt wird . Dies sind Softwareprodukte, die mit ihrem Quellcode unter einer Open-Source-Lizenz erhältlich sind, um ihr Design zu studieren, zu ändern und zu verbessern. Beispiele für einige beliebte Open-Source-Softwareprodukte sind Mozilla Firefox , Google Chromium , Android , LibreOffice und der VLC Media Player .
Geschichte
1997 Eric S. Raymond schrieb die Kathedrale und den Basar . In diesem Buch unterscheidet Raymond zwischen zwei Arten der Softwareentwicklung. Die erste ist die konventionelle Closed-Source-Entwicklung. Diese Art der Entwicklungsmethode ähnelt Raymond zufolge dem Bau einer Kathedrale; zentrale Planung, straffe Organisation und ein Prozess von Anfang bis Ende. Die zweite ist die fortschreitende Open-Source-Entwicklung, die eher wie "ein großer plätschernder Basar unterschiedlicher Agenden und Ansätze ist, aus dem scheinbar nur durch eine Reihe von Wundern ein kohärentes und stabiles System entstehen könnte". Letztere Analogie verweist auf die Diskussion um einen Open-Source-Entwicklungsprozess.
Unterschiede zwischen den beiden Entwicklungsstilen sind nach Bar und Fogel im Allgemeinen die Handhabung (und Erstellung) von Fehlerberichten und Feature-Requests und die Einschränkungen, unter denen die Programmierer arbeiten. In der Closed-Source-Softwareentwicklung verbringen die Programmierer oft viel Zeit mit der Bearbeitung und Erstellung von Fehlerberichten sowie der Bearbeitung von Funktionsanfragen. Diese Zeit wird verwendet, um weitere Entwicklungspläne zu erstellen und zu priorisieren. Dies führt dazu, dass ein Teil des Entwicklungsteams viel Zeit mit diesen Themen verbringt und nicht mit der eigentlichen Entwicklung. Außerdem müssen die Entwicklungsteams in Closed-Source-Projekten häufig unter managementbezogenen Einschränkungen (wie Fristen, Budgets usw.) arbeiten, die technische Probleme der Software beeinträchtigen. Bei der Open-Source-Softwareentwicklung werden diese Probleme dadurch gelöst, dass die Anwender der Software in den Entwicklungsprozess eingebunden werden oder diese das System sogar selbst bauen lassen.
Modell
Die Entwicklung von Open-Source-Software kann in mehrere Phasen unterteilt werden. Die hier angegebenen Phasen sind von Sharma et al . Rechts ist ein Diagramm dargestellt, das die Prozessdatenstruktur der Open-Source-Softwareentwicklung darstellt. In diesem Bild sind die Phasen der Open-Source-Softwareentwicklung mit den entsprechenden Datenelementen dargestellt. Dieses Diagramm wird unter Verwendung der Metamodellierungs- und Metaprozessmodellierungstechniken erstellt .
Starten eines Open-Source-Projekts
Es gibt mehrere Möglichkeiten, wie die Arbeit an einem Open-Source-Projekt beginnen kann:
- Eine Person, die die Notwendigkeit eines Projekts erkennt, kündigt öffentlich die Absicht an, ein Projekt zu entwickeln.
- Ein Entwickler, der an einer begrenzten, aber funktionierenden Codebasis arbeitet, veröffentlicht diese als erste Version eines Open-Source-Programms.
- Der Quellcode eines ausgereiften Projekts wird der Öffentlichkeit zugänglich gemacht.
- Ein gut etabliertes Open-Source - Projekt kann gegabelt von einer interessierten Partei außerhalb.
Eric Raymond stellte in seinem Essay The Cathedral and the Bazaar fest, dass die Bekanntgabe der Absicht eines Projekts in der Regel schlechter ist als die Veröffentlichung eines funktionierenden Projekts an die Öffentlichkeit.
Es ist ein häufiger Fehler, ein Projekt zu starten, wenn ein Beitrag zu einem bestehenden ähnlichen Projekt effektiver wäre ( NIH-Syndrom ). Um ein erfolgreiches Projekt zu starten, ist es sehr wichtig zu untersuchen, was bereits vorhanden ist. Der Prozess beginnt mit der Wahl zwischen der Übernahme eines bestehenden Projekts oder dem Beginn eines neuen Projekts. Wenn ein neues Projekt gestartet wird, geht der Prozess in die Initiierungsphase über. Wird ein bestehendes Projekt übernommen, geht der Prozess direkt in die Ausführungsphase über.
Arten von Open-Source-Projekten
Es gibt verschiedene Arten von Open-Source-Projekten. Erstens gibt es die Gartenvielfalt von Softwareprogrammen und Bibliotheken, die aus eigenständigen Codestücken bestehen. Einige könnten sogar von anderen Open-Source-Projekten abhängig sein. Diese Projekte dienen einem bestimmten Zweck und erfüllen einen bestimmten Bedarf. Beispiele für diese Art von Projekt sind der Linux-Kernel , der Firefox-Webbrowser und die Office-Toolsuite LibreOffice.
Distributionen sind eine andere Art von Open-Source-Projekten. Distributionen sind Sammlungen von Software, die aus derselben Quelle mit einem gemeinsamen Zweck veröffentlicht werden. Das prominenteste Beispiel für eine "Verteilung" ist ein Betriebssystem. Es gibt viele Linux- Distributionen (wie Debian , Fedora Core , Mandriva , Slackware , Ubuntu usw.), die den Linux-Kernel zusammen mit vielen User-Land-Komponenten ausliefern. Es gibt andere Distributionen, wie ActivePerl , die Programmiersprache Perl für verschiedene Betriebssysteme, und Cygwin- Distributionen von Open-Source-Programmen für Microsoft Windows .
Andere Open-Source-Projekte, wie die BSD- Derivate, pflegen den Quellcode eines gesamten Betriebssystems, den Kernel und alle seine Kernkomponenten in einem Revisionskontrollsystem ; das gesamte System gemeinsam als ein Team zu entwickeln. Diese Betriebssystementwicklungsprojekte integrieren ihre Werkzeuge stärker als in die anderen verteilungsbasierten Systeme.
Schließlich gibt es das Buch- oder Standalone-Dokumentenprojekt. Diese Artikel werden normalerweise nicht als Teil eines Open-Source-Softwarepakets geliefert. Das Linux Documentation Project beherbergt viele solcher Projekte, die verschiedene Aspekte des Linux-Betriebssystems dokumentieren. Es gibt viele andere Beispiele für diese Art von Open-Source-Projekten.
Methoden
Es ist schwierig, ein Open-Source-Projekt nach einer traditionelleren Softwareentwicklungsmethode wie dem Wasserfallmodell durchzuführen , da es bei diesen traditionellen Methoden nicht erlaubt ist, in eine frühere Phase zurückzukehren. In der Open-Source-Softwareentwicklung werden Anforderungen selten vor Projektbeginn erhoben; Stattdessen basieren sie auf frühen Releases des Softwareprodukts, wie Robbins beschreibt. Neben den Anforderungen werden oft ehrenamtliche Mitarbeiter angezogen, die bei der Entwicklung des Softwareprodukts auf der Grundlage der frühen Versionen der Software helfen. Dieser Vernetzungseffekt ist laut Abrahamsson et al. essenziell: „Wenn der vorgestellte Prototyp genügend Aufmerksamkeit auf sich zieht, wird er nach und nach immer mehr Entwickler anziehen“. Abrahamsson et al. weisen auch darauf hin, dass die Community sehr hart ist, ähnlich wie die Geschäftswelt der Closed-Source-Software: „Wenn man die Kunden findet, überlebt man, aber ohne Kunden stirbt man“.
Fuggetta argumentiert, dass „Rapid Prototyping, inkrementelle und evolutionäre Entwicklung, spiralförmiger Lebenszyklus, schnelle Anwendungsentwicklung und in letzter Zeit extreme Programmierung und der agile Softwareprozess gleichermaßen auf proprietäre und Open-Source-Software angewendet werden können“. Er weist auch auf Extreme Programming als eine äußerst nützliche Methode für die Open-Source-Softwareentwicklung hin. Allgemeiner gesagt sind alle agilen Programmiermethoden aufgrund ihres iterativen und inkrementellen Charakters auf die Open-Source-Softwareentwicklung anwendbar. Andere agile Methoden sind gleichermaßen für die Open-Source- und Closed-Source-Softwareentwicklung geeignet : Internet-Speed Development beispielsweise eignet sich aufgrund des verteilten Entwicklungsprinzips für die Open-Source-Softwareentwicklung. Internet-Speed Development verwendet geografisch verteilte Teams, um „rund um die Uhr“ zu arbeiten. Diese Methode, die meist von großen Closed-Source-Firmen übernommen wird (weil sie die einzigen sind, die sich Entwicklungszentren in verschiedenen Zeitzonen leisten), funktioniert in Open-Source-Projekten genauso gut, da eine von einer großen Gruppe von Freiwilligen entwickelte Software natürlich tendenziell Entwickler über alle Zeitzonen verteilen.
Werkzeuge
Kommunikationskanäle
Entwickler und Nutzer eines Open-Source-Projekts arbeiten nicht unbedingt alle in unmittelbarer Nähe am Projekt. Sie benötigen einige elektronische Kommunikationsmittel. E-Mail ist eine der häufigsten Kommunikationsformen unter Open-Source-Entwicklern und -Benutzern. Häufig werden elektronische Mailinglisten verwendet, um sicherzustellen, dass E-Mail-Nachrichten an alle interessierten Parteien gleichzeitig zugestellt werden. Dadurch wird sichergestellt, dass mindestens eines der Mitglieder darauf antworten kann. Um in Echtzeit zu kommunizieren, verwenden viele Projekte eine Instant-Messaging- Methode wie IRC . Webforen sind in letzter Zeit zu einer gängigen Methode für Benutzer geworden, um Hilfe bei Problemen zu erhalten, die bei der Verwendung eines Open-Source-Produkts auftreten. Wikis haben sich als Kommunikationsmedium für Entwickler und Benutzer etabliert.
Versionskontrollsysteme
Bei der OSS-Entwicklung sind die Teilnehmer, die meistens Freiwillige sind, auf verschiedene geografische Regionen verteilt, so dass Werkzeuge benötigt werden, um die Teilnehmer bei der Zusammenarbeit bei der Entwicklung von Quellcode zu unterstützen.
In den frühen 2000er Jahren war das Concurrent Versions System (CVS) ein prominentes Beispiel für ein Quellcode-Collaboration-Tool, das in OSS-Projekten verwendet wurde. CVS hilft bei der Verwaltung der Dateien und Codes eines Projekts, wenn mehrere Personen gleichzeitig an dem Projekt arbeiten. CVS ermöglicht es mehreren Personen, gleichzeitig an derselben Datei zu arbeiten. Dies geschieht durch Verschieben der Datei in die Verzeichnisse der Benutzer und anschließendes Zusammenführen der Dateien, wenn die Benutzer fertig sind. CVS ermöglicht auch das einfache Abrufen einer früheren Version einer Datei. Mitte der 2000er Jahre wurde das Revisionskontrollsystem (SVN) von Subversion entwickelt , um CVS zu ersetzen. Es gewinnt als OSS-Projektversionskontrollsystem schnell an Boden.
Viele Open-Source-Projekte verwenden mittlerweile verteilte Revisionskontrollsysteme, die besser skalieren als zentralisierte Repositorys wie SVN und CVS. Beliebte Beispiele sind git , das vom Linux-Kernel verwendet wird , und Mercurial , das von der Programmiersprache Python verwendet wird.
Bugtracker und Aufgabenlisten
Die meisten Großprojekte erfordern ein Fehlerverfolgungssystem, um den Status verschiedener Probleme in der Entwicklung des Projekts zu verfolgen. Einige Bug-Tracker umfassen:
- Bugzilla – ein webbasierter Bugtracker von Mozilla .
- Mantis Bug Tracker – ein webbasierter PHP/MySQL-Bugtracker.
- Trac – Integration eines Bugtrackers in ein Wiki und eine Schnittstelle zum Versionskontrollsystem von Subversion.
- Redmine – geschrieben in Ruby, integriert Issue-Tracking, Wiki, Forum, News, Roadmap, Gantt-Projektplanung und Schnittstellen mit LDAP-Benutzerverzeichnis.
- Request-Tracker – geschrieben in Perl. Als Standard für CPAN- Module angegeben – siehe rt.cpan.org.
- SourceForge und seine Forks bieten als Teil seiner Dienste einen Bugtracker an. Infolgedessen verwenden viele Projekte, die bei SourceForge.net und ähnlichen Diensten gehostet werden, standardmäßig es.
- JIRA – Webbasiertes Projektmanagement- und Issue-Tracking-Tool von Atlassian .
Test- und Debugging-Tools
Da OSS-Projekte häufig integriert werden, werden Tools verwendet, die das Testen während der Systemintegration automatisieren. Ein Beispiel für ein solches Tool ist Tinderbox. Tinderbox ermöglicht es den Teilnehmern eines OSS-Projekts, Fehler bei der Systemintegration zu erkennen. Tinderbox führt einen kontinuierlichen Build-Prozess durch und informiert Benutzer darüber, bei welchen Teilen des Quellcodes Probleme auftreten und auf welchen Plattformen diese Probleme auftreten.
Ein Debugger ist ein Computerprogramm, das zum Debuggen (und manchmal zum Testen oder Optimieren) anderer Programme verwendet wird. GNU Debugger (GDB) ist ein Beispiel für einen Debugger, der in der Open-Source-Softwareentwicklung verwendet wird. Dieser Debugger bietet Remote-Debugging, was ihn besonders für die Open-Source-Softwareentwicklung geeignet macht.
Ein Memory-Leak-Tool oder Memory-Debugger ist ein Programmiertool zum Auffinden von Memory-Leaks und Pufferüberläufen . Ein Speicherleck ist eine besondere Art von unnötigem Speicherverbrauch durch ein Computerprogramm, bei dem das Programm nicht mehr benötigten Speicher nicht freigibt. Beispiele für Tools zur Erkennung von Speicherlecks, die von Mozilla verwendet werden, sind die XPCOM Memory Leak-Tools. Validierungstools werden verwendet, um zu überprüfen, ob Codeteile der angegebenen Syntax entsprechen. Ein Beispiel für ein Validierungstool ist Splint .
Paketverwaltung
Ein Paketverwaltungssystem ist eine Sammlung von Tools zum Automatisieren des Prozesses zum Installieren, Aktualisieren, Konfigurieren und Entfernen von Softwarepaketen von einem Computer. Der Red Hat Package Manager (RPM) für .rpm und das Advanced Packaging Tool (APT) für das .deb- Dateiformat sind Paketverwaltungssysteme, die von einer Reihe von Linux-Distributionen verwendet werden.
Veröffentlichung eines Projekts
Softwareverzeichnisse und Release-Logs:
Artikel:
Siehe auch
- Geschäftsmodelle für Open-Source-Software
- Open-Code-Kooperation der Regierung
- Sicherheit von Open-Source-Software
- Softwareentwicklungsprozess
- Release-Management
- Softwareentwicklung
- Metamodellierung