Even with surf DrupalCamp 2016 in Granada we have raised to summarize how we live this latest edition, the seventh since the excellent Spanish Drupal community came up and decided to organize the first DrupalCamp in Barcelona back in 2010.
Sprints
Este año venía con una novedad importante: por primera vez se organizaba una semana casi completa de sprints, desde el martes 19 al domingo 24 de abril, con una sala amplia y bien situada donde poder contribuir a algunos de los proyectos que forman el universo Drupal: ya sea codificando para algún módulo o el propio core de Drupal, probando parches o colaborando con la documentación. La ventaja de estos sprints es que puedes trabajar, gracias al esfuerzo de la organización en atraer gente con amplios conocimientos de Drupal, junto a aquellos que han escrito los commits que forman Drupal. Por ejemplo, Sebastian Siemssen, alias fubhy, con más de 100 commits en Rules, o Daniel Wehner, alias dawehner, el principal commiter de Drupal 8. En nuestro caso queríamos aprovechar los avances de Rules para mejorar la integración del módulo GA Push en su versión para Drupal 8. El asunto no era sencillo, debido principalmente a que Rules todavía está bajo desarrollo, por lo que no veíamos claro como hacerlo. Bastó hablar un rato corto con fubhy para darnos cuenta de que hacía falta una funcionalidad en Rules, funcionalidad que estaba a la espera de que el subsistema de Typed Data obtuviese otra cierta funcionalidad (concretamente que los definition objects pudiesen fijar y proveer los valores disponibles). Con un poco de paciencia y mucha fe ciega rehicimos un parche que hacía tiempo no aplicaba, dando un pequeño empujoncito a esa funcionalidad. Sin la presencia de fubhy probablemente no hubiésemos dado con el problema exacto. Por eso queremos dar la enhorabuena a la organización por esa semana de sprints y confiar en que se sigan organizando en próximas ediciones.
Durante la semana, Granada se fue llenando de drupaleros, a los que nos unimos el jueves por la noche. Llegada y recibimiento con las famosas tapas granaínas, reencuentro con viejos colegas y un poco de fiesta nocturna, perfecto para relajar un poco antes de ponerse a trabajar. El viernes la sala de sprints estaba a reventar:
Las sesiones
El sábado empezaban las charlas, y terminaba de llegar el resto de asistentes. Es entonces cuando hubo que elegir entre las muchas charlas disponibles y pensar en qué queríamos aprender o reforzar. Por ejemplo, se habló bastante de testeo. Una de las sesiones de apertura, de dawehner, trataba sobre testeo de Javascript en Drupal 8, incluyendo los últimos avances, la clase JavascriptTestBase, que usa por debajo Mink para abstraer la interfaz del navegador usado en las pruebas. A este respecto, recordar que hace tiempo se decidió integrar Behat en Drupal 8 para las pruebas de validación. Como la tarea no era sencilla se optó por integrar primero Mink, lo que permite realizar tests usando navegadores reales como PhantomJS y por tanto realizar pruebas sobre Javascript. Eso sí, el grado final de integración con Behat está aún por detederminar.
Al hilo de Behat hay que recordar que rodrigoaguilera ofreció una charla para usar Behat en tus tests sin esperar a que Drupal se decida a integrarlo en su totalidad, incluyendo una extensión muy útil para generar informes HTML de los resultados de los tests.
Completan el pack de testeo la magnifica sesión de sobre Unit Testing en Drupal, de e0ipso y penyaskito. Drupal 8, dada su verdadera orientación objetos y uso constante de la inyección de dependencias permite por fin el uso de pruebas unitarias de forma intensiva. En la sesión se dio un repaso al concepto de testeo unitario, uso de mocks, uso de PHPUnit y Prophecy para generar dichos mocks (Prophecy es ahora el método preferido en Drupal) y Data Providers, así como consejos para mejorar los tests. Por ejemplo, se comentó que las implementaciones de hooks, un residuo procedural en Drupal 8, se pueden hacer mediante un corto código procedural que llame a una clase, que será quien albergue la lógica, a través de un servicio, facilitando así su testeo. Si todo esto te suena extraño te recomiendo ver la charla cuando esté el vídeo disponible ;-).
No olvidar la sesión la sesión de juampynr sobre depuración, "Debugging in Drupal 8", donde compartió su experiencia portando módulos a Drupal 8 y como enfrentó los nuevos retos al depurar con Drupal 8.
Las entrañas de Drupal 8 también fueron destripadas con charlas como "The Drupal 8 plugin system: extensibility for all" de Xano o "EventDispatcher: the natural successor of hooks" de joelrguezaleman, dos subsistemas de Drupal 8 que es posible no uses directamente pero que debes conocer en cuanto bajas un poco a los bases de esta nueva versión de Drupal. El primero es, dicho con trazo grueso, el método que sustituye el mecanismo de hooks info de Drupal 7, aportando muchas mejoras: la principal es que facilita la unificación de la gestión de componentes enchufables, siendo ahora mucho más fácil declarar un tipo de componente y usar uno u otro según nos convenga (¿Alguien ha mencionado el infiernillo de alteraciones de alteraciones?). Es un mecanismo más robusto, más serio y más fácil de testear. El segundo es el sucesor del honorable pero ya vetusto mecanismo de hooks de Drupal. Es el componente Symfony encargado, mediante el patrón Observador, de gestionar eventos que ha sido integrado en Drupal 8. Ambos mecanismos coexisten, pero es probable que en Drupal 9 los hooks finalmente desaparezcan.
Muy interesantes fueron también la charla penyaskito sobre la traducción de entidades en Drupal 8 ("Making your entities and fields translatable with Drupal 8"), donde podemos ver una gran mejora respecto a Drupal 7, y la sesión sobre caché, "Building the fastest Drupal in the Galaxy", también para Drupal 8, donde se detalló el muy mejorado mecanismo de caché que incorpora Drupal.
Hubo muchas otras charlas y sería complicado comentarlas todas, pero sería falso decir que eran menos interesantes. La calidad del contenido de las sesiones fue impresionante y la sensación es que tengo es de querer ver aquellas sesiones que por solaparse me fue imposible asistir.
La asamblea
Como en otras Drupal Camp, se aprovechó para realizar la asamblea general de la Asociación Española de Drupal, donde se trataron varios temas. Se renovaron los cargos de la Junta Directiva, repitiendo mon_franco en su cargo de Presidenta. Luego hubo una larga e interesante discusión sobre el estado actual de la AED y el futuro de la asociación, así como los errores y aciertos que ha habido hasta ahora. Se habló también de qué y cuantos eventos se deben realizar, si el formato es el adecuado, si se debe potenciar los contenidos en inglés, si es conveniente el modelo de DrupalCamp itinerante o deberían fijarse dos o tres sedes rotatorias y varios temas más. Hubo opiniones de todo tipo pero quizá se pueda decir que, pese a la gran capacidad de la Comunidad Española, hay una cierta falta de colaboración a la hora de participar en la AED. Seguramente se comente todo esto próximamente en los canales de la AED, así que si eres miembro te llegará y si no lo eres, ¿a qué esperas para asociarte?
Mucho más
Pero la Drupal Camp fue muchas más cosas: hubo un Business day, una fiesta nocturna, una visita a la Alhambra (también nocturna), mucha interacción entre los asistentes, BOFs y todo aquello que cada persona vivió durante estos días. Pero sobre todo fue el esfuerzo de mucha gente entre los que hay que hablar del grupo local de Drupal en Granada, los colaboradores y los ponentes que fueron a compartir sus conocimientos con todos. Desde aquí un gran agradecimiento a todas las personas que lo han hecho posible y una gran enhorabuena por un resultado inmejorable. Ha sido un evento fantástico, la Comunidad ha vuelto demostrar que es capaz de hacer algo difícil con una solvencia impresionante.
Durante la sesión de cierre se dio un repaso a los eventos próximos, como el Drupal Summer en Barcleona o el Drupal Day en Santigao de Compostela, y se desveló la sede de la próxima DrupalCamp: ¡Madrid!
https://twitter.com/fjgomez2/status/724221221370515456
Y para quien no estuvo, siempre puede ver las fotos de Josef Dabernig (dasjo), quien además de ser un gran contribuidor de Drupal es un excelente fotógrafo. Puedes ver su timeline en Twitter o las más de 250 fotos que ha publicado en Flickr.
¡Nos vemos en mayo en Madrid!
https://twitter.com/sanzante/status/724338885044654081