đŸ‡©đŸ‡Ș 🇬🇧

BlattWerkzeug-Entwicklung

BlattWerkzeug ist ein OpenSource-Projekt, konkret wird es unter der AGPL-3.0 bereitgestellt. Es hat also jeder (auch du!) das Recht, in den Quelltext hineinzuschauen oder ihn sogar zu verÀndern.

Der Quelltext lÀsst sich sowohl online betrachten als auch mit git ausschecken.
An welchen Features wird gerade gearbeitet? Wer macht eigentlich was? Diese organisatorischen Fragen werden mit dem Kanban-Board geklÀrt.
Continous Integration Pipeline Via Azure DevOps und Docker-Images
Kompiliert das Projekt noch nach meinem letzten Commit? Laufen die TestfÀlle noch durch? Der CI-Dienst lÀuft nach jedem "push" und findet es heraus.

ProjektvorschlÀge

Interessierte Studierende finden hier ThemenvorschlĂ€ge, an der FH Wedel können diese auch im Rahmen diverser Projekte, Seminare oder Abschlußarbeiten bearbeitet werden:

  • Anfertigung einer internen Bachelor- oder Master-Thesis. In diesem Fall erfolgt die Bearbeitung in Kooperation mit der CAU Kiel, die Erstbegutachtung wird durch Dr. Frank Huch vorgenommen.
  • In von mir angebotenen Seminaren werden immer wieder passende Themen vergeben. Sofern Sie mit einem fĂŒr mich interessantes Thema aus dem Web-Umfeld auf mich zukommen nehme ich auch gerne VorschlĂ€ge entgegen.
  • FĂŒr Bachelor Medieninformatiker ist es möglich das Medien-Projekt zu absolvieren, Informatik-Master-Studierende können das Master-Projekt einbringen.

BlattWerkzeug ist mittlerweile ein komplexes Software-Produkt und eignet sich hervorragend um viele typische Verfahren moderner Softwareentwicklung kennenzulernen:

Test Driven Development
Wann immer möglich beginnt die Entwicklung eines neuen Features mit der Formulierung von TestfÀllen. Lediglich komplexe grafische OberflÀchen sind davon aktuell leider ausgenommen.
Docker & Continuous Integration
Aufbauend auf Docker-Images wird BlattWerkzeug nach Commits regelmĂ€ĂŸig automatisch ĂŒbersetzt und getestet.
Single Page Applications & API-Server
Das BlattWerkzeug-Frontend ist eine Angular-Anwendung, der serverseitige Teil verwendet Ruby on Rails.
Visueller Drag & Drop Editor fĂŒr Datenbanken

Aufbauend auf der Bachelor-Thesis von Marco Pawloski soll ein Datenbank - Editor mit Drag & Drop - FunktionalitĂ€t entwickelt werden. Die visuelle Gestaltung und die BenutzerfĂŒhrung kann sich dabei gerne an etablierten Tools wie der MySQL - Workbench oder pgModeler orientieren. Allerdings mĂŒssen die speziellen Anforderungen der Zielgruppe (SchĂŒler und deren Lehrer) explizit berĂŒcksichtigt werden.

Umgebung: TypeScript mit Angular

2D Welt-Editor fĂŒr Trucklino

Aufbauend auf der Bachelor-Thesis von Sebastian Popp soll ein Welt-Editor fĂŒr Trucklino entwickelt werden. Bisher mĂŒssen Welten fĂŒr Trucklino sehr umstĂ€ndlich als JSON-Dokument beschrieben werden. Der eingebaute block-basierte Editor wird fĂŒr die textuelle Visualisierung von SyntaxbĂ€umen entwickelt und eignet sich demenentsprechend nicht fĂŒr die besser geeignete 2D-Kacheldarstellung.

Im Rahmen dieses Projektes soll daher ein browserbasierter 2D-Editor entwickelt werden, mit dem sich die Tiles und die verschiedenen Objekte in der Welt platzieren lassen. Die wesentliche Herausforderung wird dabei die sinnvolle Integration von Drag-and-Drop-Interaktionen aus Angular heraus in die normale Canvas-API sein.

Umgebung: Typescript mit Angular und canvas-Rendering

Community-Funktionen fĂŒr SchĂŒler

