Design and Implementation of a Modular Architecture for the Transparent Integration of Containerized Execution Environments for Heterogeneous Open-Source Binaries in OneWare Studio
Companion repository of the Master's thesis by Mert Torun, submitted to TH Köln, Faculty of Information, Media and Electrical Engineering, in 2026. Version of record: https://doi.org/10.57683/EPUB-3597
Important
publication/Torun_Containerized_Execution_OneWare.pdf is the deposited file, byte for byte (557,042 bytes, SHA-256 f7cb839334f73d2df225a323d0d0473181055a6041cdbca8233f33a8f0c74f93). The LaTeX sources in thesis/ at the tag epub-3597 reproduce its text, not its bytes. After that tag the text of the thesis changes only through ERRATA.md.
Ensuring the reproducibility of build processes poses a significant challenge in embedded systems and Field-Programmable Gate Array (FPGA) development. The reliance on complex, platform-specific binaries and toolchains (e.g., Yosys, nextpnr) frequently leads to “Environment Drift,” where builds succeed locally but fail in collaborative environments due to system inconsistencies.
To address these challenges, this thesis investigates three central Research Questions: how to establish a robust, cross-platform containerization architecture across heterogeneous host operating systems (RQ1), how to seamlessly integrate these containerized environments into a modern IDE to preserve a native user experience (RQ2), and what performance overhead is introduced by containerized execution and architecture emulation (RQ3). To resolve these questions, a modular software integration architecture is designed and implemented as a standalone extension for the OneWare Studio IDE. Using C# and .NET 10, a decoupled middleware is developed based on a Hybrid Strategy Pattern, enabling developers to switch seamlessly between high-performance native execution and hermetic containerized workflows at runtime.
The architecture resolves critical barriers to adoption through four technical contributions—three addressing the research questions directly, complemented by a reproducibility feature:
-
Cross-Platform Interoperability (Addressing RQ1): A dynamic User-ID injection strategy and abstract transport resolution ensure seamless operation across Windows, Linux, and macOS, specifically solving file-permission locking issues on Linux systems.
-
Transparent Integration (Addressing RQ2): Real-time stream multiplexing and log-level parsing transform raw container output into structured IDE feedback, preserving the native user experience.
-
Performance Characterization (Addressing RQ3): The system exposes a user-selectable image platform so that, on ARM64 Apple Silicon, an x86 toolchain image is executed through the host runtime’s Rosetta 2 translation layer; the resulting execution overhead is characterized and decomposed.
-
Temporal Reproducibility (“Time Machine”): A dynamic tagging mechanism lets projects pin a specific toolchain image tag (optionally a content digest), providing a reproducible build environment over time.
The empirical evaluation characterizes the cost of the containerized path rather than asserting a single headline factor. Beyond raw containerization, the extension’s strategy dispatch adds a fixed per-invocation cost on the order of 0.2 s and negligible marginal compute overhead, so its relative cost is dominated by a constant floor that amortizes as workload size grows. On Apple Silicon the toolchain image runs under Rosetta 2 emulation, so a native-versus-container comparison on that host would conflate containerization with instruction-set emulation; native x86_64 hosts (Windows and Linux) reproduce the same fixed-floor structure without emulation, and the same-build native baseline on the Linux host—the one setting that isolates the container-versus-native factor—fixes it at α ≈ 1, a fixed per-invocation floor with no measurable per-instruction tax. Across the seven-workload FPGA corpus (iCE40 and ECP5 synthesis, place-and-route and bitstream packing, plus Icarus Verilog simulation) every workload executed to success through the hermetic container, so the system eliminates configuration friction and makes toolchain execution independent of the host’s package environment, resolving cascading dependency conflicts.
Keywords, as printed on p. iv: FPGA Toolchains; Docker Middleware; Hybrid Strategy Pattern; Reproducible Builds; Cross-Platform Architecture; .NET 10; Apple Silicon Emulation; User-ID Mapping; Version Pinning; Electronic Design Automation (EDA); OneWare Studio.
Corrections to the deposited thesis are listed in ERRATA.md.
Deutsch: Entwurf und Implementierung einer modularen Architektur zur transparenten Integration containerbasierter Ausführungsumgebungen für heterogene Open-Source-Binärdateien in OneWare Studio
Die Sicherstellung der Reproduzierbarkeit von Build-Prozessen stellt eine erhebliche Herausforderung in der Entwicklung eingebetteter Systeme und von Field-Programmable Gate Arrays (FPGAs) dar. Die Abhängigkeit von komplexen, plattformspezifischen Binärdateien und Toolchains (z. B. Yosys, nextpnr) führt häufig zum „Environment Drift“: Builds laufen lokal erfolgreich durch, schlagen in kollaborativen Umgebungen jedoch aufgrund von Systeminkonsistenzen fehl.
Zur Bewältigung dieser Herausforderungen untersucht diese Arbeit drei zentrale Forschungsfragen: wie sich eine robuste, plattformübergreifende Architektur zur Containerisierung über heterogene Host-Betriebssysteme hinweg etablieren lässt (RQ1), wie sich diese containerbasierten Umgebungen nahtlos in eine moderne IDE integrieren lassen, um ein natives Nutzungserlebnis zu bewahren (RQ2), und welcher Performance-Overhead durch containerbasierte Ausführung und Architekturemulation entsteht (RQ3). Zur Beantwortung dieser Fragen wird eine modulare Software-Integrationsarchitektur entworfen und als eigenständige Erweiterung für die IDE OneWare Studio implementiert. Unter Verwendung von C# und .NET 10 wird eine entkoppelte Middleware auf Basis eines hybriden Strategiemusters (Hybrid Strategy Pattern) entwickelt, die es Entwicklern ermöglicht, zur Laufzeit nahtlos zwischen leistungsstarker nativer Ausführung und hermetischen containerbasierten Arbeitsabläufen zu wechseln.
Vier technische Beiträge der Architektur beseitigen kritische Hürden für ihre Einführung; drei davon gehen unmittelbar auf die Forschungsfragen ein, der vierte ist eine ergänzende Funktion zur Reproduzierbarkeit:
-
Plattformübergreifende Interoperabilität (zu RQ1): Eine dynamische Strategie zur Injektion der User-ID und eine abstrahierte Auflösung des Transportwegs gewährleisten einen nahtlosen Betrieb unter Windows, Linux und macOS und lösen insbesondere Sperrprobleme durch Dateiberechtigungen auf Linux-Systemen.
-
Transparente Integration (zu RQ2): Echtzeit-Stream-Multiplexing und das Parsen der Log-Level überführen die rohe Container-Ausgabe in strukturierte Rückmeldungen in der IDE und bewahren so das native Nutzungserlebnis.
-
Performance-Charakterisierung (zu RQ3): Das System stellt eine vom Nutzer wählbare Image-Plattform bereit, sodass auf Apple Silicon (ARM64) ein x86-Toolchain-Image über die Rosetta-2-Übersetzungsschicht der Host-Laufzeitumgebung ausgeführt wird; der daraus resultierende Ausführungs-Overhead wird charakterisiert und aufgeschlüsselt.
-
Zeitliche Reproduzierbarkeit („Time Machine“): Ein dynamischer Tagging-Mechanismus erlaubt es Projekten, ein bestimmtes Toolchain-Image-Tag (optional einen Content-Digest) festzuschreiben, und stellt so eine über die Zeit reproduzierbare Build-Umgebung bereit.
Die empirische Evaluation charakterisiert die Kosten des containerbasierten Pfads, statt sie auf einen einzigen plakativen Faktor zu verkürzen. Über die reine Containerisierung hinaus verursacht der Strategie-Dispatch der Erweiterung feste Kosten pro Aufruf in der Größenordnung von 0,2 s und einen vernachlässigbaren marginalen Rechen-Overhead, sodass die relativen Kosten des Dispatchs von einer konstanten Untergrenze dominiert werden, die sich mit wachsender Größe des Workloads amortisiert. Auf Apple Silicon läuft das Toolchain-Image unter Rosetta-2-Emulation, sodass ein Vergleich zwischen nativer und containerbasierter Ausführung auf diesem Host die Containerisierung mit der Emulation des Befehlssatzes vermengen würde; native x86_64-Hosts (Windows und Linux) reproduzieren ohne Emulation dieselbe Struktur einer festen Untergrenze. Die native Referenzmessung desselben Builds auf dem Linux-Host ist die einzige Konstellation, die den Faktor zwischen containerbasierter und nativer Ausführung isoliert, und beziffert ihn auf α ≈ 1: eine feste Untergrenze pro Aufruf ohne messbaren Aufschlag pro Maschinenbefehl. Alle sieben Workloads des FPGA-Korpus (iCE40- und ECP5-Synthese, Place-and-Route und Bitstream-Packing sowie Simulation mit Icarus Verilog) liefen im hermetischen Container erfolgreich durch; das System beseitigt damit Reibungsverluste bei der Konfiguration und macht die Ausführung der Toolchain unabhängig von der Paketumgebung des Hosts, wodurch sich kaskadierende Abhängigkeitskonflikte auflösen.
As published in the catalogue record (https://doi.org/10.57683/EPUB-3597), supplied by the author in 2026; not part of the deposited PDF. The English abstract of the deposited thesis is authoritative.
Français: Conception et mise en œuvre d’une architecture modulaire d’intégration transparente des environnements d’exécution conteneurisés pour les binaires open source hétérogènes dans OneWare Studio
Garantir la reproductibilité des processus de construction constitue un défi important dans le développement de systèmes embarqués et de circuits intégrés prédiffusés programmables (FPGA). Le recours à des binaires et des chaînes d’outils complexes et spécifiques à une plateforme (par exemple Yosys, nextpnr) conduit fréquemment à l’« Environment Drift », où les constructions aboutissent localement mais échouent dans les environnements collaboratifs en raison d’incohérences entre systèmes.
Pour relever ces défis, ce mémoire examine trois questions de recherche centrales : comment établir une architecture de conteneurisation robuste et multiplateforme sur des systèmes d’exploitation hôtes hétérogènes (RQ1), comment intégrer de manière fluide ces environnements conteneurisés dans un IDE moderne afin de préserver une expérience utilisateur native (RQ2) et quel surcoût de performance est induit par l’exécution conteneurisée et l’émulation d’architecture (RQ3). Pour répondre à ces questions, une architecture modulaire d’intégration logicielle est conçue et mise en œuvre sous la forme d’une extension autonome pour l’IDE OneWare Studio. À l’aide de C# et de .NET 10, un intergiciel découplé, fondé sur un patron de stratégie hybride (Hybrid Strategy Pattern), est développé ; il permet aux développeurs de basculer de manière fluide, à l’exécution, entre une exécution native à hautes performances et des flux de travail conteneurisés hermétiques.
L’architecture lève des obstacles majeurs à l’adoption grâce à quatre contributions techniques, dont trois répondent directement aux questions de recherche, la quatrième apportant en complément une fonctionnalité de reproductibilité :
-
Interopérabilité multiplateforme (en réponse à RQ1) : une stratégie dynamique d’injection de l’identifiant d’utilisateur et une résolution abstraite du transport garantissent un fonctionnement fluide sous Windows, Linux et macOS, en corrigeant notamment les problèmes de verrouillage des droits d’accès aux fichiers sur les systèmes Linux.
-
Intégration transparente (en réponse à RQ2) : le multiplexage en temps réel des flux et l’analyse des niveaux de journalisation transforment la sortie brute du conteneur en retours structurés au sein de l’IDE, préservant l’expérience utilisateur native.
-
Caractérisation des performances (en réponse à RQ3) : le système permet à l’utilisateur de choisir la plateforme de l’image, de sorte que, sur ARM64 Apple Silicon, une image de chaîne d’outils x86 est exécutée via la couche de traduction Rosetta 2 du moteur d’exécution hôte ; le surcoût d’exécution qui en résulte est caractérisé et décomposé.
-
Reproductibilité temporelle (« Time Machine ») : un mécanisme d’étiquetage dynamique permet aux projets de figer une étiquette précise de l’image de la chaîne d’outils (éventuellement une empreinte de contenu), fournissant ainsi un environnement de construction reproductible au fil du temps.
L’évaluation empirique caractérise le coût de la voie conteneurisée plutôt que de le ramener à un facteur unique et accrocheur. Au-delà de la conteneurisation brute, l’aiguillage de l’extension entre les stratégies ajoute un coût fixe par invocation de l’ordre de 0,2 s et un surcoût marginal de calcul négligeable, si bien que son coût relatif est dominé par un plancher constant qui s’amortit à mesure que la taille de la charge de travail augmente. Sur Apple Silicon, l’image de chaîne d’outils s’exécute sous émulation Rosetta 2, de sorte qu’une comparaison natif/conteneur sur cet hôte confondrait conteneurisation et émulation du jeu d’instructions ; les hôtes x86_64 natifs (Windows et Linux) reproduisent la même structure de plancher fixe sans émulation. La référence native pour la même construction sur l’hôte Linux est la seule configuration expérimentale qui isole le facteur conteneur/natif ; elle le situe à α ≈ 1, soit un plancher fixe par invocation sans pénalité mesurable par instruction. Sur l’ensemble du corpus FPGA de sept charges de travail (synthèse pour iCE40 et ECP5, placement-routage et empaquetage du bitstream, ainsi que simulation sous Icarus Verilog), chaque charge de travail s’est exécutée avec succès dans le conteneur hermétique, de sorte que le système élimine les difficultés de configuration et rend l’exécution de la chaîne d’outils indépendante de l’environnement de paquets de l’hôte, résolvant les conflits de dépendances en cascade.
As published in the catalogue record (https://doi.org/10.57683/EPUB-3597), supplied by the author in 2026; not part of the deposited PDF. The English abstract of the deposited thesis is authoritative.
Türkçe: Heterojen Açık Kaynaklı İkili Dosyalara Yönelik Konteynerleştirilmiş Yürütme Ortamlarının OneWare Studio'ya Saydam Entegrasyonu İçin Modüler Bir Mimarinin Tasarımı ve Gerçeklenmesi
Derleme (build) süreçlerinin yeniden üretilebilirliğinin güvence altına alınması, gömülü sistem ve Sahada Programlanabilir Kapı Dizisi (FPGA) geliştirmede önemli bir zorluk oluşturmaktadır. Karmaşık, platforma özgü ikili dosyalara ve araç zincirlerine (örneğin Yosys, nextpnr) bağımlılık, derlemelerin geliştiricinin kendi makinesinde başarılı olduğu ancak sistem tutarsızlıkları nedeniyle iş birliğine dayalı ortamlarda başarısız olduğu “Ortam Kayması” (Environment Drift) durumuna sıklıkla yol açmaktadır.
Bu zorlukları ele almak üzere bu tez, üç merkezî araştırma sorusunu incelemektedir: heterojen ana makine işletim sistemleri genelinde sağlam ve platformlar arası bir konteynerleştirme mimarisinin nasıl kurulacağı (RQ1), yerel (native) kullanıcı deneyimini korumak üzere bu konteynerleştirilmiş ortamların modern bir IDE'ye nasıl sorunsuz biçimde entegre edileceği (RQ2) ve konteynerleştirilmiş yürütmenin ve mimari emülasyonunun ne ölçüde bir performans ek yükü getirdiği (RQ3). Bu soruları yanıtlamak amacıyla, modüler bir yazılım entegrasyonu mimarisi OneWare Studio IDE'si için bağımsız bir eklenti olarak tasarlanmış ve gerçeklenmiştir. C# ve .NET 10 kullanılarak, Hibrit Strateji Deseni (Hybrid Strategy Pattern) temelinde gevşek bağlı bir ara katman yazılımı geliştirilmiş, böylece geliştiricilerin çalışma zamanında yüksek performanslı yerel yürütme ile hermetik konteynerleştirilmiş iş akışları arasında sorunsuz biçimde geçiş yapabilmesi olanaklı kılınmıştır.
Mimari, benimsenmenin önündeki kritik engelleri dört teknik katkı aracılığıyla ortadan kaldırmaktadır; bunların üçü araştırma sorularını doğrudan ele almakta, bu üçüne bir yeniden üretilebilirlik özelliği eşlik etmektedir:
-
Platformlar Arası Birlikte Çalışabilirlik (RQ1'i ele alır): Dinamik bir kullanıcı kimliği (User-ID) enjeksiyonu stratejisi ve soyut taşıma belirlemesi, Windows, Linux ve macOS genelinde sorunsuz çalışmayı güvence altına almakta, özellikle Linux sistemlerindeki dosya izni kilitlenmesi sorunlarını çözmektedir.
-
Saydam Entegrasyon (RQ2'yi ele alır): Gerçek zamanlı akış çoğullaması ve günlük düzeyi (log level) ayrıştırması, ham konteyner çıktısını yapılandırılmış IDE geri bildirimine dönüştürerek yerel kullanıcı deneyimini korumaktadır.
-
Performans Karakterizasyonu (RQ3'ü ele alır): Sistem, kullanıcı tarafından seçilebilen bir imaj platformu sunmakta, böylece ARM64 Apple Silicon üzerinde bir x86 araç zinciri imajı, ana makine çalışma zamanının Rosetta 2 çeviri katmanı üzerinden yürütülmektedir; ortaya çıkan yürütme ek yükü karakterize edilmekte ve bileşenlerine ayrıştırılmaktadır.
-
Zamansal Yeniden Üretilebilirlik (“Zaman Makinesi”, Time Machine): Dinamik bir etiketleme mekanizması, projelerin belirli bir araç zinciri imajı etiketini, isteğe bağlı olarak bir içerik özetini (content digest), sabitlemesine olanak tanıyarak zaman içinde yeniden üretilebilir bir derleme ortamı sağlamaktadır.
Ampirik değerlendirme, tek bir toplu çarpan değeri ileri sürmek yerine konteynerleştirilmiş yolun maliyetini karakterize etmektedir. Salt konteynerleştirmenin ötesinde, eklentinin strateji gönderimi çağrı başına 0,2 s mertebesinde sabit bir maliyet ve ihmal edilebilir düzeyde marjinal hesaplama ek yükü eklemekte, dolayısıyla göreli maliyetinde, iş yükü boyutu büyüdükçe amortize olan sabit bir taban baskın olmaktadır. Apple Silicon üzerinde araç zinciri imajı Rosetta 2 emülasyonu altında çalıştığından, bu ana makinede yerel ile konteyner arasında karşılaştırma yapmak, konteynerleştirmeyi komut kümesi emülasyonuyla birbirine karıştırmak anlamına gelirdi; yerel x86_64 ana makineleri (Windows ve Linux) ise aynı sabit taban yapısını emülasyon olmaksızın yeniden üretmektedir. Linux ana makinesindeki aynı derlemeye ait yerel temel ölçüm, konteynerin yerele göre çarpanını yalıtan tek ölçüm düzenidir ve bu çarpanı α ≈ 1 olarak belirlemektedir; bu, komut başına ölçülebilir bir ek maliyet içermeyen, çağrı başına sabit bir tabandır. Yedi iş yükünden oluşan FPGA kümesinde (iCE40 ve ECP5 sentezi, yerleştirme ve yönlendirme ile bit akışı paketlemesi, ayrıca Icarus Verilog simülasyonu) her iş yükü hermetik konteyner üzerinden başarıyla yürütülmüştür; böylece sistem, yapılandırma zahmetini ortadan kaldırmakta ve araç zinciri yürütmesini ana makinenin paket ortamından bağımsız kılmakta, bu da zincirleme bağımlılık çakışmalarını çözmektedir.
As published in the catalogue record (https://doi.org/10.57683/EPUB-3597), supplied by the author in 2026; not part of the deposited PDF. The English abstract of the deposited thesis is authoritative. The record lists this language as mul.
Español: Diseño e implementación de una arquitectura modular para la integración transparente de entornos de ejecución en contenedores destinados a binarios de código abierto heterogéneos en OneWare Studio
Garantizar la reproducibilidad de los procesos de compilación constituye un reto considerable en el desarrollo de sistemas empotrados y de matrices de puertas programables en campo (FPGA). La dependencia de binarios y cadenas de herramientas complejos y específicos de cada plataforma (por ejemplo, Yosys o nextpnr) conduce con frecuencia a la denominada «Environment Drift», en la que las compilaciones funcionan localmente pero fallan en entornos colaborativos debido a inconsistencias entre sistemas.
Para abordar estos retos, este trabajo examina tres preguntas de investigación centrales: cómo establecer una arquitectura de contenerización robusta y multiplataforma sobre sistemas operativos anfitriones heterogéneos (RQ1), cómo integrar de forma fluida en un IDE moderno estos entornos en contenedores para preservar una experiencia de usuario nativa (RQ2) y qué sobrecarga de rendimiento introducen la ejecución en contenedores y la emulación de arquitectura (RQ3). Para resolver estas cuestiones, se diseña e implementa una arquitectura modular de integración de software como extensión autónoma para el IDE OneWare Studio. Mediante C# y .NET 10 se desarrolla un middleware desacoplado, basado en un patrón de estrategia híbrido (Hybrid Strategy Pattern), que permite a los desarrolladores alternar sin fisuras, en tiempo de ejecución, entre una ejecución nativa de alto rendimiento y flujos de trabajo herméticos en contenedores.
La arquitectura elimina barreras críticas para la adopción mediante cuatro aportaciones técnicas: tres responden directamente a las preguntas de investigación y se complementan con una funcionalidad de reproducibilidad.
-
Interoperabilidad multiplataforma (responde a RQ1): una estrategia dinámica de inyección del identificador de usuario y una resolución abstracta del transporte garantizan un funcionamiento fluido en Windows, Linux y macOS, y resuelven en particular los bloqueos por permisos de archivo en sistemas Linux.
-
Integración transparente (responde a RQ2): la multiplexación de flujos en tiempo real y el análisis del nivel de registro convierten la salida bruta del contenedor en retroalimentación estructurada en el IDE y preservan la experiencia de usuario nativa.
-
Caracterización del rendimiento (responde a RQ3): el sistema ofrece una plataforma de imagen seleccionable por el usuario, de modo que en Apple Silicon (ARM64) una imagen de cadena de herramientas x86 se ejecuta a través de la capa de traducción Rosetta 2 del entorno de ejecución del anfitrión; la sobrecarga de ejecución resultante se caracteriza y se descompone.
-
Reproducibilidad temporal («Time Machine»): un mecanismo dinámico de etiquetado permite a los proyectos fijar una etiqueta concreta de la imagen de la cadena de herramientas, opcionalmente un resumen de contenido, lo que proporciona un entorno de compilación reproducible a lo largo del tiempo.
La evaluación empírica caracteriza el coste de la vía basada en contenedores en lugar de reducirlo a un único factor llamativo. Más allá de la contenerización propiamente dicha, el despacho de estrategias de la extensión añade un coste fijo por invocación del orden de 0,2 s y una sobrecarga marginal de cómputo despreciable, de modo que su coste relativo está dominado por un suelo constante que se amortiza a medida que crece el tamaño de la carga de trabajo. En Apple Silicon la imagen de la cadena de herramientas se ejecuta bajo emulación Rosetta 2, por lo que una comparación entre ejecución nativa y ejecución en contenedor sobre ese anfitrión confundiría la contenerización con la emulación del juego de instrucciones; los anfitriones x86_64 nativos (Windows y Linux) reproducen la misma estructura de suelo fijo sin emulación. La medición de referencia nativa de la misma compilación en el anfitrión Linux es el único escenario que aísla el factor entre contenedor y ejecución nativa, y lo sitúa en α ≈ 1: un suelo fijo por invocación, sin coste medible por instrucción. En el corpus FPGA de siete cargas de trabajo (síntesis para iCE40 y ECP5, emplazamiento y enrutado, empaquetado del flujo de bits y simulación con Icarus Verilog), todas las cargas se ejecutaron con éxito a través del contenedor hermético; así, el sistema elimina la fricción de configuración e independiza la ejecución de la cadena de herramientas del entorno de paquetes del anfitrión, con lo que resuelve los conflictos de dependencias en cascada.
As published in the catalogue record (https://doi.org/10.57683/EPUB-3597), supplied by the author in 2026; not part of the deposited PDF. The English abstract of the deposited thesis is authoritative.
| Field | Value |
|---|---|
| Type | Master's thesis |
| Institution | TH Köln (Technische Hochschule Köln) |
| Faculty | Faculty of Information, Media and Electrical Engineering (F07) |
| Institute | Institute of Computer and Communication Technology (ICCT), as the catalogue record names it; the thesis names no institute |
| Programme | M.Sc. Computer Science & Engineering (Technische Informatik) |
| Supervisors | Prof. Dr. Tobias Krawutschke; M.Sc. Sebastian Wittlich, as the title page prints them |
| Submitted | 2026-07-02 |
| Examined | 2026-08-19 |
| Published | 2026-09-15, open access on ePublications, a publication server of TH Köln |
| DOI | https://doi.org/10.57683/EPUB-3597 |
| URN | urn:nbn:de:hbz:832-epub4-35974 |
| Licence | CC BY 4.0; the mark of TH Köln on the title page excepted, see NOTICE |
| Language | English |
| Pages | 91; the PDF has 106 pages |
| Classification | DDC 004 (Data processing & computer science) and 621.3 (Electrical engineering, electronics); ACM CCS 1998: C.4 (Performance of Systems), D.2.6 (Programming Environments), subentry "Integrated environments", D.2.9 (Management) and D.2.11 (Software Architectures), subentry "Domain-specific architectures" |
publication/Torun_Containerized_Execution_OneWare.pdf is byte-identical with the file the catalogue record serves under the DOI above: 557,042 bytes, SHA-256 f7cb839334f73d2df225a323d0d0473181055a6041cdbca8233f33a8f0c74f93. The tag epub-3597 marks the state of this repository that holds it, with LaTeX sources that reproduce its text; where the committed sources had diverged from the deposited text, they were reconciled with it in 2026 (the third item of Section 7.3 and four hyphens in Chapter 6). publication/README.md states how the deposited file differs from the thesis as submitted for examination, and gives the ways to verify the file, with and without a GitHub account.
OneWare Studio is an IDE for FPGA development built on .NET 10 and Avalonia (Section 3.1). It runs open-source toolchains such as Yosys, nextpnr and Icarus Verilog natively on the host, so a build that succeeds on one machine can fail on another, which the thesis calls "Environment Drift" (Section 1.1). Containers pin a toolchain, but driving them from a command line breaks the work in the IDE (Section 1.2). The thesis designs and implements an extension for OneWare Studio that runs selected tools in containers, transparently for the user, and measures what that costs. Its three research questions (Section 1.3):
- RQ1, architectural foundation: which architectural patterns make container orchestration work across Windows, Linux and macOS, including user-ID mapping and the transports to the daemon (Chapter 4, Section 5.3);
- RQ2, transparent integration: how the containerised tools can be integrated into a .NET IDE with streamed output and structured diagnostics (Sections 4.3, 5.4 and 5.9); assessed qualitatively;
- RQ3, performance viability: what the containerised path costs against native execution, also across architectures (Chapter 6).
| Contribution, as the abstract names it | RQ | Thesis | Code at 5fa2f5f, in FEntwumS.ContainerExtension/src/ContainerExtension/ |
|---|---|---|---|
| Cross-platform interoperability: host user and group ID injection, transport resolution | RQ1 | 4.2, 5.3 | DockerExecutionStrategy.cs (transport resolution, named-pipe credentials), Services/Docker/DockerCommandBuilder.cs (container user, hardening defaults) |
| Transparent integration: stream demultiplexing and log parsing | RQ2 | 4.3, 5.4, 5.9 | DockerExecutionStrategy.cs, Services/Docker/DockerContainerManager.cs, ContainerTelemetry.cs, ContainerExtensionModule.cs |
| Performance characterization: a user-selectable image platform, and the measured overhead | RQ3 | 5.2.1, 6.4, 6.5 | DockerExecutionStrategy.cs (platform setting); evaluation/ of this repository |
| Temporal reproducibility ("Time Machine"): pinned toolchain image tags and registry tag discovery | none | 5.8 | Registry/RegistryClient.cs, Services/Docker/DockerImageManager.cs |
The code at the pinned commit 5fa2f5f was written by the author for this thesis, apart from three automated dependency updates; later upstream changes, including those by other contributors, are not part of it. Measured on 2026-10-02: 175 commits are reachable from 5fa2f5f (2026-04-10 to 2026-07-02), 172 by the author under two e-mail identities and three automated dependency updates, and none carries a co-author trailer. The pinned commit is the state of the extension when the thesis was submitted, not the state the measurements ran on; evaluation/README.md names the measured states.
Container routing is opt-in per tool: OneWare dispatches only the tools a user has opted in to the container strategy, and runs all others natively, as by default (Section 4.1). For an opted-in tool, the strategy chooses the execution by Equation (4.1), where ContainerExtension_AllowNativeFallback), and PATH:
---
config:
flowchart:
wrappingWidth: 400
---
flowchart TD
accTitle: Routing of a tool invocation by the extension
accDescr: OneWare Studio hands a tool invocation to the extension only if the tool is opted in to the container strategy; otherwise OneWare runs the tool natively. For an opted-in tool, a reachable daemon leads to container execution. If the daemon is unreachable and native fallback is disabled, the invocation fails with a daemon-offline diagnostic. If fallback is enabled, the tool runs on the host when it is on the PATH, and the invocation fails with a missing-binary diagnostic when it is not.
start(["OneWare Studio<br/>runs a tool"]) --> optin{"Tool opted in<br/>to the container strategy?"}
optin -->|no| host["OneWare runs the tool<br/>natively (default)"]
optin -->|yes| sdock{"Daemon socket<br/>reachable and writable?"}
sdock -->|yes| docker["E_docker: run the tool<br/>in a container"]
sdock -->|no| fallback{"Native fallback<br/>enabled?"}
fallback -->|no| offline["Err_offline: fail with<br/>a configuration diagnostic"]
fallback -->|yes| onpath{"Tool on the<br/>host PATH?"}
onpath -->|yes| native["E_native: run<br/>the host binary"]
onpath -->|no| missing["Err_missing: fail,<br/>the binary is missing"]
The same routing as text: a tool that is not opted in runs natively. An opted-in tool runs in a container when the daemon is reachable. When it is not, the invocation fails with a daemon-offline diagnostic if fallback is disabled; with fallback enabled, the tool runs on the host if it is on the PATH, and the invocation fails with a missing-binary diagnostic otherwise.
The extension talks to the Docker Engine API directly (Section 5.1.2) and resolves the endpoint in this order (Section 4.2.1, Figure 4.2):
| Step | Host | Endpoint |
|---|---|---|
| 1 | any | A custom socket (setting ContainerExtension_DaemonSocket) or DOCKER_HOST: unix, npipe, tcp, http(s) or ssh |
| 2 | Windows | The named pipe \\.\pipe\docker_engine, opened at TokenImpersonationLevel.Identification (Section 5.3); an optional check of the pipe server, off by default (Appendix B.3.2) |
| 2 | macOS, Linux | Unix sockets in an ownership-checked order: /var/run/docker.sock, then the rootless Podman socket /run/user/<UID>/podman/podman.sock, then Colima and OrbStack |
The evaluation used one runtime per host: OrbStack on Machine 1 (macOS), Docker Engine on Machine 2 (Linux) and Docker Desktop with the WSL2 backend on Machine 3 (Windows) (Section 6.2.1). Appendix B also describes rootless Podman, which the evaluation did not measure.
Each result holds for the corpus, the hosts and the runtimes the thesis measured; evaluation/README.md gives the evidence of each.
- Output determinism. The six FPGA artifacts of the corpus, iCE40 and ECP5 synthesis, place-and-route and bitstream packing, were byte-identical on the three machines, one ARM64 host running the amd64 image under emulation and two x86_64 hosts; the simulation artifact
Blink.vvpdiffers from run to run because Icarus Verilog names objects after heap addresses, and is excluded (Section 6.5.3, Table 6.4). - Marginal cost of the extension. Over raw
docker run, the extension adds a fixed per-invocation cost and no cost that grows with the work: the mean strategy-minus-CLI difference over the FPGA workloads is about 0.18 s on Machine 1, 0.21 s on Machine 2 and 0.23 s on Machine 3, the last without the bimodalpnr_ice40_nextpnrrun, close to the difference of a no-op container invocation (Sections 6.4.1 to 6.4.3;ERRATA.md, E-019). The harness measured these differences with the extension's telemetry and SDK logging switched off and, on Machine 3, with its check of the named-pipe server switched on, which the extension skips by default; the share of that check in the 0.23 s was not measured (evaluation/README.md). - Container against native. On Machine 2, whose native toolchain is the same build as the image, the additive container floor stays between 0.258 s and 0.327 s while the native work ranges from 16 ms to 0.51 s: the multiplier α of native compute is about 1 there (Sections 6.4.2 and 6.5.1).
- Emulation. On Machine 1 the amd64 image runs under Rosetta 2, so no native baseline was taken and α is not measured for emulation; the thesis cites a penalty of the hardware TSO mode from the literature (Section 6.5.1; E-021 and E-032).
The thesis states these as design properties of the architecture; a threat-model analysis of them is out of its scope (Section 4.4).
- Non-root execution. On rootful runtimes the container runs as the host user (
--userwith the host UID:GID), so build artifacts belong to the developer; on rootless runtimes the runtime's own user-namespace remap applies and--useris omitted. - Reduced kernel surface. All Linux capabilities are dropped,
no-new-privilegesis set and the process count is capped; the runtime's default seccomp profile applies. - Workspace path containment. Bind-mount paths are canonicalised segment by segment, with cycle detection and a bounded depth; a path outside the workspace root is not mounted. A time-of-check to time-of-use window remains (Section 4.4).
- Shell-less execution. Commands run as an argument vector with
tinias PID 1, so shell metacharacters are inert; a secondary check rejects arguments that embed command separators (Sections 4.4 and 5.7; E-030). - Windows transport. The named-pipe client requests the impersonation level Identification, so a daemon endpoint can identify the client but cannot act on its behalf (Section 5.3).
- Resource bounds. CPU, memory and process-count limits apply through the runtime's cgroup controls.
The extension is built with IsAotCompatible set and uses explicit reflection at one documented place: it replaces the stream opener of the Windows named-pipe transport through a private field of the Docker.DotNet library, because the public API cannot express the lower impersonation level (Section 5.3.1; DockerExecutionStrategy.cs, lines 1162 to 1186 at 5fa2f5f). That count covers explicit reflection calls only: Docker.DotNet serialises through Newtonsoft.Json, which one view model of the extension uses as well, and the extension preserves both assemblies from trimming. No Native-AOT build was tested in the thesis (ERRATA.md, E-015).
| Path | Content | In the thesis | Licence |
|---|---|---|---|
publication/ |
The deposited thesis, its checksum and how to verify it | the whole thesis | CC BY 4.0; the mark of TH Köln excepted |
thesis/ |
The LaTeX sources; thesis/figures/th_logo.pdf is the mark of TH Köln |
the whole thesis | CC BY 4.0; the mark excepted; the build file latexmk.conf MIT |
evaluation/ |
Benchmark harness, evaluation scripts, raw results and tables of the three machines, the original files of the cross-host control of Section 6.5.3, workload designs, supplementary examples; its README.md maps each number of Chapter 6 to its evidence |
Chapter 6 | MIT for code, CC BY 4.0 for data and documentation; six fixtures excepted |
FEntwumS.ContainerExtension/ |
The extension under study, as a pinned submodule | Chapters 4 and 5, Appendices A and B | its own: MIT |
OneWare/, OneWare.GhdlExtension/, FEntwumS.NetlistViewer/ |
OneWare Studio and two of its extensions, as pinned submodules for reference | Section 3.1 (OneWare Studio); the two extensions are not named in the thesis | their own |
scripts/ |
Comparison of a build with the deposited text, reproduction of the result statistics from the raw times, checks of the metadata and of the links | not in the thesis | MIT |
docs/social/ |
The social card of this repository and the script that renders it | not in the thesis | CC BY 4.0; the script MIT |
ERRATA.md, CHANGELOG.md, NOTICE, CITATION.cff, codemeta.json |
Errata, changes, licences and credits, citation metadata | not in the thesis | CC BY 4.0 |
Makefile, .github/ |
Build and checks, workflows, the correction form | not in the thesis | MIT |
The thesis names files by their paths in the repository of the extension, where the evaluation apparatus lived until 2026-06-30:
| In the thesis | In this repository |
|---|---|
src/ContainerExtension/ (Table A.1, Listing C.1) |
FEntwumS.ContainerExtension/src/ContainerExtension/, in the submodule |
src/ContainerBenchmarkHarness/Program.cs (Section 6.3, Listing C.1) |
evaluation/harness/Program.cs |
benchmark.py, run_evaluation.py (Section 6.3) |
evaluation/benchmarking_suite/ |
| the extension "on the main branch" (Appendix A) | the submodule FEntwumS.ContainerExtension at 5fa2f5f, its state when the thesis was submitted |
The four submodules are pinned at their state when the thesis was submitted and are not moved. The note of the catalogue record names this repository as the place of the source code of the extension and of the evaluation data; the source code is here as the submodule FEntwumS.ContainerExtension.
| Submodule | Upstream | Commit | Date | Role | Licence, as its licence file states it |
|---|---|---|---|---|---|
FEntwumS.ContainerExtension |
https://github.com/FEntwumS/FEntwumS.ContainerExtension | 5fa2f5f |
2026-07-02 | Required: the extension under study. One commit after release 1.0.10, which changes only the marketplace manifest. The harness references its project, and the toolchain image is built from its docker/ folder |
MIT, Mert Torun |
OneWare |
https://github.com/FEntwumS/OneWare | a3a5a79 |
2026-06-25 | Reference: OneWare Studio at the time of the thesis | GNU GPL version 3 for the repository; the package OneWare.Essentials, which the harness uses, declares MIT |
OneWare.GhdlExtension |
https://github.com/FEntwumS/OneWare.GhdlExtension | 01d1406 |
2026-03-26 | Reference: the GHDL extension of OneWare Studio | MIT for the extension, Protop Solutions UG; the GNU GPL version 2 its licence file names applies to GHDL itself, which the submodule does not contain |
FEntwumS.NetlistViewer |
https://github.com/FEntwumS/FEntwumS.NetlistViewer | 2ef4d51 |
2026-06-26 | Reference: the netlist viewer extension | MIT, TH Koeln |
A clone with all four submodules, and a clone with only the one the harness and the image build need:
git clone --recurse-submodules https://github.com/mtorun0x7cd/thesis-fentwums-container-extension.git
git clone https://github.com/mtorun0x7cd/thesis-fentwums-container-extension.git
cd thesis-fentwums-container-extension
git submodule update --init FEntwumS.ContainerExtensionThe submodules are fetched at their pinned commit only (.gitmodules sets shallow = true); git -C FEntwumS.ContainerExtension fetch --unshallow adds the history, for example to recount the commits above or to read the upstream commit 1884317 of the macOS measurement. The source archives that GitHub generates contain no submodules.
With TeX Live (LuaLaTeX, Biber, latexmk and ChkTeX); make verify-deposit also needs Python 3, pdftotext from poppler, and sha256sum or shasum:
make thesis # writes build/thesis/main.pdf
make verify-deposit # checks publication/ against SHA256SUMS and compares the text of the build with the deposited file
make check # runs ChkTeX over the sourcesThe build date is fixed to the creation date of the deposited file (SOURCE_DATE_EPOCH=1783019135), and a build carries the title, author, subject, keywords and dates of the deposited file. As pdfinfo and qpdf show, its other document-level entries differ: a build writes those four text entries in UTF-16, names LaTeX with hyperref as creator and the LuaTeX that typeset it as producer (LuaTeX-1.24.0 with TeX Live 2026), adds the entries PTEX.FullBanner and Trapped, and carries page labels, named destinations, an open action and a page mode; the deposited file names LaTeX as creator and no producer, carries an empty XMP packet, gives the page width as 595.28 instead of 595.276 points and is linearised. The sources reproduce the text of the deposited file, not its bytes: after typesetting, the deposited file was processed outside this repository, among other things linearised and given new metadata. scripts/compare_pdf_text.py compares the two texts page by page as multisets of words, which keeps a hyphen and an en dash apart. On 2026-10-02 the tag epub-3597, typeset twice in one directory with TeX Live 2026 on macOS, gave the same bytes both times, and its text equals that of the deposited file on all 106 pages, though one paragraph on PDF page 37 breaks its lines differently and, as measured on 2026-10-05, the block on the title page from "Institution:" to the names of the supervisors sits 36.8 pt (about 13 mm) lower than in the deposited file (publication/README.md); the PDF identifier depends on the directory a build runs in. CI typesets the thesis in the container ghcr.io/xu-cheng/texlive-full@sha256:11383430b9a3e48c0b79339f34d8092f942f897d91ab3749d4899d06731fea7f, twice, compares the two files byte for byte and records the TeX Live version in its log; its artifact is a build, not the version of record.
The measurement needs Docker, the .NET SDK 10.0.300 or any later 10.0 SDK (the three machines ran 10.0.301) and Python 3.9 to 3.12 (the three machines ran 3.9.6, 3.11.6 and 3.12.10) on three hosts; evaluation/README.md gives the commands. In short:
- Build the toolchain image
fentwums/oss-cad-suite:2026-06-30withFEntwumS.ContainerExtension/docker/build_oss_cad_suite.sh; the Dockerfile pins the Ubuntu base image by digest and the oss-cad-suite archive of 2026-06-30 by SHA-256. - Publish the harness from
evaluation/, whereglobal.jsonselects the SDK:(cd evaluation && dotnet publish harness/ContainerBenchmarkHarness.csproj -c Release -o benchmarking_suite/harness_bin). - Run
python3 evaluation/benchmarking_suite/run_evaluation.py --image fentwums/oss-cad-suite:2026-06-30on each host, with--with-nativeon a Linux amd64 host whose native toolchain passes the parity check. Under Python 3.14 the script stops before the first workload, because it gives an option a help text with a bare%, which the argparse of 3.14 rejects;evaluation/README.mdgives the details. - Collect the per-host results and run
python3 evaluation/benchmarking_suite/aggregate.py.
Note
The toolchain image is build-only and is not on a registry, so a rebuilt image has its own digest (Section 6.5.3). The check of a rerun is the six FPGA artifact hashes that evaluation/README.md lists in full, not the image digest. A run took about 7 minutes on Machine 1, 16 minutes on Machine 2 with the native baseline and 10 minutes on Machine 3, without the image build.
make aggregate-check recomputes, without Docker, the statistics of every result file from its raw times and the committed tables from the result files: all 96 statistics and comparison blocks are reproduced within a relative tolerance of 1e-9, summary.md and determinism.md come out byte-identical, and summary.csv identical up to its line endings.
build.yml: ChkTeX; the thesis typeset twice and compared; the deposited file againstSHA256SUMS; then the text of the build against the deposited file.checks.yml:SHA256SUMS;CITATION.cffwith cffconvert and against schema 1.2.0 through a plain YAML loader;codemeta.jsonexpanded as JSON-LD; the agreement ofCITATION.cff,codemeta.jsonand the BibTeX entry below; REUSE; and the links to doi.org, nbn-resolving.org and the GitHub addresses of this repository and of the pins, a check that runs on push and is not required.evaluation.yml: the statistics and tables recomputed from the raw results, the SHA-256 ofbenchmark.py, a build of the harness with the SDK ofevaluation/global.json, and a compile of the Python scripts.docs.ymllints the Markdown files;secret-scan.ymlscans the history with gitleaks.
Threats to validity, as the thesis states them (Sections 6.1, 6.5.9 and 6.5.10):
- Machine 1 runs the amd64 image under Rosetta 2, so its figures isolate the marginal cost of the extension, not the cost of containerisation; α is isolated on Machine 2 only, because Machine 3 has no same-build native toolchain (Section 6.5.2).
- Each host ran one container runtime; the workloads are short single-tool dispatches, for which the relative overhead is large.
- The native versions of nextpnr, icepack and ecppack were not resolved by the harness; their parity rests on the shared oss-cad-suite release (Table 6.2).
Blink.vvpis excluded from the determinism claim; the contention constants of Section 6.4.5 are illustrative; the penalty under emulation is cited, not measured.
Beyond these, evaluation/README.md names what is not in this repository, among it the raw log of the telemetry stress test, and that the measured code is not the pinned commit. ERRATA.md lists claims of the thesis that its evidence does not support.
A rerun also depends on what this repository does not hold. Building the toolchain image fetches two third-party artifacts, the Ubuntu base image and the oss-cad-suite archive, both pinned by hash and neither archived with this repository, and installs distribution packages that are not pinned; once either artifact is no longer served, the image cannot be rebuilt. The six artifact hashes of evaluation/README.md remain the check of any toolchain with the same tool binaries.
Of the thesis itself: Section 7.1 states as a result that "The solution eliminates “Environment Drift”" and that the container "resolves cascading dependency conflicts", the conclusion on which the abstract ends. The evaluation "contains no run in which a native toolchain failed or hung because of package drift, and no test of dependency conflicts"; both statements describe "the intended effect of pinning the toolchain in an image, not a result of the evaluation" (ERRATA.md, E-031). RQ2 "is assessed qualitatively against the implemented behavior" (Section 1.3). The security properties are stated "as design properties; a systematic threat-model analysis of them is the subject of separate work and is deliberately out of scope for this thesis" (Section 4.4). Under emulation the translation tax is not measured, and the figure the thesis cites for it does not measure Rosetta 2: "α under emulation is not quantified in the work" (E-021, E-032).
Future work, as Section 7.3 of the deposited thesis lists it:
- "Multi-Architecture OCI Registry Manifests: Optimizing cross-architecture performance on ARM64 host machines by dynamically querying OCI Registry Manifests to verify the existence of native linux/arm64 image variants before falling back to Rosetta 2 translation or QEMU emulation."
- "Hardware-in-the-Loop (HIL) Sandboxing: Integrating USB device forwarding mechanisms (e.g., forwarding FTDI or UART devices via usbipd or native Linux device nodes) to allow programmer tools like openFPGALoader and iceprog to deploy compiled bitstreams directly onto target FPGA boards securely from within the sandbox."
- "VIMS IEEE Telemetry Integration: Aligning the plugin’s telemetry and benchmarking engine with standardized IEEE Virtual Instrumentation and Measurement Systems formats to enable unified reporting of verification durations, success metrics, and resource footprints." No IEEE standard or format of this name could be traced (
ERRATA.md, E-033).
The thesis also leaves a systematic comparison of container runtimes (Section 7.2) and a dedicated threat-model analysis of the security design properties (Sections 4.4 and 7.2) to further work.
The code the thesis describes lies in the repository of another organisation, at the pinned commit, and is not archived with this repository. Development of the extension continues upstream after that commit; this repository does not track it.
The deposited PDF is untagged and declares no document language. As the version of record it cannot be changed; the abstracts, the tables and the text descriptions above are its accessible summary.
ERRATA.md lists the known errors of the thesis, the properties of its catalogue record and of the deposited file, and the web addresses of the thesis that no longer work or have moved. The deposited file does not change: a confirmed error is added to ERRATA.md, and an error that affects a result is reported to the library.
To report an error, open an issue with the form Correction and give the location in the thesis or the file, the quoted text, the proposed correction and the evidence. A matter that should not be public goes by e-mail to info@mtorun0x7cd.com, as SECURITY.md describes. Changes of the extension itself belong upstream (CONTRIBUTING.md). CHANGELOG.md lists the changes of this repository.
APA:
Torun, M. (2026). Design and implementation of a modular architecture for the transparent integration of containerized execution environments for heterogeneous open-source binaries in OneWare Studio [Master's thesis, Technische Hochschule Köln]. ePublications TH Köln. https://doi.org/10.57683/EPUB-3597
BibTeX:
@mastersthesis{Torun2026Containerized,
author = {Torun, Mert},
title = {Design and Implementation of a Modular Architecture for the Transparent Integration of Containerized Execution Environments for Heterogeneous Open-Source Binaries in {OneWare Studio}},
school = {Technische Hochschule Köln},
type = {Master's thesis},
year = {2026},
doi = {10.57683/EPUB-3597},
url = {https://doi.org/10.57683/EPUB-3597},
note = {URN: urn:nbn:de:hbz:832-epub4-35974}
}GitHub's "Cite this repository" reads CITATION.cff and renders the thesis as @misc, without its school; the entry above cites it as a Master's thesis.
- FEntwumS.ContainerExtension: the extension the thesis designs and evaluates, maintained upstream in the repository of the FEntwumS organisation; this repository pins it at
5fa2f5f. - OneWare Studio: the IDE the extension integrates with (Section 3.1).
| Path | Licence |
|---|---|
thesis/, publication/ |
CC BY 4.0, the licence of the thesis, except the build file thesis/latexmk.conf (MIT); the mark of TH Köln (thesis/figures/th_logo.pdf, and on the title page) is excepted, see NOTICE |
evaluation/benchmarking_suite/results/ |
CC BY 4.0: measured data |
evaluation/harness/, the scripts and fixtures in evaluation/, evaluation/examples/, scripts/, Makefile, thesis/latexmk.conf, .github/, .githooks/, the build and configuration files, docs/social/render.sh |
MIT |
| Six integration fixtures taken from the project templates of OneWare Studio | not licensed by this repository; NOTICE, section 3, names them and their source |
This README and the other documentation, CITATION.cff, codemeta.json, docs/social/social-card.* |
CC BY 4.0 |
| The four submodules | their own licences, see Pinned software |
LICENSE holds the MIT License and LICENSES/ the texts of the licences in use; REUSE.toml and the SPDX tags in the files give the licence of every file, and NOTICE gives the material of third parties, the origin of the hardware designs and the licence history.
Mert Torun, info@mtorun0x7cd.com