summaryrefslogtreecommitdiff
path: root/markdown_is_bad_for_you.html
diff options
context:
space:
mode:
Diffstat (limited to 'markdown_is_bad_for_you.html')
-rw-r--r--markdown_is_bad_for_you.html80
1 files changed, 80 insertions, 0 deletions
diff --git a/markdown_is_bad_for_you.html b/markdown_is_bad_for_you.html
new file mode 100644
index 0000000..00e40bd
--- /dev/null
+++ b/markdown_is_bad_for_you.html
@@ -0,0 +1,80 @@
+<!doctype html>
+<html lang="en">
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="author" content="aki">
+<meta name="tags" content="rant, markdown, web, html">
+<link rel="icon" type="image/png" href="cylo.png">
+<link rel="stylesheet" type="text/css" href="style.css">
+
+<title>Markdown Is Bad For You</title>
+
+<nav><p><a href="https://ignore.pl">ignore.pl</a></p></nav>
+
+<article>
+<h1>Markdown Is Bad For You</h1>
+<p class="subtitle">Published on 2020-05-13 17:32:00+02:00
+<p>Markdown is a markup language. It wouldn't be misleading to say it's also a family of markup languages that are
+derived from the syntax created by <a href="https://daringfireball.net/">John Gruber</a> et alii. Gruber's creation was
+inspired from other markup languages but, as author notes, it mostly follows the convention used in plain-text e-mails.
+It is usually introduced as <q cite="https://daringfireball.net/projects/">text-to-HTML formatting syntax</q>,
+<q cite="https://wikipedia.org/wiki/Markdown">language with plain-text-formatting syntax</q> or
+<q cite="https://daringfireball.net/projects/markdown/syntax#html">easy to read, write, and edit prose. (...) Markdown
+is a <em>writing</em> format</q>.
+<p>Now that we are on the same page with Markdown, let's make the rant case clear. We're considering creation of
+either, a static website or an application providing dynamic set of pages. To be more exact let's say we are preparing
+to publish this very article. Remember, we are keeping in mind just one principle: minimalism. I'll not define it, so
+I can have some more freedom in what I say. This also gives you more opportunities to complain about me. That makes us
+even.
+<p>We have plenty of information and a goal: make a simple blog. Those of us who are the best buddies with the Markdown
+would be happy to just jump into it and get some static site generator or some dynamic blog engine up and running.
+Others, who are not yet that used to it, are most likely tempted by the convenient prospect offered by MD. And, of
+course, there is the last group, who read the title and is impatiently waiting for me to finally explain my point of
+view instead of continuing this foreplay. Ok, ok, ok. The first sin has already been written down.
+<p>If you want to serve a website you need some kind of an HTTP server. Be it nginx, apache or something else.
+Surprisingly, it is all you need to serve static content. On the other hand, if you want show Markdown that way,
+firstly you need to generate HTML out of it. It's only natural, this format has been created exactly for that. This
+means you will end up needing an entire new piece of software. Markdown-to-HTML generator. It goes the same way for the
+dynamic blog. The only difference is that instead of some standalone program you will need to integrate a generator
+with a parser, and possibly some additional HTML template engine to embed the results nicely. The usage of markdown
+always comes with a cost in a form of an additional entity in the architecture or workflow. You can automate it, but it
+is always there, and should be acknowledged before you can decide to ignore it.</p>
+<img src="markdown_is_bad_for_you-1.png" alt="One new format and one component needed in the flow">
+<p>Previous point implies an additional sin. Markdown not only requires to add more stuff to your existing setup, but
+it also at some point stops being Markdown, and starts being HTML. And like I've already said: it's only natural,
+because it was designed this particular way. Not only it wants to become HTML, it also allows user to inline HTML. It
+means that the design is not minimal in its core. This is because the purpose was to create a syntax to simplify
+writing for the web. It never tried to replace anything, and that's probably the worst sin of all. Thanks to Markdown,
+you will always have HTML <strong>and</strong> something else. If you are going for minimalism you shouldn't want that
+additional thing at all.
+<p>Markdown with it's limited syntax encourages users to inline HTML if it's impossible for them to accomplish their
+goal in just MD. For that reason people who didn't want to use HTML started to extend the syntax. It resulted in spawn
+of a lot of offshoot syntaxes. Discussion of how fragmented ecosystem with a whole lot of plugins to a single component
+is unhealthy in a long run is way out of the scope of this article. In short: you will not only need something to
+process the basic syntax, but you will also require a possibly great amount of plugins to handle the extended one. That
+makes even more components you need to integrate into your software.
+<p>These points considered only the problem of increased resources, components or steps in processes or flows. Once you
+start using Markdown it may start tempting you to avoid using HTML at all. I've already mentioned the plugin madness,
+it may lead to. But that's not all there is. Avoiding the HTML in context of the web is plain stupid. Reason is,
+<a href="https://www.petelambert.com/journal/html-is-the-web/">HTML is the Web</a>. Honestly, this one sentence could
+summarize all of the previous paragraphs.
+<p>Sadly, HTML has its own problems. The whole family, together with XML has been widely criticized for various
+reasons. There is very few people who would try to argue that they are minimal. I won't, because I think they are not.
+Adding one more layer of syntax on top of that won't solve the issue. It will only make it worse. HTML5 tries to
+accomplish commendable goals and one could use it to create a rather minimal web pages. On how to write somehow minimal
+HTML5, make it readable in plain-text, properly mark content within it, extend it to your needs and break the
+specification in unimaginable ways... Let's leave it as a topic for another day. Or even more than one.
+<p>In a very roundabout way we can take one more thing out of the Markdown. Perhaps HTML shouldn't be the web? Why are
+we building everything on top of a single stack. It's convenient, yes. However, won't it crash if we try to reach too
+far? What if we try yo break the concept of the browsers as they are now and make it more modular? Leave the HTTP, but
+allow more freedom in how the content is served to the user.
+<p>All in all, I've fooled you from the very beginning. Markdown isn't actually bad for you. It really shines as a
+syntax to describe comments, short plain-text documents or messages like e-mails. As long as it is used as a
+replacement, it's nice and easy to use. It provides a great way for external users to post their content on your
+platform in a quite safe way with only minimal restrictions. However, the moment you use it as a HTML extension, or as
+an intermediate format to generate whole HTML pages. It crumbles. It starts to build up on top of your stack, throwing
+at it more and more inline HTML and layers of layers of plugins. Keep it simple.
+</p>
+<img src="markdown_is_bad_for_you-2.png" alt="It may collapse any time now">
+</article>
+<script src="https://stats.ignore.pl/track.js"></script>