DrupalJam sessie
Ontwikkelen van online platformen met Drupal 8
Raymond Muilwijk
Raymond Muilwijk
● 9 jaar professioneel bezig met Drupal.
● CTO @Trinoco
● Bezoeker van Drupaljam sinds editie 1
We zoeken (Google), we kopen (Marktplaats, Catawiki, Etsy), we
delen (Linkedin, Instagram), we kijken en luisteren (YouTube,
Spotify, Netflix), we flirten (Tinder), we reizen (Uber, Airbnb,
Tripadvisor) en we lezen (Blendle).
De Platform economie
“A platform or complement strategy differs from a product
strategy in that it requires an external ecosystem to generate
complementary product or service innovations and build
positive feedback between the complements and the platform.
The effect is much greater potential for innovation and growth
than a single product-oriented firm can generate alone.” Michael
Cusumano MIT professor
Kenmerken platform
● Core van een bedrijf of unit.
● Begint vaak als product of dienst.
● Disruptief voor de markt.
● Schaalbaar
● Open stellen voor anderen.
● Gebruiksvriendelijk via meerdere kanalen.
● Veel ingelogde gebruikers.
Drupal 7
● Alle systemen Drupal specifiek. Zelfs de Libraries module.
● Krachtige Field en Entity UI, maar lastige API's om te
programmeren.
● Welke hook?
● Verouderd als framework.
● Developer unfriendly
– Module files van 5000 regels?!?
– Editor slechte auto aanvulling
Drupal 7 _alter() cultuur
● Programmeer stijl om alle basis blokken neer te zetten en dan
zo te 'tweaken' dat het werkt zoals bedacht.
● Meerdere modules die dezelfde functionaliteit aanpassen.
● Relatief lastig om echt maatwerk te maken.
Hoe helpt Drupal 8 out of the box?
● Mobile First
● In place editing
● Configuration Management
● Multilingual
PHP-FIG
● Standaarden binnen de PHP community
● OOP Autoloading
● Meer hierover zie talk Bart Feenstra
Proudly Found Elsewhere
● PHPUnit, Guzzle, Symfony, Doctrine etc.
● Find the best tool for the job.
● Betere focus
Packagist
Composer Manager
● http://drupal.org/project/co
mposer_manager
● `composer drupal-update`
● composer.json
Gebruik de juiste bouwstenen maar ontwikkel je
unieke business logica zelf.
Developer Experience
● Class op juiste plek in file
system.
● Editor toont methods.
● Voor bijvoorbeeld een block
staat info(), build(), save(),
blockForm(), access()
allemaal bij elkaar.
Developer Experience
Adoptatie
● Grotere groep van mensen die met het systeem kunnen
werken.
● Gedachtegangen komen overeen met HBO/WO opleidingen.
Entities, Fields, Storage
● Data blijft dus moet in orde zijn!
● Datamodel was buiten de Drupal API lastig in gebruik voor bijvoorbeeld
analyse software.
● Eigen datamodellen niet mogelijk.
● Computed fields omslachtig.
● Onvolledige Entity API.
● Custom Fields met widget mogelijk maar veel hook_ zoekwerk.
● Vaak misbruik van 'node' en field_collection inplaats van eigen fieldtype.
Entities
● Zelfde interface voor content
en config entities.
● Zelfde field types als je ook
via de UI hebt.
● Computed Fields
Entities
● Tabel naam kiezen.
● Storage Schema definiëren.
● Storage extern ophalen.
● Duidelijke Access afhandeling.
● Zelf bepalen of de entity een
canonical heeft.
● Revisionable/Fieldable/Translat
able
Fields
● Eenvoudig custom field types
maken en storage definiëren.
● Widgets / formatters ook
eenvoudig te programmeren
als een class.
● Load, Save alles bij elkaar en
te controleren.
Services
● Een service is een PHP object dat een globale taak uitvoert.
Denk aan email delivery, logger, caching etc.
● Service Container / Dependency Injection.
● Denk in services.
● Alle services van core overschrijfbaar.
● Packagist bevat al veel services die met wat 'glue' te gebruiken
zijn.
PHPUnit
● PHPUnit de standaard.
● Simpletest relatief langzaam.
● Unieke business logica
testen!
● Continuous integration.
Drupal 8 = Webservice
● Drupal 8 is een webservice out of the box!
● Data kan bevraagd worden voor andere systemen (Mobile
app's, Angular, etc).
● Andere partijen kunnen nieuwe applicaties om de data
schrijven.
Performance
● Performance beinvloed
conversie, seo en
gebruikersvervaring.
● In Drupal 7 anoniem cachen
eenvoudig. Ingelogd niet.
Authenticated Caching
● CacheTags/CacheContexts
(meer info slides Marc van
Gend talk vandaag)
BigPipe
● BigPipe in Drupal 8.1!
Lifecycle
Is Drupal 8 geschikt voor online platformen?
● Standaard functionaliteiten (Mobile first, multilingual, ..) weer van deze tijd.
● Meer componenten beschikbaar als library.
● Zelf je business value ontwikkelen inplaats van alteren.
● OOP zoals in de lesbanken. Sneller ontwikkelen door betere developer experience. HBO/WO studenten
sneller op te leiden.
● Datamodel dat toekomst bestendig is.
● Door te denken in services zijn onderdelen in de toekomst compleet te vervangen door vernieuwde
systemen.
● Code is goed testbaar.
● Data is standaard te ontsluiten.
● Gebruikers hebben een snelle ervaring op het platform.
● Drupal 8 wordt 4 jaar doorontwikkeld met nieuwe features en wordt daarna nog lange tijd ondersteund.
Vragen?
@rmuilwijk
https://nl.linkedin.com/in/rmuilwijk
raymond@trinoco.nl

Ontwikkelen van online platformen met Drupal 8

  • 1.
    DrupalJam sessie Ontwikkelen vanonline platformen met Drupal 8 Raymond Muilwijk
  • 2.
    Raymond Muilwijk ● 9jaar professioneel bezig met Drupal. ● CTO @Trinoco ● Bezoeker van Drupaljam sinds editie 1
  • 3.
    We zoeken (Google),we kopen (Marktplaats, Catawiki, Etsy), we delen (Linkedin, Instagram), we kijken en luisteren (YouTube, Spotify, Netflix), we flirten (Tinder), we reizen (Uber, Airbnb, Tripadvisor) en we lezen (Blendle).
  • 4.
    De Platform economie “Aplatform or complement strategy differs from a product strategy in that it requires an external ecosystem to generate complementary product or service innovations and build positive feedback between the complements and the platform. The effect is much greater potential for innovation and growth than a single product-oriented firm can generate alone.” Michael Cusumano MIT professor
  • 5.
    Kenmerken platform ● Corevan een bedrijf of unit. ● Begint vaak als product of dienst. ● Disruptief voor de markt. ● Schaalbaar ● Open stellen voor anderen. ● Gebruiksvriendelijk via meerdere kanalen. ● Veel ingelogde gebruikers.
  • 6.
    Drupal 7 ● Allesystemen Drupal specifiek. Zelfs de Libraries module. ● Krachtige Field en Entity UI, maar lastige API's om te programmeren. ● Welke hook? ● Verouderd als framework. ● Developer unfriendly – Module files van 5000 regels?!? – Editor slechte auto aanvulling
  • 7.
    Drupal 7 _alter()cultuur ● Programmeer stijl om alle basis blokken neer te zetten en dan zo te 'tweaken' dat het werkt zoals bedacht. ● Meerdere modules die dezelfde functionaliteit aanpassen. ● Relatief lastig om echt maatwerk te maken.
  • 9.
    Hoe helpt Drupal8 out of the box? ● Mobile First ● In place editing ● Configuration Management ● Multilingual
  • 11.
    PHP-FIG ● Standaarden binnende PHP community ● OOP Autoloading ● Meer hierover zie talk Bart Feenstra
  • 12.
    Proudly Found Elsewhere ●PHPUnit, Guzzle, Symfony, Doctrine etc. ● Find the best tool for the job. ● Betere focus
  • 14.
  • 15.
  • 16.
    Gebruik de juistebouwstenen maar ontwikkel je unieke business logica zelf.
  • 18.
    Developer Experience ● Classop juiste plek in file system. ● Editor toont methods. ● Voor bijvoorbeeld een block staat info(), build(), save(), blockForm(), access() allemaal bij elkaar.
  • 19.
  • 20.
    Adoptatie ● Grotere groepvan mensen die met het systeem kunnen werken. ● Gedachtegangen komen overeen met HBO/WO opleidingen.
  • 22.
    Entities, Fields, Storage ●Data blijft dus moet in orde zijn! ● Datamodel was buiten de Drupal API lastig in gebruik voor bijvoorbeeld analyse software. ● Eigen datamodellen niet mogelijk. ● Computed fields omslachtig. ● Onvolledige Entity API. ● Custom Fields met widget mogelijk maar veel hook_ zoekwerk. ● Vaak misbruik van 'node' en field_collection inplaats van eigen fieldtype.
  • 23.
    Entities ● Zelfde interfacevoor content en config entities. ● Zelfde field types als je ook via de UI hebt. ● Computed Fields
  • 24.
    Entities ● Tabel naamkiezen. ● Storage Schema definiëren. ● Storage extern ophalen. ● Duidelijke Access afhandeling. ● Zelf bepalen of de entity een canonical heeft. ● Revisionable/Fieldable/Translat able
  • 26.
    Fields ● Eenvoudig customfield types maken en storage definiëren. ● Widgets / formatters ook eenvoudig te programmeren als een class. ● Load, Save alles bij elkaar en te controleren.
  • 30.
    Services ● Een serviceis een PHP object dat een globale taak uitvoert. Denk aan email delivery, logger, caching etc. ● Service Container / Dependency Injection. ● Denk in services. ● Alle services van core overschrijfbaar. ● Packagist bevat al veel services die met wat 'glue' te gebruiken zijn.
  • 31.
    PHPUnit ● PHPUnit destandaard. ● Simpletest relatief langzaam. ● Unieke business logica testen! ● Continuous integration.
  • 32.
    Drupal 8 =Webservice ● Drupal 8 is een webservice out of the box! ● Data kan bevraagd worden voor andere systemen (Mobile app's, Angular, etc). ● Andere partijen kunnen nieuwe applicaties om de data schrijven.
  • 33.
    Performance ● Performance beinvloed conversie,seo en gebruikersvervaring. ● In Drupal 7 anoniem cachen eenvoudig. Ingelogd niet.
  • 34.
    Authenticated Caching ● CacheTags/CacheContexts (meerinfo slides Marc van Gend talk vandaag)
  • 35.
  • 36.
  • 37.
    Is Drupal 8geschikt voor online platformen? ● Standaard functionaliteiten (Mobile first, multilingual, ..) weer van deze tijd. ● Meer componenten beschikbaar als library. ● Zelf je business value ontwikkelen inplaats van alteren. ● OOP zoals in de lesbanken. Sneller ontwikkelen door betere developer experience. HBO/WO studenten sneller op te leiden. ● Datamodel dat toekomst bestendig is. ● Door te denken in services zijn onderdelen in de toekomst compleet te vervangen door vernieuwde systemen. ● Code is goed testbaar. ● Data is standaard te ontsluiten. ● Gebruikers hebben een snelle ervaring op het platform. ● Drupal 8 wordt 4 jaar doorontwikkeld met nieuwe features en wordt daarna nog lange tijd ondersteund.
  • 39.