Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Diskussion: Package- und Projektstruktur #1559

Open
cagix opened this issue Jun 26, 2024 · 4 comments
Open

Diskussion: Package- und Projektstruktur #1559

cagix opened this issue Jun 26, 2024 · 4 comments
Labels
bug Something isn't working dungeon

Comments

@cagix
Copy link
Member

cagix commented Jun 26, 2024

Wir haben das Projekt in verschiedene Gradle-Subprojekte unterteilt: Game < Dungeon < DevDungeon.

Zusätzlich haben wir verschiedene Packages, die die Subprojekte nochmal auf Java-Seite klarstellen: core und contrib. Daneben gibt es aber auch noch einigen Kram in Packages, die sich nicht diesem Schema unterordnen (v.a. die alte DSL und die Graph- und Task-Sachen).

Die Idee dahinter war mal, ein Teilprojekt (also den Ordner) per git subtree einfach auslagern und als Vorgabe für die Studis nutzen zu können. Eine andere Idee war, das Projekt als Bibliothek zur Verfügung zu stellen (JAR-File).

Problem im Sommer 2024: Die Studis sollten einen eigenen Skill realisieren. Den wollten sie im Dungeon-Subprojekt einbauen (a) wg. der Verwandtschaft zu den dort bereits realisierten Skills und (b) weil der neue Skill in einer Klasse im Dungeon-Teilprojekt eingebaut werden sollte, und gleichzeitig wollten sie interessante Klassen aus Dev-Dungeon im neuen Skill nutzen. Das klappt auch in der Gesamtschau in der IDE (die schaut sich die Packages an), aber beim Kompilieren mit Gradle werden die Subprojekte schrittweise kompiliert, d.h. man sieht nur die Packages/Klassen im aktuellen Subprojekt (und darunter). Beispiel: Eine Klasse im Dungeon kann zwar etwas aus Dev-Dungeon importieren, und in IntelliJ passt das auch - aber beim Kompilieren mit Gradle geht das in die Hose, weil Dungeon einzeln kompiliert wird und die Abhängigkeit nach DevDungeon dabei nicht aufgelöst werden kann. (Im konkreten Fall klappte ein Verschieben des neuen Skills in das DevDungeon-Teilprojekt auch nicht, weil dieser in einer HeroFactory in Dungeon integriert werden sollte ...)

Wir müssen nochmal über das Projektlayout und die Packagestruktur nachdenken, und auch über den Modus der Verteilung.

Zu klären:

  • Welche Use-Cases will das Projekt adressieren und warum?
  • Will das Projekt eine Library sein (es darf nur aufgerufen, aber nichts modifiziert werden)?1
    • Wenn ja, wie viele Libs?
    • Wie soll die Lib verbreitet werden/nutzbar sein? Soll es ein Jar sein? Soll der Quellcode genutzt werden dürfen?
  • Dürfen die Nutzenden die Strukturen als Basis nehmen, d.h. ihren eigenen Code direkt in die vorhandenen Strukturen einbauen?
  • Was ist mit den Show-Cases? Sind das auf der Lib basierende Applikationen oder eher ergänzende Bausteine (d.h. selbst Lib-artig)?
    • Dev-Dungeon?
    • (alte) DSL?
    • Blockly?
  • Mono-Repo oder einzelne kleinere, separate Repos?
  • Packages: Brauchen wir bei separaten Gradle-Projekten (und evtl. sogar separaten Repos) unterschiedliche Basis-Packages? Oder reicht die aktuell unterhalb von core und contrib liegende Struktur für alle?

Wie machen das andere Projekte? Wie macht das beispielsweise libGDX, wo es ja auch einzelne Bausteine gibt?

Footnotes

  1. @AMatutat Jaja, ich weiss um den Unterschied, finde das hier in dieser Diskussion aber marginal :)

@cagix cagix added bug Something isn't working dungeon labels Jun 26, 2024
@cagix
Copy link
Member Author

cagix commented Jun 27, 2024

Die Studis hatten sich das Projekt lokal heruntergeladen und hatten in der IDE nur den Package-View offen. Aus dieser Sicht schien alles okay, bis dann eben zum Compilieren/Starten via Gradle, wo dann die Aufteilung in Subprojekte überraschend zuschlägt.

@tgrothe
Copy link
Contributor

tgrothe commented Jun 27, 2024

@cagix Sind hier "alle" angesprochen? (oder nur @AMatutat?)

@cagix
Copy link
Member Author

cagix commented Jun 27, 2024

@cagix Sind hier "alle" angesprochen? (oder nur @AMatutat?)

streng genommen ist das nur eine notiz von mir und es ist niemand angesprochen (sonst gäbe es einen assignee).

@tgrothe
Copy link
Contributor

tgrothe commented Jun 27, 2024

ja, ok

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working dungeon
Projects
None yet
Development

No branches or pull requests

2 participants