BlattWerkzeug soll in einem ĂŒberschaubarem Rahmen mit Community-Funktionen ausgestattet werden. Dazu gehören Kommentare zu Projekten, eine Foren-artige Kommunikationsmöglichkeit und persönliche Direktnachrichten. Diese FunktionalitĂ€t soll allerdings nicht von Grund auf neu entwickelt werden: Der Nutzen steht dabei in keinem VerhĂ€ltnis zum Aufwand, vor allem weil entsprechende Software schon existiert.

Stattdessen sollen bestehende Community-Platformen in Bezug auf ihre Eignung fĂŒr die Integration evaluiert werden. Ein erster Ausgangspunkt fĂŒr die Recherche sollten bestehende OpenSource Foren-Programme wie Discourse sein, eine Liste mit möglichen Kandidaten findet sich bei Awesome Selfhosted. Die schlussendlich gewĂ€hlte Software soll dann in BlattWerkzeug integriert werden. Dazu gehört mindestens ein gemeinsamer Login und die Integration von Kommentaren zu Projekten. Weitere Aspekte sind abhĂ€ngig von der ausgewĂ€hlten Software.

Umgebung: Eigene Konzeption und Recherche, Anbindung der gewÀhlten Software

Web-Umgebung

Ein Prototyp der Entwicklungsumgebung hat Anwender schon in die Lage versetzt, direkt aus dem Webbrowser heraus eigene Webseiten zu entwickeln.Mit der Umstellung auf eine neue Art und Weise die Blocksprachen zu definieren, ist dieser Funktionsumfang zunÀchst wieder entfallen.Im Rahmen dieser Aufgabe soll eine Möglichgeit zum Bearbeiten und anschauen von Webseiten re- implementiert werden. Von dem mittlerweile abgeschalteten Prototyp existiert neben dem rechtsstehenden Screenshot noch ein Video, welches gerne zur Inspiration genutzt werden kann.

Die erstellten Webseiten sollen auf den SQL - Datenbestand eines Projekts zugreifen können und mĂŒssen dementsprechend dynamisch ĂŒber eine Templatingsprache erzeugt werden.Inhaltlich ergeben sich bei dieser Aufgabe unter anderem die folgenden Fragestellungen:

  • Welche HTML - Elemente sind fĂŒr SchĂŒler relevant?
  • Welche Templatingsprache sollte verwendet werden?
  • Wie kann eine Seite die Datenquellen angeben, die zur Darstellung benötigt werden?
  • Wie können Formulardaten verarbeitet werden?

Umgebung: Typescript (client- und serverseitig), Grammatik-Editor von BlattWerkzeug

Umgebung zur AusfĂŒhrung von nicht vertrauenswĂŒrdigen Programmen

Es liegt in der Natur von BlattWerkzeug, dass prinzipiell beliebigen Personen die AusfĂŒhrungen ihrer Programme auf dem BlattWerkzeug-Server gestattet werden muss. Und weil nicht jede beliebige Person vertrauenswĂŒrdig ist, mĂŒssen diese Programme vom restlichen System isoliert werden. Mögliche Mechanismen existieren dafĂŒr in großer Zahl, anders wĂ€ren Webhosting-Dienste oder Online-Compiler wie ideone.com schließlich ĂŒberhaupt nicht denkbar.

Im Rahmen dieses Projektvorschlags soll untersucht werden:

  • Welche Isolationsmechaniken lassen sich fĂŒr den BlattWerkzeug-Server sinnvoll anwenden? Angedacht sind klassische Linux-Benutzerrechte, AppArmor oder möglicherweise auch Docker.
  • Welche LĂŒcken nutzen bösartige Programme klassischerweise aus?

Dazu sollen eigens geschriebene, bösartige Programme in einer Testsuite zusammengefasst und (möglichst) mit den gewĂ€hlten Isolationsverfahren korrekt eingeschrĂ€nkt werden. Die Bandbreite umfasst dabei schlicht schĂ€dliche Skripten (rm -rf /), triviale Versuche Passwörter auszulesen (cat /etc/shadow), ĂŒber (BitCoin-)Miner (oder profane Endlosschleifen) bis hin zu Versuchen, einen Command and Control-Server aufzusetzen.

Umgebung: Mandatory Access Control Features des Linux Kernels (AppArmor, SE Linux), Docker