Leutgöb, A. (2016). Development of a build system for cross-platform open-source projects [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2016.27843
software engineering; C++; HEX-programs; answer set programming
en
Abstract:
Software-Projekte entwickeln sich ständig durch aufeinander folgende Versionen weiter. Mit jedem neuen Release wird neue Funktionalität hinzugefügt oder bestehende angepasst und weiter verbessert. Während neue Versionen von kommerzieller Software in der Regel als Binärdateien verteilt werden und so für ihre Zielgruppe bereit zum Einsatz sind, verfolgen Open-Source Software Projekte in der Praxis meist einen anderen Ansatz. Diese Projekte werden in der Regel von Entwickler-Communities betreut, und mit Hilfe von agilen Methoden und Tools zur Online-Zusammenarbeit fortlaufend entwickelt. Aufgrund dieser Transparenz im Entwicklungsprozess unterscheidet sich auch der Weg der Veröffentlichung neuer Versionen. Neue Versionen werden oft nur in einem Versionskontrollsystem ausgezeichnet und dann als Quellcode-Archiv zum Download zur Verfügung gestellt. Obwohl dieses Archiv einfach zugänglich gemacht wird, vernachlässigen Entwicklungs-Teams die explizite Erstellung einer ausführbaren Binär-Version für Endnutzer. Vielmehr wird von jenen Nutzern erwartet, die Software selbst zu erstellen. Genau dieser Schritt stellt jedoch nicht selten eine große Hürde für die Zielgruppe dar. Nicht alle potentiellen Endanwender einer Software sind aufgrund mangelndes Knowhows in der Lage diese selbst in ein ausführbares Dateiformat umzuwandeln oder oft auch nicht bereit Zeit darin zu investieren. Dieses Problem ist vor allem im Umfeld von Open-Source Software evident, wo Projekte oftmals für Endanwender bestimmt sind, welche nicht aus dem Bereich der Softwareentwicklung stammen. Ein Beispiel dafür stellt Software für Wissensrepräsentation dar, welche vor allem im Bereich Business Informatics zum Abbilden von Ontologien oder zur Extraktion von Information verwendet wird. Diese wird vorwiegend von akademischen Forschungsgruppen eingesetzt, welche zu einem gewissen Grad die vertiefenden Kenntnisse zum Erstellen der Software vermissen und daher für genau diese Zielgruppe nicht einsetzbar macht. Um dieses Problem zu lösen, werden wir ein generisches Framework für ein Build-System entwerfen, welches verwendet werden kann, um den Erstellungs- und Veröffentlichungs-Prozess eines Software-Projekts zu automatisieren und somit Entwickler bei der Bereitstellung von aktuellen Binär-Paketen für Endnutzer zu unterstützen. Besonderes Augenmerk wir dabei darauf gelegt, das Framework möglichst allgemein zu entwerfen, um es so für eine breites Spektrum von Software-Projekten unterschiedlicher Größe einsetzbar zu machen. Das Framework unterstützt dabei drei Zielsysteme: Ubuntu Linux, Mac OS X und Windows. Ziel des Frameworks ist es dabei, Binär-Dateien von C ++ Projekten zu erstellen, welche GNU Autotools benutzen. Als letzter Schritt dieser Arbeit wird das Framework gegen ein Projekt aus der realen Welt validiert. Das Forschungsgebiet der logischen Programmierung gibt dabei ein gutes Beispiel für eine Open-Source Software-Projekt, für welches die Verteilung in Binärform aktuell eine Hürde nach dem oben beschriebenen Problem darstellt. Die dafür verwendete Software namens DLVHEX, ein Reasoner für hex-Programme, wartet aufgrund externer Bibliotheksabhängigkeiten mit einem hohen Grad an Komplexität auf. Aufgrund dieser Komplexität folgt die Software aktuell einem seltenen und unregelmäßige Release-Zyklus. Dies macht neue Funktionen für Endanwender über einen längeren Zeitraum hinweg nicht zugänglich, da die Software vor allem von Menschen ohne tiefere Kenntnisse von Softwareentwicklung verwendet wird. Schlussendlich wird das Framework dazu verwendet werden, um eine neue Version der betrachteten Software zu erstellen.
de
Software projects evolve through successive releases. With every release, new functionality gets added or existing functionality is adapted and improved. While new releases of commercial software are usually distributed in binary form, and are thus ready for usage for their target group, open-source software projects face a different approach. Open-source projects are typically maintained by developer communities who use agile methods and online collaboration tools. However, due to this transparency in the development process, the way of releasing new versions differs compared to closed-source projects. New releases are often only tagged within a version control system and then provided as source code archives. While these snapshots of the development efforts are accessible for everyone, project members often skip building a binary for distribution and end users of the software are therefore expected to build the software themselves. Software maintainers however do not see that building software is a barrier for ordinary users. Not all potential users are able and willing to build software from source. Often, users might lack the necessary knowledge or do not want to spend time on this issue. This problem of missing binary builds is especially true for open-source software, targeting people that are not originating from the field of software engineering, like software created for knowledge representation and reasoning. Such software is mainly used by academic research groups in the field of Business Informatics for describing ontologies or information extraction. People of that target group often miss the in-depth knowledge for building different available solving tools from source, which makes the usage of such tools more difficult or not applicable at all. To address this problem, we will design a generic framework for a build system that can be used to largely automate the release process of a software project and thus can support developers to provide up-to-date packages for end-users. The framework will be designed in a generic way, so that it is applicable for a wide range of software projects of different size and will support three target systems: Ubuntu Linux, Mac OS X and Windows. The framework will further be designed to build C++ projects that make use of GNU Autotools. As a last step, the framework will be validated against a real-world project. The field of logical programming will be used to derive a good example for an open-source software that lacks of binary distribution, according to the problem described above. The used software DLVHEX, a reasoner for hex programs, comes up with a high level of complexity due to external library dependencies. Because of that complexity, the DLVHEX software currently does not follow a frequent and periodical release cycle, which makes new features for end-users inaccessible for a longer time, as the software is mostly used by people without deeper knowledge of the software build process. The framework will finally be used to create a new release of the used software.