Por que não se deve modificar (hackear) os arquivos do núcleo do Drupal?

"Nunca hackeie o núcleo!" ("Never hack core!")

Esta é uma frase muito ouvida/falada na comunidade Drupal. você provavelmente já leu isso numa camisa ou adesivo. É uma das mais importantes recomendações de boas práticas para Drupal.

Quando falamos "núcleo", queremos dizer todos os arquivos que pertencem à instalação original do Drupal. Isso envolve todos os arquivos, exceto os localizados na pasta sites. Você também pode adicionar novos perfis de instalação no diretório profiles, mas não deve modificar nenhum arquivos já existentes nele.

Por que você não deve hackear o núcleo?

Não importa o quanto é mais fácil modificar os arquivos do núcleo para fazer o que você deseja, resista à tentação.

  • Se o fizer, fará com que seja complicado, difícil ou quase impossível de aplicar as atualizações do site, tais como segurança e correções de bugs.
  • Você vai tornar mais difícil para as pessoas que virão depois para manter o site.
  • Você pode deixar seu site vulnerável a ataques.

O núcleo do Drupal foi projetado para ser modular, então não deve haver nenhuma razão para modificá-lo. Se existe uma funcionalidade que você quer e que não pode ser implementada sem modificar núcleo, considere enviar o seu hack como um patch. Crie uma issue e diga à comunidade o recurso que você quer implementar. Ela irá, então, ser testada e sua funcionalidade pode tornar-se uma parte integrante do núcleo do Drupal. Não é legal? :)

Há alguma exceção à essa regra?

Negativo!

OK, talvez. Mas isso é geralmente para sites ou implementações específicas, executadas por pessoas que são extremamente familiarizados com a base de código Drupal, práticas de desenvolvimento e modelo de segurança. Aqueles que documentarem corretamente as suas alterações e praticarem o controle de versão adequadamente.

Uma prática que eu costumo manter é criar um diretório sites/all/patches para guardar todos os patches aplicados, mantendo uma breve descrição, o número da issue e do comentário, conforme recomendação de nomenclatura de patches. Dessa forma, qualquer outro que for mexer no projeto poderá saber quais foram as modificações e, seguindo o número da issue, poderão entender os motivos que me levaram a fazê-las.

Mas em qualquer caso, procure evitar ao máximo os hacks!

Como descobrir seu o meu Drupal está hackeado?

Sempre que me chega algum projeto já iniciado, a primeira coisa que eu faço é instalar o módulo Hacked! para entender melhor a "furada em que estou me metendo". Esse módulo faz, basicamente, um diff entre o código que está no seu site e os originais do repositório, considerando a versão instalada. Depois, ele apresenta um relatório informando, projeto-a-projeto, os hacks efetuados.

Relatório de módulos hackeados

E você, quais medidas e precauções toma com relação aos hacks do Drupal? Deixe seu comentário abaixo ;)

Fonte: https://www.drupal.org/best-practices/do-not-hack-core