Markdown é um linguagem de marcação simples e humana baseada em convenções de texto simples testadas ao longo do tempo nos últimos 40 anos de computação.
Ou seja, se o senhor digitar isso… | …o senhor recebe isso! |
Lightweight Markup Languages ============================ According to **Wikipedia**: > A [lightweight markup language](http://is.gd/gns) is a markup language with a simple syntax, designed to be easy for a human to enter with a simple text editor, and easy to read in its raw form. Some examples are: * Markdown * Textile * BBCode * Wikipedia Markup should also extend to _code_: 10 PRINT "I ROCK AT BASIC!" 20 GOTO 10 |
Linguagens de marcação levesDe acordo com o Wikipedia:
Alguns exemplos são:
A marcação também deve se estender a código: 10 PRINT "I ROCK AT BASIC!" 20 GOTO 10 |
O senhor pode pensar no Markdown como uma forma radicalmente simplificada e muito mais legível de HTML. Nos últimos anos, passei a gostar muito do Markdown. Se o senhor é um programador de qualquer forma, tamanho ou cor, não pode realmente evitar usar Markdown, pois ele é essencial para o GitHub e o Stack Overflow. Por falar nisso, meu novo projeto também usa Markdown.
O Markdown é uma ferramenta maravilhosa, mas sofre um pouco com a falta de liderança de projeto. A chamada “especificação” é tudo menos isso, e há dezenas de versões diferentes de Markdown por aí, todas com diferenças na maneira como se comportam. Embora sejam amplamente compatíveis, o Stack Overflow e o GitHub ajustaram o Markdown de maneiras que podem atrapalhar se você estiver familiarizado com um, mas não com o outro; compare Sabor do GitHub com Sabor do Stack Overflow.
É por isso que fiquei tão empolgado ao receber este e-mail de David Greenspan há alguns dias:
Sou o criador do EtherPad (um editor WYSIWYG colaborativo), agora trabalhando no Meteor. No Meteor, estamos tentando “pavimentar a Web” para os desenvolvedores, escrevendo componentes melhores. Por exemplo, acabamos de lançar botões de login universais que se comunicam por WebSockets e são conectados à tabela de usuários do banco de dados do aplicativo. Como o Markdown é cada vez mais onipresente para escrever conteúdo, ele fará parte da cadeia de ferramentas do Meteor. Não me surpreenderia se acabássemos lançando um componente como o editor do Stack Overflowcom o padrão “Meteor” completo de qualidade de código, para que ninguém tenha que desenvolver seu próprio código novamente. Hoje, usamos Markdown em nossa geração de documentos de API e vamos escrever cada vez mais conteúdo nele, o que é um pensamento assustador.
Acho que o senhor e eu compartilhamos alguma preocupação (horror?) sobre A falta de especificações e testes do Markdown. Além disso, o código é feio. Estender ou personalizar o Markdown é complicado (já temos alguns hacks e eles são terríveis), e eu me preocupo com a “podridão de bits” do conteúdo se o formato não tiver uma especificação. Estou avaliando a possibilidade de recomeçar com uma nova implementação associada a uma especificação real e a um conjunto de testes, e tenho pensado muito sobre como analisar uma linguagem como o Markdown de uma forma baseada em princípios. A propósito, sou bastante destemido com relação a analisadores; escrevi um analisador completo de ECMAScript em uma semana como um projeto paralelo.
Quero que essa nova linguagem – cujo nome provisório é “Rockdown” – seja vista como Markdown com uma especificação e, portanto, só se desvie do comportamento do Markdown de forma discreta. Ela deve ser basicamente um substituto que cubra os problemas e as ambiguidades do Markdown. Estou tentando traçar uma linha entre o comportamento que é importante preservar e o que não é.
Fiquei empolgado porque, assim como David, eu me amor Markdown. Gosto tanto dele que quero vê-lo ter sucesso e florescer nos próximos 20 anos. Acredito que a melhor maneira de atingir esse objetivo é que os sites mais populares que usam Markdown se unam e se apropriem dele como um padrão. Proponho que o Stack Exchange, o GitHub, o Meteor, o Reddit e qualquer outra empresa com muito tráfego e um investimento estratégico em Markdown trabalhem juntos para criar uma especificação oficial do Markdown e conjuntos de testes padrão para validar as implementações do Markdown. Todos nós estamos trabalhando com propósitos diferentes há muito tempo, fragmentando acidentalmente o Markdown enquanto o popularizamos.
Como qualquer pretendente obediente e bem-intencionado, primeiro precisamos pedir permissão aos pais para esse namoro. Assim Estou perguntando aos senhores, John Gruber: como criador original do Markdown, o senhor abençoaria essa empreitada? Além disso, como um aparte totalmente não relacionado, já mencionei que o senhor é um enorme Yankees fã que eu sou? Derek Jeter é um dos melhores de todos os tempos.
Sei que o diabo está nos detalhes, mas, na maioria das vezes, o que eu quero ver em um Padrão Markdown é o seguinte:
- Uma padronização das convenções básicas existentes do Markdown, conforme documentado por John Gruberem uma especificação de linguagem formal.
- Tornar as três “pegadinhas” mais comuns do mundo real nas escolhas do Markdown com padrões mais simples: ênfase intrapalavra (desativada), hiperlink automático (ativado), quebra de linha automática baseada em retorno (ativado).
- Um conjunto formal de testes que qualquer pessoa pode usar para validar uma implementação do Markdown.
- Algumas limpezas e ajustes para casos ambíguos que existem no Markdown devido à falta de uma especificação formal.
- Um registro de variantes de sabores conhecidos, com algum possível lobby futuro para adicionar somente as variantes mais ampla e fortemente suportadas (estou pensando nos blocos de código no estilo GitHub, que são muito bons) para futuras versões do Markdown.
E é só isso, na verdade. Não quero estender o Markdown adicionando toneladas de novas funcionalidades malucas, ou mudar radicalmente a maneira como ele funciona atualmente, ou algo do gênero. Eu me oporia a essas mudanças. Quero apenas solidificar e padronizar a versão simples e útil do Markdown que está funcionando tão bem para todos no momento. Quero que haja um padrão básico e inequívoco que todos que usam o Markdown possam esperar que funcione da mesma forma em todos os sites do mundo quando começarem a digitar.
Eu realmente preferiria não bifurcar a linguagem; eu preferiria muito mais ajudar coletivamente a levar a bandeira do Markdown para o futuro, com a bênção de John Gruber e em colaboração com outros sites populares que usam Markdown.
Então… quem está comigo?