Geen CMS en al zeker geen Drupal voor grote web-projecten zoals gemeentesites.
Gemeentes en overheden zouden hun sites niet met Drupal moeten bouwen.
Achtergrond.
Ik ben een fan van Drupal, ontwikkel er al jaren mee en heb veel ervaring met succesvolle en evenzovele gefaalde Drupalprojecten. Dat laatste vooral door mijn functie als "probleemoplosser" bij Drupalprojecten. Mensen huren mij vooral in om hun vastgelopen, of uitlopende Drupalprojecten te redden. Ik ben (misschien juist daardóór) ook een Drupal-scepticus. Drupal wordt teveel en te vaak ingezet voor projecten waar het helemaal niet geschikt voor is. Drupal mist ook zo ongeveer alles wat een goede "architectuur" vraagt. Het ontbeert een uitgekristalliseerd veiligheidsmodel, abstractie is geheel afwezig, rommel en broddelwerk in de community (de modules) zijn eerder regel dan uitzondering, enzovoort.
Ik ben ook pragmatist; werk moet af (binnen de deadline). Sites moeten mooi zijn (en niet te duur). Software moet gewoon werken (voor de eindgebruiker) enzovoort. Goede academische opzet is leuk, maar nooit het doel: een goed opgezet project is juist zo goed opgezet omdat daarmee bovenstaande doelen gehaald kunnen worden! En nooit om het "goed opzetten" an Sich. Drupal moet dus ingezet worden waar het succesvol kan zijn. Waar het goed tot zijn recht komt. En het moet vooral niet ingezet worden voor projecten waar het ongeschikt voor is.
CMSen en hun alternatieven.
Grofweg zijn er drie groepen software waarmee sites gemaakt kunnen worden: CMS, Framework of Barebones.
Een CMS is een kant-en klaar pakket, welke zonder programmeerwerk ingezet kan worden om content te beheren. Voor het gemak wordt de C van Content meestal zeer breed gerekt: ook software om een webwinkel mee te draaien of pakketten om klanten in te beheren worden onder deze groep geschaard: zo lang het maar inzetbaar is zonder programmeerwerk.
Een framework is een omgeving, of platform, of softwarepakket, waarmee programmeurs sites kunnen bouwen. Vaak hebben frameworks allerlei complexe zaken al voor de programmeurs geabstraheerd en is programmeren nauwelijks meer dan het correct instellen van allerlei instellingen, en het verder uitwerken van voorgebakken code. Het is een enorm brede categorie, dus beperk ik, vanaf hier, tot enkele moderne, veelgebruikte frameworks: Symfony, Django en Ruby on Rails.
Een barebone is eigenlijk geen systeem, platform of omgeving, maar juist het ontbreken ervan. Gewoon van de grond af, iets zelf bouwen. Welhaast ieder "webdesignburo" heeft zo zijn eigen CMS gebouwd. Bijna alle grote "enterpriceomgevingen" zijn op deze manier gebouwd.
Open Source
«Gemeente Grootezee heeft nu DuurBetaaldCMS X, dus Drupal is Open Source, dus beter.» Is een veelgehoord argument. Laat vooropstaan dat juist voor publieke diensten zoals gemeentesites twee dingen enorm belangrijk zijn:
- Voor bezoekers en gebruikers: Toegankelijkheid en voldoen aan standaarden.
- Voor overheden: Onafhankelijk zijn van bedrijven, contracten en licenties.
Maar Drupal is zeker niet de enige oplossing die hieraan kan voldoen. Open Source betekent ook niet, dat iets als Open Source ingekocht moet worden. Een gemeente kan best een bestaand closed source pakket opkopen of iets geheel van de grond af aan laten ontwikkelen en het dan Open Source vrijgeven! Ik zie zelfs veel overheidsprojecten waar men Drupal modules heeft laten ontwikkelen die niet vrijgegeven zijn! Gelukkig blijken ook enkele projecten wel het geval. In elk geval is het gebruiken van Open Source nog geen garantie dat de investering ook bij de gemeenschap terugkomt.
Bij het gebruik van een framework is dat precies zo: het gebruiken van Open Source technologie garandeert niet dat het eindproduct ook aan de gemeenschap teruggegeven wordt. Maar dat kan wel, zie het voor Deventer op maat gemaakte CMS devCMS.
Return on Investment: Effectief bouwen van een site.
Het belangrijkste argument blijft echter dat Drupal, als CMS, nauwelijks geschikt is om grote complexe maatwerk-projecten mee te bouwen. Dat heeft grotendeels met de technische opzet van deze CMSen te maken. Daarvoor zijn hieronder enkele grafieken opgenomen. Ze geven een globaal inzicht van hoeveel offert men moet steken in ontwikkeling van een site na een X-tal uren.
De y-as geeft de "effectiviteit" aan. Het aantal uren dat met per delivery nodig heeft. 100% effectief betekent géén effort en toch iets opgeleverd (en bestaat dus niet). De onderkant is 0%: enorm veel werk gedaan en niets kunnen leveren. De grafieken gaan uit van ervaren ontwikkelaars. Dus de initiële leertijd (om een taal, of raamwerk te leren gebruiken is buiten beschouwing gelaten). De X-as geeft het aantal uren dat besteed is aan het gehele project. Bijvoorbeeld: na 100 uur Drupal-ontwikkelen wordt dóórontwikkelen steeds duurder. De ontwikkelaar geraakt dan in een domein waar hij of zij alles zelf moet doen, zelf modules moet bouwen en steeds minder makkelijk toegankelijke kennis nodig heeft (bij ontwikkelaars bekend als: de hele broncode van Views moeten lezen om dat stomme cartesiaans product op te lossen).
Overigens blijkt hier ook al meteen een ander veelgemaakte denkfout uit: een groot project is een project met lange doorlooptijd, veel manuren en grote budgetten. Het zegt niks over het uiteindelijke gebruik van een site. Drupal kan goed ingezet worden voor een site met miljoenen bezoekers. Precies andersom, kan een intranetomgeving voor slechts enkele tientallen onderzoekers mogelijk duizenden manuren opslorpen en daarmee een heel groot project zijn.
Wordpress, of de hypergefocuste CMSen
Wordpress is een CMS dat ontwikkeld werd voor één doel: Bloggen. Het is daarmee super geoptimaliseerd voor deze taak: gebruiksvriendelijk, doelgericht, afgestemd op de doelgroep enzovoort. Daarmee is ook meteen aangegeven wat het allemaal niet kan: namelijk: al het andere. Dit geldt uiteraard ook voor ontwikkelaars: zij bouwen met Wordpress altijd blog-achtige sites. Iets anders kán gewoon niet. Deze vorm van software opzetten heet ook wel opinionated software. Andere voorbeelden zijn PHPBB, het bekende forumsysteem, mediaWiki (software achter onder meer Wikipedia) of Status.net (je eigen twitter-community opzetten).
In enkele uurtjes heb je een site draaien, maar écht maatwerk aanpassingen buiten het duidelijke kader en doel van het CMS kosten enorm veel werk.
Drupal, of de blokkendozen.
Drupal wordt vaak, ten onrechte, een content management framework genoemd, waarmee men probeert aan te geven dat Drupal best aardig kan meekomen als framework. De oorzaak van deze verwarring is dat Drupal eigenlijk meer een soort blokkendoos is. In tegenstelling tot een CMS als Wordpress met maar één doel, heeft Drupal die focus juist helemaal niet. Drupal is daarmee niet gebruiksvriendelijk (vriendelijk te gebruiken waarvóór?) niet geöptimaliseerd en niet afgestemd op een doelgroep. Dat geeft flexibiliteit en vrijheid. Ontwikkelaars kunnen er veel meer mee bouwen dan alleen datgene waarvoor het ooit bedoeld werd. Maar het is met nadruk géén framework, omdat het juist voor programmeurs weinig biedt: het is niet Object Georiënteerd, kent nauwelijks abstractie, vereist enorm veel duplicaatcode voor simpele aanpassingen, ontbeert iedere vorm van een ontwikkelomgeving, kent nauwelijks een migratiesysteem (Uitrollen van een site via een testomgeving naar de live omgeving). Enzovoort. Voor de oorspronkelijke doelgroep is dat ook helemaal niet erg: Een kleine site heeft helemaal geen OTAP straat nodig. Mijn persoonlijke blog via een ISO9002, ITIL-gecertificeerde workflow prubliceren? Kom nou! Maar als je dit juist wél wilt? Als je juist je systeem wilt koppelen aan andere processen, tools of systemen? Dan moet je alles zelf bouwen, met nauwelijks enige technische infrastructuur. De effectiviteit van al dat extra werk is dan meestal nog lager dan wanneer alles "barebone" van scratch gebouwd werd. Drupal blijkt dan vaak meer "in de weg" te lopen dan dat het "meehelpt". Dit is onafhankelijk van de ervaring en kennis van Drupal: iemand met veel ervaring spendeert net zo goed 100+ uren aan een eenvoudige Create Read Update Delete omgeving van custom "dingen" zoals, zeg, betalingen. Drupal biedt hier nauwelijks tools voor: alle pagina's, lijstweergaves, workflows moeten met de hand geprogrammeerd worden, alsof het in een barebone PHP-omgeving gebouwd werd.
Drupal kent een steile leercurve, veel steiler dan de doelgerichte CMSen. Binnen een tiental uren staat er een basissite. Binnen anderhalve week is met standaardcomponenten een heel aardige maatwerk site op te zetten. Maar daarna zakt alle productiviteit in: Buiten het gebruik van standaardcomponenten is Drupal een slecht ontwikkelplatform.
De frameworks
Deze kennen een redelijk lange opstarttijd, welke eigenlijk vooral bepaald wordt door de ervaring die men ermee heeft.
Iemand die al enkele sites in Ruby on Rails bouwde, heeft binnen enkele uren al een basissite staan, maar een team dat nog nauwelijks ervaring heeft met frameworks, of de taal waarin ze gebouwd zijn (Ruby voor Rails en Python voor Django) zal, uiteraard, eerst de taal en de concepten moeten eigen maken. Dat hoeft bij een systeem als Drupal veel minder en bij een gefocust systeem als Wordpress helemaal niet. Iemand kan zonder programmeren een heel aardige site opzetten. Met Django kom je niet ver als "Objecten en Classes" enkel op de todolijst onder: "moet ik nog eens induiken" staan.
Maar daarna gaat het snel. Wanneer het team, of de ontwikkelaar weet hoe zaken werken, hoe het conceptueel in elkaar steekt en de ontwikkelteams onder de knie heeft, blijft doorontwikkelen en maatwerk dezelfde effort kosten. Eigenlijk ontwikkelt men met een framework een CMS dat in de eerste categorie thuishoort: een hyper gefocust CMS.
Een framework is ook veel beter geöptimaliseerd om met teams te werken. Drupal biedt nauwelijks abstractie (naar databases, services, diensten enzovoort), kent nauwelijks migraties, testomgevingen en deployment-tools. In frameworks kun je meestal niet eens zónder deze zaken ontwikkelen. Bovendien is de literatuur van frameworks ook zeer veel meer gericht op ontwikkelaars. Literatuur legt juist de structuur, filosofie en architectuur uit. Terwijl bij een CMS altijd het gebruik van het eindproduct op de voorgrond staat. De leercurve voor ontwikkelaars en -teams is daarmee meestal stukken lager dan bij een CMS dat eigenlijk niet bedoeld is voor ontwikkelaars maar voor eindgebruikers.
Verder zak een goed framework ook hergebruik van code toelaten. Meer nog dan een CMS, waar maatwerk juist precies dat is: maatwerk: dus per definitie niet of nauwelijks herbruikbaar. Een framework maakt het juist zo, dat dat maatwerk de minst mogelijke inzet kost. En zorgt voor structuur en standaarden, waardoor zelf ontwikkelde bibliotheken los van het maatwerk gemaakt kunnen worden: een koppeling met een extern systeem bestaat dan bijvoorbeeld uit een abstracte "algemene Python digiD bibliotheek" met een klein sausje maatwerk eroverheen (de integratie van die bibliotheek in je Django-project). Hierdoor is het vrijgeven van werk als Open Source ook veel aantrekkelijker dan bij veel CMSen het geval is. Een Drupal-DigiD-module is enkel in Drupal te gebruiken (waarmee de betreffende overheid zich dus "ingesloten" heeft in Drupal). Terwijl een DigiD Ruby-gem, een Java library, PHP of Python Package veel breder inzetbaar is. Eigenlijk zijn zulke projecten veel waardevoller voor de (open source) gemeenschap.
Wanneer een site gebouwd wordt door professionals, kan al binnen enkele uren een product klaarstaan. En kost het doorontwikkelen daarvan nauwelijks extra tijd per te ontwikkelen onderdeel. Tot het moment dat men ook buiten de kaders van dat platform wil gaan. Dan moeten plots eigen bibliotheken of diensten ontwikkeld worden. Maar dat geldt precies net zo voor geavanceerde features in een CMS. Ik bedoel dan vooral complexe zaken als worker-queues, load balancing, communicatie met andere systemen enzovoort. Een goed framework zal hier echter zeker niet in de weg lopen en mogelijk al allerlei tools (hooks, plugin-systemen, workflows) hebben klaarstaan om e.e.a. te kunnen integreren.
Conclusie
Drupal is zeer interessant voor projecten die onder de, ruwweg, tweehonderd uur blijven, projecten die ruwweg minder dan €5000 kosten. Daarboven zal een framework, mits gebruikt door ervaren web-ontwikkelaars, altijd efficiënter blijken. Drupal biedt dan geen enkel voordeel, anders dan dat het "Open Source" is. Maar Open Source kan net zo goed met een framework. Overheden en grote projecten zouden dan ook best niet in Drupal gebouwd moeten worden, maar in een daarvoor veel geschikter framework.
| Bijlage | Grootte |
|---|---|
| Drupal_vs_frameworks.svg | 19.35 KB |
Tags: Drupal, frameworks, Overheden, Projectmanagement, Ruby-on-rails,
Hoi Ber, een gedurfd artikel
Hoi Ber, een gedurfd artikel waar je vast een tijd op hebt gebroed. En wellicht bewust chargeert om reactie op te roepen. Het is gelukt :-)
Het is voor mij een waardevol artikel. Dank daarvoor. Om weer eens kritisch te kijken naar Drupal bij kostenschattingen boven de 50.000 euro. Maar ook om geen valse verwachtingen te wekken en Drupal nog evenwichtiger tussen alternatieven te positioneren. Maar je doet Drupal m.i. wel op een aantal punten te kort.
Je kaart veel eigenschappen aan, zoals de objectorientatie, abstractie van de database layer etc die inderdaad mindere punten zouden kunnen zijn. Zouden kunnen, omdat geschiktheid voor grotere projecten van een hoop meer factoren afhangt dan de technische zaken die je aan brengt. Bovendien hoeven deze architectonische/technische eigenschappen geen belemmering te vormen. "Geen object orientatie? So what?"
Je bent m.i. veel te stellig over zaken die de praktijk allang onjuist heeft bewezen. Zoals succesvolle Drupalprojecten boven de 5000 euro. Je veronderstelt verder dat andere omgevingen bij de magische grens van 5000 euro per jouw conclusie "altijd efficienter blijken", en Drupal biedt dan "geen enkel voordeel".
Hoe ik dingen anders zie:
1. Drupal kan 'best bet' zijn voor projecten van zelfs enkele tonnen. Redenen:
a. Als je uit gaat van "standaard waar het kan, maatwerk als het echt moet" en je bent als klant al tevreden met hetgeen out of the box kan worden geconfigureerd (verwachtingen-management!) dan ben je een framework of custom code al tonnen verder om na te bouwen wat je met Drupal en alle contribs al hebt.
b. Een websysteem is mensenwerk. Daar gaat de meeste energie, doorlooptijd en kosten in zitten.
c. Wat wordt er dan terug gegeven aan communities van framework gebaseerde ontwikkelingen? Ik vrees misschien wel bouwblokken maar geen hele systemen. En dan ben je in een framework net zo ver van huis, zo niet verder.
2. Codemanagement (tbv migraties, testomgevingen en deployment-tools) hoeft Drupal niet aan boord te hebben, daar hebben we GIT/SVN voor in combinatie met je persoonlijke lokale ontwikkelomgeving.
3. Hoe kom je aan de gegevens van de grafiek? Ben ik wel benieuwd naar.
De technische oplossingen die je aan draagt zijn niet per definitie beter. Je veronderstelt dat wat Drupal niet biedt, dat andere omgevingen dat wel bieden. Een project is veel meer dan techniek alleen.
Goed dat je de boel in beweging brengt. En je toont aan veel kennis en ervaring te hebben met Drupal, waar je een voorvechter van bent en veel voor betekent. Het siert je dat je wilt waken voor verkeerd gebruik. Maar zoals geschreven: mogelijk is je beeld wat te eenzijdig gekleurd (door het feit dat je er bij gehaald wordt waar het mis gaat?).
Just thoughts...
Henk
Een paar reacties. Het
Een paar reacties. Het artikel werd al te lang, dus zijn de comments een goede plek om hier dieper in te duiken:
.
Ik ben pragmatist. Object-oriëntatie om het OO is onzinnig. Maar OO heeft een duidelijk bewezen voordeel. In managers-taal: het wordt makkelijker te beheren. Beter te overzien. Makkelijker bugs te fixen enzovoort. Hier zijn boeken over volgeschreven. En ik ben altijd verbaasd dat anno 2011 er nog altijd programmeurs zijn die durven te beweren dat OO onzin is. 40~50 jaar (wetenschappelijk) onderzoek naar IT-ontwikkeling heeft écht het tegendeel bewezen
Uiteraard. Ik chargeer. Ik beweer ook niet dat je niet een blog kunt shrijven in C. Of dat je geen site van anderhalf miljoen in Drupal kunt bouwen. Ik beweer alleen dat het in die gevallen gewoon de verkeerde tool voor het verkeerde project is. Dat het met ander gereedschap bijna zeker (veel) goedkoper en beter was gegaan.
Mijn punt is juist dat dit niet waar is. Zo rond de €5000 ben je met een in Django geschreven CMS net zover en net zo duur uit als met Drupal. Voor dezelfde functionaliteit.
En als we enkele tonnen voor wat modules bijeen klikken acceptabel gaan vinden dan moet ik toch écht eens iets aan onze overheid gaan doen :).
DEVCMS, een OpenSource project dat super op maat gemaakt is voor gemeentes, is veel effectiever. Want volgens jou theorie heb je hiermee juist helemaal geen werk.
En wat is een Drupal-module anders dan een "bouwblok"? Mijn punt is dat op dit niveau, de voordelen van Drupa, met bouwblokken, niet opwegen tegen de nadelen van bouwblokken. Juist omdát Drupals bouwblokken zo slecht geabstraheerd zijn. Veel slechter dan in veel "professionele" omgevingen.
Iédere, echt iedere Drupalshop heeft ongelooflijke problemen met migratie. Niet een Git-reposje opzetten (dat doet iedere ontwikkelaar toch?), maar het release-management van Drupal. Drush makefiles, strongarm en Features bieden enige soelaas, maar zoals iedere ervaren Drupaleer je kan vertellen: it sucks. Hard.
Het bekende bierviltje (de achterkant ervan). Ofwel: helemaal niet wetenschappelijk bepaald, slechts indicaties en ervaring met honderden Drupal- en andere webproject-offertes en trajecten.
Uiteraard! In het grafiekje neem ik daarom ook helemaal niet de overhead (overleg), ontwerpfase (TO/FO), designs enzovoort op. Het gaat even enkel om het (brede) ontwikkeltraject. Dus met nadruk niet enkel code kloppen, maar alles, inclusief release-management, change-management enzovoort.
Mijn argument is juist dat andere tools veel beter aansluiten bij bepaald mensenwerk dan Drupal. Om een tuinhuisje te bouwen bouw je ook geen 60m hoge kraan op, maar rij je met je Citroën bij de Gamma langs en heb je vier uur later een droge plek voor je hark en je fiets. Maar voor een appartementencomplex heb je wel degelijk professionele teams, onderzoek en techniek nodig. Allebei is mensenwerk, terwijl in dat laatste geval een hijskraan (toegevoegde technische infrastructuur) uiteindelijk enorm veel tijdswinst levert; met alleen mensenwerk kom je er niet.
Ik deel Henk van Cann's
Ik deel Henk van Cann's mening, als hij schrijft:
"1. Drupal kan 'best bet' ...
a. Als je uit gaat van "standaard waar het kan, maatwerk als het echt moet" en je bent als klant al tevreden met hetgeen out of the box kan worden geconfigureerd (verwachtingen-management!) dan ben je een framework of custom code al tonnen verder om na te bouwen wat je met Drupal en alle contribs al hebt.
b. Een websysteem is mensenwerk. Daar gaat de meeste energie, doorlooptijd en kosten in zitten."
Daarbij zie ik open source projecten, zoals Drupal en Moodle, steeds vaker opduiken in steeds grotere organisaties.
Ik zie bijvoorbeeld: opleidingsinstituten gebruiken vaak een Electronische Leer Omgeving (ELO). Medewerkers gebruiken de aanwezige functionaliteiten weinig. Automatiseerders en onderwijsdeskundigen promoten de meest mooie en handige functies. De medewerkers wat DOEN zij? In heel veel ELO's, op heel veel plaatsen, zag ik ongebruikte functionaliteit. Medewerkers zie ik maar langzaam overstappen naar nieuwe functies. Of ze het niet snappen, of dat ze het niet willen snappen: beiden zie ik voorkomen.
Dat zie ik bij ELO's. Hetzelfde zag ik bij Enterprise Resource Planning (ERP) of Customer Relation Management (CRM) implementaties de afgelopen 30 jaar. Verleden tijd? Ik vind een interessante ontwikkeling dat ERP/CRM-functionaliteit steeds meer webtechnologie gebruikt. Ik zit nu op een eventuele opdracht te wachten om een organisatie (1000+ medewerkers) te helpen met het maken van lesmateriaal. Deze organisatie X houdt van hun applicaties bij hoe goed die applicaties functioneren. Daarvoor sturen ze nu nog spreadsheets rond, om gegevens te verzamelen. Management wil dit meer beheersen. Een Drupal-webform zou al wonderen doen. En het kan beter. Het kan met Drupal 7's field-functionaliteit. Of speel op zekerder met Drupal 6's CCK-module. Organisatie X koos een Oracle-product, en liet een applicatie op maat schrijven. Nu gaan er E-learning-lessen geschreven worden, om dit maatwerk in te voeren. Anders gaan de onderhoudsmedewerkers en de einggebruikers het niet snappen.
Als Henk's punt 1a ("standaard waar het kan") gevolgd was, kon er een oplossing in kortere tijd zijn.
Ook Henk's punt 1b geldt:
Er is veel tijd en energie nodig om al die onderhoudsmedewerkers en eindgebruikers juiste gegevens over de kwaliteit van hun applicaties in te laten vullen. Met de spreadsheets die ze nu gebruiken kunnen ze veel meer doen wat ze zelf willen. Hun reactie op een nieuw systeem is heel verschillend. Sommige vinden degelijke software geweldig. Ik kom dit soort mensen tegen op Drupal- en Moodle-bijeenkomsten. Veel meer eindgebruikers kom ik tegen, die vinden het fijner als ze hun beeld zelf kunnen weergeven, zoals met dat spreadsheet hierboven. Veel meer onderhoudsmedewerkers kom ik tegen, die vinden de techniek die ze nu gebruiken gewoon het prettigst. Dit zijn acceptatieproblemen.
In grotere organisaties zijn acceptatieproblemen vaak groter. Is een CMS als Drupal een mogelijkheid om standaardisering te promoten? Dan moet je als leverancier wel bij machte zijn om deze acceptatieproblemen aan te kunnen. De keuze tussen inzetten van een meer star CMS, of meer flexibele software gebruiken is een punt. De acceptatieproblemen worden er niet mee aangepakt.
Ik zie dat je als websitebouwer met Drupal een efficient middel hebt. Maar of je je eindproduct geaccepteerd krijgt, hangt mijn inziens niet af van de keuze van de techniek waarmee je bouwt. Met producten zoals Drupal kan je je wel meer op die acceptatie richten. Hoe meer je bij Henk's punt 1a kan blijven, hoe meer je je daar op totale klanttevredenheid kan richten.
Drupal in gemeentelijke organisaties is voor mij een voorbeeld dat Drupal steeds vaker in groter organisaties in beeld komt. Daar zijn acceptatieproblemen ook vaker groter. Drupal is in de groei. En dan kom je nieuwe problemen tegen. Met Drupal kan steeds meer. Gisteren pikte ik live-op-het-net nog even Dries Buytaert's lezing op Drupalcon Chicago mee. Zijn verhaal over Symanctec sprak mij aan. Hoe er is gewerkt is niet 1-2-3 te zien. Ik kreeg het idee dat er heel driftig met de klant is overlegd. Direct daarna hoorde ik hem nog een heleboel wensen uiten om in Drupal te krijgen. Bij inzetten van Drupal kom je ook problemen tegen. En ik zie ze bij grote maar ook kleine projecten. Zo zag ik laatst een Drupalbouwer die merendeel van gemaakte uren factureerde voor het vertalen van de Engelse teksten van de standaardteksten.
Ik vind het ook helemaal niet eenvoudig om Henk's punten 1a en 1b zo goed mogelijk te blijven uitvoeren.
Wanneer je "dicht bij Drupal"
Wanneer je "dicht bij Drupal" blijft, of "maatwerk als het echt niet anders kan", dan kun je ook niet verantwoorden hoe een Drupalsite voor een ton over de toonbank gaat.
€100.000 voor wat bestaande componenten aan elkaarklikken? Voor wat handleidingen lezen en daarmee een site opbouwen?
Natuurlijk niet. Die ton zit in uren ontwikkeling. Waarschijnlijk iets van 1000 uur. Dat zijn dus 1000 uren "maatwerk waar het echt niet anders kan".
Mijn betoog is juist dat in zulke gevallen het kleine stukje "standaard" -hergebruik- waarmee Drupal komt, niks oplevert. En dat je gereedschap moet zoeken dat beter past bij "1000 uur maatwerk bouwen".
Wanneer je een standaard Drupal levert is het niet te verantwoorden dat dit meer dan 100 uur werk kost.
En zo komen we weer bij mijn grafiekje uit: binnen die 100 uur, is Drupal waarschijnlijk de meest optimale tool: je bouwt immers met "standaard", hergebruik dus! Daarbuiten ga je los met "maatwerk waar het niet anders kan". En is Drupal niet de optimale tool.
Nou, die 1000 uur gaat
Nou, die 1000 uur gaat minstens voor 50% op aan 'theming'. Er kwam vorig jaar een project voorbij wiens ontwerpburo een navigatie had getekend in de vorm van een soort dashboard in de hoek, rechtsonder. Trendy websites wil de klant vaak vol hebben met maatwerk blokjes. En daarbij is het 'ontwerp' evenzoveel maatwerk als de code.
Dan zit er nog een stuk 'op papier stellen' bij. Want ook iedere Drupal bouwer van formaat weet, dat als je het houdt bij een 'bierviltje' met specs, dat de klant je daarop terugpakt: "Ow, maar ik mag toch aannemen dat ie ook mijn bestellingen in Excel exporteerd" of "Natuurlijk wil ik een overzicht van de content van de laatste twee weken, met als eerste kolom het sponsorschap".
Aaken die prima met Drupal te realiseren zijn, maar 'maatwerk' wensen zijn moeten worden ontworpen; Zowel functioneel als visueel zodat je vooraf de verwachtingen kunt managen. Ik durf te stellen dat die 1000 uur die je nodig hebt los staat van welke technologie ook.
En ik durf het tegendeel te
En ik durf het tegendeel te beweren. Dat doe ik dus op al deze plekken :).
Juist wanneer je een klant hebt die achteraf komt met "Ow, maar ik mag toch aannemen dat ie ook mijn bestellingen in Excel exporteerd" wil je een systeem waarbij je dan kunt antwoorden
«Nee, nog niet, want dat was niet gespect, maar het komt eraan....Zo. Gedaan»
RAD gaat hier juíst vanuit. Is precies gebouwd voor dit soort "agile" projecten. Of, met minder buzz-words: een flexibele omgeving die toestaat dat je even snel iets nieuws erin hangt.
Een omgeving die precies níet allerlei zware eisen aan de design en Ux-kant stelt, waardoor het designen alleen al 1000 uur kost. Een omgeving die precies ontworpen en geöptimaliseerd is voor dit soort projecten.
En, zo is mijn betoog, dat is Drupal niet. Drupal is geöptimaliseerd en gefocused op hele andere dingen. Dat is goed. Maar heeft als keerzijde dat bijvoorbeeld themen onwaarschijnlijk moeilijk en bewerkelijk is.
Zelfs als zo'n
Zelfs als zo'n functionaliteit met een ander systeem makkelijk(er) in te bouwen is gaat hier nog steeds tijd in zitten. Tijd die je dus niet gebudgeteerd hebt. Dus linksom of rechtsom gaat die tijd ergens vanaf gehaald worden. Door extra uren te factureren of door andere functionaliteiten weg te strepen. Een "meer agile systeem" gaat dus niet verhinderen dat zulk soort zaken tijd en dus geld gaat kosten.
Wat Imre dus zegt is dat je van te voren die specs vast legt om zulk soort situaties zo veel mogelijk te voorkomen en dat hier een groot stuk van die 1000 uur al in gaat zitten. Dit is dus onafhankelijk van het systeem dat je gebruikt om de functionaliteiten te implementeren.
Naar mijn mening past Drupal juist erg goed binnen Agile projecten. Even een veldje, overzichtje of content typje toevoegen is zo gedaan en ook die excel export is een eitje als je alles op views hebt gebaseerd. Extra functionaliteit is snel toegevoegd middels de 3000 modules en middels de gelaagde template structuur ook vrij snel en clean te overschrijven.
Wat dan wel een zwak punt bij het gebruik van een modulair systeem als Drupal, is dat je van te voren goed moet bepalen of je een functie zelf custom gaat maken of dat je een bestaande module gaat uitbreiden. En als je gedurende het project erachter komt dat je de verkeerde keuze hebt gemaakt dat je dan een aantal stappen terug moet.
Zelfs als zo'n
Ik beweer ook niet dat de gekozen techniek hier verandering in brengt. Ik beweer alleen dat Drupal hier geen voor of nadeel in biedt.
Juist dit soort zaken blijken erg problematisch in een grotere organisatie. Met name (maar zeker niet als enige) is het gebrek aan een fatsoenlijk deployment-model een groot probleem hierin. Op een site in productie betekent dit -in de praktijk- enkele uren offline tijd (voor veel gemeentesites nauwelijks bespreekbaar, gelukkig!). Het mondt vaak uit in lelijk gepruts met hybride config+bijbehorende-theme+gluecode migraties. Ja. Features is hiervoor een oplossing, maar dat is een heel ander verhaal. Het is, kortom, verre van "agile" in praktijk. Als een tweewekelijkse releasecycle betekent dat je iedere twee weken een ochtend offline bent, is dat onbespreekbaar voor een serieuze site.
Om kort te gaan: Drupal was nooit bedoeld of ontworpen om op deze manier, in dit soort projecten ingezet te worden.
Dat is niet erg, zolang we Drupal dan ook niet teveel voor "dat soort projecten" proberen in te zetten.
Ook dit is een theoretisch argument, dat, in praktijk erg tegenvalt.
Niet zelden kom ik in de long-tail van modules erg, lelijke security-gaten tegen. Afzichtelijke code. Ik durf te stellen, dat in praktijk slechts minder dan de helft van het aantal modules dat online staat ook daadwerkelijk inzetbaar zijn in een serieus project.
Daarenboven, is een site met 100+ modules een probleem op zich. Performance, conflicten, versies zonder upgrade-path (views naar views2), dead-wood (niet upgradende modules) enzovoort, blijken in praktijk een daadwerkelijk groot probleem.
Even een moduletje daarvoor inzetten is een erg slechte praktijk en lijd niet zelden tot zeer problematische sites.
Het is in elk geval zeker geen goed alternatief voor eigen code en library-integratie in een framework in professionele projecten.
Jij schrijft: Mijn punt is
Jij schrijft: Mijn punt is juist dat dit niet waar is. Zo rond de €5000 ben je met een in Django geschreven CMS net zover en net zo duur uit als met Drupal. Voor dezelfde functionaliteit.
Ik buig diep: Django als wonderolie, ik ga er zeker naar kijken.
Jij schrijft: En als we enkele tonnen voor wat modules bijeen klikken acceptabel gaan vinden dan moet ik toch écht eens iets aan onze overheid gaan doen :).
Ik vul aan: het in elkaar klikken is juist een of twee dagen werk, waar je in andere situaties tonnen voor nodig hebt. De tonnen moet je soms besteden om het project een succes te maken en besteden aan allerlei zaken zoals we beide noemen: maatwerk, content, project, uitdragen van het gebruik, e-marketing, koppelen aan andere systemen, beheren.
Jij schrijft: Mijn argument is juist dat andere tools veel beter aansluiten bij bepaald mensenwerk dan Drupal.
Ik kreeg de indruk: het artikel sluit Drupal bij voorbaat uit voor trajecten voor 5000 euro en met de onderbouwing van de figuur lijkt me dat toch de plank van het tuinhuisje mis slaan.
Het blijft: jij bent de Drupal expert en ik veel minder. Vanuit mijn projectervaring kan ik gevoelsmatig niet mee gaan in de onderbouwing van belangrijke delen van je betoog. Mogelijk trekken collega-experts met bijval voor jouw verhaal me over de streep.
Django als wonderolie. Oh,
Open source is meer dan open
Open source is meer dan open broncode, het is ook de documentatie, honderden geeks die weten hoe die ene functionaliteit nu precies werkt en die gemakkelijk een project kunnen overnemen, de support architectuur, etc. Dat heb je niet met een custom build.
Dat is waar. Maar dat heb je
Dat is waar. Maar dat heb je ook niet met een Drupalsite als eindproduct.
Wij (wizzlern) geven bijvoorbeeld geen "eindgebruikers-traingingen" van de plank. Dat kan niet met Drupal. Hoe de opgeleverde Drupalsite uiteindelijk werkt hangt helemaal af, van hoe de Drupalshop haar gebouwd en geconfigureerd heeft!
Ik heb bij grote organisaties gezeten die door vele Drupalshops sites lieten bouwen. Ik had, met mijn Drupalervaring, nooit kunnen bevroeden dat er zóveel verschillende oplossingen in Drupal mogelijk waren. Bij één organisatie vragen ze daarom al in de TO en het FO voor heel specifieke oplossingen: ze beschrijven zélfs hoe ze views, nodequeues en dergelijke ingeregeld willen hebben: hun redacteuren worden anders gék van alle verschillende workflows, benamingen, interfaces enzovoort.
Een Drupalsite als eindproduct is NOOIT een standaardproduct. En dus ook nooit beschreven in (Drupal.org community) documentatie.
En ieder framework heeft documentatie; die gereicht is op de implementatie en architectuur. Je kunt veel over Python (en Django) zeggen, maar níet dat het slecht gedocumenteerd is!
volstrekt duidelijk en helder
volstrekt duidelijk en helder artikel (een goed referentiepunt voor in de toekomst),wat ook mijn mening over CMS systemen en frameworks duidelijk spiegelt. Thanks!
En hoe zit dat dan in
En hoe zit dat dan in verhouding tot bv. Sitecore en Tridion. Deze zijn wel objectgeorienteerd en bieden ook een zekere basis aan functionaliteit die je niet meer zelf moet bouwen?
Nieuw commentaar posten