Remix.run Logo
w10-1 a day 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)

kazinator a day ago | parent | next [-]

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.

da_chicken a day ago | parent | next [-]

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.

zahlman a day ago | parent [-]

> 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.

da_chicken 20 hours ago | parent | next [-]

If XML dropped attributes and required everything to be an element -- which people always want to object to because they've used XML wrong their entire careers, but that's exactly what JSON did -- if they did that, and then also permitted `</>` as a universal close tag so that nesting isn't really a problem... which, again, is exactly what JSON did (and SGML)... then I think XML would not be so maligned. Like the problem with XML isn't that it wasn't capable. It's that it had too many features that actually aren't useful, and features that are distracting to the point of making people use it wrong.

Because almost the entirety of the remaining JSON ecosystem is just duplicating what XML did. We have JSON Path and JSON Query. We have JSON schema. There's even JSLT, although it didn't inherit the flaws of that XSLT library. About the only thing there still seems to be an argument about that XML did is JSON comments.

And, to be clear, JSON's perception as being better performing primarily comes from the fact that web browser developers had a vested interest in making JavaScript engines high performance for ordinary JavaScript, and they spent more effort on that than on their XML libraries simply because it was more important. That means the problem with the web hasn't been the use of XML. It's been the way we stapled half a dozen languages together to do one thing: display a document as a computer interface.

But if you use XML to the minimal level as JSON requires by it's nature, and if XML had gotten the performance interest that JavaScript did, then XML would be fine.

So I don't think JSON is better than XML. I think JSON just got lucky.

kstrauser a day ago | parent | prev [-]

I couldn't possibly agree more. I remember the first time I saw JSON over HTTP. Within a week, I started ripping out all the SOAP code I'd written because "that's what you're supposed to use". JSON plus a few standard verbs is better than the old XML web services in every way.

eikenberry a day ago | parent | prev | next [-]

> 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++.

kazinator a day ago | parent [-]

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++.

eikenberry 7 hours ago | parent [-]

This is of course Correct (pun intended)... but IMO the underlying meaning of correctness was a correctness of the abstractions to the problem domain and that correctness ultimately boils down to the expressibility of the language that allows it to create the correct abstractions. This interpretation might have to do with my having known many fans of Lisp (of which I'm one) and that people who love Lisp (like the author of the paper) are usually big expressibility proponents.

ajross a day ago | parent | prev [-]

> 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.

anildash a day ago | parent | prev | next [-]

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.

kleiba a day ago | parent | prev | next [-]

Let's not forget org-mode.

d-us-vb a day ago | parent | next [-]

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.

chipotle_coyote a day ago | parent | next [-]

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. :)

ryang2718 a day ago | parent [-]

The key bindings out of the box with something like Doom emacsx is a big selling point too.

I have not been able to get markdown to walk in Vim, anywhere near as well.

chipotle_coyote 13 hours ago | parent [-]

I don't remember Vim's Markdown support to be anything special, either; I do a lot of Markdown work, and tended to use Markdown-specific editors on the Mac like Ulysses and iA Writer, while doing my technical writing in BBEdit. (I never found Vim to fit me particularly well for prose of any kind, even though I was pretty experienced with it. Apparently my writing brain is not modal.)

Semi-ironically given the Org mode discussion, the markdown-mode package for Emacs makes it one of the best Markdown editors I've used!

adityaathalye 21 hours ago | parent | prev [-]

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:

     mobile: Orgro, a mobile Org Mode file viewer for iOS and Android
     mobile: Plain Org, org text view and editor for iOS
     mobile: Orgzly, org text viewer and editor for Android (I use this on my phone, and sync notes to my PC with Dropbox).
     mobile: beorg for iOS (tasks, projects, notes)
     mobile: flathabits, inspired by Atomic Habits, with all your data stored in org files
     web+desktop: logseq, a privacy-first, open-source knowledge base
     web: organise, web-based org text editor and viewer
     web: braintool.org, a Chrome plugin "to easily capture and categorize all the information and knowledge you want to keep track of, right at the point you discover it or create it"
> 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:

     Publish, Import, Export, Parse
     More community-enumerated tools for the same
     Even Github, Gitlab etc. support org markup these days!
 
> 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

extra_rice a day ago | parent | prev [-]

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.

subsection1h a day ago | parent [-]

> 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.

jonwinstanley a day ago | parent | prev | next [-]

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!

calmbonsai a day ago | parent | prev | next [-]

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.

morshu9001 a day ago | parent [-]

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.

xigoi 19 hours ago | parent [-]

I would certainly not consider package management to be a good part of JavaScript (or Rust, for that matter).

morshu9001 a day ago | parent | prev | next [-]

My "worse is better" is using plain text instead of markdown. I still have no idea how newlines work in markdown.

happyopossum a day ago | parent | next [-]

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.

morshu9001 a day ago | parent [-]

They don't though. Newline in the input doesn't create a newline in the output.

jkrejcha a day ago | parent | prev [-]

Two spaces before the newline for a new line, two lines for a paragraph break

antod a day ago | parent | prev | next [-]

Isn't Markdown more a competitor to Restructured Text rather than Docbook or Word?

atoav a day ago | parent | prev | next [-]

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.

latexr a day ago | parent | next [-]

> 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.

atoav 20 hours ago | parent [-]

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.

latexr 17 hours ago | parent [-]

Markdown is limited because it covers what its creator (single), needed for his blog. That’s it. Markdown was birthed as a single Perl script (with bugs that are still present).

Tables don’t have to have headers in Markdown. It doesn’t even have tables to begin with! Not in the original specification which still exists. But there are certain flavours of Markdown which add support for tables, and those may or may not require headers. Each flavour implements features of Markdown as it see fit, and those may or not exist in other flavours or be implemented differently.

thangalin a day ago | parent | prev | next [-]

> 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?

pests a day ago | parent | prev | next [-]

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.

atoav 20 hours ago | parent [-]

I know. And this was a good idea.

drob518 a day ago | parent | prev [-]

Simple is frequently superior.

keybored a day ago | parent | prev | next [-]

(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

Apocryphon a day ago | parent | prev | next [-]

Comparing Markdown to Microsoft Word?

w10-1 a day ago | parent [-]

OMG I'm so happy you never had to write documentation in the 1990's!

VerifiedReports a day ago | parent | next [-]

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.

braincat31415 a day ago | parent | prev | next [-]

I used *roff back then. Now I have to put it into confluence. What a downgrade.

BeetleB a day ago | parent | prev [-]

What are you talking about? Word is the standard for docs in many large engineering companies.

esafak a day ago | parent [-]

That does not make it good.

BeetleB a day ago | parent [-]

Oh, it totally sucks. I'm pointing out that the pain didn't end in the 90's, and continues 30 years later :-(

pluralmonad a day ago | parent [-]

I used to work with a guy that used docx files for all his note taking. Basically did all text writing (other than code) in Word. We had Notepad++ at the time as well, so he just preferred Word for some reason.

renewiltord a day ago | parent | prev | next [-]

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.

scubbo a day ago | parent [-]

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

szundi a day ago | parent | prev | next [-]

[dead]

wiseowise a day ago | parent | prev [-]

> 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.

astrange a day ago | parent [-]

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.

wiseowise 20 hours ago | parent [-]

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.

astrange 19 hours ago | parent [-]

Well for one thing, ObjC has messaging and value types! Wait, that's two things.