editor design notes
13 June, 2016
ages ago, like multiple months ago, i really wanted to make an editor that was better
these are a bunch of notes i took on that topic
there's a crapton more in the notes taken while working with the group on pharaoh,
but those can wait for osme other time.
now, i'm perfectly 100% satisfied with what i get out of a
- libraries, etc: in local storage
- POST to back end
- offline: save to local, queue, push when back online
- do while loop: cash saves, settimeout, push to backend periodically
- alert for unsaved files on exit
- codefolding and tabs.
- VS Code STILL doesn't have these basics. Wow.
- autosaves, but saves are git commits?
- easy reversion. integrate with dropbox/gdrive/whatever to keep commits distributed but private.
Things any programming editor-cum-environment should do
(including some really obvious ones, but i just want to make it all clear)
- allow navigation of projects
- enable editing of source code
- detect syntax of languages (through extension is okay)
- integrate with compiler(s)/interpreter(s), CI, REPL(s) (depending on language specificity of the editor)
- allow for community collaborative effort to build/maintain language & feature support
- integrate with modern development tools/environments (browsers, source control, deployment, etc)
- allow for non-code (text, hints, live previews, etc) !!
- allow for collaboration within editor (realtime remote connection) !!
- interpret code as it is typed; show results locally !!
- abstract above just a normal directory tree for navigation/code organization !!
!! -- almost certainly only through extensibility (packages/plugins), and even then these are pretty far-out goals,
technologically. the last two are especially difficult, even conceptually, and would need a lot of HCI design research
before even prototyping.
notes from brett victor's talks and such
- Information Design two big rules: Show the data, and show comparisons.
- Larry Tesler: personal vendetta against modes in software. 'Don't mode me in.'
- He's the reason we have straight-up WYSIWYG editing and stuff.
- His editor was called 'Gypsy.' Click and drag? That's him.
- Cut, copy, and paste: that's him.
- That's funny, kinda, because the best software is still moded.
- This is curious, because to everyone else at the time, modes were just a way of life
with computing. This wasn't a problem to anyone else, just to him.
on version control and ot and eve in general
- Recording changes as they happen is easier than inferring them after the fact.
- Preserving history (the context in which a change was made) is necessary for proper merges.
- Being predictable is more important than being smart.
- Partial edits, merge conflicts, etc. prevent only that current view/component/whatever from running,
rather than the whole thing.
- Git-backed editor build on Meteor, in Coffeescript.
- Some bits relating to editor design:
- Some things about LightTable:
- Eve links: