"¿No hay problemas que solo puedan resolverse pirateando el núcleo? ¿Qué, entonces?"
Para responder a esta pregunta, sí, a veces hay problemas que debes superar, lo que significa que debes hackear el núcleo (o un módulo contrib).
En este caso, creo que está bien hackear siempre que coloque muchos comentarios en su código pirateado y documente todo lo que cambie.
Por ejemplo, para cualquier cambio de núcleo o contribución que realizo, creo un parche. Si es genérico y útil para otras personas, lo envío a drupal.org en un problema, de lo contrario es para mi propio uso.
Luego confirmo el archivo de parche a mi control de versiones junto con el cambio de código.
Esto significa que puedo ver buscando archivos de parches si algo ha sido pirateado.
Además de eso, también agrego una lista de hacks a la documentación del desarrollador para el sitio (realmente deberías tener documentación del desarrollador por el bien de otros que podrían trabajar en el sitio y por ti mismo cuando olvides cosas inevitablemente).
En esta documentación de hacks, enumero cada hack con lo que hace el hack y por qué, los módulos / archivos afectados, el nombre del archivo de parche que contiene el código de hack y un enlace a un problema relacionado con drupal.org si hay uno (casi siempre en mi caso lo hay).
Entonces, usted y cualquier otra persona que trabaje en el sitio en el futuro tiene una lista completa de hacks y no tiene que preocuparse por romper accidentalmente algo con una actualización.
Luego, para el proceso de actualización, verifico mi lista de hacks y busco rápidamente los archivos de parches en todos los módulos que estoy actualizando. Si hay un hack y tiene un problema con drupal.org, verifico el problema para ver si la última versión tiene el parche incluido, en cuyo caso elimino el hack con la actualización y lo elimino de mi lista de hacks (make Asegúrese de mirar los mensajes de confirmación de drupal.org de que lo que se confirmó fue el mismo que la versión del parche que está utilizando, o al menos funcionalmente igual).
Si el parche no se confirmó, todo lo que tengo que hacer es actualizar los módulos y volver a aplicar los parches. En muchos casos, los parches se aplicarán de manera limpia y el proceso es fácil, pero a veces hay que volver a ejecutar los parches para la nueva versión y luego enviar la nueva versión del parche a su repositorio local (junto con publicarlo en el correspondiente problema de drupal.org donde corresponda).
Otra cosa que me gusta hacer si tengo parches más sustanciales o parches que interactúan con la funcionalidad central de un módulo (o solo módulos personalizados que se extienden en la parte superior de un módulo drupal.org), es verificar las notas de la versión del módulo actualizado ( eso significa toda la versión entre su versión actual y la versión a la que está actualizando) y asegúrese de que no haya nada allí que pueda romper su código. Nota: Muchos mantenedores de módulos son buenos en estos días con notas de lanzamiento completas, pero todavía hay muchas que hacen notas de lanzamiento de basura. En este caso, en algunos casos reviso todos los mensajes de confirmación desde mi versión actual (esto suele ser solo en los casos en que tengo un código complejo que interactúa profundamente con otro módulo). Nota:
Luego, después de actualizar (en una copia de desarrollo del sitio), realice una prueba exhaustiva. Eventualmente aprenderá lo que significa completamente después de que se escapen algunos errores.
Luego, cuando se haya probado lo suficiente, actualice el sitio en vivo o aumente sus actualizaciones locales o lo que sea que sea su proceso de implementación.
La razón por la que todos dicen que no lo hagas, incluso si es más fácil: porque la mayoría de las personas no tienen un sistema como el que he descrito, así que cuando llega el momento de hacer actualizaciones, o el sitio se entrega a otra persona para que trabaje en adelante, se convierte en una pesadilla y se debe dedicar mucho tiempo (a veces una cantidad enorme de tiempo) a resolver errores y rastrear hacks y averiguar por qué están allí, etc.
Si alguna vez heredas un sitio como ese, lo entenderás completamente :)