Este año, del 2 al 6 de julio, se han celebrado en Lisboa los Drupal Dev Days. Es un evento orientado a desarrolladores y aunque había oído que era de los mejores eventos de Drupal nunca había tenido la oportunidad de ir en persona. Después de asistir ya no me quiero perder los próximos. Cómo me dijo Juan Olalla yendo a la DrupalCamp de Alicante, los Drupal Dev Days son una mezcla entre una Drupal Camp, porque es un evento más bien pequeño y manejable, y una Drupal Con, porque son varios días y el nivel es alto, y estás rodeado de muchas de las personas que determinan el futuro de Drupal con su colaboración y trabajo.
Pero antes… ¡un poco de surf!
Hace tiempo que Rubén Teijeiro andaba detrás de organizar, junto a Floris van Geel, algo que ayudase a quienes asisten a un evento Drupal a conocerse y fomentar eso que llaman el networking o simplemente la camaradería drupalera. Después de varios intentos este año se consiguió organizar la Drupal Surf Camp, un fin de semana previo a los Drupal Dev Days donde hacer surf y Drupal. El lugar elegido fue Ericeria, un precioso pueblecito al norte de Lisboa, pasada Sintra, y uno de los mejores lugares de Portugal donde practicar surf.
Intentando coger una ola
La verdad es que tengo que decir que fue excelente. La organización nos proveyó de los equipos necesarios (básicamente tabla y traje de neopreno), y varios instructores que nos dieron las nociones básicas para mantenernos sobre la tabla (¡más bien intentarlo!). Por la mañana estábamos en el agua y por la tarde nos íbamos en grupo a comer y a charlar. La estrategia funcionó porque durante esos dos días tuve la oportunidad de conocer algo más a quienes estaban allí, de forma que después durante los Dev Days no solo estaba con quien ya conozco (¡hola comunidad hispana!), si no también con quien había compartido unos días de surf y playa en Ericeira.
Según parece ya está en marcha la segunda edición de la Surf Camp que será antes de la BADcamp 2018 en Santa Cruz, y habrá otra el año que viene junto a la DrupalCamp Spain en Conil. Mi sugerencia es que si puedes ir ¡no te lo pierdas!
Algunos drupaleros venían ya enseñados de casa
Drupal Dev Days
El evento, celebrado en el ISCTE - Instituto Universitario de Lisboa, contó con un día, el lunes, dedicado a contribuir, y cuatro días con charlas y talleres en las que ampliar el conocimiento sobre las interioridades de Drupal, conocer técnicas y herramientas para el desarrollo tanto backend como frontend, y general aprender ampliar la visión del mundo Drupal y tecnologías de Internet.
El lugar
La comunidad portuguesa encontró en esta universidad un sitio creo que muy adecuado: el lugar era amplio y las salas suficientes tanto para las charlas como para los talleres y los sprints de contribución. El edificio era bastante agradable y los alrededores muy bonitos, con edificios de arquitectura singular y amplios espacios verdes.
Los alrededores de la universidad
El Wifi funcionó perfectamente, y aunque había alguna escasez de enchufes en las salas de contribución rápidamente se solucionó. El peor punto se lo llevó la comida, incluida en la entrada, que era un poco batallera.
Eso sí, la terraza era inmejorable, aunque quizá sobraban los aviones que pasaban cada poco haciendo bastante ruido, pero dado que el aeropuerto está muy cerca parece algo difícil de solventar.
Casi se podían tocar los aviones al pasar
Las charlas
Las charlas fueron de martes a viernes (el primer, el lunes, estaba dedicado a contribuir, y además hubo una fiesta de bienvenida por la tarde en el centro de la ciudad), cubriendo una amplia variedad de temas. Como siempre, es difícil elegir entre todas las charlas las que fueron más interesantes, entre otras cosas porque es imposible atender a todas dado que siempre había dos o tres simultáneas. Destacaré algunas de las que he visto y que de alguna forma creo que merece la pena ver o echar un vistazo.
Fiesta de bienvenida del primer día
Una de las charlas que me gustaría nombrar es la de «Modern Javascript For Drupal Developers» de Matthew Grill. Creo en el mundo Drupal JavaScript es la parte de la tecnología web a la que menos atención se presta y se sigue tratando como un juguete venido a más, cuando las posibilidades que nos brinda son amplias y potentes.
La charla trató sobre las últimas novedades que incorpora ECMAScript 6 (la especificación en la que se basa JavaScript), ya en uso. Se habló de las funciones flecha (una forma compacta de definir funciones anónimas que además mantienen el contexto de ejecución que las contiene), la sintaxis spread (arrays que se expanden para rellenar los valores que se esperan en ciertas expresiones como los parámetros de una función), los parámetros por defecto en funciones (por fin se podrá dejar de inicializar manualmente parámetros indefinidos), las backtip para usar plantillas de cadenas de texto (que permiten usar nombres de variables en cadenas que serán sustituidas por el valor de dicha variable, sin necesidad de estar concatenando cadenas y variables, similar a lo que hace PHP con las comillas dobles), asignación por desestructuración (parecido a lo que hace la función list de PHP), mejoras en la asignación de valores a objetos, promesas (una gran mejora sobre la estrategia clásica de usar callbacks para gestionar eventos asíncronos, aunque yo soy más de programación reactiva) o las polémicas clases en JavaScript. Y digo polémicas porque las clases de ES6 no añaden herencia de clases al lenguaje ya que en realidad no es más que un caramelo sintáctico: la herencia sigue basándose en prototipos (dicho rápido: cada objeto proviene de otro llamado prototipo, y si se llama a un método de un objeto que no contiene dicho método el lenguaje busca ese método en el prototipo de ese objeto, y si sigue sin encontrarlo busca en el prototipo del prototipo, y así sucesivamente hasta que encuentra el método o llega al prototipo primigenio, el objeto Object). Las clases en ES6 siguen usando por debajo la herencia de prototipos, y aunque se utilice la palabra class lo cierto es que lo que se usa es la vieja estrategia de prototipos de siempre, por lo que hablar de clases es discutible, de ahí la polémica.
Otra charla interesante fue la de Salvador Molina Moreno sobre Nightwatch JS para el testeo de navegador. Esta herramienta de testing ha sido incluida en el core de Drupal 8.6 y permite ejecutar baterías de tests sobre páginas usando un navegador real controlado a través de la WebDriver API, testeando de forma efectiva nuestro código JavaScript. El informe de salida es compatible con los informes XML de JUnit, ofrece distintos tipos de validaciones, permite engancharse en varios puntos de la ejecución de la batería de tests mediante hooks y también soporta la creación de test unitarios para código JavaScript. Ah, y no necesita Selenium.
Respecto a las validaciones dispone de validaciones clásicas tipo aserción pero también incluye validaciones de tipo expect, usadas en herramientas de desarrollo guiado por comportamientos (BDD) como Behat. Personalmente creo que Nightwatch JS es una gran herramienta para el testeo de JavaScript pero creo que no apuesta en serio por BDD. Esto lo veo como una gran desventaja ya que en Metadrop usamos BDD siempre que podemos. Esto nos permite escribir los requisitos que debe cumplir la web que estamos desarrollando en un lenguaje que entiende el cliente (y que incluso el mismo cliente puede escribir) a la vez que se establece una batería de tests que comprueba que dichos tests se cumplen. Todo esto lo explica mi bien mi compañero Jorge Tutor en su artículo sobre la charla sobre Behaviour Driven Development que dió en la Drupal Camp 2017 en Madrid. El BDD de Nightwatch no es fácilmente entendible por alguien que no tenga conocimientos técnicos y por tanto pierde gran parte de su sentido. Aparentemente se puede combinar con Cucumber.js y así poder escribir los tests mediante lenguaje natural, pero si he de ser sincero no lo he probado y no sé qué tal funciona.
En cualquier caso Nightwatch es una gran herramienta que hay que añadir a nuestro conjunto de utilidades a la hora de escribir tests en la capa de JavaScript, y más ahora que está en el core.
Pero esta no fue la única charla sobre testing, otra charla a tener en cuenta para quien no conozca los diferentes tipos de test de Drupal (test unitarios, test de kernel y tests funcionales) es la charla «How to get started with writing tests for contrib». En ella, Brent Gees nos cuenta cómo empezar a añadir tests a nuestros módulos contribuidos, pero lo podemos aplicar perfectamente a nuestros propios proyectos. También puede merecer la pena la sesión «TDD test driven Drupal», de Oliver Davies, que aunque no hay vídeo sí están las diapositivas (aunque insisto en que considero la aproximación BDD muy superior a la hora de escribir tests, pero TDD puede ser un buen complemento).
Se habló también de otras tecnologías web de desarrollo reciente como WebAssembly o las fuentes variables. Del primero habló Mladen Todorovic en su charla «WebAssembly - A game changer for the Web». La idea es programar en cualquier lenguaje que luego se pueda compilar a un formato binario que se ejecute en navegadores a velocidad nativa haciendo uso de las capacidades de hardware disponibles. Esto permitiría aplicaciones muy rápidas que podrían ser programadas en muchos lenguajes (incluyendo sus librerías ya existentes) y ejecutadas en una plataforma ampliamente disponible (¿qué plataforma no soporta un navegador web?) Además, decodificar este formato (también llamado WASM) es mucho más rápido que parsear código JavaScript (unas 20 veces más rápido). Está planteado como una extensión a JavaScript y no como un sustituto. Los grandes beneficiados serían las aplicaciones de videojuegos, criptografía, gráficos y renderizado, procesado de audio, etc. Aunque todos los navegadores más comunes ya soportan WebAssemly (incluso Edge), creo que aún le queda camino por recorrer. La interacción con JavaScript (llamadas entre JavaScript y WASM) es extremadamente lenta, y la manipulación del DOM tampoco es demasiado ágil. Además, hay ciertos problemas relacionados con un nuevo desarrollo (seguridad, herramientas de depuración, auditoría), por lo que seguramente aún se requiera tiempo para que esta tecnología sea ampliamente usada. Sin embargo, conviene no perderla de vista.
Sobre fuentes variables habló Tamás Hajas en la sesión «Variable Fonts In The Real World». Las fuentes variables o OpenType font variations permiten condensar en un solo fichero las variaciones de una misma tipografía. El ejemplo más típico es el peso de la tipografía (el grosor se podría decir, lo que distingue una fuente normal de su negrita). El formato describe cómo varía la fuente para ese parámetro, de forma que obtenemos a partir de un mismo fichero muchas posibles fuentes. Estas variaciones no se limitan al peso, si no que potencialmente pueden afectar a cualquier aspecto de la tipografía. Todo esto se ve muy fácilmente con ejemplos de fuentes variables. Las ventajas de este tipo de fuentes es que pesan menos (porque con un solo fichero tienes varias fuentes en una), facilitan ofrecer texto adaptativo o responsivo (variando su anchura), permiten animaciones, define variaciones de detalle en función del tamaño (por ejemplo, más o menos serifa o detalles) y en general ofrece mucha más riqueza tipográfica. Por supuesto tienen sus contrapartidas: ofrece muchas opciones, lo que requiere tener más conocimientos tipográficos para usarlas correctamente y aprovechar su potencia, para fuentes sencillas no hay mejora (puesto que solo usaríamos una variante, no se necesita más), parece que no todos los navegadores las interpretan exáctamente igual, y a la hora de usar fuentes de pago éstas suelen ser más caras.
El auditorio principal del evento
Volviendo a Drupal algo que conviene saber es lo que será el inmediato futuro del sistema de configuración de Drupal 8. De esto nos habló Fabian Bircher en «CMI 2.0 and configuration management with contrib today». Básicamente la idea es incorporar al core de Drupal esos módulos contribuidos que se han convertido en imprescindibles a la hora de gestionar la configuración. Hablo de módulos como Configuration Split (habitualmente usado para poder aplicar diferente configuración en diferentes entornos), Config Ignore (para ignorar cierta configuración) y otros similares relacionados con las distribuciones. Si ya los usas quizá la charla no te aporte nada nuevo, pero si no los usas puede ser buena idea echarle un ojo.
Por supuesto también se habló de Docker en «Docker Basics For Drupal Developers» (de Alex Milkovskyi), e incluso hubo un taller para jugar con Docker y Kubernetes.
Otro asunto importante, sino es capital, es Drupal desacoplado. Preston So y Lauri Eskola ofrecieron una charla sobre el futuro de Drupal en esta aspecto, «Decoupled by design?», en la que se habló de la situación actual y el camino que se seguirá, que tiene muchas incógnitas por despejar. Pero es bueno saber que poco a poco se van resolviendo.
En relación a esto creo que resultan realmente interesantes las ideas que Adrian Pintilie desgranó en su charla «Open Story - Decoupled Administrative Interface For Drupal». Open Story es un interfaz desacoplado de administración y creación de contenido para Drupal (y en un futuro también para Wordpress). Pero lo más interesante no es la propia interfaz en sí (que lo es), sino sus reflexiones acerca de la necesidad de que Drupal sea desacoplado y el futuro del mundo web. Su tesis es que cada vez se requerirán frameworks totalmente desacoplados y Drupal está en una buena posición para ser parte de ese cambio, pero necesita profundizar en la estrategia de desacomplamiento. Me gustaría hablar más de esto pero requeriría un artículo completo que espero poder escribir más adelante.
No quiero terminar sin incluir la charla de Zequi Vázquez, «Autopsy of Vulnerabilities», que entre otras cosas mostraba demostraciones en vivo de las importantes vulnerabilidades del core de Drupal (¡ya corregidas, claro!) que permitían tomar el control del sitio por un atacante remoto. Esta charla ha tenido mucho éxito porque que yo sepa ha sido dada, además de en los Drupal Dev Days, en la Drupal Camp Spain 2018 Alicante y en la Drupal Europe este mismo año (en Drupal Europe fue la última vez que se dió por lo que seguramente será la versión más depurada).
Estas no fueron las únicas charlas pero no quiero extenderme más y eso que seguramente me he dejado fuera sesiones que fueron muy buenas, incluyendo las keynotes de las que no comentado nada. Si te has quedado con ganas de más consulta el canal de YouTube de los Drupal Dev Days dónde podrás encontrar el resto.
Las salas de contribución y las iniciativas
La otra parte imprescindible de un evento como este eran las salas de contribución y las personas que allí estaban, probablemente algo aún más grande que las propias charlas. Al fin y al cabo las charlas se graban y pueden verse aunque no estés allí, y aunque no puedas hacer preguntas directamente al final la información más importante la obtienes. Sin embargo, la posibilidad de interactuar con las personas que están allí es imposible de lograr si no asistes. Por ejemplo, yo quería cierta información sobre el estado de Behat, así que alguien de la comunidad española (lo siento, no recuerdo quien fue, pero desde aquí le doy las gracias por hacerlo) me llevó hasta donde estaba Pieter Frenssen, uno de los mantenedores de Behat Drupal Extension, me lo presentó y me dejó allí con él charlando sobre Behat y otras cuestiones. Gracias a eso obtuve rápidamente y de primera mano una información que de otra forma me hubiese costado muchos más encontrar y asegurar.
Una de las salas de contribución
En las dos salas de contribución la gente trabajaba en diferentes tareas relacionadas con Drupal, y había grupos organizados alrededor de las diferentes iniciativas estratégicas activas actualmente. Esas iniciativas están abiertas a colaborar y yo mismo estuve ayudando en una de ellas (y el verano me ha hecho alejarme pero espero poder retomarla), de forma que puedes no solo ponerte al día de su estado, si no formar parte del equipo de las define y hace que sean realidad. Es solo cuestión de voluntad y tiempo para poder contribuir. Y estas iniciativas son el futuro de Drupal.
Drupal dungeon, la sala adicional que la organización abrió porque las otras dos estaban demasiado llenas
Entre las iniciativas activas tenemos la de «Out of The Box initiative», también llamada la Umami demo, orientada a proveer contenido de prueba mostrado con un tema visual cuidado conformando una web de recetas basada en Drupal. Usa un perfil de instalación y permitirá probar la potencia de Drupal con un sitio de prueba terminado y funcional.
Otras iniciativas son la gestión de configuración 2.0 que he mencionado en el vídeo sobre configuración, la iniciativa de documentación, o la de Media. Hay unas cuantas más, puedes consultarlas en el enlace que he puesto dos párrafos más arriba.
Personalmente yo me acerque a la iniciativa «Admin UI & JavaScript Modernisation», la que potencialmente más puede cambiar Drupal en profundidad. La idea es modernizar la capa de JavaScript y mejorar las API de Drupal de forma que se pueda crear una aplicación desacoplada en React para administrar Drupal (¿os suena que hayan metido React en core? Bien, pues es para esta interfaz de administración) y desarrollar un nuevo diseño (gráfico) para toda esta nueva administración (parte que por cierto coordina Cristina Chumillas, parte de la comunidad hispana y quien rediseñó la actual página de estatus de Drupal).
El grupo de la iniciativa Local Community Distribution concentrados contribuyendo
Mi idea era enterarme por donde iban los tiros y colaborar en lo que pudiese. Cristina me presentó al pequeño grupo que estaba trabajando en una de las mesas de la sala de contribución, entre los que estaban contribuidores como Sally Young o Daniel Wehner. Rápidamente me dieron las primeras instrucciones para montar el proyecto, informaciones generales y algunas issues sencillas para empezar. He de reconocer que me costó un poco situarme y afrontar mi primera tarea, pero tras varias revisiones por parte de quienes llevaban más tiempo pude ver la tarea resuelta y un poco de mi código comiteado en el proyecto.
Lo que quiero contar con esto no es mi colaboración (que fue insignificante), lo que quiero contar es lo fácil que es ser parte de cualquiera de estas iniciativas, como he dicho antes es solo querer participar y disponer de algo de tiempo para hacerlo, no se requiere nada más y quienes están ya colaborando te lo van a hacer todo lo maś fácil posible. Es una forma fantástica de aprender y de estar cerca del desarrollo más puntero de Drupal. No puedo dejar de recomendar participar si te es posible.
Escogí esta iniciativa por su potencial transformador, y esto lo digo porque creo firmemente que ciertamente puede cambiar Drupal en profundidad por varias cosas. Principalmente implica avanzar en la arquitectura desacoplada de Drupal, algo capital como ya he dicho, que junto al reto de modernizar la capa de administración mediante un framework JavaScript (que personalmente espero que al final no sea React) puede significar que ciertas características Drupal sean modificadas o incluso llevadas al frontend (o, en el peor de los casos, dejadas atrás). Pero todo esto lo guardo para otro artículo, seguramente aquel en el que hable de los Decoupled Drupal Days en Nueva York al que fui para dar una charla sobre programación reactiva. Como es lógico, en ese evento se habló mucho de la web desacoplada, del estado actual de Drupal a ese respecto y de qué estrategias a futuro se deben seguir. Solo me gustaría decir que del tema de Drupal desacoplado tendrá una importancia capital en poco tiempo y conviene que Drupal lo sea cada vez más.
Por último, me gustaría dar las gracias al equipo que se encargó de la organización del evento, creo que hicieron un gran trabajo y desde aquí les doy mi más sincera enhorabuena.
El equipo organizador de los Drupal Dev Days
Social
Por último, comentar la parte social del evento. Además de las charlas, los talleres, las salas de contribución, las comidas y los ratos del café también hubo, como siempre en estos eventos, varias actividades fuera de las conferencias dedicadas al esparcimiento.
Fiesta en la terraza
Y hay que reconocer que son una parte muy recomendable en la que además de hablar de todo tipo de temas, desde Drupal hasta cualquier otro asunto, relevante o irrelevante, permite conocer a mucha gente involucrada de una forma u otra en esto que llamamos comunidad Drupal. Y además de una forma mucho más alegre, por decirlo de alguna manera, lo que genera a veces situaciones tremendamente divertidas.
Parte de la comunidad española poniéndose finos
La parte social para mi es una parte esencial de este tipo de eventos y en Lisboa no desmereció en absoluto, como muchos pueden atestiguar, pero de esa parte no se puede hablar, hay que estar allí :).
Peregrinando por las calles de Lisboa tras cerrar el sitio de la fiesta del último día
Las fotos las hice yo mismo excepto las dos fotos de la Surf Camp (la primera es de Lope Lencastre de Almeida y la segunda de Adrian Pintilie).