Writing for the web & the Community Beta
I want to talk to you guys about writing, specifically about Markdown. If you're familiar with Markdown, BBCode, Textile, WikiCode, or other methods of writing for the web, I want you to be a part of this discussion.
Our goal with the community beta is to make the best use of your time as a contributor and as a reader of content about League of Legends. Writing is core to that goal. We need to have a great platform for writing to have fruitful discussions that are worth reading. Only join in if you're OK with a wall of text: I write a lot, but I try to make every word count.
What is Markdown?
Markdown is a minimal syntax designed to make writing for the web easy-to-read and easy-to-write. If you write in block paragraphs and use stars for emphasis, you're already writing in Markdown. The result is that most people can read and write Markdown without a lot of upfront learning. I'll go into some syntax examples, but if you're interested in details, check out the official Markdown spec at Daring Fireball. That's also a slight tease of the syntax style, since we don't support in-line links at the moment. We might in the future, in which case this sentence won't make sense.
By the way, all this exposed Markdown is 100% on purpose. I just think it's beautiful.
Where I'm coming from
I'll put my cards on the table: I'm a huge Markdown fanboy.1 Virtually everything I write starts in Markdown, regardless of where it ends up: an email, a guide, an announcement, a presentation, whatever. Lots of other smart people have written about why they like Markdown, so I'll steal the list from Brett Terpstra's two-minute Markdown explanation. Brett captures my feelings exactly:
It’s easy: the syntax is so simple you can barely call it “syntax.” If you can use an emoticon, you can write Markdown.
It’s fast: the simple formatting saves a significant amount of time over hand-crafted HTML tags, and is often faster than using a word processor or WYSIWYG editor. It speeds up the workflows of writers of all ilk, from bloggers to novelists. It’s clean: Markdown translates quickly to perfectly-formed HTML. No missing closing tags, no improperly nested tags, no blocks left without containers. You also get 100% less cruft than exporting HTML from Microsoft Word. There’s no styling inline, nothing that will otherwise break a site’s design or mess with the XSLT formatting for PDF output. In short, it’s foolproof. It’s portable: your documents are cross-platform by nature. You can edit them in any text-capable application on any operating system. Transporting files requires no zipping or archiving, and the filesize is as small as it can possibly get. It’s flexible: output your documents to a wide array of formats. Convert to HTML for posting on the web, rich text for sending emails or importing into a layout program for final arrangement or any number of other proprietary formats. It fits any workflow: You can make Markdown work with any workflow. It can speed up just about any writing-related process with very little setup. It can also be scripted all to hell, if you want, because plain text is the most flexible of any format known to computer-kind.
So that's me. I <3 Markdown. I could talk your ear off about email, document, and presentation workflows, but for now, I want to talk with you guys just about writing for discussions on the web, and specifically contributing to discussions on Community Beta.
Markdown and BBCode
Markdown started small and has expanded a lot beyond its roots as a way to write human-writeable and human-readable words bound for HTML, especially in the realm of web-based discussion. Some notable sites that use Markdown for discussion are:
- GitHub
- Diaspora
- Stack Overflow
- OpenStreetMap
- SourceForge
BBCode has also had a big presence in online discussions, especially around games. Markdown and BBCode are siblings in the world of web-writing: they're both trying to making writing for the web easier. However, they have very different approaches to that task.
BBCode was introduced in 1998 as a way of adding simple markup to message-board-style discussion. Where Markdown tries to keep its syntax minimal to optimize readability, BBCode isn't shy about its markup. It mimics HTML/XML in its use of tags to denote formatting, and as a result, both BBCode and HTML suffer from a similar problem: you have to really learn BBCode to both read and write it. The result can be difficult to parse, even with knowledge of the syntax.
You guys have all already absorbed that knowledge and you probably don't even remember doing it, so BBCode reads and writes really easily to you. But I'd challenge you that it's worth considering Markdown as a replacement. Let's get super geeky for a second and dive deep into an example to look at how Markdown differs from BBCode. First, here's some HTML.
Certainly readable, but there's lots of extraneous stuff. Each paragraph needs 7 characters just to exist as a separate entity. Both blockquotes and lists need opening and closing tags to indicate them, and lists are anything but natural to type out. Links are the worst. To type a link, you have to type 15 characters, not includuing the URL. Writing the above in BBCode is a lot easier, but you can still see remnants of HTML's influence:
Still readable, and certainly more readable than the HTML, so that's a plus. Syntax character count is also down across the board, but it's still pretty high. Creating the link now takes 12 characters instead of 15. Character count for lists is also down, but it still takes 3 for a single list item as well as open and closing [list] tags.
This is the same text in Markdown:
First-level heading is a single character with an optional closing character. (I use the closing character because I think it looks nicer.) The leading space is also optional. Italics and bold are 2 or 4 characters respectively, 3-5 characters shorter than BBCode. Lists and links are elegant and simple. A list is just a series of items that start with a dash and end with a carriage return, and you can use a star if you like that better: only two characters if you count the space. Links are easy and still highly readable: two sets of opening and closing brackets for a total of 4 characters, down from BBCode's 12. Counting only syntax markup for each example, Markdown requires 68% fewer characters to produce the same formatting as BBCode.
68% fewer characters.
In my opinion, Markdown clearly comes out ahead in readability and elegance.
Tradeoffs
You do lose some things switching to Markdown, but I'd argue that it's a net gain in favor of clarity. Many of you who weren't already familiar with Markdown were probably perplexed that a single line-return doesn't create a new line2 or that you don't have as much control over things like indentation, text alignment, etc.3 That's part of what I want to dig in with you guys.
With Markdown, increased clarity comes with trade-offs. For example, if you have a lot of items with single-line returns, Markdown forces you to consider what you're really trying to convey with your text and apply the right formatting for the job. Let's look at some examples:
- If it's a list, it would be a ton easier to read if you formatted it as a bulletted list.
- If it's poetry or a medium that has specific line-breaks, Markdown still has you covered: you can add two spaces at the end of a line to force a hard return. Looks good to the reader and isn't a lot of extra effort for the writer.
- If you've got a bunch of paragraphs only separated by a single line return, I bet we can all agree it's hard to read a wall of text with no line breaks. Consider two line returns to give your audience a breather. Plus, you get the benefit of proper web-styling: we now know that you're using paragraphs, and we can style them appropriately.
All of these are slight inconveniences compared to BBCode that nets a ton of clarity for both writers and readers, in my opinion.
Riot-flavored Markdown
But some trade-offs may not be worth it, or maybe there are features that you guys absolutely need in your writing that we haven't provided yet, and that's what I'd really like to dig into with you guys. We want to figure out what Riot's flavor of Markdown is, and we need your help to do it. I've already used a bunch of Markdown and MultiMarkdown formatting, like inline- and reference-style links and footnotes respectively, that we don't support today. Maybe we should. Or maybe we should add tables. Or wiki-like links to champion or item stats. We can do a lot, but we can only set our priorities and make good decisions decisions based on your feedback. Remember our goal: to make the best use of your time as a contributor and as a reader of content about League of Legends. With every decision, we're always shooting for that star on the horizon.
So talk to me about your use of Markdown, coming from a world filled with BBCode. What do you love about it? Where are your frustrations? Where are Markdown's trade-offs unreasonable? What would you like to see? What do you absolutely need? This is the place to talk about it, so go ahead, post away.
Edit: Cleaned up a few reference-style links now that in-line linking is available.
Footnotes
-
I mean, look at these footnotes. That's not even Markdown proper. It's MultiMarkdown, which is a user-created superset of Markdown. I know, I'm a lost cause. ↩
-
We've implemented a strict interpretation of the original spec on Daring Fireball. Not everybody does it this way. GitHub, as an example, respects all carriage-returns as a <br /> tag in output. I've had lots of discussions with Krylhos about this. They get heated sometimes. Yes, heated discussions about carriage-returns. I direct your attention to the above footnote. ↩
-
We haven't implemented all of Markdown yet, so there are some gaps. As an example, full Markdown allows HTML inside properly-formatted Markdown, and it'll interpret it as is, so a lot of these issues are very solveable in the standard Markdown spec. Naturally, we have some security concerns about allowing arbitrary HTML, but allowing some HTML is not totally off the table or figuring out other ways to get around it. MultiMarkdown adds Markdown syntax for tables, as an example. ↩