MoodleMoot DACH – Friday/Freitag, 05.09.2025

Session Plan

FRI Kogge Holstentor Salzspeicher Hanse Fischbrötchen Marzipan Ostsee Travemünde Priwall Lübeck
10.00 Austausch zu Moodle für Schulen (Herausforderungen, Wünsche & Ideen)
Kristina Junghans
DE
Quiz and Question Bank in 5.0
Luca Bösch & Tim Hunt
DE & EN
High performance moodle administration
Marc-Robin Wendt
DE & EN
10 wichtig(st)e Vorteile von moodle Workplace
Dr. Nikolche Shulevski
moodle community meetings - a replacement for the MUA Town Halls
Harald Schnurbusch
DE & EN
Sammlung von Ideen für einen Administratoren-SelbstlernkursCollectiong ideas for admin self-training course
Dori Szvath
DE & EN & HU
What moodle has changed this time?
Sara Arjona & Amaia Anabitarte
EN
Moodle Course Roadmap
Steve Bader
EN
Prompts for Teaching with(out) moodle
Martin V. / birdy1976
EN
Gamification mit Stash
Juliane
DE & EN
11.00 Mahara & Moodle + Updates
Kristina Höppner
DE & EN
Technical Transformation of moodle
Andrew Lyons (HQ)
EN
interaktiver H5P-AuswahlhelferH5P-GPT: Test & Feedback
Martina
DE
Wieviele Moodle- Instanzen brauchen wir? Ideen für ein Moodle zur Kooperation
Frank von Danwitz
DE
moodle escape room - idea and possibility to try out
Stefan Hanauska
DE & EN
Peer Review Process
Jonathan Champ
EN
Navigation for students in courses which scenarios do we have to know to redesign the navigation
Dennis
EN
a moodle Docker walkthrough installer
Alan McCoy
EN
GEN AI in assessment design: What works & what's next
Heikki Wilenius
EN
 
12.00 Selbsthilfegruppe Digitales Prüfen
Andeas Erbe
DE
Ask moodle anything!
Paul Mozaer & HQ Staff
EN
Worst Moodle test ever (fun with tests)
Christine
DE & EN
Moodle farm (1x Core + 1x Plugin = Multi Instances)
Markus Strehling
DE
Exam Scan. Digital Exam inspection for paper penal exams
Harald Schnusbusch
DE & EN
h5p Moodle Core User gesucht! Update des Vergleichs Plugin vs. Core Lösungen
Claudia Ballerstedt
DE
Tipps, Tops & Hacks als User
Ralf Appelt
DE
Evamative AI. Can & Should AI be used for marking & feedback
Marcus Green
EN
FollowUp: AI @ mebis / bycs LMS
Peter Mayer
EN
 

Index of session documentation

Austausch zu Moodle für Schulen (Herausforderungen, Wünsche & Ideen)

Time: 10.00

Room: Kogge

Host: Kristina Junghans

Language: DE

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr10-kogge

Session Documentation
Austausch zu Moodle  für Schulen (Herausforderungen, Wünsche & Ideen)
Sessiongeberin: Kristina Junghans (oncampus)
diverse Lehrkräfte aus verschiedenen Bundesländern (SA, BW, NRW ...)
viele auch aus der Lehrkräftefortbildung
Corona wird nicht erst seit Corona genutzt
teils selbst gehostet, aber eher unter 25%
Ralf: selbst gehostet, 4000 SuS, Berufsschule, Datenschutzfragen, zentrales System, 
Selbstregistrierung
400 Tage inaktiv, dann User löschen
#löschen im Verdeckten Bereich
Löschen von Kursen wird oft durch Lehrkräfte initiiert durch Markierung der Kurse; Recht auf Vergessenwerden wird dann konsequent durch die Administration umgesetzt: TN werden ohne Kurszuweisung aus dem System geworfen
Eine Lösung ist, dass über ein Download-Plugin die Archivierung der Inhalte für SuS angeboten wird (Link folgt)
Problem: Videos lassen sich schlecht (Stichwort Daumenkino ...) archivieren.
Empfehlung von Kristina: Course LifeCycle
Wünsche:
  • Community-Funktion zum Connecten von Teilnehmenden im Kurs
Download-Plugin für Kursinhalte: https://moodle.org/plugins/local_downloadcenter
MoodleBande - Donnerstag Abend 20 Uhr treffen sich online Moodle-Interessierte
MoodleTreff in NRW - rund 40 Workshops zur Didaktik, Schulplanung, Schulentwicklung ...
Barcamps wie Edunautika, EduCamps, ..., die Vernetzung von Lehrkräften ermöglichen
Barcamp und Workshops rund zum Thema freie Lizenzierung:
Bildungspodcast die (nicht nur, aber auch) über Moodle reden:
Kursaustausch über Moodle.net
Zukunftsschau: Es wird ein ZUM-Moodle geben (Zentrale für Unterrichtsmedien e. V.), in dem man dann Best Practices austauschen kann. URL vermutlich dann mal https://moodle.zum.de - mehr Infos dann auf www.zum.de, wenn es soweit ist.
Länderübergreifende Austausch-Plattformen:
    
Freie Moodlekurse (OER): Bildungsplan BW geprüft: https://moodle.moove-bw.de
Verrückter Realitäts-Fail: Man bezahlt Verlage teuer für die Kurserstellung, gibt die allen Schulen im Bundesland - und keine(r) nutzt sie. Letztendlich sind die Kurse nicht frei lizenziert, können also auch nicht aus dem Netzwerk rausgegeben oder zerstückelt werden, und so dümpeln solche Projekte dann vor sich hin.
grundsätzlich wären viele Probleme bezüglich "Zerstückeln und Neuzusammensetzen" mit freien Lizenzen sinnvoll gelöst. smile
DigiLL - Universitätsbund, der auch Materialien und Kurse als OER veröffentlicht
Problem / Diskrepanz: Lehrkräfte wollen sich gerne austauschen, weiterentwickeln, Moodle weiternutzen ... (Graswurzel) - aber: es braucht politischen Druck, um die, die sich NICHT mit Moodle beschäftigen, dazu zu "zwingen". Vernünftige, zeitgemäße Lehre kann schlecht ohne LMS stattfinden.
KONTAKTE: [gelöscht]

Quiz and Question Bank in 5.0

Time: 10.00

Room: Holstentor

Host: Luca Bösch & Tim Hunt

Language: DE & EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr10-holstentor

Session Documentation
Quiz and Question Bank in 5.0
Luca Bösch & Tim Hunt
  • Role management - Non-editing-teacher can use the questions in the question banks, but can not edit it.
  • New filters for questions
  • Random question --> Filters can now be used (for example question type)
  • No One-Size-Fits-All - it depends on the organization, if it's better import a question bank in a course or use a central question banks course
  • Deleted Courses - Questions that are used in a quiz are saved from deletion
  • Questions can be moved from one question bank to another
Feature request:
Moodle Tracker - 5.1 
Catalyst article
Luca Bösch & Tim Hunt

High performance moodle administration

Time: 10.00

Room: Salzspeicher

Host: Marc-Robin Wendt

Language: DE & EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr10-salzspeicher

Session Documentation
Hy, this is Berengar from Uni Jena, I'm unfortunatly not participating (some of my collegues are) but looking forward have a look into the slides.
spreadsheet with pros & cons of different technologies and systems for moodle servers

10 wichtig(st)e Vorteile von moodle Workplace

Time: 10.00

Room: Hanse

Host: Dr. Nikolche Shulevski

Language: DE

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr10-hanse

Session Documentation

no documentation


moodle community meetings - a replacement for the MUA Town Halls

Time: 10.00

Room: Fischbrötchen

Host: Harald Schnurbusch

Language: DE & EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr10-fisch

Session Documentation
Session: Moodle Community Meetings
Presenter: Harald Schnurbusch
Date: 5 September 2025, 10-10:45am
Room: Fischbrötchen
context:
  • meeting of former MUA Townhall members duscussing if they can keep the tradition of MUA Townhalls (community meetings) alive under a new lable
  • Moodle.org Forums provides a BBB Room for the meetings (provided by moodle HQ)
target group:
  • Focus on discussions about the needs of endusers (teachers/instructures etc.)
  • make it interesting for schools and higher education alike
  • not for developers
meetings:
  • Timetable: Meetings happen 1/Month
  • length: max. 60min; max. 15 min per presenting person (incl. questions)
  • starting on September 23rd 1pm-2pm (UTC) (english language)
    • Topic for the first meeting: Show and tell of what happend at mootDACH 25
  • no participation fee
ideas:
  • Invite great talks from Moots to give their talks as input for the community meetings
    • exchange ideas in a matrix channel
  • Online bar camp
    • rather many short presentation than a few longer ones
  • name
    • "most of the moots"
    • "bits of the moots"
    • "best of moodlemoot DACH"
    • "best of moodlemoot global"
  • invite HQ-people to just listen and see what is important to the community
  • offer live translation, transcript → google meet (?)
  • record meetings and upload them → is it worth the effort or is a transcript/summary enough?
    • legal circumstances? - what would be necessary to make it possible
      • let people know in advance
    • for now start with a low level and act upon requests
  • promote moodlemoots
  • let people participate
    • let them send in questions beforehand as long as the
  • make live easy for presenters - lower burdens for creating the presentation
    • offer help with presentations
    • make it short
  • make announcements
    • linkedin
    • moodle news/blog
    • moodle forum
    • moodle newsletter?
  • have the organiser prepare 2-3 questions for the start of the q&a, so it doesn't start with tumbleweed
  • have a specific topic for each session otherwise it might be a wild mix

Sammlung von Ideen für einen Administratoren-Selbstlernkurs/Collection ideas for admin self-training course

Time: 10.00

Room: Marzipan

Host: Dori Szvath

Language: DE & EN & HU

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr10-marzipan

Session Documentation
Wie kann man neue Admin onboarden bzw einen Selbstlernkurs gestalten? Adaptives Lernen umsetzen? Simulationen?
Moodle Sandbox (System setzt sich jede Stunde zurück)
Aktivität Lektion mit Fallbeispielen (einen Hauptstrang und mehrere Loops mit "Umwegen", die dem Lernen dienen)
Dynamisches Testen?
Supportanfragen dokumentieren, mit KI Szenarien entwickeln basierend auf Anfragen + gegebenen Support 
Im Training Traps einbauen (Datenschutz-Infringement etc)
Nutzertouren nutzen, um Admins zu schulen

What moodle has changed this time?

Time: 10.00

Room: Ostsee

Host: Sara Arjona, Amaia Anabitarte

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr10-ostsee

Session Documentation
What moodle has changed this time?
Sara Arjona, Amaia Anabitarte
Documentation
Core overview activities page
  • Activities block will be removed in 5.1 -> activities plugins have to be adjusted
  • index,php still works, but in core will redirect to overview.php
  • Course activities page was improved for 5.1 and contains more information now.
Bootstrap 5
  • Moodle 5.0 uses BS5 with a BS4 compatibility layer. In Moodle 6.0 BS4 will be deprecated. -> lots of breaking changes!!
  • The BS4 compatibility layer is in a file which can be removed (find "bs4compat" class)
  • Behat has an option "--scss-deprecations" for the init method to show what is wrong
  • $CFG->behat_pause_on_fail = true is useful to see the errors
Migrating course formats

Moodle Course Roadmap

Time: 10.00

Room: Travemünde

Host: Steve Bader

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr10-travemuende

Session Documentation

Prompts for Teaching with(out) moodle

Time: 10.00

Room: Priwall

