google / google/codeworld

Better documented and clean debugger API and UI for CodeWorld programs

Offen
#695 1 Kommentar 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
discussion
Vorherrschende Sprache
Haskell
Sterne
1.3k
Forks
201
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

We currently have a haphazard collection of debugging features in CodeWorld. These fall into two basic categories: the inspect window, and the on-screen controls. Both of these are powerful, but they follow completely different design choices, and have two different UI and API systems. This adds too much complexity, both for the user, and in the code.

* The inspect window UI is implemented in JavaScript, and communicates with the running program via a set of callbacks and global functions set up in JavaScript. It's implemented inside of `runInspect`, and generalizes the standard CodeWorld model with arbitrary event delivery so it can talk to the JavaScript UI.
* The on-screen controls are implemented entirely in Haskell with the CodeWorld API. They wrap the underlying program so that the entire program, including debugging, acts like a single CodeWorld program.

Ideally, the entire debugging UI would be implemented in one place -- most likely, in JavaScript and DOM since it's a more powerful UI system. There would be a single API based on message passing that's implemented in a generic way and documented so that it's easy to develop against.

(@kammitama5: Don't worry, this is a long-term goal. The current system is fine for now, and you should keep developing with it for Summer of Code.)

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, die bestehende runInspect-Implementierung zu lesen und sie mit den Haskell-Steuerelementen auf dem Bildschirm und der CodeWorld API zu vergleichen. Verfolge, wie die JavaScript-Callbacks, globalen Funktionen und die Haskell-Ereignisübermittlung derzeit kommunizieren. Als abgeschlossen gilt die Arbeit, wenn eine einheitliche JavaScript/DOM-Debugging-UI festgelegt ist, eine generische Message-Passing-API vorhanden ist und eine Dokumentation für die Entwicklung damit vorliegt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
haskell, javascript
Bereich
developer-experience, frontend
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.