Hi Edgaras and others! This is a great initiative!

I really like these ideas and the minimalistic mockups look really nice. Before 
finding TW I was using Notion for a while and I think it has a really neat UX 
that's complex under the hood, but presented nicely. 

Re: mixing wikitext and Markdown: They are fundamentally incompatible in some 
areas, e.g. # in MD means header, while in WT it's an ordered list item. 
Initially I also wanted to just use Markdown, but nowadays I feel like wikitext 
might actually be "the better Markdown". That's bad because then it's harder to 
champion for the more mainstream Markdown :)

Re: modeless editing: I feel like this is a really powerful concept that 
brought text and layout editing to the masses. At the same time, I believe 
having an editable readable text "source" for a document is powerful in terms 
of:
• reproducibility - you can copy paste a section of the source to someone and 
they will get the same thing barring side effects
• consistency - all the state is visible, so it's harder to get into a weird 
state where some hidden format or layout is affecting your writing 
unintentionally
• flexibility - since code is usually text too, you can essentially have a way 
more flexible system if you can also write "code" within text (wikitext has 
this with transclusions, etc., LaTeX too)

That said, as you mentioned, looking at / parsing all this additional code all 
the time can be taxing, as as much as we want them to be, human brains aren't 
really great computer grammar parsers :)

This brings me to what you and others mentioned and what I believe Notion got 
really right. The concept of logical blocks a page / note consists of. This can 
be a paragraph, a link, an image, a table, etc. In Notion it's natural to add 
these, you type a / and up pops a small non-intrusive command search popup, 
where you just search for a thing to add.

These quick-add slash commands would be essential when it comes to the unified 
view / edit flow imo. On top of that add drag and drop reordering logic and 
you're 80% there.

So how do you reconcile having source editing and Notion-like blocks? I would 
start by keeping the source and having a special type of a UI view that is 
smart enough to modify the source directly through UI actions like typing in 
the middle of some text, adding a new block (read: header, image, tiddler link, 
transclusion, anything that's a toolbar button right now) with a slash command, 
or reordering some blocks in the tiddler (e.g. dragging a header a few 
paragraphs higher would move it in source text a few lines up).

Now for a little nerd talk. Jeremy, I hope you're listening ☺ 

Technically, this would have to be done carefully as to not corrupt or change 
the source in any unexpected way. The complexity depends a little on how 
wikitext is parsed currently. If it's the standard lexer-parser setup where you 
get an Abstract Syntax Tree (AST) somewhere in the middle before you convert it 
into HTML it would already help a lot.

One interesting feature that many parsers usually don't care about is that we 
would need is for the AST to be losslessly reversible back into wikitext 
(including whitespace, comments, everything). That way we would be able to 
operate on the source in a safe and structured manner without losing any extra 
stuff in it.

To be able to visually link the blocks back to their source text, we would need 
to track all the up-to-date character ranges for the parsed tokens / AST leaves 
and carry their ids up to the UI / HTML elements used to display them. Then 
when you e.g. have a list of images and you drag an image, the UI knows of the 
hierarchy behind the display (from the AST) and at the same time knows how to 
modify the source text (by the character ranges in each AST element) to produce 
the desired modified output.

Nerd mode off.

Clearly you won't have a UI that allows you to edit every single wikitext 
feature including transclusions, macros, etc. on day one. But I see great value 
in having even just bold, italic, headers and links as an MVP and blackboxing 
everything that is not supported.  Since the source wikitext would remain, you 
could always switch to the source view for more advanced stuff.

Now if we entertain this modeless direct editing experience some more, I can 
imagine all the blackboxed blocks turning into inline source code editors. 
Transclusions could provide a way for editing the source tiddler directly by 
showing a nested UI in the context of the transcluded tiddler with some border 
or whatever showing up to tell you which one it is.

I'm not saying it would be easy, but it's definitely achievable, especially if 
you limit the scope of what to do initially. :) 

Welp, I spent too much time writing this brain dump, so I hope it gave some 
ideas to someone at least. :) 

Best, 
Miha

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/4d8c0a58-a75d-49ef-ae67-b28170c21d33%40googlegroups.com.

Reply via email to