Comparing Textile vs. Markdown for mobile use


In which I argue that Textile is a better fit as a minimal markup language, especially when typing on touchscreens.


Markdown is everywhere. It is also all over the place, with varying dialects. Also, the markup used is rather hard to type on mobile, with touch screens, because most of the markup characters are either buried in the deepest pages of a usual touch keyboard. Textile, instead, can be typed using the first or second levels of the default page of a mobile keyboard.

Let’s compare some frequently-used markup. I will not attempt an exhaustive comparison, but the features I consider the most common.

Emphasis

Let’s consider first the two conventional styles of emphasis: the use of oblique and bold face: emphasised and strong text. In Markdown, the following are used:

_emphasised_
*emphasised*
__strong__
**strong**

In Textile:

_emphasised_
*strong*

This is a rather slow start to this comparison, given the preference between the two styles is mostly subjective. My subjective opinion is that I strongly prefer the Textile’s style, with one character unambiguously specifying the type of emphasis used. On most Android keyboards both * and _ are on the second level of the first page, so both mark-ups offer a good choice for this syntax.

Inline code snippets

`markdown code snippet`
@textile code snippet@

This is one of the big fails for Markdown on mobile because the backtick is not available on some Android keyboards, and difficult to reach in others. Textile instead, uses the at sign, which is often available on the first page on the second level, or on the second page.

On Android, you can use Hacker’s Keyboard to type backticks. I find it is not a good enough general purpose keyboard, though, especially on phone screens, maybe except those bigger than 6 inches.

Links

This is another feature where Textile is better than Markdown.

[A Markdown link](https://www.example.com)
[Another Markdown link][alias]
[alias]: https://www.example.com
[Yet another Markdown link]
[Yet another Markdown link]: https://www.example.com

"A Textile link":https://www.example.com
"Another Textile link":alias
[alias]https://www.example.com

Textile lacks the links like the last Markdown example, but a Textile link can be typed without changing pages on most mobile keyboards, whereas Markdown links would require changing pages multiple times, or pinpoint jumping around text which is hard to do on most phones.

Images

In Markdown images are links with a ! prepended. In textile they have a different syntax.

![Alt text](markdown.jpg)

!textile.jpg!
!textile.jpg(Alt text)!

In Markdown alt text seems to be obligatory, if it was (is?) not, it’d be possible to type it w/o switching pages on a usual mobile keyboard. In Textile the alt text is optional, but an image link can be typed w/o switching pages with or without it.

In Textile there is easy syntax for linking images to URLs or aligning images (the latter uses less than or greater than characters which require changing pages).

Preformatted text (code blocks)

In Markdown, the standard is to indent the block. A common extension is the «code fence» syntax where, possibly with inspiration from Python, the block is prefixed and postfixed with ``` (triple backticks). Both are difficult or impossible on mobile.

In Textile, you can use <pre> like in HTML, which does require switching pages, but it is easier than Markdown’s, especially for longer blocks. You can also use a bc. or bc.. block (I should admit that I just learned about them).

Block quotes

Block quotes are not very easy in one with regards to another in this comparison, but Markdown is better:

> A Markdown block quote

> > Nested markdown block quote

bq. Textile block quote

bq.. Textile block quote until a different kind block appears

Still a block quote

p. This is a new paragraph that’s not part of the above block quote

IDK if nested block quotes are possible in plain Textile, but it is possible to obtain them with HTML.

Lists

Textile is better because: you can have an unordered lists with * prefix, level indicated with the number of asterisks, and ordered lists with # in the same fashion.

Markdown has three symbols for unordered lists, and unnecessary number based notation for numbered lists.

The asterisk does require switching pages, but pound sign does not. But Markdown numbered lists are a mess.

Hard-wrapped paragraphs

Markdown1 allows hard-wrapped lines in paragraphs, Textile does not. On mobile, one generally does not hard-wrap paragraphs, so they are equal. I’d wish to be able to hard-wrap paragraphs on desktop, though.

Standardisation

Textile is standard, there is one Textile. Markdown has many dialects and flavours and standards. The most basic elements do not vary, like emphasis, links or blockquotes, but other things do vary.

Available syntax

Textile has a richer syntax with many more items available in its standard version:

and many other useful things.

Conclusions

I wanted this to be a quick comparison of what the two, with emphasis on mobile use. I conclude that Textile is better because most common things are more easily typed than they are with Markdown.

There are downsides to Textile: it is way bigger than Markdown, and HTML-centric. It allows specifying classes, IDs, other element properties, and some styling, and that might be undesirable (though Markdown allows HTML snippets which can be used to a similar or identical effect). Textile has fewer implementations.

Markdown, albeit fragmented2, is ubiquitous. Nested blockquotes are a big plus, I personally use them often on online discussion where Markdown is used. There are many extended versions of Markdown, but they are not fully compatible, so different things work in different places. Thus, except what Gruber defines, it’s easier to just use HTML.

For me, I most commonly use links, emphasis, code blocks, inline code spans and blockquotes, when writing comments online on places like Reddit, Tildes, Github etc., and I find that they are easier to type with Textile on mobile. What is a question of style on desktop is a question of ergonomics on mobile, and Textile wins for most of the more common tasks.

IDK if it is possible to provoke or promote a shift towards Textile, and I am not sure if it is as big an issue to bother that sort of ‘geektivism’, but I’d fancy if I at least had the option to use Textile. That Markdown is a widely available format is good, and that something replaced JS rich text editors is great, but that we’re stuck with Markdown3 without any alternative on most online platforms is sad.

Addenda

Addendum for Emacs users

You can use the following function to copy the region into the clipboard with four spaces prepended to each line, to easily paste code snippets into Markdown documents (or posts on Reddit etc.):

(defun gk-copy-as-markdown-code-snippet (beg end)
  "Copy region, prepend four spaces to every line."
  (interactive "r")
  (let ((snip (buffer-substring beg end)))
    (with-temp-buffer
      (insert snip)
      (goto-char (point-min))
      (while (re-search-forward "^" nil t)
        (replace-match "    "))
      (clipboard-kill-ring-save (point-min) (point-max)))))

If the triple backticks syntax was standard, this wouldn’t really be needed, but it is not; the safe bet is to indent. And Reddit, famously, lacks the «code fences».

Addendum for iOS users

I’ve found this keyboard for iOS that can help type markdown in any application. I haven’t found a similar solution for Android users. Many applications that use Markdown have some functionality to help type Markdown.


Footnotes

1 i.e. most flavours.

2 There is the CommonMark effort, but it did not start early enough.

3 Again something sub-par that we’re probably stuck with for the ages to come, just like JavaScript, and again on the WWW. Is it maybe a coincidence that WWW has been a source of lots of bad, not-well-thought-out tech?