DrupalCamp Ghent 2018: Recap
Over 300 people attended this year, many of them backenders but also frontenders, designers, business strategists, and other stakeholders all coming together to share learnings, experience, and excellent local beers in the city of Ghent.
DrupalCamp Ghent was organised by the Drupal community, and we want to say thanks to all the organisers for making all of this possible, with a special mention to Peter Decuyper who enlightened us with his sketch notes of the sessions.
It is the essence of camps to make the (difficult) choice between the sessions you will attend, so here are the highlights of the ones that we attended.
The organisers paid extra attention to the relationship between sessions, so many talks nicely complemented each other.
Decoupling and the future of Drupal: about UX, code, design and humans
The position of Drupal is constantly being re-evaluated. One of the values of the Drupal is paying attention to the people. The work of these last months brought one more time the proof of this value by covering a large variety of persona.
Authors and site builders
UX was covered in many ways, Clément Génin has been debunking the myths about user-centric design, and he explained the what by talking about a mindset and not a magic formula that can be applied on an existing project. I perceived his session as a way to build a love story between the designer and the end user.
Preston So gave us even more perspective, he started his keynote with the history of the Drupal frontend to continue with the emergence of wearables, digital signage, augmented reality, and conversational UI. Then, he introduced the concept of contexteless / universal editing with a multipolar Drupal that can reduce the custom work needed for decoupling. A good example of this trend is GraphQL. Content is like water: when the shape changes, it should adapt to its context rather than being context specific.
When it is about content, the editor is one of the most important stakeholders. Ruben Teijeiro provided a few answers to problems like page refresh, too much site building, or keeping the link between content editing and decoupling. Among other solutions, he mentioned modules like Elementor, Content Planner, Glazed Builder or Editable.
Dries Van Giel gave us an introduction to Sketch, a fully vector-based tool suited for web design, that leverages features like components (symbols), shared styles among documents and element export in multiple formats. This meets the current approach of component-based design (like Pattern Lab or Fractal does) and reusability.
GraphQL is all the rage nowadays, Peter Keppert talked about
- When to use decoupling: multiple frontends for one CMS, Single Page Apps, …
- The benefits of using GraphQL for that purpose: a self-documented schema, that is strongly typed and that allows to cache queries in the database.
- The points that need attention compared to other solutions: possible information disclosure and the complexity that induces a change on the team.
- The integration in the Drupal contrib ecosystem with Paragraphs and Box
Fabian Bircher explained how the Configuration Management (CMI) has evolved since Drupal 8.0. At the time, it was designed to cover the basic flow of deploying without modifications. Contributed modules have implemented several other use cases like configuration split or ignore, Drupal 8.6 added the installation of a site from a given configuration and Drupal 8.7 will introduce the new ConfigTransform service. Using Drupal as a product can also be implemented with the Config Distro module.
With his typical sense of humour, Branislav Bujisic gave us an introduction to Functional Programming. The foundation of his session was a comparison between Alan Turing states and Alonzo Church functions. He introduced concepts like immutability, static typing, and side effects elimination to improve testing and caching (memoization), with a control over complexity and more performant code. Even if PHP is not a functional language, a few of these principles can still be applied. Truly inspiring!
Testing and code quality
If you are looking for a way to contribute back to the Drupal, a lot of core and contributed projects needs manual testing. Just have a look at the 'Needs review' status on the Drupal issue queue. Automated testing is also welcomed, Brent Gees gave us all the keys to get started seamlessly with Unit, Kernel or Functional tests in his presentation How to get started with writing tests for contrib.
When it is about client work, the time that can be spent on tests may be more limited, and the approach is more about testing the assembly of components, so a pragmatic solution is to use fast Functional Testing with solutions like Behat. Tom Rogie showed how to configure Behat for several environments and browsers in a Continuous Integration workflow, but more importantly, what to test.
Improve easily the quality control tomorrow in your projects. Yauhen Zenko provided a nice way to run tools like PHP Linter, coding standards compliance and mess detection, wrapped in a Composer based solution.
Joris Vercammen covered the best practices for Search API configuration, demonstrating in the meantime that most common use cases can be covered by a plain database server.
For a live demo, head to http://drupalsear.ch, that exposes most Search API features with the new Drupal Umami profile.
Advanced topics like machine learning and AI were illustrated by the maintainer of the Search API Solr Search module and the Solarium library, Markus Kalkbrenner with streaming expressions, graph queries and the inner workings of the Solr, sweet!
Serverless is a buzzword that can lead to confusion. Robert Slootjes explained it with Functions as a Service (FaaS) and the action of removing the hassle of server provisioning and scaling.
Thijs Feryn, the author of a Varnish book, adopted the perspective of caching by diving deep into the http protocol. It was nice to get detailed explanations about the foundations of the web and the Symfony framework. The session was also demonstrating that Drupal already implements most of the best practices regarding caching.
It was awesome to see how many things can be learned in such a small amount of time, and we are already looking forward to the next edition!