What would be included in a first iteration of CAN?¶
Each point will be expanded on as I get around to it
- CAN is a REPL-like (readline) command-line environment
- The CAN list command should show the names of your notes
- scratchfiles have the .z extension
- scratchfiles have a 'fold'
- Add notes from a scratchfile
- CAN will have an init command
- the notebook is stored in the
.can
directory - a note is stored using its AST
- notes are identified by their hashes
- internal links use hashes
- notes are written in a subset of markdown
- notes can be exported as markdown (including transclusion or not)
- notes can be exported as HTML (using marked renderer)
- the notebook is append only
- existing notes can be edited in a scratchfile
- internal links for a note can be enumerated
- internal links for a note can be followed in-REPL
- the content of an internal link can be displayed in a scratchfile
- backlinks have context
- backlinks for a note can be enumerated
- backlinks for a note can be followed in-REPL
- backlink context for a note can be displayed in a scratchfile
- full backlink content can be displayed in a scratchfile
- one note may have many names
- you can assign names to a note
- you can remove names from a note
- when a note is edited, links which target it point to the edited note
- changes generate patches, which can be applied
- full-text search from in-REPL
- in-REPL notes are rendered with enumerated links displayed using note names (not addresses)
- in-REPL notes are rendered in chunks with next/prev style navigation
- transclusion can be used to compose notes
- a way to handle empty links in notes (search w/ link text to suggest links or allow a new note creation directly from an empty link)
- note names have no spaces / restricted character set
explicit wont haves (these are for later)¶
- namespaces (assume all notes are in the root namespace for a notebook)
- extra metadata (semantic links / semantic marks)
- 'refactoring' tools
- splitting / merging notes or namespaces
- not having these makes distributed / multiuser notebooks harder
- tab-completion in-REPL