Open sourcebesturingssysteem
Begonnen als hobbyproject in 1991
Alternatief voor dure Unix systemen
Van kleine tot grote systemen
Modem / routers (BeBox)
Smartphones / tablets (Android)
PCs
Supercomputers
p. 8
Linux
Larry Ewing, http://commons.wikimedia.org/wiki/File:Tux-shaded.svg
9.
p. 9
ApacheHTTPd
Open source webserver
Serie patches NCSA in 1995
Draait op Linux, Windows, BSD, OS X, ...
Ooit door 70% van alle sites gebruikt (nu 30%)
Erg veelzijdige server
Allerlei modules: proxy, beveiliging, scripts, logging, …
Deel van Apache Software Foundation
10.
MySQL
Opensource relationele database
Ontstaan in 1995
Draait op Linux, Windows, BSD …
C, Java, .Net, PHP, Python, Ruby … connectors
Firma gekocht door Sun (nu Oracle) in 2008
Product blijft open source...
… daarnaast ontstaan varianten zoals MariaDB, Drizzle
p. 10
WebScaleSQL
Facebook, Twitter, LinkedIn (Google)
11.
Script taalvoor webpagina's
Begonnen in 1995 (“Personal Home Page”)
Draait op Linux, Windows, BSD …
Joomla, WordPress, phpMyAdmin, phpBB, ...
Nu meer aandacht voor performantie
APC, Zend Opcache / Optimizer+ … opcode cache
Facebook HipHop / HHVM compiler
p. 11
PHP
Drupal
(Web)Content Management Systeem
p. 14
Ontstaan in 2001
Open source (GPL)
1000-en modules
Workflow, integratie, beheer, e-shop, ...
Meestal op LAMP
Draait soms ook op BSD, MacOS X, MS-Windows
… op nginx, IIS webserver
… Postgres, MS SQL Server / Azure database
15.
Sterke punten
Actieve gebruikersgroepen
Geen licentiekosten
Veel documentatie
p. 15
Handboeken, online
Zeer veel mogelijkheden
Uitbreiden functionaliteit, wijzigen lay-out
Zeer populair
Veel kleine en grotere Drupal-bedrijven
16.
100-en overheidssitesin België
ZuinigMetStraling, OFO-IFA, HRJ, Civiele Veiligheid ...
Overheidssites in het buitenland
WhiteHouse.gov, maar ook in Australië, Frankrijk, ...
StuBru, Vier, VTM, Kinepolis
Amnesty Int, UNICEF.be, Greenpeace UK
Carrefour, Essent, Tesla Motors
p. 16
Zeer populair
17.
Standaard zoekmotoris beperkt
Geen autocomplete, wildcard, search in documenten
=> Oplossing is Apache Solr / Lucene + Tika (Java)
Meerdere talen op 1 site is soms lastig
Extra modules en configuratie nodig
=> Eindelijk “out-of-the-box” in Drupal 8
Mix van content- / configuratiebeheer
Zeer moeilijk om enkel content / config te kopiëren
=> Drupal 8
p. 17
Zwakke punten
18.
Elke majorrelease heeft andere API
Modules moeten vaak opnieuw ontwikkeld worden
Niet bedoeld voor documentbeheer
Wel integratie met bijvoorbeeld Alfresco mogelijk
p. 18
Zwakke punten (2)
Drupal en Solrsearch
File (extractie PDF,...)
p. 20
Solr server
(Java)
Drupal
(PHP)
Apache Solr
Modules
Tika
Lucene
(index)
Content
21.
p. 21
Snelvan start
Website
http://drupal.org
Online site bouwen (gratis maar wat beperkt)
http://simplytest.me/
http://www.drupalgardens.com/
http://www.acquia.com/acquia-cloud-free
22.
Snel van start(eigen machine)
Oracle VirtualBox (desktop)
Open source virtualisatie
MacOS X, Linux, MS-Windows
https://www.virtualbox.org/
p. 22
Virtuele machines
http://www.turnkeylinux.org/
LAMP stack voor MacOS / Windows / Linux
Goed voor development, niet voor productie
https://www.apachefriends.org/index.html
Beheer op drupal.org,voordelen
“Project” voor themes, modules, ...
Referentie (klanten / werkgevers)
Gratis + bespaart werk
Automatisch aanmaken downloads
Bij correct gebruik: link bug ticket naar fix in code
Automatische tests mogelijk
Statistieken aantal sites die module gebruiken
Enkel sites die “Update” module hebben geactiveerd
Enkel totalen, geen gedetailleerde lijst van sites
p. 24
Projectpagina: functies
p.26
Algemene informatie
Beschrijving, lijst ontwikkelaars, downloads
Statistieken, laatste activiteit
Eventueel link naar gelijkaardige projecten, documentatie
Issue tracker
Bugs, vragen, aanvraag nieuwe functies
Iedereen mag commentaar geven / patches sturen
27.
Ontwikkeld doorLinus Torvalds
Oorspronkelijk om versies Linux kernel te beheren
Beschikbaar voor Linux, Windows, MacOS X...
“Wie” heeft “wat” “wanneer” gewijzigd
Terugkeren naar vorige versie is mogelijk
Commentaar toevoegen “waarom”
Link met projectpagina op Drupal.org
Git “Issue #12345 ...” wordt gelinkt aan ticket 12345
p. 27
Git versiebeheer
Zelf project makendrupal.org
Iedereen kan sandbox project aanmaken
Projectpagina, git, …
(Nog) geen unieke projectnaam (enkel nummer)
Full projects door “goedgekeurde” developers
Unieke naam op drupal.org
“Promotie” sandbox => full is mogelijk
Mogelijkheid om anderen toegang te geven
Beheren tickets, beheren projectpagina, ...
p. 29
30.
Eenmalige developer /code review
Niet vereist om patches op te sturen
Voor wie zelf modules... op d.o. wil beheren
Doel: verhogen kwaliteit modules
Eenmalige review door andere drupal.org developers
Nakijken correct gebruik Drupal API, documentatie...
Kan helaas weken / maanden duren (vrijwilligers)
Nadien onbeperkt aanmaken projecten
p. 30
31.
Marketplace
Lijstvan Drupal-bedrijven
Training, hosting, ontwikkeling, …
Gekoppeld aan activiteiten / projecten op d.o.
p. 31
Lijst van Drupal-boeken
Module Module ProfileTheme Library
Module Module Theme
p. 33
Distributie
Van module tot distributie
Module Module Theme
Core
Module Module
Library
34.
p. 34
Themes
Layout
2 000+ gratis themes
Mix van HTML / CSS / Javascript en/of PHP
Subthemes mogelijk
Gebaseerd op / variant van bestaand theme
Sneller te ontwikkelen, vaak al “mobile”, “responsive”
Populaire “base themes”: Zen, Omega
35.
Modules
Coremodules (standaard in Drupal)
p. 35
Blog, Page, ...
Contrib modules
25 000+ gratis modules
Wisselende kwaliteit en ondersteuning
Verbetering functies / extra mogelijkheden
Integratie Google / Facebook / Twitter … diensten
Workflow, eCommerce, beheer content / gebruikers, ...
36.
Libraries
Geschrevenin PHP en/of Javascript
Visuele effecten / opmaak
p. 36
Jquery Cycle, SuperFish, ...
Integratie met andere diensten
OpenLayers, MailChimp, ...
Online HTML editor
Zit niet standaard in D6 / D7 (wel in D8)
CKEditor, TinyMCE
Zelf een modulebouwen ?
p. 40
Bestaat
er al een
module ?
Actieve
ontwikkeling
(Co-)
maintainer
worden ?
Patch
mogelijk ?
Eigen module
J
N
J
N N
N
J
Patch
J
41.
Bestanden van eenmodule
p. 41
<module>.info
Naam, versie van module, afhankelijkheden
<module>.install
Code installatie / upgrade / verwijderen module
<module>.module / <module>.inc
Eigenlijke module en include files
<module>.test
SimpleTest bestanden
42.
p. 42
.infovoorbeeld
name = Date
description = Makes date/time fields available.
project = "date"
version = "7.x-2.8"
package = Date/Time
core = 7.x
Php = 5.2
dependencies[] = date_api
files[] = date.migrate.inc
files[] = tests/date_api.test
files[] = tests/date.test
43.
Drupal API
Lijst van Drupal functies, constanten
Form API / builder
p. 43
Formulieren
Hooks
Installatie / verwijderen module
Toevoegen / verwijderen content / gebruikers / menu's
Menu's, fields, ...
(Veel) extramodules nodig
i18n, i18nviews, entity translation
Vertaling niet altijd 1-op-1
Vb: NL + FR site met beperkte vertaling naar EN + DE
Wat met menu's ? Pagina's die enkel in 1 taal bestaan ?
Vertaling gebeurt op verschillende plaatsen
Ook verschillende rechten nodig
p. 54
Aandachtspunten
55.
Vertaling van inhoud
p. 55
Drupal 6
Vertaling per “node”, elke vertaalde node een andere ID
=> wat met bijvoorbeeld “likes” (vertaalde of alle nodes ?)
“Synchroon” houden auteur, datum … ? (i18nsync)
Drupal 7
Vertaling per node, zoals in D6
Of per veld (entity translation)
=> zelfde ID, maar werkt niet altijd met alle modules
Simpletest module
Standaard in D7 (“Testing”) module
p. 57
Aparte module in D6
Testen van functies tijdens ontwikkeling
Niet verplicht, wel sterk aan te raden
Testen kunnen ook automatisch draaien op d.o.
58.
Simpletest voorbeeld
p.58
<?php
public function setUp() {
parent::setUp('simpletest_demo');
$this->privileged_user = $this->drupalCreateUser(
array('create simpletest_demo', 'edit own simpletest_demo'));
$this->drupalLogin($this->privileged_user);
}
public function testSimpleTestDemoCreate() {
$edit = array();
$edit['title'] = 'SimpleDemo';
$edit['body'] = $this->randomName(80);
$this->drupalPost('node/add/simpletest-demo', $edit, t('Save'));
$this->assertText(t('SimpleDemo has been created.'));
}
?>
Hulpmiddelen
Automatischecode review
http://pareview.sh
Documentatie, correct gebruik API, naamgeving...
Tips ivm veiligheid en performantie
Eigen te schrijven unit tests (SimpleTest)
https://drupal.org/simpletest
p. 60
Development module
https://drupal.org/project/devel
61.
Automatiseren testenvia browser
Aansturen IE, Firefox, Chrome, … via script / code
Java, Python, C#, Ruby, (PHP)
http://www.seleniumhq.org
Nabootsen wat gebruiker doet / ziet
Klikken, uploaden files, invullen formulieren
Aanvulling (geen vervanging) unit testen
Staat los van Drupal (wel module beschikbaar)
Opstellen kan wat moeite kosten
p. 61
Selenium
Gebaseerd op Symfony2
Release: eind 2014 ??
Hergebruik PHP framework
http://symfony.com/blog/symfony2-meets-drupal-8
http://cipix.nl/understanding-drupal-8-part-1-general-structure-framework
p. 68
Voordelen
Interessanter voor niet-Drupal (PHP) developers
Laat toe om nieuwe functies sneller te ontwikkelen
Nadelen
Leercurve voor ervaren Drupal developers
Herschrijven modules en themes
69.
Grote verbeteringen
Configuration Management
Gescheiden houden content en inhoud
p. 69
(REST) Web Services
Makkelijker om feeds te maken / data binnen te halen
Meer functionaliteit standaard aanwezig
Meertaligheid, HTML Editor, Views
HTML5 / Mobile / Accessibility
Geen ondersteuning meer voor IE8
Configuration Management
Configuration API
Uitwisselen via YAML files
Vb: van development naar productie-omgeving
(Oorspronkelijk niet in database, sinds kort wel)
p. 71
72.
p. 72
AndereAPIs
Validation API
Niet enkel meer voor formulieren (vb ook voor REST)
Voorbeeld: controle maximum waarde
State API
Niet verwarren met Configuration API
Voorbeeld: laatste keer dat cron uitgevoerd werd
In D6 / D7 meestal bijgehouden in Variable
Tour API
Gebaseerd op Joyride.js
73.
p. 73
Twigthemes
Voordelen
Niet Drupal-specifiek
Ontwikkeld door de makers van Symfony 2
Leesbaarder
Geen PHP code meer in templates (= veiliger)
Nadeel
Leercurve voor ervaren Drupal themers
74.
p. 74
Twigvoorbeeld
{#
This is a comment
#}
<div>{{ 'List'|t }}</div>
<ul>
{% for choice in menu %}
<li>{{ choice.name }}</li>
{% endfor %}
</ul>
75.
Wat met bestaandeDrupal sites ?
Drupal 7 blijft ondersteund
Drupal 6 ?
Ondersteuning eindigt 3 maanden na release D8
https://www.drupal.org/node/2288521
Heel wat sites draaien nog op Drupal 6 !
Upgrade naar D7 / D8 kan lastig zijn
Niet alle modules al beschikbaar / stabiel
=> (betalende) ondersteuning door Drupal-bedrijven
p. 75
“Backdrop” fork ?
76.
https://drupal.org/drupal-8.0
https://www.drupal.org/update/modules/7/8
https://www.acquia.com/blog/d8migrate
https://groups.drupal.org/core/twidc
https://www.drupal.org/node/2127611
p. 76
Meer informatie