Host: Martin V. / birdy1976

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr10-priwall

Session Documentation
javascript: (() => {
  /* Prüfe, ob Widget bereits existiert */
  
  if (document.getElementById("chatbot-companion-widget")) return;
  /* Widget-Container erstellen */
  const widget = document.createElement("div");
  widget.id = "chatbot-companion-widget";
  widget.style.cssText = "position:fixed;top:20px;right:20px;width:400px;z-index:999999;font-family:system-ui,sans-serif;box-shadow:0 8px 32px rgba(0,0,0,0.3);border-radius:12px;overflow:hidden;";
  /* ShadowDOM für Style-Kapselung */
  const shadow = widget.attachShadow({ mode: "closed" });
  /* Theme-Erkennung */
  const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
  let isDarkMode = prefersDark;
  /* Template-Verwaltung */
  let templates = [
    {
      name: "Optimiere Prompt: {selection}",
      content:
        "Analysiere und optimiere den folgenden Prompt nach diesem Ablauf:\n\n**1. Strukturierte Analyse**\n- Zerlege den Prompt in seine Kernkomponenten: **Ziel, Kontext, Constraints, Output-Format, implizite Annahmen**.\n- Identifiziere, welche **Prompt-Techniken** (z.B. Chain-of-Thought, Few-Shot, Roleplay, Constraints) bereits genutzt werden und welche fehlen.\n- Prüfe auf **Ambiguity, Redundanz, Over- oder Under-Specification**.\n\n**2. Few-Shot-Vergleich**\n- Zeige mir **drei alternative Formulierungen** desselben Prompts, die jeweils eine andere Technik betonen (z.B. eine mit mehr Constraints, eine mit Roleplay, eine mit Schritt-für-Schritt-Anleitung).\n- Erkläre, warum jede Variante für bestimmte Use Cases besser oder schlechter geeignet ist.\n\n**3. Self-Critique & Verbesserung**\n- Generiere eine **kritische Bewertung** des Original-Prompts: Was könnte schiefgehen? Welche Outputs wären wahrscheinlich suboptimal?\n- Schreibe eine **optimierte Version**, die:\n  - Klare **Erfolgsmetriken** für den Output definiert,\n  - **Constraints** hinzufügt, um die Qualität zu sichern,\n  - **Beispiele** oder **Analogien** einbaut, um die Absicht zu verdeutlichen.\n\n**4. Test-Szenario**\n- Simuliere, wie ein KI-System auf den Original-Prompt und auf die optimierte Version reagieren würde. Zeige die Unterschiede im Output auf.\n\n**5. Iterationsvorschlag**\n- Schlage **drei konkrete Experimente** vor, um den Prompt weiter zu verbessern (z.B. ‚Füge eine Meta-Ebene hinzu‘, ‚Teste mit adversarialen Inputs‘).\n  \n**Zusätzliche Anforderungen an die Optimierung:**\n- Der optimierte Prompt soll **robuster gegen Missverständnisse** sein.\n- Er soll **skalierbar** sein, d.h. auch für ähnliche Aufgaben funktionieren.\n- Nutze **keine überflüssigen Floskeln**, sondern präzise Sprache.\n- Falls nötig, füge **Beispiel-Inputs/Outputs** hinzu, um die Erwartung zu klären.\n\n**Original-Prompt (hier einfügen):**",
    },
    {
      name: "Destilliere Prompt: {selection}",
      content:
        "# Meta-Prompt: Conversation-to-Prompt Destillation\n\n## Aufgabe\nAnalysiere den vorangegangenen Gesprächsverlauf und destilliere daraus einen optimalen **End-to-End Prompt**, der das finale Ergebnis in einem einzigen Durchgang erzeugt hätte.\n\n## Analyse-Framework\n\n### 1. **Iterationsanalyse**\n- **Ursprüngliche Anfrage:** Identifiziere den initialen Auftrag und seine Unklarheiten\n- **Pivots & Korrekturen:** Welche Richtungsänderungen gab es? Was wurde verfeinert/verworfen?\n- **Entscheidungsmomente:** Sammle alle kritischen Design-Entscheidungen aus dem Dialog\n- **Implizite Präferenzen:** Erkenne unausgesprochene Anforderungen aus den Korrekturen\n\n### 2. **Requirement-Extraktion**\n- **Must-Have Features:** Was war essentiell für das finale Ergebnis?\n- **Nice-to-Have Features:** Was wurde als optional identifiziert?\n- **Anti-Features:** Was wurde explizit ausgeschlossen oder vermieden?\n- **Hidden Constraints:** Welche technischen/kontextuellen Einschränkungen wurden im Dialog aufgedeckt?\n\n### 3. **Kontext-Destillation**\n- **Use Case Klarstellung:** Wofür wird das Ergebnis wirklich verwendet?\n- **Zielgruppe:** Welches Expertise-Level wurde angenommen?\n- **Workflow-Integration:** In welchen größeren Arbeitsprozess gehört das Ergebnis?\n- **Tool-Ecosystem:** Mit welchen anderen Tools/Prozessen muss es kompatibel sein?\n\n## Prompt-Generierung\n\n### **Strukturelle Anforderungen**\nDer destillierte Prompt muss enthalten:\n- **Präzise Aufgabendefinition** basierend auf dem finalen Ergebnis\n- **Alle kritischen Constraints** die im Dialog identifiziert wurden\n- **Konkrete Beispiele** aus den Test-Cases/Iterationen\n- **Spezifische Output-Formatierung** wie im Dialog vereinbart\n- **Error-Prevention:** Constraints gegen die häufigsten Missverständnisse aus dem Dialog\n\n### **Anti-Pattern Vermeidung**\nVermeide im destillierten Prompt:\n- ❌ Vage Formulierungen, die zu den ursprünglichen Problemen führten\n- ❌ Features die im Dialog verworfen wurd
en\n- ❌ Über-Spezifikation von unwichtigen Details\n- ❌ Unter-Spezifikation von kritischen Entscheidungen\n\n## Output-Format\n\n### **1. Iterationszusammenfassung**\n```\n**Dialog-Evolution:**\n- Start: [ursprüngliche Anfrage]\n- Pivot 1: [erste wichtige Änderung + Grund]\n- Pivot 2: [zweite Änderung + Grund]\n- Final: [endgültiges Ergebnis]\n\n**Kritische Entscheidungen:**\n- [Entscheidung 1]: [Begründung aus Dialog]\n- [Entscheidung 2]: [Begründung aus Dialog]\n```\n\n### **2. Destillierter End-to-End Prompt**\n```markdown\n# [Titel basierend auf finalem Use Case]\n\n## [Strukturierter Prompt der das Endergebnis in einem Durchgang erzeugt]\n```\n\n### **3. Validierung**\n- **Was hätte schiefgehen können:** Potentielle Missverständnisse des destillierten Prompts\n- **Qualitätsmetriken:** Wie würde man den Erfolg des One-Shot Prompts messen?\n\n## Erfolgsmetriken für die Destillation\n✅ **Vollständigkeit:** Destillierter Prompt erfasst alle finalen Anforderungen\n✅ **Effizienz:** One-Shot Ausführung ohne Nachfragen möglich\n✅ **Reproduzierbarkeit:** Identisches oder gleichwertiges Ergebnis garantiert\n✅ **Klarheit:** Keine Ambiguitäten die zu den ursprünglichen Iterationen führen würden\n---\n**Anwendung:** Ergänze nach diesem Meta-Prompt gegebenenfalls Entscheidungen, die du mitberücksichtigen möchtest.",
    },
    {
      name: "Reverse-Engineer Code: {selection}",
      content:
        "# Optimierter Prompt: Reverse-Engineer Code\n\n## Aufgabe\nReverse-Engineer einen optimalen Entwicklungs-Prompt basierend auf dem Referenz-Code.\n\n## Analyse-Anforderungen\n**Funktionale Extraktion:**\n- Identifiziere alle Features und Verhalten aus dem Code\n- Erkenne technische Constraints und Design-Entscheidungen\n- Extrahiere implizite Anforderungen (Error Handling, UX-Details)\n\n**Edge Case Identifikation:**\n- Welche Sonderfälle behandelt der Code?\n- Welche Eingabe-Validierungen sind implementiert?\n- Welche Browser-Kompatibilitäts-Features sind berücksichtigt?\n\n## Output-Spezifikation\n**Ziel-Prompt-Eigenschaften:**\n- **Reproduzierbarkeit:** Prompt soll identischen Code erzeugen\n- **Vollständigkeit:** Alle Code-Features müssen spezifiziert sein\n- **Klarheit:** Eindeutige technische Anforderungen\n- **Testbarkeit:** Mit konkreten Input/Output-Beispielen\n\n## Prompt-Struktur\nErstelle einen Prompt mit diesen Abschnitten:\n1. **Funktionale Anforderungen** (Was soll es tun?)\n2. **Technische Constraints** (Wie soll es implementiert sein?)\n3. **User Experience** (Wie soll es sich verhalten?)\n4. **Fehlerbehandlung** (Welche Fälle abfangen?)\n5. **Test-Cases** (Konkrete Beispiele)\n6. **Ausgabeformat** (Code + Anweisungen)\n\n## Erfolgsmetriken\n✅ **Vollständigkeit:** Prompt erfasst 100% der Code-Features\n✅ **Präzision:** Keine überflüssigen oder irreführenden Anforderungen\n✅ **Spezifität:** Eindeutige technische Details (z.B. Kommentar-Stil, API-Präferenzen)\n✅ **Testbarkeit:** Enthält verifizierbare Beispiele\n\n## Kontext-Information\n- **Use Case:** Code-Entwicklung und -Debugging\n- **Zielgruppe:** Entwickler mit Programmierkenntnissen\n- **Workflow:** Teil eines iterativen Entwicklungsprozesses\n- **Tool-Ecosystem:** Integration mit anderen Programmierwerkzeugen\n\n## Zusätzliche Anforderungen\n- Berücksichtige **alle technischen Präferenzen** aus dem Code (z.B. Kommentar-Stil)\n- Extrahiere **implizite UX-Entscheidungen** (Formatierung 
der Ein- und Ausgabe)\n- Erkenne **bewusste Vereinfachungen** oder weggelassene Features\n- Identifiziere **Browser-Kompatibilitäts-Strategien**\n\n## Referenz-Code",
    },
    {
      name: "Führe Code-Review durch: {selection}",
      content:
        "🎯 Ziel:\nFühre eine tiefgehende Code-Review durch, identifiziere Fehler und optimiere den Code unter Berücksichtigung von Best Practices.\n\n👤 Rolle:\nDu bist ein erfahrener Senior-Entwickler mit Fokus auf Python (oder Sprache X, bitte spezifizieren).\n\n📋 Aufgabe:\n1. Analysiere den Code systematisch:\n   - Syntax & Logik\n   - Performance\n   - Sicherheit\n   - Lesbarkeit & Stil\n2. Falls eine Fehlermeldung vorliegt:\n   - Erkläre Ursache & Bedeutung\n   - Zeige Schritt-für-Schritt, wie man sie behebt\n3. Erstelle eine optimierte Version des Codes:\n   - Kommentiert\n   - Verbesserte Struktur\n   - Best Practices angewendet\n\n📐 Erfolgsmetriken:\n- Klar nachvollziehbare Begründungen für jede Änderung\n- Verbesserter Code ist kürzer, sicherer oder performanter\n- Kommentare erklären die wichtigsten Anpassungen\n\n📦 Format:\n- 🔍 Review (nach Kategorien)\n- ⚠️ Fehleranalyse (falls vorhanden)\n- 🛠️ Lösungsvorschläge\n- ✅ Optimierter Code (kommentiert)\n\n💥 Fehlermeldung\n\n\n📎 Code\n",
    },
    {
      name: "Analysiere Person / Begriff: {selection}",
      content:
        "# **Meta-Prompt-Template für die Analyse von Personen, Theorien oder Bewegungen**\n\n***\n\n**Aufgabe:**  \nAnalysiere die zentralen **Positionen, Ideen oder Wirkungsweisen** von `[VARIABLE]` in präziser und strukturierter Form.  \n\n**Anforderungen an den Output:**  \n1. **Gliederung:** Maximal **5 Hauptaspekte** (z.B. Positionen, Prinzipien, Wirkungsfelder), jeweils mit einer klaren **Überschrift**.  \n2. **Inhalt pro Aspekt:**  \n   - a) **Kernaussage** → 1–2 Sätze, prägnant  \n   - b) **Begründung/Kontext** → max. 4 Sätze mit Hintergrund  \n   - c) **Beispiel oder Analogie** → um den Gedanken greifbar zu machen  \n   - d) **Vergleich** → zur gängigen Mainstream-Position, zu Konkurrenten oder historischen Alternativen  \n3. **Qualitätssicherung:**  \n   - Keine vagen Floskeln  \n   - Einfach und dennoch präzise formuliert  \n   - Verweise auf innere Zusammenhänge zwischen den Aspekten, wo sinnvoll  \n4. **Optional:**  \n   - Weisen Sie auf **Kontroversen, Kritik oder Missverständnisse** hin  \n   - Ergänzen Sie, welche Relevanz `[VARIABLE]` für **heutige Debatten oder praktische Anwendungen** hat  \n\n**Output-Format:**  \n- **Listenartig strukturiert** (besser scanbar als Fließtext)  \n- **Überschriften + Unterpunkte** für Klarheit  \n- Markiere optionale Reflexionsaspekte separat  \n\n***\n\n### Beispiele für Einsätze:  \n- `[VARIABLE] = Hannah Arendt` (Philosophin → Personenanalyse)  \n- `[VARIABLE] = Konstruktivismus` (Theorie → Prinzipienanalyse)  \n- `[VARIABLE] = Fridays for Future` (Bewegung → Hauptforderungen & Wirkung)  \n- `[VARIABLE] = UNO` (Institution → Funktionen & Kritikpunkte)  \n\n***\n\n`[VARIABLE]` =",
    }, 
    {
      name: "Erstelle Präsentation: {selection}",
      content:
        "# Prompt zur Erstellung einer Präsentation\n**Strukturiert nach der KREIDE-Methode**\n\n## K – Kontext setzen  \nDu gestaltest eine spannende und lehrreiche Präsentation für die Erwachsenenbildung, bei der alle Inhalte aus dem vorgegebenen Text stammen.  \n\n## R – Rolle zuweisen  \nDu agierst als Entwickler, der HTML und Reveal.js hervorragend beherrscht, Präsentationen gehirnfreundlich strukturiert und optisch ansprechend gestaltet.  \n\n## E – Erteilen der Hauptaufgabe  \nErstelle für den vorgegebenen Text eine vollständige Reveal.js-Präsentation in einer einzigen HTML-Datei mit allen nötigen Links und CSS-Anpassungen.  \n\n## I – Instruktionen präzisieren  \n- Nutze `<h5>`-Tags für alle Folienüberschriften ohne Emojis.  \n- Listenpunkte ersetzen die üblichen Aufzählungszeichen durch passende Emojis.  \n- Maximal fünf Listenpunkte pro Folie, bei längeren Themen teile sie auf mehrere Folien auf.  \n- Listenpunkte dürfen maximal 32 Zeichen lang sein und auf eine Zeile passen.  \n- Die Sprache ist Deutsch mit **Schweizer Rechtschreibung (de-CH)**, der Stil engagiert und leicht verständlich.  \n\n## D – Dialog führen  \nFalls du weitere Informationen zum Inhalt oder zu speziellen Designwünschen brauchst, frage bitte vor der Umsetzung nach.  \n\n## E – Evaluation einfordern  \nDie Präsentation gilt als erfolgreich, wenn sie alle Anforderungen erfüllt: komplette HTML-Datei, passende Überschriften, klare Emoji-Listen, Textlängenbegrenzungen eingehalten, Schweizer Rechtschreibung umgesetzt und ein ansprechender, verständlicher Stil realisiert sind.  \n\n## 📚 – Vorgegebener Text",
    },
    {
      name: "Spiele Quizmaster: {selection}",
      content:
        "**Rolle:**  \nDu bist ein engagierter, humorvoller Quizmaster. Du stellst Single-Choice-Fragen, gibst motivierendes Feedback und führst eine Rangliste.  \n\n**Ablauf:**  \n1. Begrüsse die Runde und frage: «Wie viele Fragen wollen wir heute spielen?»  \n2. Bitte um die Namen der Mitspieler:innen.  \n3. Erkläre kurz die Regeln:  \n   - Nur Single-Choice-Fragen.  \n   - 1 Punkt für die richtige Antwort, 0 Punkte für falsche.  \n   - Nach jeder Antwort: Feedback + aktueller Punktestand.  \n4. Fragen stellst du im Format:  \n   > A) Antwort A  \n   > B) Antwort B  \n   > C) Antwort C  \n   - Optionen etwa gleich lang.  \n   - Distraktoren plausibel, aber klar falsch.  \n5. Antworten kommen im Format: **Name: Buchstabe**.  \n6. Nach jeder Antwort:  \n   - **Feedback (motiviert, witzig):** …  \n   - **Punktestand:** [Liste aller Spieler:innen mit Punkten]  \n7. Bei Eingabe von «Weiter» → nächste Frage.  \n8. Bei Eingabe von **«Fertig»**:  \n   - Zeige den Endstand (Rangliste).  \n   - Füge danach einen **Fun-Fact** zum Thema ein, aus dem Quizinhalt.  \n9. Verwende ausschliesslich den untenstehenden Quizinhalt für die Fragen.  \n\n**Beispiel:**  \nFrage: «Was ist die Hauptstadt von Frankreich?»  \nA) Rom  \nB) Berlin  \nC) Paris  \n\nAnna: C  \n\nFeedback: «Bravo, Anna! Paris ist korrekt: +1 Punkt für dich.»  \nPunktestand: Anna 1, Ben 0  \n\n***\n\n**Quizinhalt:**  ",
    },
    {
      name: "Erkläre Code: {selection}",
      content: "Erkläre mir diesen Code Schritt für Schritt:",
    },
    {
      name: "Vereinfache Text: {selection}",
      content: "Vereinfache folgenden Text für bessere Verständlichkeit:",
    },
  ];
  let currentTemplate = 0;
/* Start */
const moduleTemplates = {
  "Adversarial": "Was passiert bei unklarem Input wie: [Beispiel]?",
  "Beispiel": "Beispiel: [Beispiel]",
  "Chain-of-Thought": "Denke Schritt für Schritt.",
  "Constraints": "Halte dich an folgende Vorgaben: Format = [Format], Kriterien = [Kriterien].",
  "Evaluations": "Bewerte den Output nach: [Kriterien]",
  "Meta-Reflexion": "Wie würdest du diesen Prompt verbessern?",
  "Rollen": "Du bist ein:e [Rolle], spezialisiert auf [Kontext].",
  "Selbstkritik": "Was war gut/schlecht an deiner Antwort bezogen auf [Ziel]?",
  "Transfer": "Übertrage die Erkenntnisse auf [Transferbereich].",
  "Ziel": "Ziel: [Ziel]"
};
const patternTemplates = {
  "Evaluation": "Bewerte [Ziel] anhand von [Kriterien].",
  "Exploration": "Untersuche [Ziel] im Hinblick auf Ursachen, Auswirkungen und Lösungen.",
  "Fragen": "Welche drei kritischen Fragen sollte man zu [Ziel] stellen?",
  "Iteration": "Verbessere [Beispiel] in drei Iterationen.",
  "Provokation": "Was wäre, wenn man das Gegenteil von [Ziel] behauptet?",
  "Reduktion": "Erkläre [Ziel] für eine 12-jährige Person.",
  "Szenario": "Stell dir vor, du bist [Rolle] in [Kontext] und musst [Ziel] lösen.",
  "Synthese": "Fasse die Kernaussagen aus [Beispiel] zusammen.",
  "Transformation": "Wandle [Beispiel] in das Format [Format] um.",
  "Vergleich": "Vergleiche zwei Konzepte hinsichtlich [Kriterien]."
};
const variables = ["Beispiel", "Format", "Kriterien", "Kontext", "Rolle", "Transferbereich", "Ziel"];
const moduleCheckboxes = Object.keys(moduleTemplates).map(name => `<label style="margin-right:12px;"><input type="checkbox" class="mod-checkbox" value="${name}"> ${name}</label>`).join("");
const patternCheckboxes = Object.keys(patternTemplates).map(name => `<label style="margin-right:12px;"><input type="checkbox" class="pat-checkbox" value="${name}"> ${name}</label>`).join("");
const variableInputs = variables.map(name => `<div><input type="text" class="var-input" data-var="${name}" placeholder="[${name}]" disabled style="width:100%;margin-bottom:8px;padding:6px;border:1px solid #ccc;border-radius:4px;"></div>`).join("");
/* Ende */
  /* Drag & Drop Variablen */
  let isDragging = false;
  let dragOffset = { x: 0, y: 0 };
  /* Theme aktualisieren */
  function updateTheme() {
    const theme = isDarkMode ? "background:#1a1a1a;color:#fff;" : "background:#fff;color:#333;";
    const headerTheme = isDarkMode ? "background:#2d2d2d;border-bottom:1px solid #444;" : "background:#f8f9fa;border-bottom:1px solid #dee2e6;";
    const btnTheme = isDarkMode ? "background:#404040;color:#fff;border:1px solid #555;" : "background:#e9ecef;color:#333;border:1px solid #ced4da;";
    const btnHover = isDarkMode ? "background:#505050;" : "background:#d4edda;";
    shadow.innerHTML = `
            <style>
                * { margin:0; padding:0; box-sizing:border-box }
                .widget { ${theme} }
                .header { 
                    ${headerTheme} 
                    padding:12px; 
                    display:flex; 
                    justify-content:space-between; 
                    align-items:center; 
                    cursor:move; 
                    user-select:none 
                }
                .header h3 { font-size:14px; font-weight:600 }
                .header-buttons { display:flex; gap:8px }
                .header-btn { 
                    ${btnTheme} 
                    border-radius:4px; 
                    padding:4px 8px; 
                    cursor:pointer; 
                    font-size:12px; 
                    transition:all 0.2s 
                }
                .header-btn:hover { ${btnHover} }
                .content { padding:16px; font-size:13px }
                .content h4 { margin:12px 0 8px 0; font-size:14px }
                .dropdown { 
                    width:100%; 
                    padding:8px; 
                    margin-bottom:12px; 
                    ${btnTheme} 
                    border-radius:4px; 
                    font-size:13px 
                }
                .button-group { display:flex; gap:8px; margin-top:12px }
                .btn { 
                    ${btnTheme} 
                    padding:8px 12px; 
                    border-radius:4px; 
                    cursor:pointer; 
                    font-size:12px; 
                    flex:1; 
                    text-align:center; 
                    transition:all 0.2s 
                }
                .btn:hover { ${btnHover} }
                .btn:disabled { opacity:0.5; cursor:not-allowed }
            </style>
            <div class="widget">
                <div class="header">
                    <h3>Chatbot-Companion</h3>
                    <div class="header-buttons">
                        <button class="header-btn theme-btn" aria-label="Theme umschalten">
                            ${isDarkMode ? "☉" : "☽"}
                        </button>
                        <button class="header-btn close-btn" aria-label="Widget schließen">×</button>
                    </div>
                </div>
                <div class="content">
                    <select class="dropdown" aria-label="Prompt-Vorlage auswählen">
                        ${templates.map((template, index) => `<option value="${index}"${index === currentTemplate ? " selected" : ""}>${template.name}</option>`).join("")}
                    </select>
                    <div class="button-group">
                        <button class="btn copy-btn" aria-label="Vorlage kopieren">Kopieren</button>
                        <button class="btn add-btn" aria-label="Neue Vorlage hinzufügen">Hinzufügen</button>
                        <button class="btn delete-btn" aria-label="Vorlage löschen"${templates.length <= 3 ? " disabled" : ""}>Löschen</button>
                    </div>
<!-- Start   -->
  <h4>Module</h4>
  <div style="display:flex;flex-wrap:wrap;margin-bottom:12px;">${moduleCheckboxes}</div>
  <h4>Patterns</h4>
  <div style="display:flex;flex-wrap:wrap;margin-bottom:12px;">${patternCheckboxes}</div>
  <h4>Variablen</h4>
  ${variableInputs}
  <div class="button-group" style="display:flex;gap:8px;margin-top:12px;">
    <button class="btn gen-copy">Kopieren</button>
    <button class="btn gen-show">Anzeigen</button>
    <button class="btn gen-reset">Reset</button>
  </div>
<!-- Ende -->
                </div>
            </div>
        `;
  }
  /* Hilfsfunktionen */
  function getSelectedText() {
    return window.getSelection().toString().trim();
  }
  function processTemplate(template, selection) {
    let processed = template.content.replace(/{selection}/g, selection);
    /* Prüfe, ob Name auf ": {selection}" endet */
    if (template.name.endsWith(": {selection}") && selection) {
      processed += "\n\n" + selection;
    }
    return processed;
  }
  function copyToClipboard(text) {
    navigator.clipboard
      .writeText(text)
      .then(() => {
        const btn = shadow.querySelector(".copy-btn");
        const originalText = btn.textContent;
        btn.textContent = "Kopiert!";
        setTimeout(() => {
          btn.textContent = originalText;
        }, 1000);
      })
      .catch(() => {
        /* Fallback für ältere Browser */
        const textarea = document.createElement("textarea");
        textarea.value = text;
        document.body.appendChild(textarea);
        textarea.select();
        document.execCommand("copy");
        document.body.removeChild(textarea);
        const btn = shadow.querySelector(".copy-btn");
        const originalText = btn.textContent;
        btn.textContent = "Kopiert!";
        setTimeout(() => {
          btn.textContent = originalText;
        }, 1000);
      });
  }
/* Start */
function updateVariableStates() {
  const activeKeys = [...shadow.querySelectorAll(".mod-checkbox:checked"), ...shadow.querySelectorAll(".pat-checkbox:checked")].map(cb => cb.value);
  shadow.querySelectorAll(".var-input").forEach(input => {
    const key = input.dataset.var;
    input.disabled = !activeKeys.some(k => moduleTemplates[k]?.includes(`[${key}]`) || patternTemplates[k]?.includes(`[${key}]`));
  });
}
function generatePrompt() {
  const activeModules = [...shadow.querySelectorAll(".mod-checkbox:checked")].map(cb => cb.value);
  const activePatterns = [...shadow.querySelectorAll(".pat-checkbox:checked")].map(cb => cb.value);
  const variablesMap = {};
  shadow.querySelectorAll(".var-input").forEach(input => {
    variablesMap[input.dataset.var] = input.value.trim() || `[${input.dataset.var}]`;
  });
  let output = "";
  if (activeModules.length) output += `Module: ${activeModules.join(", ")}\n`;
  if (activePatterns.length) output += `Patterns: ${activePatterns.join(", ")}\n`;
  activeModules.forEach(m => {
    let t = moduleTemplates[m];
    variables.forEach(v => t = t.replace(`[${v}]`, variablesMap[v]));
    output += t + "\n";
  });
  activePatterns.forEach(p => {
    let t = patternTemplates[p];
    variables.forEach(v => t = t.replace(`[${v}]`, variablesMap[v]));
    output += t + "\n";
  });
  return output.trim();
}
/* Ende */
  /* Event-Handler */
  function handleCopy() {
    const selection = getSelectedText();
    const template = templates[currentTemplate];
    const processedContent = processTemplate(template, selection);
    copyToClipboard(processedContent);
  }
  function handleAdd() {
    const selection = getSelectedText();
    if (!selection) {
      alert("Bitte markieren Sie Text für die neue Vorlage.");
      return;
    }
    const name = prompt("Name für die neue Vorlage:");
    if (!name) return;
    templates.push({
      name: name,
      content: selection,
    });
    currentTemplate = templates.length - 1;
    updateTheme();
  }
  function handleDelete() {
    if (templates.length <= 3) return;
    templates.splice(currentTemplate, 1);
    currentTemplate = Math.min(currentTemplate, templates.length - 1);
    updateTheme();
  }
  /* Drag & Drop */
  function handleMouseDown(e) {
    if (e.target.closest(".header") && !e.target.closest(".header-buttons")) {
      isDragging = true;
      const rect = widget.getBoundingClientRect();
      dragOffset.x = e.clientX - rect.left;
      dragOffset.y = e.clientY - rect.top;
      e.preventDefault();
    }
  }
  function handleMouseMove(e) {
    if (!isDragging) return;
    const newX = e.clientX - dragOffset.x;
    const newY = e.clientY - dragOffset.y;
    /* Viewport-Begrenzung */
    const maxX = window.innerWidth - widget.offsetWidth;
    const maxY = window.innerHeight - widget.offsetHeight;
    widget.style.left = Math.max(0, Math.min(newX, maxX)) + "px";
    widget.style.top = Math.max(0, Math.min(newY, maxY)) + "px";
    widget.style.right = "auto";
  }
  function handleMouseUp() {
    isDragging = false;
  }
  /* Cleanup-Funktion */
  function cleanup() {
    document.removeEventListener("mousemove", handleMouseMove);
    document.removeEventListener("mouseup", handleMouseUp);
    widget.remove();
  }
  /* Widget initialisieren */
  updateTheme();
  document.body.appendChild(widget);
  /* Event-Listener */
  shadow.addEventListener("click", (e) => {
    if (e.target.classList.contains("close-btn")) {
      cleanup();
    } else if (e.target.classList.contains("theme-btn")) {
      isDarkMode = !isDarkMode;
      updateTheme();
    } else if (e.target.classList.contains("copy-btn")) {
      handleCopy();
    } else if (e.target.classList.contains("add-btn")) {
      handleAdd();
    } else if (e.target.classList.contains("delete-btn")) {
      handleDelete();
    }
/* Start */
if (e.target.classList.contains("gen-copy")) {
  const prompt = generatePrompt();
  navigator.clipboard.writeText(prompt);
  e.target.textContent = "Kopiert!";
  setTimeout(() => e.target.textContent = "Kopieren", 1000);
}
if (e.target.classList.contains("gen-show")) {
  alert(generatePrompt());
}
if (e.target.classList.contains("gen-reset")) {
  shadow.querySelectorAll(".mod-checkbox, .pat-checkbox").forEach(cb => cb.checked = false);
  shadow.querySelectorAll(".var-input").forEach(input => {
    input.value = "";
    input.disabled = true;
  });
}
/* Ende */
  });
  shadow.addEventListener("change", (e) => {
    if (e.target.classList.contains("dropdown")) {
      currentTemplate = parseInt(e.target.value);
    }
/* Start */
if (e.target.classList.contains("mod-checkbox") || e.target.classList.contains("pat-checkbox")) {
  updateVariableStates();
}
/* Ende */
  });
  /* Drag-Events */
  shadow.addEventListener("mousedown", handleMouseDown);
  document.addEventListener("mousemove", handleMouseMove);
  document.addEventListener("mouseup", handleMouseUp);
})();

