What is Markdown?

Markdown is a simplified language for creating HTML (Hypertext Markup Language) - the language used for creating Web pages on the World-Wide Web. Markdown was created by John Gruber in collaboration with Aaron Swartz and others.

The Markdown language was designed to be very readable and basically publishable as a text document. It is also the language I am using to write articles for this blog, in fact, since Pelican supports Markdown for creating articles.

As John Gruber notes, Markdown also refers to the tool created in Perl to generate HTML from the Markdown language.

While I am not an expert on Markdown in any sense, it is worth noting that there are a few variations of Markdown on the web since the language itself was a bit vague in how it was specified. Further, I suspect the variations also came from people who wanted to extend the language, like GitHub.

Useful References

Here is a brief list of useful references on Markdown:

  1. DaringFireball's Markdown Syntax
  2. Adam Pritchard's Markdown Cheatsheet
  3. CommonMark's 60-Second Tutorial
  4. CommonMark's 10-Minute Interactive Tutorial
  5. Learn Markdown on Gitbook.com
  6. Ghost's Support for Markdown

Useful Software

Markdown is supported by a lot of different editors, including a few that provide a nice live preview of what the resulting HTML web page will look like. Here are a few I have tried, but this is far from an extensive list:

  1. Emacs: There is also a Pelican minor mode that works with the Jason Blevin's Markdown mode and other major modes. This is generally what I have been using for the articles on graham.org. The fact that Emacs has so many other facilities is very handy, including a spell checker and a few ways to preview the text.
  2. ReText: I am actually editing this article using ReText and I am pretty pleased with how well it works. The live preview mode is very nice and it also has built-in spell-check support. I am using it under Fedora Linux and it is available as the retext package.
  3. Visual Studio Code: I have tried this out and it was reasonable. Of course, VS Code is cross-platform and extensible and supports Markdown.

Many other editors, of course, support Markdown (vim, Sublime Text, etc.), but I haven't used those yet.

I have also used Markdown with the following Web software:

  1. Ghost: I taught some Boy Scouts about blogging and came across Ghost as an excellent way to teach them the principles without all of the details about how to run a web server. Ghost has a nice intuitive Markdown editor with a live preview feature. To allow the Scouts to use the software without putting up a server on the open Web, I installed it on a local computer and added accounts for them using an off-line method similar to what is described on www.paradiso.cc. As I remember, I had to update the schema a little to make it work. In fact, it was almost easier to use DB Browser for SQLite to modify the Ghost SQLite database to add the users.
  2. Pelican: As noted above, I use Pelican and Markdown to develop this site. In addition to Markdown, Pelican supports reStructuredText and AsciiDoc as markup languages for building articles, pages, etc. Pelican requires a little metadata to be placed at the beginning of each page's or article's file so that the site generator can do the right things, but, otherwise, the rest of the file can be in Markdown (or some other supported markup language). Pelican has been very nice so far and definitely beats having a full-blown Content Management System (CMS) for a simple Web site as graham.org. Check out my post on transitioning to Pelican for more information.

Of course, many Web software packages support Markdown, but these are the ones I have used the most recently.