The Future of Markdown
codinghorror.com
codinghorror.com
Nobody should be using the original script, and unfortunately many of the other implementations out there are direct transliterations that replicate all of its absurd errors, like where if you mention the MD5 hash of another token in the document, the hash will be replaced with the token, because it uses that as an inline escaping mechanism! Reddit got hit with a XSS virus that got through their filters because of it: http://blog.reddit.com/2009/09/we-had-some-bugs-and-it-hurt-...
See the changelog for what started as a PHP transliteration and turned into a rewrite that squashed 125 (!) unacknowledged bugs: http://michelf.com/projects/php-markdown/
The worst part is that he outright refuses to either disclaim or fix his implementation, and so far he's repudiated everyone else's attempts to do so. He's a terrible programmer and a worse maintainer, he really still thinks the documentation on his site is comprehensive and canonical. As much as Jeff Atwood leaps at every chance to play the fool, there's no way his directorship can be anything but an improvement.
Like other responders, I worry that this mentality causes fewer coders to release their projects, for fear of backlash like this post. Think about it: Your feelings toward Gruber are incredibly negative and hostile, and in fact, you would have better feelings toward him if he had kept Markdown to himself and never released it at all. Does that seem fair to you? If the ill will generated by people like yourself outweighs the good will generated by those who appreciate the code I release, or if I fear that it might, what motivation do I have to release my code?
It’s that he thinks the best option is to do nothing. He claims the title of BDFL without playing the role.
See his first reply to the Markdown mailing list in nearly three years: http://six.pairlist.net/pipermail/markdown-discuss/2012-Octo...
He enjoys the credit for being the creator of something used by millions every day, but is entirely unwilling to take the responsibility that comes with that creation being a very public mess.
It works for his usage, but all the ambiguities and undefined behaviors affect a huge number of people, and his only response he's made for eight years has been to retain sole moral authority and refuse to use it.
You gain moral authority by actually doing something. If you use markdown, and wish to propose a better markdown than markdown, go for it, I'm sure lots of people will be pleased, but bear in mind that lots of people will whine about any bugs as well, and expect you to work for them for free and spend significant resources and time fixing edge cases which don't matter to you personally, just because you released the source.
If you're ready for that though, of course go ahead and create a better markdown, or help with this proposed spec, Gruber certainly can't stop you. It doesn't really matter what Gruber says, what trolls on a mailing list say, or what you say on this forum about his responsibilities, whether he is self-appointed dictator for life etc (though I'd dispute that), what counts is putting the work in, which is often surprisingly difficult - far more difficult than criticism.
Right now, the canonical markdown implementation isn't very good. It's hard to change what the canonical implementation is without Gruber's support. It doesn't even require much from him - just his blessing.
He isn't under any obligation to do this. No-one thinks he is. But it would be a good thing for him to do.
If someone wants to write a spec, a better parser or a better markdown full stop, there is absolutely nothing to stop them. The problem is, people would rather bitch about why no one else is doing anything and complain about gruber than actually do the hard work necessary. Do the work first, then look to gruber for canonization if you must, though by that point his views on the matter would be irrelevant.
If the exploits are as well-known as the grandparent comment asserts, and Gruber is aware of them, there really is no excuse for him to leave the code up without any warning that it contains known exploits. However, if he has no idea and everyone is assuming he knows without someone telling him, that's not exactly fair.
He wrote a text-to-HTML parser with a particularly elegant little language design and got on with his life, which involves writing more than keeping up with bug reports in Perl scripts. Get over yourself; comments like this make us all look bad.
unfortunately many of the other implementations out there are direct transliterations that replicate all of its absurd errors
he outright refuses to either disclaim or fix his implementation
This is important to know if you are interested in Markdown.
Personally, I encountered edge cases almost as soon as I started using it.
We all write code with bugs and flaws and we sometimes release it online.
'Fix or deprecate' is not an unrealistic obligation on a technology journalist with a public persona and a large readership.
I believe markdown.pl is being blamed for over 100 bugs. Not just security flaws.
> I suppose the memory corruption bugs in the "optimized" C Markdown parsers are somehow his fault too?
Strawman, you're better than that.
> He wrote a text-to-HTML parser with a particularly elegant little language design and got on with his life
And he did a horrible job of it. Horrible. But he considers himself the BDFL of Markdown. Break that down for me.
> which involves writing more than keeping up with bug reports in Perl scripts
He clearly can't keep up with any bug reports, so it's good his life is more broad than bug reports.
> Get over yourself; comments like this make us all look bad.
No, comments like this make us look like we have higher expectations than "it worked on my machine, suck a dick!"
Christ, you're being a dick. All John Gruber did to you was design a minimalist markup language and write a quick-and-dirty proof-of-concept Perl script to implement it. Just use a better implementation and get on with your day.
No you don't, that's insane.
People like Gruber, with an audience, a following, should set an example. If his code has bugs and he is informed of those bugs, he should take a few minutes to list those bugs. He doesn't have to solve them. He doesn't even have to point people elsewhere. Just listing them is enough and saves a lot of people a lot of time. If you can't be bothered to do that, please take your code down: it is nothing but pollution, keeping us from finding the better code.
Well he needs to be something other than a pathetic apple fanboy! :D
I think there's something to your post, but the tone makes me want to dismiss it. I know, stupid emotions.
This internet lynch mob mentality... I wonder how much this discourages people from releasing things. So, Gruber releases markdown.pl. People like it. People love it. People use it, people reuse it, people rewrite it. Next think you know, he's being insulted on the internet because he released something he wrote to serve his needs and not passing on some sort of figurative mantle or blessing.
Oh please, double standards like this disgust me. Microsoft had shit slung at it for years on end by the tech community because IE was terrible and held back innovation on the web, but no one claimed that IE is "not so terrible" just because everyone cared about it.
The difference with Gruber is that he's a darling of the tech community because he's Apple-anointed nobility. But as a programmer, in my eyes (and in the eyes of any other objective observers) he's absolute shit.
I didn't care that IE was terrible (until v3 or whenever), I cared that Microsoft went to all the major PC manufacturers and told them that their licensing deals were toast if they preloaded Netscape.
I didn't care that Word was a crappy word processor, I cared that they used their market position on office documents to make minor incompatibilities that prevented WordPerfect from interoperating.
I didn't care that Windows file sharing wasn't half as good as NFS, I care that they continually fucked with the SMB protocol so that no one could sell UNIX machines that could share with Windows networks.
It has been an absolute pleasure watching that Microsoft's power over device makers disappear. The world is better off for it, and Microsoft will always be an asshole in my book.
Abandoning basic etiquette that you should have learned in primary school and calling someone "absolute shit" is not cool.
Over those years it's grown in usage exponentially, and so has his fame as a sportswriter for team Apple. Throughout that period he's continued to brush off all kinds of attempts to clean up bugs, define ambiguous behavior, or fix the security vulnerabilities. It hasn't mattered what approach people have taken, he just does not give a shit. Here's an example from last week: http://six.pairlist.net/pipermail/markdown-discuss/2012-Octo...
He's spent so long burning off any goodwill I would have for him on the matter, being cordial just isn't a priority anymore. NERD RAGE.
You're right: he just does not give a shit. I can see why. What possible upside could there be to engaging with someone who handles themselves like you are here?
Imagine that you're a mechanic working on a motor that uses the ProprietaryNew fastener (hex heads? so 20th century!). Unfortunately, the only ProprietaryNew wrenches are made out of cheap metal, and the sockets strip with regularity. You can't imagine saying a few nasty words about the parentage of everyone in ProprietaryNewCo?
From a comment on Twitter yesterday in response to someone, it doesn't seem that Gruber is particularly interested in engaging with this (though I may be wrong). If that is the case I suspect we'll see a forking of the project and we'll get to see whether a committee will do better.
It may well do - Jeff has a good track record at getting things done and is well respected and well liked - but personally I wouldn't put my mortgage on it because as well intentioned as these things are we all know how design by committee usually turns out.
Care to show us your alternative? It'll be on Github or GoogleCode, or maybe your personal blog, somewhere we can download it, try it out, and criticize it too, right?
Surely 8 years of rage is enough encouragement to write your own replacement for ~1000 odd lines of Perl?
Or by "enraged", did you mean "annoyed enough to write critical posts on random internet sites, but not motivated enough to spend an evening or two solving the problem myself"?
"NERD RAGE" indeed…
The real problem cannot be solved without some forward action on his part. He has refused over and over again.
Sure it can - you write something better, then get everybody who's already using Gruber's version or one of it's presumably also-flawed reimplementations to switch to yours. Or, is "8 years of enragement" really just keyboard-warrior-hyperbole on your part and an excuse to criticize someone who's achieved widespread adoption of some code you claim is 2nd rate, but which haven't bothered to improve or replace?
Besides, it sounds to me like David Greenspan has come up with a fine solution.
Being great at designing a format and writing code are two different things: one can be great at once while being terrible at the other.
It is a great format.
The original parser (and specification) has serious problems.
At some point there's no constructive criticism left to give.
His program is bad and he should feel bad
The dude released a script to the public under a free software license and people used it. If you think it's bad, fork it and fix it, otherwise don't use it, that's how the open source ecosystem works.
He just needs to add a sentence or two to his website and he'll save countless developers a ton of headache. He just doesn't give a shit.
It's pathetic.
Your project can cost people a lot of time if it promises, but doesn't deliver. I just spent quite some time searching for a decent XSD parser in Ruby, haveing to wade through a score of projects that promise to do what I want, but turn out to be incomplete, buggy or otherwise useless to me. Many people will perform the same quest and together a lot of time is wasted, which could have been prevented if people would not just publish any damned thing, but would also take the time to properly document its state.
Open source projects without proper documentation, I can do without. This problem will only become worse in decades to come. I sure as hell hope github will start purging old projects with too many 'not useful' votes within the next few years. Otherwise it'll be a morass of stink where the gems can no longer be found.
You may want to look into seL4. (If you consider formal verification to be perfection, that is.)
You know what programmers think because of such comments? "My code is so bad I can't release it. Even if the idea is good." And this Sir helps no-one.
Stop this shit.
I agree. This has even stopped me from __starting__ a few FOSS projects I've wanted to develop.
Stay classy.
Perl makes it look small, if you have to write something like this in Java or Python, multiply the LOC by at least 20. But I assure it will be higher.
So - no, bullshit, you need to multiply by 2 at most in case of Python :)
This comes (including blank lines, comments & POD) to 1739 loc - https://metacpan.org/source/BOBTFISH/Text-Markdown-1.000031/...
The point here is that Markdown doesn't have a spec, nor do any of its variants to my knowledge, so I was proposing to come up with some Markdown-like language that does have a spec. Under discussion here is the more ambitious (but also appealing) plan of writing an official spec for Markdown, the same way JavaScript got a spec in the form of ECMAScript that we now identify with JavaScript itself.
A spec is a long, tedious, human-readable document that explains the behavior of a system in unambiguous terms. Specs are important because they allow us to reason about a language like Markdown without reference to any particular implementation, and they allow people to write implementations (Markdown processors) independently that behave identically. The Markdown Syntax Documentation is not a spec (it's highly ambiguous), nor is any implementation (not human-readable; some behaviors are probably accidental or incidental and difficult to port perfectly). The hard part of writing a spec is codifying the details in English, and secondarily making decisions about what should happen in otherwise ambiguous or undefined cases.
My motivation for working on a Markdown spec is first and foremost avoiding "bit rot" of content, which happens when we write content against one Markdown implementation and then later process it with another. We don't have this concern with HTML, JSON, or JavaScript, or at least we know what bounds to stay within to write code that will work on any implementation. This is achieved through specs, even if only implementers ever read them.
I would love pointers to Markdown processors that are implemented in a more principled way than the original code, for example using standard-looking lexing and parsing passes, but that still handle nested blockquotes and bullet lists together with hard-wrapped paragraphs.
With a conformance test people can test their implementations and when ambiguities arrise new tests can be added or old tests fixed. Without, conformance tests different interpretations of a spec lead to divergent behavior. Once that behavior is out there long enough it becomes difficult to fix as people are depended on it and/or its quirks.
I work on the WebGL spec and tests based off the OpenGL ES spec and tests. Even though the OpenGL ES spec is long and detailed, every edge case for which there is no test is broken or different in one driver or another.
(You could also fix some of the more egregious bugs, and then expect implementations to follow your new behaviour)
I agree, but the article mentions tests prominently. They didn't miss that out.
https://github.com/bergie/to-markdown/blob/master/test/tests...
https://metacpan.org/source/BOBTFISH/Text-Markdown-1.000031/...
I think you mean either:
> Without conformance tests incorrect interpretations of a spec lead to divergent behavior
Or
> Without conformance tests different interpretations of an ambiguous spec lead to divergent behavior.
Conformance tests should test specific behavior defined in the spec. Tests will never (or rarely) prove spec conformance but spec conformance should always prove test conformance.
It's not just a markdown->everything converter, though. My install understands these:
Input formats: native, json, markdown, markdown+lhs, rst, rst+lhs, textile, html, latex, latex+lhs
Output formats: native, json, html, html5, html+lhs, html5+lhs, s5, slidy, dzslides, docbook, opendocument, latex, latex+lhs, beamer, beamer+lhs, context, texinfo, man, markdown, markdown+lhs, plain, rst, rst+lhs, mediawiki, textile, rtf, org, asciidoc, odt, docx, epub
Also, it needs to be mentioned that Pandoc supports its own set of (IMO) sensible extensions / defaults to Gruber markdown [1].
[1] http://johnmacfarlane.net/pandoc/README.html#pandocs-markdow...
From the link, scroll down to 'Pandoc’s Markdown' about a third of the way down the page for all the details. http://johnmacfarlane.net/pandoc/README.html
I'd also like to note that some parts of Markdown from the user perspective are non-intuitive and clumsy.
Such as links and images (inline).
Markdown works so well because it is intuitive and appeals to those who once saw old word processors. They don't have to worry about syntax, and can just enter their text into a textarea (free from JavaScript WYSIWYG interference and the inherent troubles of running that on old and new mobile phones, their playstation, web browsers, etc)... and it just works.
Yet some parts of markdown are simply not intuitive. Links and images are two places where I see in usability testing that the end user will constantly refer to help documentation to figure out how to do it.
Beyond getting the code consistent, maintainable, and testable I'd love to see the language itself solve some of the papercuts that trouble the lay end user.
Realising that what I was planning to do for my project (discussion forums, tumblr for forums) was to create an alternative to markdown that would resolve some of these user issues as well as parser issues, I had already decided that I would not call it markdown and that I would educate my users in something new that hopefully solves their and my needs and would remain very stable due to a well-thought out and documented design in the first place. If what you're proposing is in this vein then consider my hat thrown in, what help I can give I will... take me to your git repository.
Remember that Daring Fireball does not have comments, so this isn't a concern. Markdown was something originally created to solve an authorial problem, not something for forum creators to use for comments.
It's flexible enough to do that, but it isn't the purpose of Markdown.
Not saying any one implementation is perfect, just that they have these nice properties.
(this) looks like something you'd whisper off to the side --- to add to the conversation. For example, "That picture is nice (but it needs more trees).".
So links go like: [this is the thing you click](and btw, this is where it leads).
It's 2012 and we have HTML 5 compliant WYSIWYG text editors. We no longer have to write plain text littered with special codes, for the purpose of running through a parser, to produce HTML which looks nice on a web page. Maybe it made sense a decade ago when web forms had terrible editors, but not anymore. I think Joe Internet writing blog posts and forum replies would agree with me.
For developers, a README file in plain text looks great everywhere, and avoids any Github vs Bitbucket vs Assembla display issues. If you need to write structured documentation for a system, there's probably already a designated markup language you're supposed to use, so Markdown doesn't help there.
Markdown just works and always produces clean, easy to style code.
My blog is just a directory of Markdown files that get compiled into HTML files. No cumbersome WordPress or other blog software installation I need to maintain, just copy the HTML to the server. Simple.
Same thing with documentation. Write once, from anywhere, output clean code to multiple formats: HTML, LaTeX (and PDF, DVI, etc. from there). No need to worry about making sure complex documentation toolchains are installed, just a Markdown compiler. A huge advantage of Markdown is that the source is as readable as the output. JavaDoc, for example, sucks in this regard if you try to do any formatting (lists, tables, etc.). If I am reading the source code--and I prefer to read the source if I can--then the javadoc is often useless for complex functions where it is most needed, because the HTML formatting is unreadable. I am actually building my own documentation system because of this (see https://github.com/jdbernard/jlp if you are interested).
I understand the question and wonder why it attracted down-votes. The executive summary of my answer: light markup is used in places other than text areas on Web sites.
Many of us use Markdown to keep formatted text in, and, ultimately, to generate valid html markup from. Markdown is not just for textareas in Web pages. Whole books have been marked up in markdown.
Markdown files are just text files with 'explicit' markup within them and so will always be accessible/editable/processable in the future. Markdown is 'flexible' in the sense that it allows alternative markup for the same output, and is 'light' in the sense that a limited range of styling and block formats are available. Compare that with LaTeX which shifts with each tex-live release, and which means that markup written some years ago may not format without hand editing on a modern LaTeX release.
There is the reference implementation available from Gruber's site, and, as others have mentioned, pandoc implements markdown in a way that can be extended. I'm dubious of the need for an 'official' specification; I rather like the scrappy streetwise nature of Markdown.
What? Certainly details of individual packages may change, including addition or removal of functionality, over time, but I don't even know what it means to say that "LaTeX shifts". The underlying markup language for LaTeX, which is the same as that for TeX, is very flexible, but has had the same flexibility since at least 1982, if not 1978.
I understand the idea that built-in extensibility leaves a platform, to some extent, to blame for its plug-ins; but many people in this discussion have proposed building some sort of plug-in architecture for Markdown, too.
Why don't we start with something like a visual HTML or DocBook editor, and then apply parsers to generate plain text, PDFs, etc?
Is it because we as programmers live in a plain text environment and are happy with the status quo, or is it because the tools aren't good enough?
For techie types it is familiarity: as a programmer I've used mark-down style syntax in code comments (and emails back when plain text was the norm) for years so it feels natural. I can type and edit text with mark-down faster then with full WYSIWYG control (even if the editor has good keyboard shortcuts). Also I can use the same text+markdown in code, emails and documentation that is desired to look a little fancier - I don't need to reformat for a second audience. Markdown isn't perfect, but for me it is a better solution for some things than WYSIWYG.
Simplicity and resulting cleanliness of mark-up can be an issue sometimes. I've seen WYSIWYG editors get tied in knots over bad HTML that they generated themselves.
Simplicity is another bonus for sites taking in user content, particularly sites like the StackExchange family. By effectively having a while-list of formatting options you can keep a consistent look on your site more easily. If you aren't sure what problem this solves, think Geocities.
It makes security a little easier to: you don't have to worry so much about potential injection attacks that are very possible if trying to generate/accept full HTML and filter it for the bad stuff afterwards (you still have to be careful to think about these issues of course, but your available attack surface is much smaller and therefore easier to manage).
> Github vs Bitbucket vs Assembla display issues
This is the very problem that people are actually discussing - competing interpretations make mark-down less useful then it could otherwise be, and a global standard might help that issue if it gets widely adopted. Of course many incompatible interpretations already exist and any new standard will face adoption friction, so we may end up in a situation like parodied in http://xkcd.com/927/ (it worked well enough for Javascript in the long run, but I think there were fewer common and slightly incompatible implementations of that at the time than there are of markdown now).
When users copy/paste from MS Word into HTML editors the paste often keeps the font from the Word document which is not the proper font for the html page. That results in a messy page layout.
In my experience it's easier for users to understand Markdown syntax than to understand the "hidden codes" in HTML editors when they want to fix the layout.
This is extremely important for writing and also for fall back purposes. Any time there is any kind of a problem in writing or reading or interpreting, just fall back to source.
People can say html is human readable but the difference is huge. I didn't even know that markdown is parsed on hacker news, I just used stars as underscores as natural formatting.
There's also potentially much much less overhead. Ultimately, browsers and your cell phone apps etc should just format markdown natively, meaning huge performance boosts, as html, css, js etc has just become so complex for many tasks as a consequence of do-everything.
My phone's email client struggles browsing back and forth of what should be just a few small text files and file attachments. It uses way too many cycles since it's also a jpeg and css and js renderer with scaling and everything. As someone who's used text email and news groups, lightweight formatting is very natural and informative. Those services would not have been possible in the past if they had been bogged down with large amounts of excess complexity.
I guess reducing overhead is not sexy because it doesn't involve new features. In the future everybody will just create their typed static oneliner email as 10000x10000x10000 pixel 100 fps 3D movies of 2 minute length (you see, that's the time it takes to read it), and if some supposedly slightly technically literate person asks that perhaps they should use a word 2020 .doc instead for reduced file size, the answer is "but you can't do a space station flythrough in it".
Personally, I don't trust or use (if I can avoid it) any on-the-web WYSIWYG text editor, because a) they tend to be slow and clunky and b) it's difficult to predict what HTML they will turn out a lot of the time, and I will often end up needing to edit that HTML.
Also, for common blogging / commenting tasks, Markdown is as fast or faster to use than WYSIWYG editors. I've been faffing around with a forum that won't let me use Markdown recently, and forces me to use its clunky WYSIWYG editor to add lists into my posts. It didn't take long for me to start yearning for the simplicity of linebreak - asterisk - item rather than a multiple-click WYSIWYG process.
YMMV, but I've never been fond of WYSIWYG editors. I'd rather say what I mean, instead of say what this other guy thinks I mean.
Markdown and similar formats can also easily be used to produce other output than HTML.
And Markdown is plain text, and that's another appealing factor: Even if you read it somewhere that won't render the Markdown, it is still readable. The same can't be said about HTML.
I love the ability to scratch something down in Markdown really quickly, and being able to convert it to LaTeX if I want to, without any hassle.
I'd love to write blog posts in Markdown. Google+ uses the italic and _bold_ syntax in their own posts, which is very useful.
I don't exactly know why it's better, to be honest. Maybe WYSIWYG editors are inherently dependant on their own implementations and rely on people learning the interface.
Text-As-An-Interface is beautiful in it's simplicity. Markdown is the perfect mix of simple markup without the insanity of BBCode.
2. It sounds like you are only concerned in producing HTML. I like using markdown for everything. Using the excellent Pandoc I produce both HTML and pretty PDFs from markdown text, with nice looking formulas too. (PDFs are produce through LaTeX, for HTML Pandoc offers several options, I use MathJax).
Pandoc looks great. So why not write in HTML or Docbook and then convert to plain text / RTF / PDF etc?
I often find myself writing short plain text files, usually quick personal notes. Occasionally they grow larger than what I'd call a "short" plain text file, and at this point two extra requirements pop up:
1) they are going to need some structure.
2) odds are, that I'm going to want to show this document to someone else at some later point in time[1].
Markdown offers (to me) by far the easiest transition from "basic plain text note" to "slightly longer formatted document", because most times, all I have to do is continue writing the way I was doing already.
[1] corollary: as programmers know, when reading their own code, "someone else" also includes you in three months time.
1. You can pry my {Emacs,vim} from my cold, dead hands.
2. Version controlled markdown is much easier to deal with.
I know git can be configured to use an arbritary programme for diff - just not sure where to find one...
Meanwhile, I write the documentation for my software in Markdown, because it is the fastest way for me to get structured text from my mind to my machine. And with the help of pandoc, it's convertible into all other text formats, from HTML to PDF and LaTeX etc. (Although the html-with-images to PDF support of wkhtmltopdf is even better, so it's Markdown => pandoc[for HTML] + wkthmltopdf [for HTML to PDF]).
The main appeal is Markdown lets us write formatted text without ever having to use the mouse or figure out what the current WYSIWYG editor's key commands are. Often times -- like making nested bulleted lists -- there just plain aren't any key commands. I'd much rather type a few square brackets and create a nice hyperlink on the fly than invoke some silly menu, paste in my link in the window that pops up, create the display text, etc etc.
If you exclude HTML tags, Markdown is safe. People can't inject code.
I know this can be done for HTML as well, but it's harder.
Because of the chickenshit way he attempted to escape things by replacing them with their MD5 hashes and then switching them back, you can encode anything you want to be output by the markdown processor. Reddit was owned by a viral XSS comment because of this in 2009, it's been exploited a few other times since.
http://www.f-secure.com/weblog/archives/00001777.html
http://blog.reddit.com/2009/09/we-had-some-bugs-and-it-hurt-...
Neither works very well with version control or scenarios where you need compatibility between different system.
Plain text ALWAYS works.
I haven't looked at the implementations of these, but they are most certainly grammar-based, not regex-based.
Specs like this should be written as executable reference implementations in a well defined programming language. This can very well be human readable, and should be done without regard for efficient execution. It's less ambiguous, amenable to automated conformance testing, and is easier to evolve than a natural language document.
Everything outside that (e.g. timing) would be fair game to optimize. Moreover, as I hinted at, a spec should not be optimized for speed or efficiency, but rather readability and unambiguity.
So you agree it wouldn't work for specs to be "written as executable reference implementations in a well defined programming language"?
> Everything outside that (e.g. timing) would be fair game to optimize.
But sometimes you want to specify performance characteristics.
The simple fact is that without just embedding a traditional spec within it, an implementation cannot tell you what aspects of its behavior are "specified" and which are just implementation details. This makes reference implementations inadequate specifications. That's all I was getting at.
One implementation can never be enough.
What people really want is for all Markdown implementations to be basically the same so they don't have to learn any implementation-specific ideosyncrasies to switch from one to another.
The problem though, as I see it, tends to go away under certain circumstances. And the circumstances, I think, are these:
* If you've got a strong implementation, robust, actively-maintained, and runs fast,
* is easy to obtain, install, and use,
* is well tested and well documented, and
* has just the right blend of sensible additions to the syntax (for example, tables, def lists, LaTeX math, etc.) --- done tastefully,
then folks will just use that, model their own implementations after that, and just overall start considering that to be the standard.
I think this has been slowly and steadily happening with Pandoc.
And, aside from all that, two additional "killer features" that Pandoc seems to have over other implementations:
1. it can convert to/from other doc markup formats, thus making it easy to just convert your existing docs to pandoc-markdown and then use that as your master source format to generate other formats you might need; and
2. with its carefully-chosen set of additional features, it has been slowly proving itself capable of being a replacement for raw LaTeX for certain types of longer technical documents.
My understanding is that there's even some features in the works (for the next release) for converting between markdown dialects --- which would make it even easier to convert markdown files of various flavors into plain standard pandoc-markdown.
So, if you're looking for a standard, I'd suggest that it's for the most part already here. :)
Have a look at Markdent - An event-based Markdown parser toolkit.
https://github.com/hypernumbers/erlmarkdown
No regexps.... except for url's and emails :(
_markdown_version_ Rockdown_1.0
This would allow processor implementers to support more than one markdown version (for a transition period or in general).This is almost what you want:
http://news.ycombinator.com/item?id=555153
EDIT: wrong link :(
Could I soft-wrap in my editor? Sure, but that would mean that the text files sitting on my hard drive now have very long strings in them making it harder to grep, making it harder to add to git (change a single character, entire line is now a diff :-().
I hope that doesn't become the default.
I think this behavior is the better route because it accommodates both crowds. The line-wrap folks can just press enter twice; no biggie. But the console and vim users of the world can continue using line-breaks the way that work best for their environment.
On the flip side, making a single enter start a new paragraph wouldn't really help the GUI users (what's the difference between one line break and two, really?) but it would really hurt the console users of the world
* people typing markdown in text files, where you want to split paragraphs into word-wrapped lines of a sensible length, and consecutive non-blank lines form paragraphs just as they always have in text files;
* and people typing markdown into text entry boxes on web pages, where you would like pressing the <enter> key to actually mean something.
These two situations probably prefer a different default.
This way if the user presses <Enter><Enter> then the JS can remove the extra two spaces and it will still be valid markdown.
Changing this, especially for people who implement Markdown parsers, is geek arrogance.
The biggest deployments of Markdown — StackOverflow & GitHub — do not squash line breaks. They made this decision because authors did not assume their line breaks would be discarded.
The change is not geek arrogance. It is, in fact, a reaction to how Normal People use it.
My wife is not a geek or a programmer. She will, if forced, learn the intricacies of an idiotic programmer‘s decision to make something easier for him (and it’s almost invariably a him) in order to participate in a particular forum. This is why people put up with crap like bbcode every single day. That doesn’t mean she enjoys it.
Markdown works because it makes plain text readable and formatted nicely. Markdown works because it works just as well in a plain text email as it does in an HTML-formatted email.
It doesn’t work because some geek says that the people who use heavily geek-oriented sites (StackOverflow & GitHub, to use your examples) are in fact ”Normal People”. (And, just for what it’s worth, I do find the fact that I have to join all my hard-wrapped lines back together in SO & GH comments to be immensely annoying. At least their markdown parser for .markdown files doesn’t do this.)
So, no I am not flat-out wrong. I hear geek whining that parsing is made harder because of a design feature that is present because most people don't think about or want to think about “correct” line-endings.
Before you decide that I’m full of hot air, understand that I am working with my wife’s novel that’s written in Markdown so that I can parse it (possibly using an existing well-written-and-maintained parser like peg-markdown or peg-multimarkdown as an intermediate mechanism) and then transform it into the LaTeX formatting required for making her PDF output and the HTML formatting required for making her EPUB (and thus MOBI) output.
I am well aware of how ugly some of it is…but it makes it easier for her to write her novel without falling back to proprietary formats like .docx. I’m willing to deal with some pain as an implementor in order to minimize what she has to deal with.
As such, I don’t really have a lot of patience for this type of geek whinging.
It's my suspicion that Markdown was written the way it was solely to handle the case of blockquotes having ">" characters at the start of each line, and the reason that mattered is because BBEdit and Mailsmith had commands to wrap text that way, chiefly for quoting mail messages. This happens to fit in very nicely with the way Vim and Emacs wrap paragraphs, and I know there are people who've written novels in both. But I assure you that the vast majority of fiction writers are used to word processors, and for that matter, so are the vast majority of users typing things into text boxes. And if those users wrote a little poem
That had lines
Which looked like this
And failed to rhyme
Because they weren't really poets
...the chances are they would just hit return at the end of every line, because that is the way every program they have used in their entire lives works. This is why GitHub and StackOverflow made that change: because Markdown is not like HTML to most people. It's like plain text. In plain text, when you press return it means "end of paragraph." The way Markdown does it -- and the way Hacker News does it, I just discovered! -- violates the principle of least surprise. I am not writing HTML, I am writing text, and I expect it to act like text.(For what it's worth, I've written a collection of short stories in Markdown and created the EPUB from that using my own Python scripts to do so. I am an edge case. Anyone who is writing fiction in a text editor instead of a word processor is also an edge case. Sorry, but it's the truth.)
* Normal People have a consistent expectation regarding the behavior of line breaks.
* Normal People are comfortable with markdown in the first place.
Neither you nor your wife are Normal People.
It is a pretty common mistake for new users to make, though most of the time an editor will fix it pretty quickly and the user will learn.
http://stackoverflow.com/editing-help#linebreaks
Notice the requirement for two spaces at the end, ONLY Github doesn't do that.
gqip
?
In other words, let the user type:
[something](http://whatever.com)
or (something)[http://whatever.com]
...and have both work exactly the same.It will save a lot of trouble -- and especially when linking to a Wikipedia page whose URL contains parentheses.
Blah blah blah (side note)[1](http://url1).
Your markdown generator could output <a href="1">side note</a>(http://url1).
or (side note)<a href="http://url1>1</a>.
The latter is current behavior, but your suggestion makes the grammar ambiguous. Most parsers are "greedy", so the former is more likely to be output. Unless you specified more complex behavior, people would have to go back and escape their parens near links.I think your overall point still stands -- there would be ambiguous edge cases -- but if Reddit comments are anything to go by, they really wouldn't be any worse than the current confusion, and making ()[] interchangeable would clear up a lot of the common problems that users have with making links.
Blah blah blah (side note)[1](#ref_1).
Blah blah blah (side note)[1](ref_1.html).
I don't mean to be hostile, but just because something is "doable" doesn't mean it should go in the spec. Adding things to a standard imposes costs that feature-proposers rarely consider. It forces programmers to write more code to support that feature. More code means more bugs. These bugs annoy users and cost valuable programmer time. Multiply these costs by the number of times the standard is implemented and you can easily end up with millions in lost value.Vanilla markdown doesn't require a url parser. It doesn't have ambiguous grammar. It's small. It's simple. And that's a good thing, because markdown parsers have enough bugs in them already.
2. There are a number of people in this thread, and many many many more on Reddit and on other forums that use markdown, that have had a specific UX problem with markdown which we can solve. The solution will not solve all possible problems, but it will solve many of them.
3. I subscribe to the Linus Torvalds camp of software development, which is that software exists to solve user problems.
4. While the trade-off between additional code complexity (and better overall user experience) versus simpler code (and poorer overall user experience) isn't always justified, in this case I think it is. I mean, HN parses URLs for you and makes them clickable -- would you really support removing that as a feature, in favor of having simpler code, and having to copy & paste links into your browser?
5. This particular feature rather nicely lends itself to extensive testing so that you can make sure you've covered most of your edge cases. If we decide not to implement solved, testable features out of fear that some other programmer might not implement it correctly or test it thoroughly enough, then I don't know what to say about our industry other than that it's going to come to a standstill.
I'm afraid that's all the energy I have tonight for arguing about things I don't really have any influence over on HN.
[http://foo.com][text]
[http://foo.com](text)
(http://foo.com)[text]
(http://foo.com)(text)
[text][http://foo.com]
(text)[http://foo.com]
[text](http://foo.com)
(text)(http://foo.com)
I think it might even have accepted {}'s. [something][http://whatever.com]
As far as I know, this should be mostly backwards-compatible with current Markdown.All of those debates about the link syntax is a complete and ridiculous bikeshed. Any solution I read around here above about making it "smarter", "better", or whatever just end up in making it awfully and needlessly more complex and ambiguous, and yet another bikeshedded standard. The way it is currently is totally KISS: [x](y) => link (i.e a href) and [x][k] + [k]: z => resolve k then link to z. Escaping ')' is trivially solved by the second case.
[daringfireball.com]: http://daringfireball.net/projects/markdown/syntax#link
(I'm not saying here that the resulting link anchor text has to be underlined, just that this pseudo-underlining serves as a mnemonic for writers and readers of the raw markup.)
Why get all angry at John Gruber? As many have already noted, he created Markdown for himself and released so that others could use it. AFAIK he didn't put any license/restrictions on it outside of calling himself BDFL. Whatever his skills as a programmer, writer, or his role as Mouthpiece of Apple, the vitriol is unnecessary (but absolutely fanscinating to watch). My panties bunch up naturally, no need to allow my feelings regarding Gruber to bunch them further.
Why get his approval? In the same spirit that Gruber created something for himself, you should just create something for yourself. I find it hard to believe that Gruber was the first person that conceived the idea of user-friendly text-markup. The new standard could just be inspired by Markdown and that would be a win-win: a respectful nod towards Gruber as well as the ability to move towards something 'better'.
Only geeks will complain about whether the successor of Markdown is deployed. Others, the majority of whom user-friendly markup is aimed at, won't care.
If enough people get behind this, it won't matter that Rockdown is a peer to Markdown. With good tools and support, Rockdown has the potential to exceed Markdown, even if it's just providing a better canonical parser and documentation since it's pretty clear from most of these comments that this is where Markdown is lacking.
"But one of the goals of Markdown is to provided easy-to-use markup for text." This is in no way contradictory to the aim. The idea here is to standardize Markdown, not to replace it with XML.
"I think that people will get on board if it provides a clear advantage over Markdown as it exists as well as other markup formats." The clear advantage is that the parser won't have to guess what you meant and thus get it wrong. The clear advantage is that when you enter copy text from Github and paste it in a Reddit comment box it will come out looking the same. The clear advantage is that in ten years there is a flag for "Accept Standard Markdown only/Accept my weird extensions" to establish a baseline. The clear advantage is that your files won't have an expiration date. The clear advantage is that you won't spend months closing tickets and replying to emails entitled "Why is my formatting all fucked up?"
"Only geeks will complain about whether the successor of Markdown is deployed." Yes, and only geeks care about standards, because only geeks understand the immense difficulty that is supporting a family of mutually incompatible formats and protocols and therefore only geeks understand what standards actually do for them. Users may not care, but when shit breaks they have this unpleasant habit of blaming us and our work, and I find it frankly insane that any reasonable programmer could resist an effort to make their life and the lives of their comrades easier, practically for free.
"If enough people get behind this, it won't matter that Rockdown is a peer to Markdown." Have you ever worked with scientists? There is code in my codebase written in Fortran 77—and that code was written two years ago. Not everybody is interested in upgrading on your schedule. In fact, in many places, obeying the standard is the standard practice, and there is absolutely no interest in performing time-consuming comparisons to figure out independently what is technically superior to what or even what the options are. Standards are intrinsically valuable to these organizations, and you will inevitably find yourself tasked with dealing with them. You're essentially saying "Why declare a standard when we can just rely on word of mouth and let people figure it out?"
I hate to impugn a fellow HNer, but I really can't abide this sloppy, half-assed, incomplete thought. This initiative is obviously the right thing to do, or at least try to do. If you disagree, I curse and damn you to ten years of supporting incompatible highly-similar formats, after which I am certain you will see the utter pointlessness of it and the ease with which it can be averted and agree with me.
People don't need to wait for Gruber to make a standard; Gruber doesn't hold enough power to prevent the adoption of a Markdown-like standard. The adoption of the standard will correlate with the value that it brings.
I am not saying the rest of the stuff you think that I am saying; I was just responding to your argument.
This initiative is obviously the right thing to do, or at least try to do.
I completely agree with this statement.Feel free to impugn me. It is your right to; actually, it is your obligation to if the situation calls for it.
If you have not taken a pandoc for a spin I highly recommend you do so soon. In addition to being a great markdown dialect the pandoc tool set is the swiss army knife of text formatting. It is amazing how many formats pandoc can read and/or write.
[1] http://johnmacfarlane.net/pandoc/README.html
EDIT: I spoke too soon, Fiddlosopher continues to impress. I just checked the open issues and a little less than a month ago he added "limited org-table support." Based off of the rest of pandoc "limited" probably means something like 85% to 95% :)
I ended up writing my own in Objective-C. It's not very pretty, and it doesn't use a formal grammar (just a lexer + custom grammar code), but it does the trick. I took a few liberties with the spec: throwing in GitHub-flavored code blocks.
Can you not tile the background on the homepage, though? It looks horrendous at high resolutions and I suspect you didn't mean for it to be that way: http://cl.ly/image/341C0s1s0M03 (Safari 6.0, OS X 10.8.2)
By the way everybody, I'm working on version 2.0 which is just about a million times better than the original. Hit me up if you'd like to get beta builds and a free copy.
The current behavior of Markdown solves this problem very well. I don't want the newlines I enter for non-wrapping editors to remain in the generated HTML.
Perhaps an alternative "profile" could be specified that preserves all line breaks, and sites focused on poetry or song lyrics could use that profile.
Thanks, btw :)
I hate its URL handling.
And of course it needed Sphinx to make it work across more than one source file which means we now have two dialects.
I do wish everyone would just agree on one syntax and be done with it.
All my doc is in Sphinx so I play it safe, and all directives need to be supported in whatever version of docutils and rst2pdf are installed across the various developer machines. So for the moment I am stuck with ascii art.
Plowing through the sources to figure out where that happens... (docutils?).
Any thoughs/pointers would be welcome from a passing reader of this comment...
I cannot understand for what reason MD has become popular, it has an annoying and confusing syntax for half of the things, supports many less things than others and is not stricly better in any way I can think of.
Compared to rst it's a lot easier to write links. I hadn't even heard of textile, but its link syntax also seems harder to write than markdown's. WikiCreole might be better, but right now figuring out what syntax a given wiki will support is far more of a crapshoot than using an arbitrary markdown implementation.
I'm using reST for everything: docs for people (converting them to html and doc before sending), doc-comments in every language I use, be python, T-SQL, java or F#
I don't think it's ideal but it's just works
And then, for the LaTeX that you can't shim in, just have some escape hatch that sends fragments out to a renderer. If I could only have:
* Math mode
* Citations and Bib files
* Labels and References
Then I'd be willing to go through a lot of extra pain to get all the weird tables and precise image placements that are inevitable in a 2-column ACM format.EDIT: Having just investigated Pandoc, which many here are talking about, I realize this might be exactly what I've been looking for :)
rst2latex has worked very well for me. The current version has math mode. I've occasionally had to write some custom LaTeX to get things like natbib to work, but it's largely been problem-free.
If this gains some traction I'm sure I'll be adding support for it at some point.
[1]: a wonderful almost-everything-to-everything text converter http://johnmacfarlane.net/pandoc/
"I'm reminded of the guy who decides that there should be
one standard because there are n divergent implementations.
So he goes and writes his own. Now there are n+1 divergent implementations."
That is probably the most likely outcome, but kudos to Jeff for trying.The idea of Markdown is great, but I found the implementation of links is less than obvious. (haven't tried it in 4 years, so there was probably other issues that I had that I've forgotten)
The problem I inherently always end up having with "parses to HTML" syntax conventions is there are always warts where the syntax is harder to remember than the HTML it is supposed to parse to.
Common Lisp managed to unite several divergent implementations of Lisp (MacLisp, InterLisp, Lisp Machine Lisp, etc.) under a single common specification. This was possible because the Common Lisp standard was not created by some third-party out of dissatisfaction with the other guy's stuff but by significant representatives from all the big camps. The desire was for better interoperability, not imposing ideals on the competition.
I think this effort, if Gruber supports it, is likely to succeed simply by incorporating most of the community. In fact, it could be even easier, because one of the principle motivators for the divergent implementations of Markdown is simply to create concrete specs around a concrete grammar. This doesn't mean there won't be divergences (Scheme, Clojure, OpenLisp, etc.) it just means that those divergences will be principled ("we reject the size", "we desire modern FP techniques") rather than accidental ("we used this regex instead of that to tokenize emphasized text").
I love it because the world needs an easy-for-humans way to format in pure ASCII without any tool. It is much simpler than using even the most well designed GUI. You can even write books with it, and you can focus on content.
But I hate Markdown. I hate it because it is superficially good: a lot of Markdown seems to make sense at a first glance, but if you look at it more closely you see that a lot is broken in its design (IMHO the fact that the reference implementation is broken is the minor of the issues).
It is surely possible to fix it. However it's better to have a broken Markdown now that no markdown at all. The fact that Github and Stack Overflow and Reddit are using it makes it absolutely obvious how useful and great the concept is. The actual design, implementation, and specifications can be fixed now. So kudos to the original inventor, but it needs a second pass from people that can give it a more coherent shape, with clear behavior, minor surprise, and parsing in mind.
For subsequent revisions, it makes far less difference to me what format the text is in.
(edit: for that reason any deficiencies in Markdown don't bother me)
IMHO, pandoc markdown support is the mother of all implement featuring lots of goodies (table and footnote to name 2)
How can this be harder than creating table with Word? Word always gets in the way. Word appears to be easier but down the road, it always end up as a painful process.
For me just the benefit of being mergable and delegating styling at the end of the tool chain is just plain great.
http://johnmacfarlane.net/pandoc/README.html#tables
Edit: rendering issues!
I think I'll just "preprocess" the file, looking for something like !csvtable(filename.csv).
Is this just because it doesn't wrap, and mobile safari doesn't display a scrollbar? (I've never used mobile safari, but I think that's true of the Android browser.)
Quoting with code blocks can be awful, but > is fine even if it's not explicitly formatted.
Pretty sure that's it. OS X (Safari and Chrome, at least) does the same thing unless you have a mouse plugged in. The formatting is such that it doesn't feel like it should scroll, even in the common case of characters being cut in half. Better styling on code blocks would do wonders for this.
Edit: I've wondered whether the original Markdown didn't have underline support because <u> was deprecated/removed from HTML. FWIW, <u> is now back in HTML5.
Really, underlines are a useless decoration. That's why HTML took them out. Not sure why they put them back in...
That's an improper use, you want {COMBINING LOW LINE} U+0332 for that.
> The problem with writing my own Markdown parser in Clojure is that Markdown is not a well-specified language. There is no "official" grammar, just an informal "Here's how it works" description and a really ugly reference implementation in Perl. http://briancarper.net/blog/415/
http://stackoverflow.com/questions/7307480/what-is-the-canon...
Mou + the (built in) Github theme = best Markdown editing experience.
But I have learned to love Markdown too, I hope in the future, distant future: Someone will create a language that integrates HTML and CSS into a nice Markdown-like language.
<!doctype html>
<meta charset=utf-8>
<title>Hello, world</title>
<h1>Hello, world</h1>
<p>This is a paragraph about HTML.
<ul>
<li>Bullet point
<li>Bullet point
</ul>
That's not ugly.Not closing <li> is good, but I'd avoid it for <p>.
There are many questions — "What is Markdown?", for starters — that feel unaddressed by the mark. Instead, we get the brute force approach: splitting up the word into smaller word parts, which is what you do with a word if you don't know what it means, or you have to gesture it in Charades.
Rather uninspiring for an idea so beautiful that Jeff and others can get so excited just thinking about it, but what else can you expect from such a mark whose approach is so stubbornly literal? I take that back — only one word part actually gets to be represented literally... the other only managed to become a letter, in a moment I can only imagine involved the creator muttering "good enough". He must have found this mark uninspiring as well, given that he sought to put a box around it.
At least consider that the down arrow on its own is an overloaded concept, particularly on the web. Without context — and a mark should not need context — M↓ could read like a hotkey or command of some kind. This kind of ambiguity is utterly unnecessary — you're making a mark; it can be whatever you want it to be. Push!
```javascript
alert('woohoo');
```First is the lack of standardization. Asterisks traditionally meant boldface, I thought, but in some of these systems they mean italics. Some use underscores for italics, while others use slashes. And those are just the common conventions; the less frequently used ones tend to be even less standardized.
Second is the fact that the more conventions these languages implement, the more likely I am to emit one unintentionally, and then have to figure out how to escape the input so it's treated literally, if the language even supports that. (Note for instance the long-standing Lisp convention of putting asterisks around special variable names.)
Thirdly, the syntax rules of these languages are often ill-specified and incorrectly implemented, making it difficult to tell at times how to get the effect I want.
EDITED to add: if you're wondering what I would suggest as an alternative to Markdown-style markup, this is an example of the kind of thing I prefer: http://nbsp.io/development/doccy-a-mid-weight-markup-languag...
The syntax is uniform, but much easier to type than bare HTML.
* Links with parentheses often break
* Intra-word underscores have to be escaped
* Links are backwards (text,link instead of link,text like HTML anchors)
* Link syntax is pretty arbitrary (why braces and brackets?)
* Single line breaks are swallowed unless you append two spaces to the line. (How is this a "natural" formatting?)
* Footnotes with asterisks turn into bullet lists
Most or all of these are resolved by various implementations, but that's just another reason to hate Markdown: the inconsistencies between implementations.
Dodgy HTML, content pasted in from Word (with crazy styling intact), and a general encouragement for users to see text content in terms of styling rather than structure are all things that it will be delightful to see the end of.
I don't think such a thing is feasible. I also don't think it's feasible for any proposed standard to simply look at the largest users and say "okay, we'll accept the idiosyncratic extensions of all of these differing flavors in an unambiguous way."
So assuming this pushes forward, there are (to my mind) two possible outcomes:
1) A backwards-incompatible standard emerges. No existing project adopts it, but new projects do. It gains legitimacy only once Github, Reddit, et al fade into obscurity.
2) A backwards-compatible standard emerges. Every large existing project adopts it, but the standard is so full of cruft and TIMTOWTDI that in ten years it gets usurped entirely by a challenger that emphasizes simplicity.
Not sure what to do about Github.
I also see no reason for text and _text_ to produce the same output. It just seems like a fault in the original spec to me.
* It's very uncommon to want your output text actually underlined.
* If you really do want underlining, just use <u>this</u>, since it's fine to put raw html in Markdown source.
* The most common way folks express emphasis is probably with ✱asterisks✱ (HN won't let me backslash-escape the *). A less-common alternative is to use _underscores_ (though I rarely see that anymore these days). Maybe the distant third most-common way was with /slashes/. I guess Gruber had to draw the line somewhere and just support the first two most common ways to write it. That seems reasonable.
Another reason to not use slashes for emphasis: using them might interfere (or at least cause headaches) with writing directory names, fractions 1/2, and "and/or" wordings.
Are there any parsers (preferably in JavaScript) which currently let you toggle features like that?
rst just looks more powerful and yet still as readable as markdown.
http://jlongster.com/edit/Introducing-Nunjucks,-a-Better-Jav...
I absolutely love the simplicity of Markdown, especially with github's addition of code fences/blocks. It's so trival now to add code and have it automatically highlighted. It's not nearly that simple in other formats (to get autohighlighting I guess).
Excited to see what will come of this.
~~~python
print "hi"
~~~
rather than backticks ```python
print "hi"
```
My own 2 cents: I like the more symmetrical tildes.Anyhow though, yes, I agree; it's great that github supports delimited/fenced syntax-highlighted code blocks and renders .md files there automatically.
1. hello
something
2. foobar
Should not render as: 1. hello
something
1. foobar
There's the start= attribute for <ol>, at least use it!The one change for good I can think of would be removing the ability to embed HTML.
Aside from that (and implementation bugs) I've been very happy with markdown.
Heading 1
=========
Heading 2
---------
Do this: #Heading 1
##Heading 2
###Heading 3
####Etc.
Edit: formatting % Title Goes Here
then make subsequent headings go ahead and start at h1 (rather than h2): Some h1
=======
This puts an `<h1 class="title">Title</h1>` at the top, with regular unadorned h1's further down the page. So, if you like, you can style the title h1 differently from the other h1's.It breaks the soft rule of having only one h1 on a page, but otoh looks good, and doesn't require me to go to h4 or h5 very often, so I can live with it. :)
I'd certainly be interested in switching over to their version, provided some of the noted kinks get worked out.
[1] http://www.aaronsw.com/weblog/001189 [2] http://en.wikipedia.org/wiki/Markdown
If only a couple sites band together, then I see it more like this:
I'm very happy that GitHub has an Org Mode renderer, even if rudimentary - I don't have to rewrite my notes and READMEs to Markdown.
For that situation, wouldn't a org mode to markdown converter be more useful?
You can play with it here: http://www.markdowncms.com
If there was a standardized Markdown, we would implement that for sure.
Enjoy.
Most people don't need to or want to think about it.
Markdown is easily understandable by my wife (and we're using it to format her novels), and she doesn't have time to learn something ultimately as irrelevant to her is a format that makes a computer program happy.
She also writes long hand, so this is a minor adaptation for her to write like she does with emails.
The changes suggested are less natural for most people, and HTML is line noise to most people. If she had to learn HTML, my wife could do so—but it isn't necessary for her to learn HTML. It's also easier for me to have to worry about clean-up than her to do so.
We do have points where we have to figure out how to make certain things work (when she has lyrics, that requires a little more massaging on my part—but I insert the bafflegab bit and she just knows to edit around it or inside it).
It isn't perfect, but the results look very good. (In fact, the second novel looks better than the first, which was laid out in Pages and took me three times as long as learning LaTeX to format the second novel. The only problem with the second novel was finding a good font for the PDF version we use as a print-ready copy.)
This is an [example link]<http://www.example.com/>;
BBCode isn't inherently "bad" if you're just writing something and won't ever edit it again but for anything that you will need to edit / review in the future it can be a serious pain in the ass to look through.
These are the two examples I used:
### Title here
This is some text [with a url](http://google.com)
vs. [size=6][font=arial, helvetica, sans-serif]Title here[/font][/size]
This is some text [url="http://google.com"]with a url[/url]
BBCode was written to be written, it's no more difficult to write [url=http://google.com]google[/url]
than it is to write: [google](http://google.com)
but when reading the source (for maintaining) it... sucks, because it feels un-natural. With the Markdown version of linking (to pick a basic example) you can read a sentence how the person reading the processed version would read it: A search engine called [google](http://google.com)
That reads as "A search engine called google" and then you see that google is a hyperlink. With BBCode it would read: A search engine called [url=http://google.com]google[/url]
So first you read "A search engine called" then you see it's a URL and then you see "google". It can get very frustrating when you're looking at huge swathes of text written in a similar style.> The overriding design goal for Markdown’s formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions
Which is appealing to me, and many others I suspect.