Uma das coisas em que estamos pensando ao criar o stackoverflow.com é como permitir que os usuários estilizem as perguntas e respostas que estão inserindo no site. Nada está decidido até o momento, mas definitivamente não vamos oferecerá aos usuários um daqueles controles de layout de navegador HTML GUI amigáveis, mas irritantes.
Eu tenho um guia de design rígido: este é um site para programadores, portanto, eles devem se sentir confortáveis com a marcação básica. Nada dessas bobagens de barra de ferramentas GUI para nós, obrigado. Se o senhor sabe usar código, um pouco de marcação de apresentação é brincadeira de criança.
Vamos apoiar algum tipo de linguagem de marcação para estilizar as perguntas e respostas. Mas o que o linguagem de marcação?
Mencionei no podcast #4 que consideramos a Wikipédia uma influência determinante. Vamos ver como a Wikipédia lida com a sintaxe de marcação. Isso é o que o página de edição do verbete de Joel Spolsky na Wikipédia se parece com:
É uma linguagem de marcação eficaz, mas acho que o senhor concordará que ela é mais intimidadora do que humano. Wikipedia’s Como editar uma página e o respectivo Folha de dicas de sintaxe da Wikipédia ajuda. Alguns. Eu diria que escrever uma entrada na Wikipédia é um passo além da mera marcação de apresentação; é quase como codificação, à medida que o senhor insere o artigo na gestalt da Wikipédia. (A propósito, se o senhor nunca editou um artigo da Wikipédia, deveria fazê-lo. Considero isso um rito de passagem, uma espécie de medalha de mérito da Internet para quem leva a sério sua presença on-line). Considero isso um rito de passagem, uma espécie de medalha de mérito da Internet para qualquer pessoa que leve a sério sua presença on-line).
Vamos considerar um exemplo mais simples. O que estamos procurando é algum tipo de meio termo, um formato de texto humano. Vamos começar com um pouco de HTML básico.
De acordo com o Wikipedia:
Alguns exemplos são:
A marcação também deve se estender ao código: 10 PRINT "I ROCK AT BASIC!" 20 GOTO 10 |
Veja como isso se parece expresso em uma variedade de linguagens de marcação leves. Lembre-se de que o cada um deles produzirá HTML equivalente ao acima.
Têxtil | Marcação |
h1. Lightweight Markup Languages According to *Wikipedia*: bq. 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_: pre. 10 PRINT "I ROCK AT BASIC!" 20 GOTO 10 |
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 |
Wikipédia | BBCode |
==Lightweight Markup Languages== According to '''Wikipedia''': :A [[lightweight markup language]] 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'': <source lang=qbasic> 10 PRINT "I ROCK AT BASIC!" 20 GOTO 10 </source> |
[size=150]Lightweight Markup Languages[/size] According to [b]Wikipedia[/b]: [quote] A [url=http://is.gd/gns]lightweight markup language[/url] 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. [/quote] Some examples are: [list] [*]Markdown [*]Textile [*]BBCode [*]Wikipedia [/list] Markup should also extend to [i]code[/i]: [code] 10 PRINT "I ROCK AT BASIC!" 20 GOTO 10 [/code] |
Nenhuma dessas linguagens de marcação leves é particularmente difícil de entender – e são agradáveis aos olhos, como prometido. Mas ainda assim tive que procurar a sintaxe de referência de cada uma delas e mapeá-la para o HTML que já conheço de cor. Também as achei perturbadoramente próximas da “mágica” para algumas das regras de formatação, a ponto de desejar poder escrever HTML literal e obter exatamente o que quero, sem precisar adivinhar como o analisador interpretará meu texto simples falso.
O que leva diretamente a esta pergunta: Por que o senhor não fica com o que já sabe e usa HTML? Esta página wiki do c2 intitulada Por que o Wiki não faz HTML? defende que, pelo menos para o conteúdo Wiki, é melhor deixar o HTML de lado:
- Em um Wiki, a ênfase está no conteúdo, não na apresentação. Regras simples de marcação Wiki permitem que as pessoas se concentrem em expressar suas ideias.
- Por que não usar uma linguagem de marcação específica de domínio projetada para fazer “a coisa mais simples que poderia funcionar”?
- Algumas tags HTML são difíceis de trabalhar e podem interromper o fluxo de seus pensamentos. A tag table, por exemplo.
- O usuário comum realmente precisa de todo o poder de layout de HTML e CSS?
- Permitir a gama completa de tags HTML pode levar a grandes vulnerabilidades de segurança.
- Muitas pessoas não conhecem HTML. Uma linguagem de marcação Wiki simples é mais fácil de aprender.
Não sei se concordo com tudo isso, mas pode fazer sentido no contexto de um Wiki completo. Vale a pena considerar.
Depois de toda essa pesquisa sobre linguagens de marcação humanas, para meu desgosto, cheguei a um círculo completo. Agora não acho mais que as linguagens de marcação humanas façam sentido para a maioria dos usos. Concordo com o senhor do site fileformat.info. HTML é geralmente a melhor opção:
- Simplicidade
Se a origem e o destino são a Web, por que não usar a linguagem de marcação nativa da Web?
- Legibilidade
O HTML é um pouco menos legível do que as linguagens de marcação leves, é verdade. Mas o HTML básico não é difícil de ler, principalmente se ocultarmos as tags de parágrafo repetitivas.
- Segurança
Com um pouco de cuidado na codificação, é possível colocar na lista branca tags HTML específicas que o senhor permitirá. Dessa forma, o senhor evita se expor a tags arriscadas/vulneráveis.
- Conversão
Não está claro que o qualquer linguagem de marcação leve existente tem massa crítica, com a possível exceção do sabor da Wikipédia. Por outro lado, os analisadores de texto e as ferramentas sempre entenderão HTML.
- O que as pessoas sabem
Muito mais pessoas conhecem HTML do que qualquer outro tipo de texto humano. Se o senhor é um programador, pode muito bem melhor conhecer HTML. Para as poucas funções do tipo wiki de que podemos precisar, é possível adicionar alguns atributos opcionais às tags HTML. E isso não seria mais fácil de aprender do que uma derivação estranha e pseudo-ASCII do HTML?
Acho que adotaremos algumas das funções mais inteligentes do Textile e do Markdown, na medida em que elas eliminam o trabalho mundano de marcação HTML. Mas, em geral, prefiro muito mais confiar em um subconjunto do velho e confiável HTML do que gastar células cerebrais tentando lembrar-se do modo falso-HTML para deixar algo em negrito ou criar um hiperlink. O HTML não é perfeito, mas é uma linguagem de marcação humana eminentemente razoável.