Dumbdown – A Tree Language that compiles to HTML
treenotation.org
treenotation.org
This thing is anything but. You need to know the keywords and type them out all the time, you can’t use it in an e-mail because your readers won’t understand you, and if you like trees so much, just write regular HTML — or a “simplified” HTML format like Pug — and call it a day.
Currently, screen-readers do not cope well with modern web pages, and can you imagine trying to dictate HTML to a speech-to-text based editor? Using our approach means you can literally speak the content to the stt, and have it appear on-screen in a displayable format. I'm thinking this would be useful for verbal/conversation applications where you can effectively dispense with a visual display.
I haven't put my ideas into any kind of proper documentation, but they are very close to yours.
It would be cool if you explored Tree Notation in your thoughts.
We have an idea roughly called "World Wide Tree" (or at least one person calls it "World Wide Forest").
We think Tree Notation might be the trick to getting the semantic web vision realized. One simple universal syntax for HTML, CSS, Javascript, JSON, Data schemas, data itself, etc.
The semantics you still need to define and build machines for, but if we had a simpler syntax (without sacrificing a single capability!) that might move the ball pretty far.
I'm not sure what Tree Notation fundamentally brings to the table that RDF and microformats, etc do not..
Have you read: https://people.well.com/user/doctorow/metacrap.htm
How does Tree Notation address anything listed there?
The semantic web has never been about technological limitations or tooling problems. And ever if it were, that is solving the simple problem.
> How does Tree Notation address anything listed there?
The 2 things that have changed since 2001:
- git - Tree Notation
A very powerful combination. In two ways. First as a collaborative database system (https://treenotation.org/treeBase/). Second as collaborative grammars (done via Github, gitlab, or any gitX).
1. "People lie". Complexity can be measured directly in Tree Notation. Complexity is where corruption hides. Tree Notation + git (blaming, etc), makes it much harder to lie.
2. "People are lazy": Tree Notation requires the fewest keystrokes (or pen/pencil strokes--it works great on paper too! very important in clinical settings. for instance, in some countries, 80% of hospitals have no digital medical records at all--I was recently told today!). Tree Notation and our grammar language gives you type checking, autocomplete, autocorrections, and more.
3. "People are stupid": see response to #2.
4. "Mission: Impossible -- know thyself". I'm not sure the problem here. The semantic web shouldn't be about forcing some model of behavior on people.
5. "Schemas aren't neutral". Tree Notation makes this very simple: just fork a grammar! We are carefully designing our Grammar language so you can simply do a file concat of N files to create a new grammar. We are making it as easy as possible to build, fork, and combine new grammars.
6. "Metrics influence results". In our database of 10k notations and computer languages, I quickly realized that you can't bucket things so cleanly. Terms like "a functional language" an "imperative language" are mildly useful, but not so precise. Instead, we now have over 1K columns. Tree Notation/TreeBase/Grammars make this very easy. Amongst other things, this will allow for better precision medicine.
7. "There's more than one way to describe something". We agree! It's so easy to fork a Grammar if you think you can do it better. Let the market decide. We have this of we talk about of the "World Wide Tree". But at least one person thinks we should call it the "World Wide Forest". I think they may be right.
FWIW, I pitched Tree Notation for the semantic web to w3c in 2017 but never head back. This is a reminder that I should ping them again.
Thanks again for the link. A very good read and I've long been a fan of CD's work.
> such that the resulting document could be directly narrated or dictated, without resorting to too many (if any) "special" words for punctuation.
This is a design test I put every new Tree Language through. The early languages still had some special punctuation, like # for comment. Once syntax highlighting and autocomplete was good, I realized we should do away with all such instances, in most cases. It's made them much more of a joy to use.
> Currently, screen-readers do not cope well with modern web pages, and can you imagine trying to dictate HTML to a speech-to-text based editor?
Agreed! I had a friend who is blind who I spent a couple days with years ago observing how he used his machine. It was both incredibly complicated and also amazing (I couldn't believe how fast he had the computer speak to him and how he was able to understand anything). I hadn't thought about that use case for Tree Notation languages until your comment just now. Thanks for sharing it. Perhaps there is something that could be done in that domain. Let me know if there are ways we could help.
For me, Asciidoc (and Asciidoctor) have become the default - formal spec, test cases and extension mechanism so that you don't have N + 1 flavors of it. It also has a markdown migration mode that eases moving from md.
IMO, it is better in almost every way than markdown - the only reason it isn't as popular is that Markdown was made popular (and drove adoption) by the Github & others.
Asciidoc definitely seemed like the best option. The biggest thing for me was the ability to do complex numbered headers.
Unfortunately the tooling wasn’t really good enough for my use case. I needed a clean way to move between Asciidoc and Word, and it wasn’t really possible. Pandoc claimed support for both Asciidoc and word, but it was only partial and couldn’t round-Trip the document. I considered developing & contributing the functionality, but I didn’t know the language the tool was written in and couldn’t justify investing more time in the experiment.
Maybe it’s time to review the tooling situation and take another crack at it...
It won't roundtrip (and I doubt anything will ever) but I usually go only one way - converting to docx in the last stage.
.Ordered
. number
. number
.. letter
.. letter
better and more readable than1. number
2. number
a. letter
b. letter
For sure Markdown has some cruft but isn't it better to improve Markdown itself than to try to "establish" a completly new format with some weird conventions such as:Level 3 Heading
^^^^^^^
Level 4 Heading
+++++++++++++++
Why? ^^ or ++ is this in any way intuitive or an established convention that is so much better?
PS: See Text with Instructions (.texti) for a (better) Markdown evolved variant / flavor :-) - https://texti.github.io
> PS: See Text with Instructions (.texti) for a (better) Markdown evolved variant / flavor
You have answered yourself: markdown is not a language that can be improved, it's a mashup of several different slightly incompatible implementations, much like HTML in the early web during browser wars.
You could try to create a standard body that defined a homogeneous definition that everybody adheres to and which could be extended with new features.
But by that time you'd be better served off by using asciidoc, which already did that job and which is actually based on Docbook, supporting all the features of that complete standard for book publishing.
It isn't - the point is that asciidoc has a 'spec' whereas markdown has dialects because it's not rigourously specified (core or extensions). Which one you might run into is the luck of the draw.
Should you try to improve markdown (and lots of people have), you end up with the N+1 standards problem (famous xkcd cartoon) and further fragmenting the implementation if at all it takes off.
Getting one 'Markdown' that has features (and extensions) that work properly wherever you go isn't a technical problem . It's a problem created by the lack of a spec in the first place and IMO pretty much unsolvable now.
Ordered lists do not need ".Ordered" to begin (https://asciidoctor.org/docs/asciidoc-syntax-quick-reference... scroll down a little). You don't need the leading spaces for sublists either.
I'll grant you that the period is a little more annoying than the numbers, but it's honestly not a big deal, and also means that long lists (longer than 10 elements) have consistent spacing.
For headers, you don't need those different formats (https://asciidoctor.org/docs/asciidoc-syntax-quick-reference...). It's just equal signs the whole way.
This is a case of, "It doesn't matter what side of the road you drive on, as long as everyone drives on the same side."
Your link asks repeatedly whether we've learned anything over the last 10+ years. One thing we've learned over the last 10+ years is that underspecified organically emergent "standards" result in a bunch of inconsistent behavior that confuses users.
I won't claim that AsciiDoc fixes the problem--it would need to be adopted more widely and it's not really trying to do the same thing as Markdown--it's not trying to make something that's both readable as plain text and generatable into rich text. But simply focusing on some aesthetic qualities of the markup shows you aren't really understanding the problem with Markdown.
[1] for example, this: https://a-nikolaev.github.io/fp/lec/2/
link http://asciidoc.org/ AsciiDoc list
- one
- two
instead of just - one
- two
which is an obvious deficiency compared to markdown. This seems like a general problem with something like tree notation, maybe there's a way to fix it, but it isn't obvious. Why's this preferable?e.g. to produce BNF of dumbdown
Also, to parse BNF and produce a (bare bones) version in Tree Notation.
This would make it more accessible while also demostrating its power.
If you give it a shot, I'd be happy to add any features or fix any bugs that you come across in the Grammar language. I'd also be happy to do a screenshare to explain any questions you might have about Grammar before you get started (since the UX is still pretty bad--I apologize. Slowly getting there!).
Oh, and thanks for pointing out the problems you see.
> Some text
p.red Some red text
It has easy to do left, centre and right alignments.
Markdown was (slightly) influenced by textile too [2]:
> While Markdown’s syntax has been influenced by several existing text-to-HTML filters — including Setext, atx, Textile, reStructuredText, Grutatext, and EtText — the single biggest source of inspiration for Markdown’s syntax is the format of plain text email.
Too bad it's gone the way of the dodo [3].
[0] https://en.wikipedia.org/wiki/Textile_(markup_language)
[2] https://daringfireball.net/projects/markdown/syntax
[3] https://github.blog/2016-03-01-upgrading-your-textile-posts-...
The problem is that the only editor that has a full support for it is Emacs (org mode).
If I wanted to make a difference in this area, I would dedicate my time to writing a very good HTML renderer / JS control for it, then a good VIM mode, then maybe a good VScode mode.
It's not easy because the spec is large, and every part of it is useful.
Markdown is just plain readable file that can be beautify with HTML and CSS.
About extensible - it's no different from markdown with two additions - 1) evolution / changes are more than welcome and 2) texti (like wikipedia markup) has (recursive) template extensions / includes built-in.
And can I get a compiler, in say, 25 years?
As a corollary, markdown so complex that is unreadable before being "rendered" is worse than useless.