Instead of piling up problems, it might be time to rewrite a large chunk of Topos. Here is a breakdown of the features I would like to implement and how I would do it. This refactoring is the base for some sort of Topos v.2.0 that aims to hit many birds with one stone:
General:
[ ] Switch to Svelte or some light reactive framework
[ ] Build the application around reusable components
[ ] Nail down testing and version numbering
Interface:
[ ] Conceptual distinction between SCRIPTS and PROJECTS.
[ ] Any script can be saved independently from PROJECT and reused.
[ ] A script can also be played independently from a PROJECT.
[ ] Basic CRUD interface for SCRIPTS and PROJECTS.
[ ] This can be done with or without a database. This can also be done on local file systems.
[ ] In order to do so, generic CRUD interface and modularize the behavior depending on runtime.
[ ] Modularize playback: small editor, playback only, etc. Facilitate sharing Topos projects.
[ ] Re-use the same canvas as much as possible instead of multiplying canvas
[ ] Baked-in collaboration tools using Yjs. Allow the creation of multiplayer projects / rooms
Documentation:
[ ] Documentation using MDSVex and custom components for code playback / demos
[ ] Documentation is written directly in the source and cascades to the docs.
[ ] Minimize human intervention in some/most parts of the documentation.
Sequencer / Engine:
[ ] Evaluation model refactoring: there should be only one evaluation routine instead of many.
[ ] You can't trust JS or the web browser to evaluate things in time, minimize evaluation.
[ ] Implement some Tidal-like query rate => how? Everything has failed so far.
Instead of piling up problems, it might be time to rewrite a large chunk of Topos. Here is a breakdown of the features I would like to implement and how I would do it. This refactoring is the base for some sort of Topos v.2.0 that aims to hit many birds with one stone:
General:
Interface:
Documentation:
Sequencer / Engine: