topos
topos copied to clipboard
Rewriting Topos
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.