­čçę­čç¬ ­čçČ­čçž

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.

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.
Benutzermanagement

Aktuell sieht die Webseite keinerlei Registrierung von Benutzern vor, stattdessen hat jedes erstellte Projekt gewisserma├čen eine eigene Benutzerdatenbank. Dieser Umstand soll sich im Rahmen dieses Projektes ├Ąndern. Dabei ist die eigentliche Registrierung und Verwaltung von Benutzern mehr eine technische Formalit├Ąt und nicht besonders herausfordernd. Viel interessanter sind die besonderen Anforderungen, die sich aus dem Einsatz an Schulen ergeben. Registrierte Benutzer fallen dabei typischerweise in eine von drei Rollen: Sch├╝ler, Lehrer oder Administrator.

Umgebung: Ruby on Rails f├╝r das serverseitige Datenmodell und Angular mit Typescript f├╝r die Verwaltung im Frontend.

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

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

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

2D Welt-Editor f├╝r Trucklino

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.

Umgebung: Typescript mit Angular und canvas-Rendering