O Drupal nunca foi tido como um CMS fácil de se trabalhar. Para quem está acostumado com o Wordpress ou Joomla! ele às vezes é muito estranho (verdade seja dita, isso acontecia até o Drupal 6, desde o 7 isso melhorou muito). No entanto para nós, desenvolvedores ele sempre teve um dos códigos mais limpos, seguros e consistentes no mercado de CMSs Open Source.

Apesar de o código do Drupal ser muito bom, está longe de ser um código segundo os padrões de mercado (leia-se "enterprise"). O fato é que o código do Drupal sempre teve uma certa deficiência de aplicação de conceitos modernos como orientação a objetos, por exemplo (seja isso bom ou ruim, interprete segundo o seu gosto).

Com o lançamento iminente do Drupal 8 muita gente está ansiosa pela sua integração com o framework Symfony, e, talvez na mesma proporção, muita gente está chateada com isso. Tanto é verdade que há até quem tenha criado um fork.

O Symfony é um framework muito bem construído e que vem agregar muito valor ao Drupal, e vice-versa. Da minha parte acho que o casamento do Symfony com o Drupal é algo maravilhoso. É mais um passo do Drupal rumo ao profisionalismo que o Drupal vem sempre correndo atrás.

Como um framework desacoplado, o Symfony é composto de um core, mas orbitando há uma série de acessórios que podem ser anexados a eles. Um deles é o motor de templates/linguagem de templates Twig.

Quem me conhece há algum tempo sabe que não gosto de motores de template e gostaria hoje de falar um pouco mais detalhadamente sobre isso. Quero só deixar claro que essa é só a minha opinião e não uma verdade universal (sempre tenho que falar isso pois sempre tem quem ache que eu sou o dono da verdade :-p).

Propósito

A princípio, uma linguagem ou motor de templates é usado para, entre outras coisas, agilizar o trabalho de quem vai fazer a parte visual de um projeto Web. Há alguns anos, isso era ainda mais forte pois o "designer" não conhecia linguagens de programação e tinha que lidar com coisas elementos de programação e isso costumava criar atrito nas equipes.

Hoje em dia muita gente alega que linguagens de template fazem mais do que só melhorar a leitura do template, mas agregam segurança e facilidade de uso. Em um artigo de 2009 o Fabien Potencier, criador do Symfony e do Twig, tem alguns bons argumentos que você deveria ler.

Conceito

Motores de template processam um código pré-formatado substituindo variáveis, loops e etc. por HTML de acordo com um conjunto de variáveis passado. Muita gente não gosta da misturar de PHP com HTML por achar isso errado. Isso até é verdade mas só se código PHP não tem nada a ver com a apresentação, mas com lógica de negócio ou algo do tipo. Por isso alguns alegam que é preciso ter uma linguagem alternativa só para a camada de apresentação. Eu penso diferente. Acho que o PHP é bem capaz de fazer esse trabalho e ainda você diminui a quantidade de linguagens do projeto, diminuindo os requisotos para se contratar um desenvolvedor/themer.

Legibilidade

Eu não acho nenhuma dessas linguagens de template particularmente legível. Na verdade, como desenvolvedor, a notação que elas utilizam frequentemente me atrapalha mais do que me ajuda. Talvez para um usuário leigo elas sejam fáceis, para mim elas são terríveis. Talvez a única exceção seja a TAL (Template Attribute Language) usada no Plone e portada para o PHP na forma do PHPTal, mas ainda assim prefiro não usá-la pelos demais argumentos que apresento.

Nova linguagem

Ainda relacionado à legibilidade e também ao aprendizado. Essas linguagens são, como o nome diz, novas lingaugens que você tem que aprender sintaxe, nome de funções e mais uma série de detalhes. Apesar de gostar de aprender, e principalmente de gostar de estudar linguagens, não acho que os supostos benefícios justifiquem o aprendizado de uma nova liguagem só para templates. Se é para gastar meu tempo aprendendo lingaugens, prefiro Haskell, que muda totalmente o meu paradigma de programação.

Performance

No artigo do Fabien, ele comenta sobre a velocidade de processamento do Twig e de outras linguagens/motores. Apesar do Twig se sair melhor, isso não o torna rápido. Na verdade, se você compará-lo com o PHP puro verá que ele é até bem lento. Para mim performance é muito importante. Um site mais lento alguns milisegundos pode ser um problema em vários aspectos, como rejeição por parte de usuários, problemas de SEO entre outros.

Conclusão

Por mais que eu não goste dessas linguagens, como expus acima, não posso negar o seu valor e seus benefícios. Mas, como tudo na vida, esses benefícios não são para todos e essas linguagens não resolvem todos os problemas no que tange criação da camada de apresentação. Assim, sempre que posso, evito usá-las.

Se você gosta de linguagens de template, e em especial do Twig, fique feliz pois agora poderá usar no Drupal 8. Já se você pensa como eu e não gosta de linguagens de template, fique feliz, você não será obrigado a usar o Twig com o Drupal, pois a PHPTemplate continuará presente.