Boost - UOS-Open-Source-Softwareentwicklung/oss1314 GitHub Wiki
Boost C++ Libraries
Kurzbeschreibung eines Open-Source-Projektes
Sebastian Brockmeyer, [email protected], Universität Osnabrück
Einsatzzweck
Boost ist ein Zusammenschluss mehrerer C++-Bibliotheken aller Art. Es gibt keine Spezialisierung auf ein oder mehrere bestimmte Gebiete. Die einzelnen Bibliotheken müssen einen allgemeinen Nutzen haben und dürfen nicht auf bestimmte Systeme oder Compiler eingeschränkt, also portabel sein. Die aktuelle Version ist 1.55 und umfasst 125 Libraries. [1] Diese können vielen verschiedenen Kategorien zugeordnet werden. Einige Kategorien sind Template Metaprogramming, Preprocessor Metaprogramming, Emulation von Sprachfeatures, Mathematik und Numerik, String und Text Processing, Datenstrukturen und Algorithmen.
Entstehungsgeschichte
Im Jahr 1998 wurde das erste Mal ein Standard für die Programmiersprache C++ verabschiedet [2], inklusive einer Standardbibliothek mit einigen Algorithmen und Datenstrukturen, die von allgemeinem Interesse und Nutzen sind. Unter C++-Programmierern war aber die Ansicht verbreitet, dass wichtige, da häufig benötigte, Features darin fehlten oder nicht umfassend genug vorhanden waren. [2] Als Beispiel sind hier die Smart Pointer zu nennen, die den Einstieg in vielen Boost-Tutorials bilden. [2] Smart Pointer erleichtern die Arbeit mit dynamisch allokiertem Speicher, da sie diesen automatisch wieder freigeben, was sonst manuell geschehen muss.
Auch einige Mitglieder des Standardisierungskomitees, darunter Beman Dawes und Dave Abrahams, waren der Ansicht, dass die Standardbibliothek noch Erweiterungspotential enthalte. Dawes machte deshalb den Vorschlag, eine Website ins Leben zu rufen, auf der freie Klassenbibliotheken angeboten werden, da dies "ein großer Vorteil für die C++-Community" sei. [3]
Im Jahr 2000 wurde Boost dann gegründet. [4] Ziel war es zunächst, eine Art "Sammelstelle" für mögliche neue Features des nächsten C++-Standards zu sein. So konnten schon Erfahrungswerte mit der entsprechenden Bibliothek gesammelt und Verbesserungsvorschläge ggf. umgesetzt werden. Nach und nach kamen aber auch andere Bibliotheken hinzu, die nicht explizit das Ziel hatten, in die Standardbibliothek aufgenommen zu werden.
2003 wurde ein Technical Report vom Standardisierungskomitee verabschiedet, der den Standard von 1998 um einige Aspekte erweiterte, unter anderem auch um viele Boost-Bibliotheken. [4] 2011 wurde der bislang jüngste C++-Standard verabschiedet, der wiederum einige Boost-Bibliotheken aufnahm und auch einige neue Sprachfeatures einführte, die zuvor von Boost-Bibliotheken durch Preprocessor- und Template-Metaprogramming aufwendig emuliert wurden, wie beispielsweise die foreach-Schleife und Lambda-Funktionen.
Anwender
Boost ist unter C++-Programmierern weit verbreitet und wird von vielen de facto als "Ersatzstandardbibliothek" verwendet. Auch viele namhafte Firmen wie SAP, McAfee, CERN, Google oder Adobe benutzen Boost. [5] Letztere setzt Boost in über 30 seiner Produkte ein, darunter die weltbekannten Adobe Reader und Photoshop. Adobe ist darüber hinaus maßgeblich an der Entwicklung von Boost.GIL beteiligt, der Generic Image Library. [4]
Finanzierung
Die Website Boost.org ist ein Non-Profit-Unternehmen. Anfallende Kosten und benötigte Infrastruktur, wie etwa der Betrieb der Seite, werden von Supportern gestellt. Dazu gehören unter anderem Open System Lab, Indiana University, SourceForge und BoostPro Computing. Letztere ist eine Firma, die von Dave Abrahams 2001 zunächst unter dem Namen Boost Consulting eigens zur Unterstützung von Boost gegründet wurde. [6]
Verwendete Tools
Boost verwendet zur Versionskontrolle svn (http://svn.boost.org/svn/boost). Dies wird aber zur Zeit auf git umgestellt. Für die Bereitstellung der Downloads wird SourceForge genutzt. Es existieren mehrere Mailinglisten, die bei Boost "Discussion Groups" genannt werden. [7] Es gibt unter anderem eine Users List, über die sich Fragen, Feature-Wünsche und Verbesserungsvorschläge einbringen können, eine Developers List, auf der die Entwickler untereinander diskutieren, und eine Mailingliste, auf der die Commit-Messages von svn gepostet werden. Außerdem gibt es für viele Bibliotheken projektspezifische Mailinglisten. Für den Report von Bugs existiert ein Trac (https://svn.boost.org/trac/boost/).
Entwicklungsprozess
Die Boost-Bibliotheken unterstehen ständigen Veränderungen und Verbesserungen. Ein wichtiger Aspekt in Boosts Rolle als "Ersatzstandardbibliothek" ist die Tatsache, dass Boost im Gegensatz zur Standardbibliothek nicht von seinen Bibliotheken verlangt, abwärtskompatibel zu sein.
Generell darf jeder neue Bibliotheken für die Aufnahme in Boost vorschlagen. Dazu muss er sich zunächst auf der Developers List eintragen. Dort muss er dann nachweisen, dass die Library von allgemeinem Nutzen und portabel ist. Ist diese Hürde genommen, durchläuft die Library einen komplexen Review-Prozess, an dem mehrere Entwickler beteiligt sind. Es ist erlaubt, bereits existierende Libraries in Boost zu integrieren, wobei sie dann ggf. angepasst werden muss, um den Ansprüchen von Boost zu genügen. [6] Auch bei der Lizenz stellt Boost einige Ansprüche.
Lizensierung
Die Lizenz jeder Boost-Library muss gewisse Anforderungen erfüllen, die in den License Requirements [8] aufgeführt sind. Dazu gehören juristische Aspekte,
- dass kein Copyleft vorhanden sein darf (damit sind einige Open Source Lizenzen, z.B. GPL, nicht gestattet),
- dass die Möglichkeit der kostenlosen kommerziellen und nicht kommerziellen Nutzung bestehen muss,
- dass die Lizenz in allen Kopien aufgeführt werden muss und
- dass weder die Lizenz noch der Quellcode ausführbaren Dateien oder anderen Binaries beigefügt werden muss.
Aber auch ein praktischer Aspekte, nämlich dass sie einfach zu lesen und zu verstehen sein muss, wird gefordert (wenngleich "einfach" ein Begriff mit Interpretationsspielraum ist). Es wird für neue Libraries empfohlen, die Boost Software License zu verwenden, die 2003 verfasst wurde, um der Unübersichtlichkeit der bis dahin verwendeten unterschiedlichen Lizenzen Herr zu werden. 2008 wurde die Boost Software License durch die Open Source Initiative zertifiziert.
Referenzen
- [1] Boost Libraries, http://www.boost.org/doc/libs/, 26.03.14
- [2] Highscore Tutorial, http://www.highscore.de/cpp/boost/, 26.03.14
- [3] Beman Dawes: Boost Proposal, http://www.boost.org/users/proposal.pdf, 26.03.14
- [4] Wikipedia: Boost (C++-Bibliothek), http://de.wikipedia.org/w/index.php?title=Boost_%28C%2B%2B-Bibliothek%29&oldid=125721209, 26.03.14
- [5] Boost Users, http://www.boost.org/users/uses_inhouse.html, 26.03.14
- [6] Boost FAQ, http://www.boost.org/users/faq.html, 26.03.14
- [7] Boost Mailing Lists, http://www.boost.org/community/groups.html, 26.03.14
- [8] Boost Requirements, http://www.boost.org/development/requirements.html#License, 26.03.14