Gamification mit Stash

Time: 10.00

Room: Lübeck

Host: Juliane

Language: DE & EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr10-luebeck

Session Documentation
Gamification mit Stash - "Reise durch Moodlegaska"
Juliane Möhring -- FH Kiel
Einstieg mit H5P Peronalityuqiz zur Abfrage des Vorwissens und peronalisiertem Lernweg
Stash mit H5P kombinieren; Hilfeseite zu Stash: https://moodle.org/plugins/block_stash (kleine Icons/items werden hinterlegt und können eingesammlt werden. Im Beispielkurs konnte damit dann das Visum eingetauscht werden)
Kombination aus Voraussetzungen in Standardmoodle und Stash (Anpassungen CSS waren notwendig -- Sprechblasen)
Kursformat: Kachelformat
Kachelformat -> Landkarte darstellen (achtung bei mobile devices)
gute Begrifflichkeiten im Kurs eingesetzt: Moodlegaska, Moodleversity, Werkstatt, Gamecity
Gute Alternative für LevelUp Plugin
Nach Absolvierung des Workshops können Lehrende eine Kurskopie bekommen, in der sie Lecturer-Rechte haben, also alles verändern und ausprobieren können.
gute Idee, den Kursraum mit Lecturer-Rechten für jede*n Lehrende*n einzeln anzulegen. Dafür Textfelder (Türen) mit benutzerdefiniertem Textfeld, in dem die Links zu den jeweiligen Räumen sind.
Sprechblasen sind mit Bootstrap (https://getbootstrap.com/) umgesetzt
Erfahrungsaustausch:
  • andere HS: GamificationWorkshops werden idR nur begrenzt angenommen
  • Stash auch als Tiny-Editpr-Ergänzung
  • leichter anfangen mit Lernlandkarte
  • für Lehrende Pfad anlegen
Tipp: Links zu Grafiken

Mahara & Moodle + Updates

Time: 11.00

Room: Kogge

Host: Kristina Höppner

Language: DE & EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr11-kogge

Session Documentation
Planungs- und Entscheidungshilfe zum Einsatz von E-Portfolios in der Lehre (erstellt an der Uni Bamberg):
Podcast 'Create. Share. Engage. Portfolios for learning and more' wo es hauptsächlich um Portfolio-Praxis geht, weniger um die Technik: https://podcast.mahara.org
Riff: AI-Reflexionshilfe: https://riffbot.ai/ - sehr gut, um zum Reflektieren anzuregen. Mike Altieri an der OTH Amberg-Weiden nutzt Riff: https://podcast.mahara.org/2018360/episodes/17567918
Szenarien, wie AI in Portfolio-Arbeit eingebunden werden kann von Michael Sankey: https://docs.google.com/presentation/d/1-IW_ZLFG7x4n5sl_faG_e7os2BMjO8Kx2Uasue-cAjk/edit?usp=sharing
Recordings vom EPEPLA-Workshop, September 2024, wo es um AI in Portfolio-Praxis ging: 
Wie Mahara 2026 aussehen wird:  
Mahara mit der Moodle-Aufgabe verbinden über LTI: 

Technical Transformation of moodle

Time: 11.00

Room: Holstentor

Host: Andrew Lyons (HQ)

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr11-holstentor

Session Documentation
Technical Transformation of Moodle
Andrew Lyons (HQ)
Technical Transformation Advisory Group: https://tinyurl.com/moodlettag
Current Architecture
  • 45 Plugin types
  • 76 Subsystems
Wishes
  • a lot more hooks! -> https://moodledev.io/docs/4.4/apis/core/hooks
  • use the good stuff consistently (like HTML only in Mustache...)
  • Routing
  • CSS for plugins
  • Better namespaces (like "block" vs "blocks") - compliance with standards (folder structure)
  • Plugin upgrade without downtime (maintenance mode)
  • A list of things new developers have to know for things which will not be changed
Principles
  • Open Source
  • Community involvement
  • Flexibility
  • Privacy, Security, Accessibility
  • Transparency
  • Reasonable upgrade/migration paths
Agenda
  • REST First Design
  • Separate UI Layer (REACT)
  • Design System
  • New Frontend Framework  (Mustache is abandonded...)
Components
  • Self-Contained
  • Communicate via REST
  • Built and deployed independently
  • Scale independently
Github Workflow for plugin releases:
In the future...
  • there might be support for plugins in other languages like python...
  • there will be a separate, single plugins directory and only a single plugin type with different features...
Share your themes!
Roadmap... 
  • 2026: React as UI Framework
  • 2027: Run a component independent of core
Risks...
there is no commitment from REACT how long it will be supported

interaktiver H5P-Auswahlhelfer / H5P-GPT: Test & Feedback

Time: 11.00

Room: Salzspeicher

Host: Martina

Language: DE

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr11-salzspeicher

Session Documentation
Interaktiver H5P Auswahlhelfer / H5P-GPT  von Martine HS Bochum
(kostenloser Chat GPT Account erforderlich)
greift auf Markdownformular zurück
Es kam die Frage nach einer Lizenzierung des GPTs auf: Das GPT selber kann ich nicht unter eine Lizenz stellen, da es ein Tool von OpenAI ist. Für die hinterlegten Texte und den Prompt sehe ich keine Möglichkeit einer sichtbaren Kennzeichnung.
  • das Textdokument zu den Inhaltstypen funktioniert leider nicht
  • Vllt. zu Beginn noch die Schleife drehen: Anfänger in chatGPT oder Profi etc. (s. unten)
H5P-Guide (Firebase) Simulator:
Youtube-Video "GPTs erstellen":
H5P Konverter (PPT in H5P Course Presentation):
https://micatool.ebwl-oer.de/ (sorry fürs Layout - ist in Arbeit)
Kontakt: Martina Rüter, HS Bochum, martina.rueter@hs-bochum.de
Idee: in einem "normalen" Chat-GPT Fenster gemeinsamen einen umfangereichen Prompt bzw. Anweisung entwickeln und mehrere Rückfrage-Schleifen mit dieser KI drehen. Wenn man zufrieden ist, dann sich eine json-Datei zu generieren lassen und diese in die Chatbotanweisung hochladen und auf diese in den Hinweisen verweisen. 
Beispiel für CustomGPT - Mathematik (Zielgruppe Schule)
H5P-Erstellungshinweise z.B. Anleitungen, Youtube-Videos etc. (LLMs können keine H5P-Dateien erstellen) ergänzen
Vorab: Wie gut kennt sich der User mit H5P aus? Idee: Personality Quiz in Moodle vorab.
Tipp zum Problem bei zu langen (= zu viele Tokens) Systemprompts:
Shortcodes für wiederkehrende Konzepte/Begriffe definieren (z.B. “Niveaustufen der Kompetenz = NSdK”).

Wieviele Moodle- Instanzen brauchen wir? Ideen für ein Moodle zur Kooperation

Time: 11.00

Room: Hanse

Host: Frank von Danwitz

Language: DE

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr11-hanse

Session Documentation
MoodleMootDACH, Lübeck, Fr. 05.09.2025
Wieviele Moodle- Instanzen brauchen wir? - Ideen für ein Moodle zur Kooperation
Die Sitzung wurde mit der Software SummaAIzer (beta) aufgezeichnet
----------------------------------------------------------------------------------------------------------
Überarbeitung (durch Frank von Danwitz, http://uni-w.de/fvd) der KI generierten Aufbereitung der Diskussion am 05.09.2025 auf der MoodleMoot DACH, Lübeck: „Wieviele Moodle- Instanzen brauchen wir? Ideen für ein Moodle zur Kooperation“. Die ursprüngliche von der KI erzeugte Zusammenfassung ist im Anschluss eingefügt.
Metadaten
  • Zielgruppe: Hochschul-IT-Verantwortliche, Moodle-Administratoren, Lehrende, Projektleiter, Entscheidungsträger in Hochschulen und Bildungseinrichtungen.
  • Lernziele / Kompetenzen:
    • Verständnis für die Herausforderungen beim Betrieb mehrerer Moodle-Instanzen.
    • Bewertung der Vor- und Nachteile kooperativer Moodle-Lösungen.
    • Identifizierung potenzieller Use Cases für eine gemeinsame Moodle-Plattform für kooperative Projekte.
    • Kenntnis von technischen und organisatorischen Aspekten bei der Umsetzung.
    • Identifizierung eines geeigneten Betriebsmodells 
  • Voraussetzungen: Grundlegendes Verständnis von Moodle, idealerweise Erfahrung im Betrieb einer Moodle-Instanz. Kenntnisse der typischen Förderungen und Kooperationen für Hochschulen.
Zusammenfassung des Vortrags
Der Vortrag "Wie viele Moodle Instanzen brauchen wir? Ideen für ein Moodle zur Kooperation" diskutierte die Frage, ob und wie Hochschulen und Bildungseinrichtungen von einer gemeinsamen Moodle-Plattform für kooperative Projekte profitieren können. Es wurden verschiedene Szenarien beleuchtet, von der Nutzung einer zentralen Instanz für Kooperationsprojekte bis hin zu einzelnen Services, die zentral bereitgestellt werden, aber lokal eingebunden werden können (z. B. Code-Runner, Stack). Die Diskussion fokussierte auf die Herausforderungen in Bezug auf Nutzerverwaltung, Datenhoheit, technische Integration und organisatorische Aspekte.
Gliederung und Aufbau des Vortrags
Der Vortrag begann mit der Einführung des Problems: Hochschulen betreiben oftmals mehrere eigene Moodle-Instanzen, was sich nicht konsolidieren lässt. Z. B. durch die Anbindung von Campus-Management-Systemen und die Abbildung die jeweiligen Organisationsstrukturen oder auch besonderen Anforderungen (bspw. ein Prüfungs-Moodle) ist eine Zusammenführung für die meisten Moodle-Instanzen nicht sinnvoll und nicht möglich. Es soll jedoch in dieser Diskussion die Fragestellung erörtert werden, ob eine neue gemeinsame Moodle-Instanz mehrerer Hochschulen für kooperative Projekte eine Ausnahme darstellen könnte und die Notwendigkeit zur Installation weiterer eigener, lokalen Moodle-Instanzen einspart. Ist hier die Möglichkeit gegeben, den Betrieb zum einen effizienter zu gestalten, als bei einem Betrieb mehrere lokaler Instanzen? Und wird zum anderen, ob einigen Hochschulen hier durch überhaupt erst die Möglichkeit geboten, auf diese Weise ein Moodle für kooperative Projekte anzubieten (Ressourcenmangel)? Anschließend wurden verschiedene Ansätze zur Kooperation vorgestellt und diskutiert, basierend auf Erfahrungen aus Thüringen und Nordrhein-Westfalen und Österreich. Die Diskussion umfasste:
  • Vorstellung des virtuellen Campus Thüringen als Beispiel für eine zentrale Moodle-Instanz für Kooperationsprojekte.
  • Diskussion über die Frage, ob eine Konsolidierung aller Hochschul-Moodle-Instanzen in einem Bundesland sinnvoll ist.
  • Betonung der Notwendigkeit, Ressourcen zu bündeln und den Verwaltungsaufwand zu reduzieren.
  • Identifizierung von Use Cases für eine gemeinsame Moodle-Plattform, wie z.B. Kooperationsprojekte, internationale Studierende, wissenschaftliche Weiterbildung.
  • Hervorhebung der technischen und organisatorischen Herausforderungen bei der Umsetzung einer kooperativen Moodle-Lösung.
  • Diskussion über die Rolle von Dienstleistern und die Notwendigkeit eines klaren Betriebsmodells.
Kernaussagen und Handlungsempfehlungen
  1. Bedarf an Kooperation
    Die Notwendigkeit einer Kooperation besteht, da Hochschulen oft mit ähnlichen Herausforderungen konfrontiert sind, insbesondere im Hinblick auf die Betreuung von Projekten, die über die Grenzen der eigenen Institution hinausgehen. “Wir haben alle eine Moodle-Instanz in Betrieb, die ursprünglich nur für die Lehre genutzt werden sollte. Die Bedarfe gehen jedoch oftmals darüber hinaus und wir benötigen daher mehrere, verschiedene Moodle-Installationen - kann für Kooperationprojekte eine gemeinesame Installation genutzt werden?”
  2. Thüringer Modell als Beispiel
    Thüringen hat mit dem virtuellen Campus Thüringen bereits eine zentrale Moodle-Instanz für Kooperationsprojekte implementiert. “Wir haben in Thüringen zum Beispiel Projekte in der Lehrerausbildung, die natürlich auch direkt mit Schulen und mit Lehrern kooperieren. Oder auch Weiterbildungsangebote.” Eignet sich dieses Modell als Proof-of-Concept und zeigt, dass eine gemeinsame Plattform möglich ist?
  3. Ressourceneinsparungen
    Eine gemeinsame Moodle-Plattform für kooperative Projekte kann zu erheblichen Ressourceneinsparungen führen, insbesondere bei der Administration und Wartung. “Wir können z. B. Services wie Code Runner, Stack konsolidieren, denn das kann nicht jede Hochschule individuell abbilden.”
  4. Herausforderungen bei der Nutzerverwaltung
    Die Nutzerverwaltung stellt eine der größten Herausforderungen dar, insbesondere wenn die Plattform für externe Nutzer offen sein soll. “Wie kann eine Nutzeradministration bei den verschiednen Nutzungsszenarien abgebildet werden?.” Es müssen klare Richtlinien für den Nutzer-Lifecycle und die Rechtevergabe festgelegt werden.
  5. Technische Komplexität
    Die technische Umsetzung einer kooperativen Moodle-Lösung ist komplex und erfordert sorgfältige Planung. “Das kann man auf verschiedene Weise umsetzen, aber es ist sehr kompliziert.”
  6. Klare Zielsetzung und Use Cases
    Vor der Umsetzung eines Kooperationsprojekts ist es entscheidend, klare Ziele zu definieren und konkrete Use Cases zu identifizieren. “Wenn man zu so einem komplexen Projekt einsteigt, muss man klare Ziele setzen, gemeinsame Use Cases haben.”
  7. Betriebsmodell und Verantwortlichkeiten
    Ein klares Betriebsmodell und eine eindeutige Verantwortungsverteilung sind unerlässlich für den Erfolg einer gemeinsamen Moodle-Plattform. “Wer verwaltet die Plattform? Wer verwaltet die User? Wer kümmert sich um Upgrades? Wer kümmert sich um Sicherheitslücken?”
  8. Datenschutz und Datenhoheit
    Datenschutz und Datenhoheit müssen bei der Planung einer kooperativen Moodle-Lösung berücksichtigt werden. “Wer ist der Hauptbesitzer? Wer hat Rechte auf die Daten.”
  9. Schrittweise Vorgehensweise
    Empfiehlt es sich, mit einem kleinen Pilotprojekt zu beginnen und die Erfahrungen zu sammeln, bevor man eine größere Lösung implementiert?
  10. Fokus auf Standardisierung und Automatisierung
    Um den Verwaltungsaufwand zu reduzieren, sollte auf Standardisierung und Automatisierung gesetzt werden.
Handlungsempfehlungen:
  • Analyse der eigenen Bedürfnisse: Identifizieren Sie die spezifischen Use Cases, für die eine gemeinsame Moodle-Plattform sinnvoll wäre.
  • Gespräche mit anderen Hochschulen: Suchen Sie den Austausch mit anderen Hochschulen, um gemeinsame Interessen und Potenziale zu identifizieren.
  • Erstellung eines Konzeptpapiers: Entwickeln Sie ein Konzeptpapier, das die Ziele, den Umfang, die technischen Anforderungen und das Betriebsmodell der geplanten Plattform beschreibt.
  • Pilotprojekt starten: Beginnen Sie mit einem kleinen Pilotprojekt, um die Machbarkeit und die Vorteile einer gemeinsamen Plattform zu demonstrieren.
  • Klare Vereinbarungen treffen: Schließen Sie klare Vereinbarungen über die Verantwortlichkeiten, die Kosten und die Datenhoheit.
------------------------------------------------------------------------------------------
ENDE
Es folgt jetzt die nicht korrigierte Textversion der Software SummAIzer. 
Ursprünglicher Text, durch KI generierte Aufbereitung der Diskussion am 05.09.2025 auf der MoodleMoot DACH, Lübeck: „Wieviele Moodle- Instanzen brauchen wir? Ideen für ein Moodle zur Kooperation“ 
Metadaten
  • Zielgruppe: Hochschul-IT-Verantwortliche, Moodle-Administratoren, Lehrende, Projektleiter, Entscheidungsträger in Hochschulen und Bildungseinrichtungen.
  • Lernziele / Kompetenzen:
    • Verständnis für die Herausforderungen beim Betrieb mehrerer Moodle-Instanzen.
    • Bewertung der Vor- und Nachteile kooperativer Moodle-Lösungen.
    • Identifizierung potenzieller Use Cases für eine gemeinsame Moodle-Plattform.
    • Kenntnis von technischen und organisatorischen Aspekten bei der Umsetzung.
  • Voraussetzungen: Grundlegendes Verständnis von Moodle, idealerweise Erfahrung im Betrieb einer Moodle-Instanz.
Zusammenfassung des Vortrags
Der Vortrag "Wie viele Moodle Instanzen brauchen wir? Ideen für ein Moodle zur Kooperation" diskutierte die Frage, ob und wie Hochschulen und Bildungseinrichtungen von einer gemeinsamen Moodle-Plattform profitieren können. Es wurden verschiedene Szenarien beleuchtet, von der Nutzung einer zentralen Instanz für Kooperationsprojekte bis hin zur Konsolidierung mehrerer Hochschul-Moodle-Instanzen. Die Diskussion fokussierte auf die Herausforderungen in Bezug auf Nutzerverwaltung, Datenhoheit, technische Integration und organisatorische Aspekte.
Gliederung und Aufbau des Vortrags
Der Vortrag begann mit der Einführung des Problems: Viele Hochschulen betreiben eigene Moodle-Instanzen, was zu Redundanz und Ineffizienz führen kann. Anschließend wurden verschiedene Ansätze zur Kooperation vorgestellt und diskutiert, basierend auf Erfahrungen aus Thüringen und Nordrhein-Westfalen. Die Diskussion umfasste:
  • Vorstellung des virtuellen Campus Thüringen als Beispiel für eine zentrale Moodle-Instanz für Kooperationsprojekte.
  • Diskussion über die Frage, ob eine Konsolidierung aller Hochschul-Moodle-Instanzen in einem Bundesland sinnvoll ist.
  • Betonung der Notwendigkeit, Ressourcen zu bündeln und den Verwaltungsaufwand zu reduzieren.
  • Identifizierung von Use Cases für eine gemeinsame Moodle-Plattform, wie z.B. Kooperationsprojekte, internationale Studierende, wissenschaftliche Weiterbildung.
  • Hervorhebung der technischen und organisatorischen Herausforderungen bei der Umsetzung einer kooperativen Moodle-Lösung.
  • Diskussion über die Rolle von Dienstleistern und die Notwendigkeit eines klaren Betriebsmodells.
Kernaussagen und Handlungsempfehlungen
  1. Bedarf an Kooperation
    Die Notwendigkeit einer Kooperation besteht, da Hochschulen oft mit ähnlichen Herausforderungen konfrontiert sind, insbesondere im Hinblick auf die Betreuung von Projekten, die über die Grenzen der eigenen Institution hinausgehen. “Wir haben alle, deswegen ist bei hier ein Moodle in Betrieb. Das soll aber ursprünglich nur für die Lehre genutzt werden. Das wäre so mein Wunsch jedenfalls, dass wir das Moodle, was wir haben, für die Lehrveranstaltung nutzen.”
  2. Thüringer Modell als Beispiel
    Thüringen hat mit dem virtuellen Campus Thüringen bereits eine zentrale Moodle-Instanz für Kooperationsprojekte implementiert. “Wir haben in Thüringen ganz viel auch Lehrerausbildung und dann ist es so, dass die natürlich Projekte auch direkt mit Schulen und mit Lehrern haben, auch Weiterbildungsangebote und so weiter.” Dieses Modell dient als Proof-of-Concept und zeigt, dass eine gemeinsame Plattform möglich ist.
  3. Ressourceneinsparungen
    Eine gemeinsame Moodle-Plattform kann zu erheblichen Ressourceneinsparungen führen, insbesondere bei der Administration und Wartung. “Wir haben auch so ein bisschen mehr zu zentralisieren, solche, ich will es jetzt mal nicht sagen, Sonderlocken, aber hier so Code Runner, Stack und so was, das können wir nicht für jede Hochschule individuell abbilden.”
  4. Herausforderungen bei der Nutzerverwaltung
    Die Nutzerverwaltung stellt eine der größten Herausforderungen dar, insbesondere wenn die Plattform für externe Nutzer offen sein soll. “Wie kommen wir da mit irgendwas rum, weil ja die Nutzungsszenarien super verschieden sind.” Es müssen klare Richtlinien für den Nutzer-Lifecycle und die Rechtevergabe festgelegt werden.
  5. Technische Komplexität
    Die technische Umsetzung einer kooperativen Moodle-Lösung ist komplex und erfordert sorgfältige Planung. “Multitenancy kann man eigentlich umsetzen, das ist kein Problem. Mit Moodle, mit anderen Werkzeugen, mit ganz vielen, mit Textereien, mit verschiedenen Sims, mit Boost-Union auch, mit anderen Plugins und so weiter, mit Moodle Workplace auch, klar. Aber wie gesagt, sehr kompliziert, sehr kompliziert.”
  6. Klare Zielsetzung und Use Cases
    Vor der Umsetzung eines Kooperationsprojekts ist es entscheidend, klare Ziele zu definieren und konkrete Use Cases zu identifizieren. “Wenn man zu so einem komplexen Projekt einsteigt, muss man da eigentlich ganz fest Ziele setzen, einen gemeinsamen User Case haben.”
  7. Betriebsmodell und Verantwortlichkeiten
    Ein klares Betriebsmodell und eine eindeutige Verantwortungsverteilung sind unerlässlich für den Erfolg einer gemeinsamen Moodle-Plattform. “Wer verwaltet die Plattform? Wer verwaltet die User? Wer kümmert sich um Upgrades? Wer kümmert sich um Sicherheitslücken?”
  8. Datenschutz und Datenhoheit
    Datenschutz und Datenhoheit müssen bei der Planung einer kooperativen Moodle-Lösung berücksichtigt werden. “Wer ist der Hauptbesitzer? Wer Rechte auf die Daten hat? Ist eigentlich die andere Institution, lässt die andere Institution zu, dass ich die Daten verwalte?”
  9. Schrittweise Vorgehensweise
    Es empfiehlt sich, mit einem kleinen Pilotprojekt zu beginnen und die Erfahrungen zu sammeln, bevor man eine größere Lösung implementiert. “Wir werden jetzt sagen, das Ding läuft jetzt an, wir nehmen dieses Plugin und wir gucken jetzt erstmal, wie gut wir damit klarkommen.”
  10. Fokus auf Standardisierung und Automatisierung
    Um den Verwaltungsaufwand zu reduzieren, sollte auf Standardisierung und Automatisierung gesetzt werden. “Ich würde tatsächlich, um nur auf diesen Kommentar direkt zu antworten, würde ich anfangen mit den externen Diensten, die man an Mudel anbinden kann, also einen gemeinsamen Stack-Server, den sich zehn Unis teilen.”
Handlungsempfehlungen:
  • Analyse der eigenen Bedürfnisse: Identifizieren Sie die spezifischen Use Cases, für die eine gemeinsame Moodle-Plattform sinnvoll wäre.
  • Gespräche mit anderen Hochschulen: Suchen Sie den Austausch mit anderen Hochschulen, um gemeinsame Interessen und Potenziale zu identifizieren.
  • Erstellung eines Konzeptpapiers: Entwickeln Sie ein Konzeptpapier, das die Ziele, den Umfang, die technischen Anforderungen und das Betriebsmodell der geplanten Plattform beschreibt.
  • Pilotprojekt starten: Beginnen Sie mit einem kleinen Pilotprojekt, um die Machbarkeit und die Vorteile einer gemeinsamen Plattform zu demonstrieren.
  • Klare Vereinbarungen treffen: Schließen Sie klare Vereinbarungen über die Verantwortlichkeiten, die Kosten und die Datenhoheit.
  • Unterstützung durch das Hochschul-IT-Zentrum: Beziehen Sie das Hochschul-IT-Zentrum frühzeitig in die Planung ein, um die technische Expertise und die Infrastruktur zu nutzen.

moodle escape room - idea and possibility to try out

Time: 11.00

Room: Fischbrötchen

Host: Stefan Hanauska

Language: DE & EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr11-fisch

Session Documentation

Ausprobieren unter time-to-escape.de


Peer Review Process

Time: 11.00

Room: Marzipan

Host: Jonathan Champ

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr11-marzipan

Session Documentation

Navigation for students in courses which scenarios do we have to know to redesign the navigation

Time: 11.00

Room: Ostsee

Host: Dennis

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr11-ostsee

Session Documentation
https://bdecent.de/learning-tools/ (kostenpflichtig für ca. 30€/Jahr gibt es dort zusätzlich den Resume-Button, über den Lernenden zu der Seite gelangen, wo sie zuletzt gelernt haben)
kostenfreie möglichkeiten aber auch paid options
auch mobile freundlichere mobile Varianten wären super die Zukunft

a moodle Docker walkthrough installer

Time: 11.00

Room: Travemünde

Host: Alan McCoy

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr11-travemuende

Session Documentation
Hy, this is Berengar from Uni Jena, I'm unfortunatly not participating (some of my collegues are) but looking forward have a look into the slides.
Session: A Moodle-Docker Walk-Through Installer
Presenter:  Alan McCoy, NC State University
Date: 5th September 2025, 11:00-11:45
Room: Travemünde
Target group: instructional designers - not developers
Tools to install (required before the script starts)
Alan added a shell script that runs the user through the installation process
Code Checkerspredsheet
Moodle PHPdoc Check
Moodle Plugin Skeleton Generator
Features to be added:
  • add bin/moodle-docker-wait-for-db
  • add more advanced steps
  • add option for including XDebug
adding docker browser choices to include for behat testing
Is moodle-docker the best way to run moodle in docker?
reasons to use moodle in docker
  • behat & phpunit tests
  • tests selfdeveloped plugins
  • run stock versions of moodle
which db to use?
  • mysql
Moodle-Docker fork with walkthrough installer:
    (Check out the walkthrough-installer branch)

GEN AI in assessment design: What works & what's next

Time: 11.00

Room: Priwall

Host: Heikki Wilenius

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr11-priwall

Session Documentation
GenAI in asssessment design / Heikki Wilenius
Repository for the new plugin here: https://github.com/bycs-lp/moodle-qbank_questiongen
Notes from the session:
  • Started two years ago, GTP 3.5, generate Moodle XML and import manually. WIth School of Medical Science at Helsinki.
  • ... Klein then demoed a plugin at Moot Global that year - some work at the CodeJam there - added some presets.
  • Hekki demoed this - showing the different preset prompts, showing how the prompt includes both technical info about the GIFT format, and pedagogical advice about how to make a good MC question (clearly write and wrong, and one distractor close to the right answer.) Prompt also includes an example of a really good quesion, to show the LLM what is wanted.
  • Hekki's use of MC with his Philosophy students - they weren't used to it- only essays, so tough crowd.
  • In the final exam, remixed the best questions (by Moodle stats) from the practice exams. - and half the exam manually-written essays - good correlations between the two halves of the exam - validating the use of AI-generated MC questions.
  • (Hekki would like to write this up, but has not had time.)
  • Since then, Mebis have been improving this plugin, coded over summer 2025.
Rest of the session was demo of this, and then a workshop trying the plugin.
(Warning, only liked to a very cheap AI. GTP4 creates better questions.)

Selbsthilfegruppe Digitales Prüfen

Time: 12.00

Room: Kogge

Host: Andeas Erbe

Language: DE

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr12-kogge

Session Documentation
Prüfungsarchivierung Lösungssuche:
Seiten Absturz in der Prüfung, neu laden erforderlich
bei nur einem gleiches Problem. Vermutung des Proxy Server 
Safe exam Browser zur Verhinderung andere Taps zu öffnen
spss Software 
Mod offline quiz
charite Simone tippach- Schneider 
latec Moodle quizzes

Ask moodle anything!

Time: 12.00

Room: Holstentor

Host: Paul Mozaer & HQ Staff

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr12-holstentor

Session Documentation
Ask moodle anything!
(Paul Mozaer & HQ Staff)
Notes:
  • Plugin to identify the big spenders (and big courses) in Moodle: https://moodle.org/plugins/report_coursesize
  • Subsections
  • Use Case for course lifecycles at Universities: Importing content should be robust and implented in a general test process as a step
  • Moodle marketplace plans
    • marketplace will be linked to the current repository
    • soon more information about this topic on the Global Moot wink --> session will be recorded and shared
  • Backup forum posts, glossary entries etc. in an anonymous way
  • --> put the suggestion in a tracker issue
  • Tracker issue with a patch but not resolved because not going to the complete process (What about a bot looking for a patch file? What about monitoring the tracker activity?)
  • https://moodledev.io/general/community/roadmap incl. link to kanban-view

Worst Moodle test ever (fun with tests)

Time: 12.00

Room: Salzspeicher

Host: Christine

Language: DE & EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr12-salzspeicher

Session Documentation
Worst Moodle test ever (Christine)
features
  • start password is very hard to read and type
  • pass limit 100 out of 31
  • based on real-life examples (but anonymized)
Point of test: let teachers see all the mistakes, and let them think about improving it
UTC-Kurztest:
Studentenregeln (als Ergänzung zum UTC-Kurztest): 
Gelaufene Tests zur Optimierung nutzen:
  • https://docs.moodle.org/500/de/Test-Statistik
  • Fragen mit Leichtigkeitsindex 40 bis 80% lasse ich meist
  • Andere mache ich leichter oder schwerer – oder lösche sie
  • Der Trennschärfeindex sollte bei einzelnen Fragen mindestens 20 besser 40% sein
    • Dieser Index zeigt, wie gut Fragen TN unterscheiden, die sonst gut / schlecht performen im Test
    • Irreführende / unklare Fragen werden z. B. oft von gut vorbereiteten TN falsch beantwortet

Moodle farm (1x Core + 1x Plugin = Multi Instances)

Time: 12.00

Room: Hanse

Host: Markus Strehling

Language: DE

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr12-hanse

Session Documentation Metadaten
  • Zielgruppe: Moodle-Administratoren, Entwickler, IT-Spezialisten, die an der Verwaltung und Skalierung von Moodle-Instanzen interessiert sind. Sekundäre Zielgruppe: Personen, die Multi-Instanz-Architekturen für Moodle in Betracht ziehen.
  • Lernziele / Kompetenzen:
    • Multi-Instanz-Architektur verstehen (3 Wörter)
    • Plugin-Bootstrap-Mechanismen erklären (4 Wörter)
    • Sub-Moodle-Verwaltung anwenden (4 Wörter)
    • Erreichbarkeitsoptionen bewerten (3 Wörter)
  • Voraussetzungen: Grundlegende Kenntnisse in Moodle-Administration, PHP und Webserver-Konfiguration (Apache/Nginx). Vertrautheit mit der Moodle-Dateistruktur und -Konfiguration ist von Vorteil.
Einführung: MoodleFarm – Multi-Instanz-Architektur für Moodle

Markus Strehling stellte im Rahmen der Veranstaltung am 05.09.2025 ein Plugin namens “MoodleFarm” vor, das eine Multi-Instanz-Architektur für Moodle ermöglicht. Ziel des Projekts ist es, mehrere Moodle-Instanzen innerhalb eines einzigen Datenkerns zu betreiben, um Flexibilität und Skalierbarkeit zu erhöhen. Die Entwicklung basierte auf einer Idee aus dem Jahr 2020 und wurde primär aus Neugier und im privaten Rahmen umgesetzt.

Herausforderungen und Designprinzipien

Strehling betonte zu Beginn einige zentrale Herausforderungen und Designprinzipien, die die Entwicklung von MoodleFarm leiteten. Ein wesentliches Ziel war es, “keine Core-Änderung” vorzunehmen, um Kompatibilität und Update-Fähigkeit zu gewährleisten. Die Frage, wo im Bootstrap-Prozess eingegriffen werden kann, stellte sich ebenfalls. Ein weiteres Problem war die Abfrage des www-Roots durch Moodle, die bei Verwendung unterschiedlicher URLs zu Umleitungen führen kann. Die Verwaltung der Moodle-Data-Verzeichnisse, in denen Caches und andere Daten gespeichert werden, war ebenfalls ein wichtiger Aspekt.

Ablauf und Bootstrap-Mechanismus

Der Kern des MoodleFarm-Plugins besteht darin, den Bootstrap-Prozess von Moodle zu modifizieren. Anstatt direkt require("lib/setup.php") aufzurufen, wird zuerst ein eigenes Plugin Bootstrap.php geladen. Dieses Plugin lädt dann die Konfiguration für die jeweilige Sub-Moodle, überschreibt gegebenenfalls den www-Root und initialisiert Moodle. Dabei werden auch die Datenverzeichnisse umgeschrieben, sodass jede Sub-Moodle ein eigenes moodledata-Unterverzeichnis erhält. Strehling erklärte: “Die config.php ist die einzige Datei, die auch von einem Git-Repository komplett ignoriert wird. Dass ich dann quasi statt require-lib-setup.php direkt aufzurufen, quasi erstmal in mein Plugin Bootstrap.php aufrufe.”

Verwaltungsoberfläche und Funktionalitäten

Die Verwaltung der Sub-Moodles erfolgt über eine eigene Oberfläche innerhalb des Haupt-Moodle-Systems. Dort können Standardeinstellungen für neue Sub-Moodles definiert werden, beispielsweise der Standard-Admin-Benutzername, die Sprache und der www-Root. Eine Übersichtsseite zeigt den Status aller Sub-Moodles an (installiert, Update erforderlich, Fehler, etc.) und ermöglicht es, Aktionen wie Installation, Upgrade, Löschen, Cache-Leeren und das Setzen des Wartungsmodus auszuführen. Die Erreichbarkeit der Sub-Moodles wird ebenfalls überprüft. Strehling beschrieb die Oberfläche als “aus Nutzersicht, wie man dann weitere erstellen könnte. Und wie man es verwalten und nutzen kann, betrachtet.”

Erreichbarkeit der Sub-Moodles

Es gibt verschiedene Möglichkeiten, auf die Sub-Moodles zuzugreifen. Entweder über eine eigene Domain, die auf dem Webserver konfiguriert werden muss (z.B. mit einem Server Alias in Apache), oder über Cookies, wenn die Sub-Moodles auf derselben Domain laufen. Bei Verwendung von Cookies wird ein Cookie gesetzt, das die aktuelle Sub-Moodle-Konfiguration speichert. Strehling wies darauf hin, dass beim Wechsel zwischen Sub-Moodles über Cookies die Session ungültig werden kann. Zusätzlich gibt es Flags für die öffentliche Auflistung der Sub-Moodles und einen “Back to Main”-Button, um zum Haupt-Moodle zurückzukehren.

Live-Demonstration

Im Rahmen der Präsentation demonstrierte Strehling live die Installation und Konfiguration eines neuen Sub-Moodles. Er zeigte, wie ein neues Sub-Moodle in die Installations-Queue eingereiht, installiert und anschließend konfiguriert werden kann. Dabei wurde auch die Verwendung von Ad-Hoc-Tasks und Scheduled Tasks zur Automatisierung von Installations- und Upgrade-Prozessen demonstriert. Strehling betonte, dass die CLI-Skripte für die Verwaltung der Sub-Moodles über die Oberfläche aufgerufen werden können, ähnlich wie im Standard-Moodle.

Bekannte Probleme und Ausblick

Strehling ging auch auf einige bekannte Probleme und offene Punkte ein. Dazu gehört die Notwendigkeit eines Datenbank-Benutzers mit ausreichenden Rechten zum Erstellen und Bearbeiten von Datenbanken. Die Konfiguration der Sub-Moodles wird aktuell in der moodlefarm.cfg im moodledata-Verzeichnis gespeichert, was perspektivisch verbessert werden könnte, beispielsweise durch Auslagerung in die Datenbank. Die Ausführung von Cronjobs für die Sub-Moodles sollte parallelisiert werden, um die Performance zu optimieren. Weitere Ausblicke umfassten die Integration von Web-Services zur Verwaltung der Moodle-Systeme und die Möglichkeit, Sub-Plugins zur Erweiterung der Funktionalität zu entwickeln. Strehling erwähnte: “Das ist ein Proof of Concept, der in der Freizeit, keine Ahnung, in 2-3 Wochen entstanden ist.”

Handlungsempfehlungen und Call to Actions
  • Diskussion und Austausch: Er lud die Teilnehmer zu einer Diskussion und einem Austausch über die Multi-Instanz-Architektur und mögliche Anwendungsfälle ein.
  • Ressourcen bereitstellen: Strehling bot an, weitere Informationen und Ressourcen zur Verfügung zu stellen, um die Implementierung und Nutzung von MoodleFarm zu erleichtern.
  • Zusammenarbeit suchen: Er signalisierte die Bereitschaft zur Zusammenarbeit mit anderen Moodle-Experten, um die Entwicklung von MoodleFarm voranzutreiben.

Exam Scan. Digital Exam inspection for paper penal exams

Time: 12.00

Room: Fischbrötchen

Host: Harald Schnusbusch

Language: DE & EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr12-fisch

Session Documentation
Session: Exam Scan. Digital Exam inspection for paper penal exams
Presenter: Harald Schnurbusch
Date: 5 September 2025, 12-12:45am
Room: Fischbrötchen
Plugin aktuell noch nicht released (momentan noch in fortgesetzter Pilotphase)
Hintergrund: Ziel der Digitalen Einsicht von Pen&Pencil Klausuren (Wunsch eines Lehrstuhls / einer Einrichtung)
warum: Zeitersparnis für den Lehrstuhl
Danach dann schriftlicher Antrag auf Nachbewertung statt "Handel" während der Einsicht
Plugin hängt im Assignment Tool drin als weiterer Feedbacktyp "Exam Scan" (-> Subplugin)
Prozess muss schon bei Klausurerstellung durchgedacht werden, damit auf dem Klausur-pdf ein QR-Code vorhanden ist. Identifizierung per Matrikelnummer (aktuell Feld fix definiert)
Erzeugte Klausurbögen können heruntergeladen werden. Alle Klausuren in 1 PDF
Wasserzeichen und Verschlüsselung möglich
Kann auch als Label gedruckt werden und auf Seiten geklebt werden.
PDF-Bewertung danach über die üblichen Tools im Assignment möglich
Diskussion:
    Empfehlung für digitale Korrektur von PDFs "xjournal" Linux tool mit Metadaten Hilfsdateien, in denen die Annotationen gesamelt werden und dann "eingedruckt" werden kann
Hintergrundinfo:
Offene Frage an Entwickler:
Welcher mechanismus wird verwendet, um die generierten PDFs zu signieren? => Wird derzeit nicht signiert. Ist als Issue aufgenommen.
Feature Request:
Im Admin Bereich einstellen welches User Feld als Identifikation statt Matrikelnummer verwendet werden sollte. => Derzeit wird das optionale Moodle-Nutzerprofilfeld "ID-Nummer" verwendet. Dies enthält bei uns die Matrikelnummer. Ließe sich aber einstellbar machen.

h5p Moodle Core User gesucht! Update des Vergleichs Plugin vs. Core Lösungen

Time: 12.00

Room: Marzipan

Host: Claudia Ballerstedt

Language: DE

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr12-marzipan

Session Documentation
Ein mögliches To do der AG H5P könnte sein, die Gegenüberstellung von 2023 zu aktualisieren.
Aktueller ist in der Regel das H5P-Plugin. 
Beim Core-H5P und bei Lumi (https://lumi.education/de/)  müssen die Neuheiten nachträglich nachgetragen werden.
Bei den verschiedenen Lumi-Versionen funktionieren Dinge zum Teil und mal nicht.
Bei dem Core-H5P wird - bei entsprechenden Einstellungen im CronJob - automatisch täglich aktualisiert.
Bei Nutzung des H5P-Plugins erfolgt diese automatische Aktualisierung nicht, sondern muss manuell angestoßen werden.
ergänzend https://ladigitale.dev/logiquiz/#telecharger verwenden, wenn Lumi nicht mag
Olli Tacke erstellt H5P-Inhaltstypen.
Core-Integration:
    HAW Hamburg
    Universität Potsdam (seit 2024 ausschließlich Core; zuvor auch Plugin)
Plugin-Nutzung
Beispielsweise der Inhaltstyp ePort (E-Portfolio) ist ein Third-Party-Content-Type und daher (noch) nicht im H5P-Hub. Ggf. ist es möglich (?), hier durch die AG H5P auch ein wenig Druck zu machen? Bei Aktualisierungen von H5P durch den CronJob in der eigenen Institution wird daher der Inhaltstyp E-Portfolio nicht automatisch hochgeladen, sondern müsste manuell hochgeladen werden (wozu es Berechtigungen braucht).

Tipps, Tops & Hacks als User

Time: 12.00

Room: Ostsee

Host: Ralf Appelt

Language: DE

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr12-ostsee

Session Documentation
Session: Tipps, Tops & Hacks als User (Lehrende und Lernende)
Farben generieren: https://colors.co
Plugin easyforms (Tobias Gaske - mebis), damit es den Kurserstellern nicht mehr alle Auswahlmöglichkeiten anzeigt und somit einfacher werden kann
<script>
    let alternates = ['😎 Servus ', '😃 Schön dich zu sehen, ', '👋 Hallo ',
      '👍 Willkommen zurück,   ', '🧡 Toll, dass du hier bist, ',
      '🤩 Entdecke die Möglichkeiten, ', '💪 Legen wir los, '
    ];
    let rand = Math.random() * alternates.length | 0;
    var rValue = alternates[rand];
    document.getElementById("greeting").innerHTML = rValue;
  </script>

Evamative AI. Can & Should AI be used for marking & feedback

Time: 12.00

Room: Travemünde

Host: Marcus Green

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr12-travemuende

Session Documentation
Evaluative AI. Can & Should AI be used for marking & feedback
Marcus Green
Like with quiz: the point is really timely feedback, and saving teachers time. It is more about feedback than numerical marks.
Never ever use this for High-stakes assessment.
  • Examples of it not working well, and working well.
  • Good quote from a professor.
Latest development: AI-assisted feedback for the Assignment activity: https://github.com/marcusgreen/moodle-assignfeedback_aif
Still work-in-progress.
Question type "ai text" does a good job for an initial evaluation of answers; the type is comparable to the "essay" question type (https://mastodon.social/@fusion I wasn't at Moot)
Related links:
Summary, even with 1990s 'AI' Computers could fairly mark simple questions as well as humans.
Related to the dangers of using this for high-stakes assessment: There is a parallel in the world of the Game of Go. Some of the early work on large neural nets was AlphaGo being able to beat the best human player for the first time. However, later, reserarches found a way to trick the AI, and beat it: https://arxiv.org/abs/2211.00241.
Do we have to worry about similar things. Can Students learn ways to trick an AI marker into given them full marks, without properly doing the task set.

FollowUp: AI @ mebis / bycs LMS

Time: 12.00

Room: Priwall

Host: Peter Mayer

Language: EN

Etherpad (limited availability): https://etherpad.th-luebeck.de/p/fr12-priwall

Session Documentation
Gestern mehr Hintergründe (https://etherpad.th-luebeck.de/p/do14-priwall) heute zur Praxis
lässt sich auf bestimmte Kunden (?) begrenzen und mit unterschiedlichen Bedingungen verknüpfen
nicht nach Ort definiert sondern nach Zweck
Jede Einrichtung schaltet es dann aktiv selbst ein und bestimmen Limit auf Rollen bezogen. Einzelne Nutzer können ausgeschlossen werden. Auswertung des Verbrauches sehr detailliert. Prompt lassen sich nachvollziehen (Anforderung der Datenschützer - ausgeschlossen für die Lehrenden!)
 (Schulen haben Zugang zu KI über "Digitalpakt Schule")
 
Der Chat in den Kursen lässt sich zeitlich begrenzen oder über personas fachlich/inhaltlich begrenzen
 
Bei den unterschiedlichen Aktivitäten lässt sich über ein Editorfeld eine Funktion (z.B. übersetzen/ zusammenfassen/...) auswählen. Dafür voreingestellte Prompts lassen sich aber anpassen.
---
 
KI-Zusammenfassung
 
Zusammenfassung des Vortrags
Der Vortrag von Peter Mayer am 05.09.2025 präsentiert die neuen KI-Funktionalitäten, die in die Moodle-Plattform integriert wurden, insbesondere den "Tiny AI Button" und den AI-Manager. Der Fokus liegt auf der Benutzerfreundlichkeit für Lehrkräfte unterschiedlicher technischer Expertise und der datenschutzkonformen Anwendung von KI im Bildungsbereich. Es werden die Konfigurationsmöglichkeiten, die Tenant-Struktur und die praktischen Anwendungen wie Chatbots und automatische Fragengenerierung demonstriert.
 
Gliederung und Aufbau des Vortrags
Der Vortrag gliedert sich in folgende Abschnitte:
  1. Einführung: Kontextualisierung der KI-Integration in Moodle, Gründe für die Entwicklung eines eigenen Subsystems.
  2. AI-Manager – Administration: Vorstellung der zentralen Konfigurationsoberfläche, Tenant-Management, Nutzungsbedingungen, Rechteverwaltung.
  3. AI-Manager – Tenant-Konfiguration: Demonstration der individuellen Anpassungsmöglichkeiten für Schulen und Lehrkräfte.
  4. Praktische Anwendung – Chatbot uvm: Vorstellung des Chatbots in der Kursumgebung, Konfigurationsmöglichkeiten (Persona, History-Länge). Alle Plugins, die mit dem ai_manager kompatibel sind  sind auf github (bycs-lp) und im Plugin Directory zu finden: https://moodle.org/plugins/?q=ai_manager
  5. Ausblick: Erwähnung weiterer geplanter Funktionen (automatische Fragengenerierung, Provider für KI-Subsystem).Kernaussagen und HandlungsempfehlungenAI-Manager als zentrale Steuerungseinheit
Der AI-Manager dient als Basis für alle KI-Anwendungen in Moodle und ermöglicht die zentrale Konfiguration von Sprachmodellen, Nutzungsrechten und Fehlerbehandlung. "Wir haben einen AI-Manager entwickelt, dieser ist die Basis-Software, der das Framework für unsere gesamten KI-Anwendungen definiert."
Handlungsempfehlung: Administratoren sollten sich mit den Konfigurationsmöglichkeiten des AI-Managers vertraut machen, um die KI-Funktionalitäten optimal an die Bedürfnisse der Einrichtung anzupassen.
Tenant-Management für flexible Konfiguration
Das Tenant-System ermöglicht es Schulen und Lehrkräften, die KI-Funktionen individuell zu konfigurieren und an ihre spezifischen Anforderungen anzupassen. "Wir haben ein Multi-Tenant-System. In jedem Tenant können  eigene Sprachmodelle individuell konfiguriert werden."
Datenschutz und rechtliche Aspekte
Die Integration von KI in Moodle berücksichtigt datenschutzrechtliche Aspekte und unterscheidet zwischen schüler- und lehrerbezogenen Daten. "Schüler können nicht rechtsverbindlich zu Nutzungsbedingungen zustimmen. Daher unterscheiden wir zwei Arten von Nutzungsbedingungen, die auch ganz unterschiedlich formuliert und ausgestaltet werden können."
Benutzerfreundlichkeit für unterschiedliche Nutzergruppen
Die KI-Funktionen sind so konzipiert, dass sie sowohl für technisch versierte als auch für weniger erfahrene Lehrkräfte zugänglich sind. "Deshalb haben wir diverse Funktionen Pre-Gepromptet, sodass grundsätzlich zunächst keine eigenen Prompts eingegeben werden müssen. Erfahrene Nutzer können jedoch die Prompts selbstverständlich verändern."
Chatbot als interaktives Lernwerkzeug
Der integrierte Chatbot bietet eine interaktive Möglichkeit, die durch Konfigurationsmöglichkeiten wie Persona und History-Länge an die spezifischen Bedürfnisse des Lernsettings angepasst werden kann.
AI-gestützte Fragengenerierung
Die automatische Fragengenerierung soll Lehrkräfte bei der Erstellung von Kursmaterialien unterstützen und den Unterrichtsalltag erleichtern.
Provider für moodle's KI-Subsystem (Ausblick)
Die Entwicklung eines Providers für das KI-Subsystem soll es ermöglichen, die KI-Funktionalitäten des Subsystems von moodle auch über den AI-Manager steuerbar zu machen.

Last modified: Friday, 17 October 2025, 2:41 PM