Yet again the UK Drupal community put together a fantastic Drupal event in London. After 2010’s Drupalcon London and last years’ DrupalCamp London and Frontend United, DrupalCamp London appeared bigger and better than ever with over 600 attendees, dedicated CxO and training days over three days. I was fortunate enough to be able to attend on Saturday when most of the sessions took place.
The pre-breakfast Keynote was given by Mark O’Neill from the UK Government Digital Service. Mark spoke about opening large Government IT projects to smaller SMEs and using Open technologies, such as Drupal, to help enable this. Indeed, Mark mentioned a couple of sites built in Drupal, one public facing, one back office, to demonstrate this shift away from the large corporations who usually provide these services. The talk centered on the UK Governments approach to user-centricity, not just in terms of design or UX, but in shaping requirements, solutions and delivery. In the spirit of open-ness these design principles are published at https://www.gov.uk/design-principles
After a breakfast of bacon sandwiches, pastries and coffee the Drupal sessions began. I’d decided to fill up on Drupal 8 knowledge, so started with Gábor Hojtsy’s "A whole new world for multilingual sites in Drupal 8”. Those of us who have produced multilingual sites in Drupal know the pain points, but Gabor started helpfully by explaining what the current situation was - many different modules to translate content depending on your needs - Locale, L10N, Content Translation, Entity Translation, I18N - in short it’s a mess. The D8 multilingual initiative, he said, was started to fix all that and to “solve the problems in a way that would be future compatible”. Based on 4 pillars, “Language, Interface, Configuration and Content” it vastly simplifies the process. Everything can have a ‘Language’ (you can even get rid of ‘English’ in D8), and Content (the ’nodes’, ‘entities’, ’terms’ etc of D7), Config (the Drupal software) and Interface (the UI) are translatable via a simple interface. Interface translations can be downloaded automatically on-demand, and track any customisations you might make. The key to mulitlingual in D8 is that “we don’t make assumptions for you”.
Following a coffee break I headed over to “Gettin Twiggy with Drupal” with the exuberant Forest Mars. Although we didn’t get to see the creation of a Twig theme from scratch this was a good intro to Twig, for those of us who wanted to see how, from an architectural point of view, it fitted into Drupal. Like Gabor’s session, Forest started with an exposition of the current situation wrt theming - namely that it’s antiquated, inconsistent and insecure. What’s worse is that this leads to talented front end developers being put off because they need to know too much about the internals of the theming engine (eg the preprocess hooks) to become effective. The introduction of twig, Forest said, has had the effect of moving us from a theming system to a rendering system by employing a "separation of concerns” principle. Drupal will produce data, Twig will render it - no more PHP in templates which brings us more consistency and ease-of-use. The elephant in the room we were left pondering about though was how to upgrade - and in this, there’s no easy route.
After lunch I sought out Pedro Cambra’s "Drupal 8: Undercover initiatives” session. This session explained that, unlike the major D8 core initiatives such as CMI, Multilingual, Views-In-Core etc, there were a number of undercover, or ‘guerilla’ initiatives. Some of these I’d already heard of, such as Migrate In Core (which means, amongst other things, we’ll have a YAML configured D6/7-to-D8 migration path), but there were other smaller, but also potentially very useful mini-initiatives. Removal of Disabled modules will remove the anomalous ‘installed but not enabled’ status of a module - a module will either be enabled, or disabled. A number of new or enhanced field types will make their way to core, such as Date/Time, Email/Phone and the elusive ‘Hidden’ widget. Form Displays looks intriguing and opens up the possibility of multi-step forms created just through the Drupal UI. Pedro also mentioned the Tour, enhanced Mongo support and PSR-4 as examples on undercover initiatives which are helping focus development in important areas.
In "Authentication in Drupal 8”, juampy gave an introduction to the world of authentication and authorisation. Starting out by explaining the differences between the two, by illustrating his attempts at getting into a nightclub whilst at school (authentication is who you are, authorisation is what you can do), we were then shown how Drupal handles these two concepts. By implementing AuthenticationManagerInterface a class can provide authentication control, whilst extending AccessController allows us to manage authorisation to different services.
The final session I attended was Concurrent programming in Drupal by John Ennew. Although at times conflating the concepts of concurrency, multithreading and parallelism, this session demonstrated a useful wrapper around drush migrate to split up a large migration job into multiple smaller jobs and marshal those jobs, in much the same way that more general purpose solutions such as Gearman work. A brave live demo showed a 2 minute migration speeded up to approx 20 seconds.
The organising team of DrupalCamp London should be highly praised for this event - not only were there loads of interesting sessions, the event was also perfectly paced. There was plenty of time between sessions to chat with other Drupalistas, consume vast quantities tea, coffee, pastries and doughnuts a-plenty and ponder the future of Drupal 8!