Comment by w10-1
2 days ago
This is good and detailed, but misses a broader trend: how "worse is better" started to win - first Java over C++, then python and javascript over Java, and here markdown over Word and docbook.
When markdown emerged, docbook was getting even more elaborate, and vendors everywhere had for decades been locking people into frameworks and languages with fantastic features that were hard to use -- and then the internet bubble had popped. Then people realized they'd thrown away years building complex system, and had little tolerance for promises.
Markdown is something you can use in its native form. It's both source and destination, with a touch of future-proofing: if the opportunity arrives, you can polish it into anything, and mostly parse it yourself.
(What's surprising to me is that pandoc barely registers when compared with markdown on google trends since 2004; pandoc is the reason I switched completely to markdown in ~2010)
Java isn't worse than C++; it has a much more capable run-time, something which is left as an implementation-defined footnote in C++.
Java had a leg-up over C++ by several decades in having a concurrency story (at all) in the language.
I wouldn't use std:: anything for threads even in a greenfield C++ project today.
Garbage collection is more advanced than the primitive management tools available in C++, like smart pointers to reference counted or exclusively owned objects: those approaches are strictly worse than the correct, gold-standard solution to the object lifetime problem.
It's hard to look at Java and not see it as a transitional language now. Electron, Node, and even .Net have fundamentally been more successful implementing ideas that first saw widespread adoption in Java. JSON is basically XML, which is what Java pushed so hard for for data exchange instead of really gross binary serialization formats.
Although, Java wasn't really trying to compete with C++ everywhere. It's just that, at the time, C++ was used at all levels. I mean, this was a time when it was C++, Visual Basic, or Turbo Pascal/Delphi for application programming. You couldn't easily get more abstract than that. That's wildly unlike today's landscape.
> JSON is basically XML, which is what Java pushed so hard for for data exchange instead of really gross binary serialization formats.
JSON over XML is more of a "better is better" case, though.
2 replies →
> Java isn't worse than C++;
"Worse is better" is about simplicity vs expressibility tradeoffs, not an absolute better/worse value judgement. By saying Java is worse than C++ here the OP is only saying that Java is simpler (less expressible) than C++.
Nope; worse is better is about simplicity versus correctness tradeoffs. I've read the P. Gabriel essay enough times that I can rely on my memory of it.
Like whether to hide interrupted system calls, or punt the responsibility for restarting them to the application. (That "PC loser-ing problem" example used in the essay).
Between C++ and Java, it is hard call, but I would say that the Java ecosystem values correctness more than C++.
I don't mean valuing the correctness of a delivered application, but valuing the contribution of the language stack to that goal.
Java manages memory, and defines the order of evaluation of operands in an expression. Need we go on? Java also has a security story for loading compiled code. There is no sandbox model of any kind in C++.
1 reply →
> Java had a leg-up over C++ by several decades in having a concurrency story (at all) in the language.
While sort of technically true, concurrent code expressed in high level language was almost invented in C in the 1980's as the first Unix SMP devices took off (early multiprocessing work at the OS level was at the assembly level, Unix was almost alone in having a portable kernel and the need for SMP).
Java, coming along about a decade later from the same incubation environment, very much reflects that learning. But no, they did it right in Java because they had already done it in C.
I actually had a digression into "worse is better", but the piece was already pushing 5,000 words, so I figured I probably was better of leaving out such a big topic. But you're right that's a larger trend that mattered. I think of it more as a triumph of Postelism in the Internet at large as more people came online, too.
Let's not forget org-mode.
I think about this often as an org mode user who uses it exclusively for journaling with none of the GTD features. Org mode was released before markdown by over a year, but never saw the uptake like markdown did, despite being a more featureful syntax. I think that's because org mode was originally a GTD framework for emacs, and the syntax of org files was incidental to doing GTD in plaintext. It didn't get popularized as an alternative to other markup languages until long after markdown became popular.
I don't really know. I wasn't around back then to watch it unfold. But I still much prefer org mode due to better emacs support and (IMO) more intuitive syntax for things.
When you say "better Emacs support," you're kind of understating things: Org Mode was -- and to a large degree, still is -- tied intimately to Emacs. It was only available in Emacs for years, and if you didn't use Emacs, you probably didn't hear about it for years.
As someone who now uses both, I think the syntax between the two is really kind of a wash. I know Org Mode folks who insist that its syntax for links is more intuitive than Markdown's, for instance, whereas I used to insist that Markdown's was. Now I think neither is really intuitive -- the one that feels more natural to you is, very likely, the first one you learned and got comfortable with. Beyond that, most of the differences in syntax are kind of academic. (I would genuinely argue that Markdown's block quote formatting, which is the way that plain text email tended to quote messages, is more intuitive, at least to anyone who remembers writing email in plain text.) Org Mode partisans also correctly point out that you never have to worry about differences in syntax parsing the way you technically do with different flavors of Markdown, but I'd argue that's because there's effectively only one Org Mode parser out there, e.g., Org Mode in Emacs. There is no formal syntax specification for Org Mode any more than there is for Markdown, and if Org Mode had become as popular and had as many different implementations in as many different programming languages, it would absolutely have the same issue. (In fact, the few non-Emacs Org Mode parsers that I've seen are, to a one, at significant variance with Original Flavor Org Mode once you get past the basics.)
Org Mode's real strength isn't the syntax, it's everything else. I don't use it for GTD, either, but I use it as a task manager and an agenda system for work, and as a personal journal and fiction outliner. None of the power it gets for any of those things comes from using asterisks instead of hash marks for headlines, or slashes instead of underlines for italics. :)
2 replies →
Same team! Also an orgmode user who uses it for all things longform... A decade+ and counting. Only recently do I see need to start adopting TODOs because work and life tasks are threatening to go beyond the capacity of my normie calendar and paper lists coping mechanisms.
Orgmode text is fairly well supported now, across a plethora of non-Emacs apps and editors. I've enumerated several in my post [0].
Quoting oneself...
> But seriously, Emacs winkwink, amirite?
> Utility is contextual, remember? > > So here are ways to use org-mode without Emacs, for useful-to-you purposes, without even caring it is orgmode text underneath. > > Mobile, Web, and Desktop apps:
> Text Editors (apart from Emacs): > > You can type org markup text (syntax) in any text editor, even Notepad. > > Vim: https://github.com/nvim-orgmode/orgmode > > Atom: https://atom.io/packages/org-mode > > VSCode: https://github.com/vscode-org-mode/vscode-org-mode > > A variety of utilities to:
> I'm sure more people are making and releasing tools backed by org-mode text. > > The future is bright!
[0] Why and How I use "Org Mode" for my writing and more
discussed: https://news.ycombinator.com/item?id=43157672
For some time, I used org-mode for almost all type of note taking. I love the structure being functional without HTML rendering. However, it's pretty much locked to emacs and so the portability is very poor. I need most of my notes to be at least readable on my mobile devices.
When I discovered Obsidian, I decided to fully switch to Markdown. It's very nice that it supports vi bindings.
> the portability is very poor. I need most of my notes to be at least readable on my mobile devices.
Why didn't you set up an automatic recurring export of your Org files to HTML files that are uploaded somewhere? That's what I did.
XML and (previously SOAP) vs JSON was around the same kind of time too.
Using JSON for API calls was such a breath of fresh air!
As someone who was immersed in C++ from the original Stroustrup book (I do not recommend it), then transitioned to Java, then (largely) to Python I disagree on the language comparison.
- Java is not worse than C++, it's actually better for most large-scale programming
- A (subset) of C++ is still far better for performance-intensive applications (games, low-level systems software, avionics, etc.).
- Related to previous, if you're using ALL of C++ in your projects you're "doing it wrong". It is not a well-designed language.
- I agree that Javascript is a win for "worse is better". Anyone remember Netscape Livewire? I try to avoid that language like the plague, but its runtime support is ubiquitous so it gets the most performance-tuning love.
- Python was, initially, just a better Perl, but its dominance in Scientific computing spilled over into data science. Also, Jupyter notebooks provide a unique value proposition for a FOSS-Mathematica.
IMO JS and its spinoffs made mostly the best choices for an interpreted language. The bad parts are pretty inconsequential, and the good parts are important things other langs didn't do well. Even Rust took after how it does async and package management.
Better than Python which also recently started copying over JS decisions, except that Py was easier to use with C libs from the start which made it capture math/data/science usage earlier.
I would certainly not consider package management to be a good part of JavaScript (or Rust, for that matter).
My "worse is better" is using plain text instead of markdown. I still have no idea how newlines work in markdown.
Newlines work in markdown the same way they do in plain text, because markdown is plain text.
If you have something that’s converting markdown into a rich view and it’s not doing that, the problem isn’t with markdown, it’s with your markdown parser.
They don't though. Newline in the input doesn't create a newline in the output.
Two spaces before the newline for a new line, two lines for a paragraph break
Isn't Markdown more a competitor to Restructured Text rather than Docbook or Word?
The thing this oversees is that the interface is important, simpler is not worse, it can in fact often mean better. For example while docbook may have some technical, the user experience for someone who just wants to write some basic stuff is absolutely horrible.
If I imagine beginner-coding me, the first thing I would ask for example is why the hell not just use html by that point. Markdown is a thing I could peesent my non-technical parents unrendered and they still would be able to read the content, just fine for the most part. Try that with docbook.
Now nerds like to pretend the more powerful format is automatically superior. It isn't. Markdown is sucessful because it is so barebones and opinionated and because it forces a focus on the content over formatting. If that is what you need markdown is perfect. If it isn't, go for Latex, HTML+CSS, Typst or use InDesign or whatnot.
> opinionated
Markdown is the opposite of opinionated; nearly everything in the original spec can be done in more than one way. There’s two separate syntaxes to do headers, links, italics, bold, and three ways to do unordered lists.
Let me explain what I meant with opinionated:
Markdown decided for the users what the needed formatting options are, instead of giving them a bunch of tools that they could then combine in many different ways. The latter would be unopinionated as it doesn't force the opinions of the devs onto the users.
For example, why doesn't markdown have columns? Why do tables have to have headers? Etc. The reason is someone decided to do it that way on purpose.
1 reply →
> For example while docbook may have some technical
https://keenwrite.com/blog/2025/09/08/feature-matrix/
I wrote the feature matrix to objectively compare plain text-based documentation formats. How do DocBook's features compare against Markdown?
Markdown allows HTML to be mixed freely. Not all implementations allow it. But the whole point was allowing a fallback to HTML if Markdown couldn't do what you needed. So its not even an option of switching from MD to HTML/CSS, its just an addition when needed.
I know. And this was a good idea.
Simple is frequently superior.
(I did not read TFA) Or maybe underdeveloped is better? No, that’s not a loaded word hear me out: the syntax is very unobtrusive and minimal if you ignore the whole HTML superset thing. So people can just start using it. Everyone wants to write bullet lists and some emphasis, a code block if they program. Only later do you want maybe a little more, some footnotes, maybe even admonitions. But that’s just a little extra. The syntax is already pretty minimal; there’s room for a little extra like using `^` (`[^1]`) for footnotes. So one extension uses that. Oh and maybe another extension uses something else. But whatever, it’s a trivial difference. Okay now some book-publishing Markdown has become quite different from some static website builder Markdown and it’s kind of annoying to have to keep the differences in mind because you have a blog but you are also writing a book. And it turns out that implementing Markdown in a way that doesn’t have dozens of weird corner cases is annoying because the whole inline markup thing wasn’t specified that well.
It’s like a microcosm of the burden of code. You publish some Perl script that happens to catch on. It’s good enough; any immediate problems are really trivial. Ten years later though they are annoying. But a new lightweight markup variant? Yeah, we should make it close to compatible with “Markdown” because everyone knows Markdown. Maybe specifically GitHub Markdown. Because if it doesn’t render on GitHub it isn’t real.[1] And so it perpetuates through microgenerations.
[1]: https://news.ycombinator.com/item?id=33873593
Comparing Markdown to Microsoft Word?
OMG I'm so happy you never had to write documentation in the 1990's!
I did, and Word version 2 was an excellent product. WordBasic was incredible. There was even a graphical dialog-builder, so you could invoke dialogs from your macros. I wrote a macro that parsed and re-wrote SQL queries for a Big-6 consulting firm, saving them man-weeks if not months.
Word today is a ghastly, incompetent shitshow.
I used *roff back then. Now I have to put it into confluence. What a downgrade.
What are you talking about? Word is the standard for docs in many large engineering companies.
3 replies →
I'm sorry, what? Markdown over Word is "Worse is Better". You are shitting me. Markdown over Word is "Better is Better". Haha, dear god. MS Word? It must be some other word surely. MS Word is awful today.
You are misinterpreting the phrase. "Worse", here, means "having less functionality"[0]. Whatever your belief about the usability, speed, consistency, etc. of Microsoft Word (and we probably agree there!), Markdown is certainly "worse" in terms of features.
[0] https://en.wikipedia.org/wiki/Worse_is_better
[dead]
> how "worse is better" started to win
> first Java over C++
...really? Java was literally created to fix C++ issues.
> then python and javascript over Java
That's just different, not worse.
Java is based on Objective-C/Smalltalk, not on C++. It's strictly worse than its original too. There's a lot to be said for the rule of least power, but it's not nearly powerful enough.
It’s irrelevant what it is based on. Those are the words of James Gosling.
> It's strictly worse than its original too.
Tell me more of those exiting stories. I’d like to hear them.
1 reply →