Dansk medie byggede eget CMS med Ruby og React

Zetlands hjemmebyggede CMS giver mediet total kontrol over de opdateringer, der kommer ind.
Fordelene ved et færdigpakket CMS er små, og at bygge sit eget giver simplicitet, fleksibilitet og frihed, fortæller Zetlands digitale chef.

Man kan pakke et færdigt CMS som Wordpress og Umbraco ud på minutter. Men man risikerer at designe i de samme kasser som alle andre og blive tynget af en bunke af funktioner, man ikke skal bruge.

Sådan lyder vurderingen fra det danske online-medie Zetland, der har sagt pas til de store etablerede CMS'er og i stedet valgt at selvkomponere et custom CMS med nøje udvalgte hyldevarer som byggesten.

»Når man bygger det selv, bliver man i højere grad tvunget til at tage stilling til, hvad man har brug for,« indleder Tav Klitgaard, der er digital chef - eller digital kok - hos Zetland.

»Det giver nogle fordele i forhold til vedligehold og simplicitet. Al vores kode ligger i et samlet repository,« fortsætter han.

Læs også: Borger.dk har fuldført CMS-skift fra Sharepoint til Sitecore

Den oprindelige Zetland platform var bygget i Wordpress. Og ifølge Tav Klitgaard var det et meget aktivt valg at skifte det populære CMS ud.

»Da vi skulle bygge vores CMS, kunne vi ikke vide, hvad Zetland ville blive til. Så da vi stod med beslutningen i sin tid, var fleksibilitet alfa og omega,« forklarer han og fortsætter:

»Det er meget simpelt, det, vi har brug for - et system, der kan holde på indhold og strukturere det. Det kan alle CMS'er, og det kan vores også. Vi kunne have lavet det i Umbraco eller Wordpress og fået det til at se ud på samme måde. Og så havde vi fået ting som versionsstyring og en preview-mulighed ud af boksen, i stedet for at vi selv skulle bygge det. Men som jeg kan se det, er fordelene temmelig små.«

Ingen sorte bokse

Helt lavpraktisk bruger Zetland GitHub til versionsstyring og har bygget backenden til CMS'et op primært i Ruby. Selve sitet er bygget i React på en node-server, der kører Express.

Med ordene custom CMS vil mange måske tænke på manglen af et community af open source-udviklere, der finder og lukker sikkerhedshuller. Men fordi de enkelte komponenter af Zetland-CMS'et typisk er open source, kommer der stadig den type opdateringer, fortæller Tav Klitgaard.

Samtidig har det lille udviklingshold total kontrol over opdateringer, der kommer ind.

Læs også: Umbraco lancerer sig selv as-a-service: Opgør med kluntede bunke-opdateringer

»Vi får ikke en pakke ind af døren, som har huller, fordi den skal kunne alt muligt, som vi alligevel ikke skal bruge. Når der kommer opdateringer, kan vi styre det selv. Der kommer ikke pludselig ændringer, som ødelægger et eller andet. Alt, vi har, har vi styr på. Der er ingen black boxes,« siger Tav Klitgaard og tilføjer:

»Vores CMS skal kunne én ting, og det er at lave vores platform - og det er det ret godt til.«

Opbygningen betyder også, at hvis noget ikke virker, peger det udelukkende tilbage på udviklerne og ikke på f.eks. en Umbraco-ændring. Og det er de fint tilfredse med, fortæller Tav Klitgaard.

»Jeg ved, at det er noget, udviklere i andre mediehuse sidder og bander over - fordi de skal bøvle med noget, de ikke selv er herre over.«

Lige så fed som Google Docs

Med samlesæt-tilgangen til CMS-opbygningen kan Zetland bruge de bedste komponenter til specielle opgaver. Og bruge de værktøjer, som eksisterer.

»Jeg vil gerne have en editor, der er lige så fed som Google Docs. Og det er der ikke noget CMS, der har. Så hvorfor ikke bare bruge Google Docs, hvis der er det bedste,« spørger Tav Klitgaard retorisk.

Læs også: Her er de fem bedste open source Content Management Systemer

»Visionen er lige nu, at man kan arbejde i Google Docs, få kommentarer fra en redaktør og så trykke på en knap, der skyder artiklen ind i Zetland. Og det kan vi godt lave,« fortsætter han.

Den digitale chef medgiver, at det tager længere tid at komme i luften med mediets custom CMS end med en færdig pakkeløsning. Den grundlæggende indholdsstruktur er bygget op på nogle dage.

»Til gengæld får vi simplicitet, fleksibilitet og frihed,« understreger han.

Faren ved hyldevarer

Et almindeligt argument imod et hjemmebygget system er udfordringen ved at skifte udviklere ud og sætte nye udviklere ind i koden. Og det tager da også længere tid at komme ind i Zetland-cms'et, end det ville have gjort med en standardplatform, vurderer Tav Klitgaard.

Omvendt kan det også gøre rekrutteringen nemmere, siger han.

»Det er meget mere sexet at arbejde med, og det betyder, at du kan tiltrække nogle andre mennesker. De nye folk, vi har fået ind, siger også, det er det rigtige valg. For vi har ikke brug for alt det, Umbraco kan,« fastslår Tav Klitgaard og fortsætter:

»Jeg tror på, at interfacet påvirkes af den underliggende arkitektur - om man vil det eller ej. Og risikoen for at ligne de andre bliver større for hver hyldevare, man bruger.«

Læs også: Danmarks Naturfredningsforening dropper standardsystem efter 9 år: Open source-platform skal nedbryde data-siloer

Det er svært at pege på, hvordan Zetland havde set anderledes ud, hvis man havde brugt Wordpress, erkender Tav Klitgaard, der også tilføjer, at diskussionen er filosofisk snarere end teknisk.

»Men der er en risiko for, at man kommer til at ligne de andre Wordpress-sider, fordi man udnytter de ting, som er fede i Wordpress. Når du bygger det selv, er der ikke noget, der er lettere end noget andet,« siger Tav Klitgaard og tilføjer:

»Der ligger nogle paradigmer i ethvert CMS, som på en eller anden måde påvirker, hvordan din side i sidste ende ser ud.«

Tips og korrekturforslag til denne historie sendes til tip@version2.dk

Følg forløbet

Kommentarer (13)

Peter Binderup

Vælger man off the shelves CMS'er så kommer man til at bruge en masse tid på at tilpasse det (og ikke mindst sætte sig ind i svaghederne i systemerne).

Vælger man, at starte ud med nogle anerkendte frameworks, så kan man nå meget langt og der skal ikke mange udviklingstimer til før man har 80-90% af de funktioner man gerne vil have CMS'et skal indeholde (og man opdager måske at de 80-90% nok i virkeligheden er ret tæt på de 100% need to have funktioner).

I artiklen står der at koden ligger i et samle repo. Er det et Open Source projekt, eller er det closed source? Jeg vil opfordre til at gøre det til et Open Source Projekt - det kunne jo være at jeres CMS endte med at blive til det næste Django agtige framework (Python framework der også udsprang af et bladhus), og så ville I ikke være ene om at udvikle til det.

Mark Klitgaard

Jeg kan godt se at der kan være fordele ved at strikke sit eget CMS sammen, dog synes jeg der er noget i argumentationen der ikke helt holder:

Men fordi de enkelte komponenter af Zetland-CMS'et typisk er open source, kommer der stadig den type opdateringer, fortæller TAv Klitgaard.

Vi får ikke en pakke ind af døren, som har huller fordi den skal kunne alt muligt, som vi alligevel ikke skal bruge. Når der kommer opdateringer kan vi styre det selv. Der kommer ikke pludselig ændringer, som ødelægger et eller andet. [..] Opbygningen betyder også, at hvis noget ikke virker, peger det udelukkende tilbage på udviklerne og ikke på fx en Umbraco-ændring. Og det er de fint tilfredse med, fortæller Tav Klitgaard.

Personligt arbejder jeg primært med Umbraco og har lavet nogle småting i Wordpress, og i ingen af de to CMS'er har jeg nogensinde oplevet at få stoppet en opdatering ned i halsen som enten installerede sig selv eller bare lukkede siden indtil jeg installerede den. Bevares, har prøvet på egen krop en dejlig opgradering af en Umbraco 4 installation til Umbraco 7 som var en interessant affære, men det varikke være end hvis man finder ud af at ens Day 1 arktitektur har mangler eller lign. som kræver en refaktorering af en stor del af kodebasen.

Dermed kan jeg ikke helt se hvordan der kan lige pludselig kan komme pakker der ødelægger noget, der er vel en udvikler som installerer og tester denne inden man ruller den ud i produktion? Og hvis man alligevel benytter sig at open source pakker, er man så ikke lige vidt på den front, da man jo så skal håndtere opdateringer ind i mellem?

Det kan godt være jeg er en smule "farvet", men vores tilgang har været at benytte en så rå Umbraco som muligt for at undgå afhængigheder af moduler man ikke kan garantere bliver vedligeholdt. Derfor har vi udnyttet de ting vi får forærende af Umbraco, og til så tilføjet hvad vi skulle bruge yderligere. Selvfølgelig kan Umbraco også en dag dreje nøglen om, men det er dog lidt mindre sandsynligt at Umbraco lukker og slukker end et modul ikke længere bliver vedligeholdt.

Simon Mikkelsen

Det kan sagtens være en god idé, særligt hvis man får sat en god arkitektur sammen fra starten. Når jeg har arbejdet med store frameworks synes jeg tit at jeg ender med at kæmpe mod dem fra tid til anden. Hvis man bare har nogle små komponenter man selv stykker sammen, bruger man mere tid på at sætte dem sammen men mindre på at kæmpe mod et framework.

Mikkel Buhelt

Jeg kender intet til at opbygge CMS'er. Men man har da før hørt virksomheder forbande deres specialbyggede systemer langt væk efter 5-10 år, fordi de er dyre at videreudvikle og man gør tingene anderledes til den tid. Men Zetlands CMS skal måske alligevel heller ikke holde længere end det?

Kenn Nielsen
Mogens Hansen

Men man har da før hørt virksomheder forbande deres specialbyggede systemer langt væk efter 5-10 år, fordi de er dyre at videreudvikle og man gør tingene anderledes til den tid.


Tricket er at få alle - fra topledelse til udviklere - til at forstå, at levetiden for denne slags systemer (uanset om de er indkøbte eller hjemmeudviklede) er 5-10 år. Måske nærmere 5-6 år. Så er alle klar på, at efter 4-5 år skal man til at planlægge et nyt system der kører efter moderne teknikker så man ikke skal slås med legacy-systemer.
Ja, det lyder voldsomt, men med den hastighed nye værktøjer og teknikker kommer frem er det, hvad man må forholde sig til. Tænk fx på at hele "Cloud" tankegangen startede for 10 år siden eller mindre.

Jacob Christian Munch-Andersen

Wordpress er et sikkerhedshelvede, hvis ikke man opdaterer får man ikke patchet kendte exploits. Og har man, som vist er reglen snarere end undtagelsen, en god bunke skod-plugins er der rig mulighed for at ting går i stykker ved opdatering.

Man kan selvfølgelig fravælge pluginsne, men så må man selv kode et eller andet oven på Wordpress for at få tilsvarende funktionalitet.

Situationen ville klart være bedre hvis ikke Wordpress var en elendig bunke skodkode.

Christian Nobel

Ja, det lyder voldsomt, men med den hastighed nye værktøjer og teknikker kommer frem er det, hvad man må forholde sig til. Tænk fx på at hele "Cloud" tankegangen startede for 10 år siden eller mindre.

Hvis nu man lever af sælge en stabil vare, så er det ikke sikkert at man nødvendigvis skal lave nye tiltag hvert andet år, bare fordi der kommer et nyt hypebegreb som skysovs eller lignende på banen - man skifter jo heller ikke motor i sin bil, bare fordi Bosch har lanceret en ny indsprøjtningspumpe.

Nogen gange er langtidsplanlægning og stabilitet at foretrække, og man undgår måske endda at tingene ikke soves ind i den nyeste rædselsfulde bootstrap lokumsrulle.

Mogens Hansen

man skifter jo heller ikke motor i sin bil, bare fordi Bosch har lanceret en ny indsprøjtningspumpe.


Det handler om domænet.
Jeg tvivler på, de fleste skifter noget som helst i deres bil i den tid de har den (med mulig undtagelse af bilradioen eller andre ting, der ikke har noget med kerne-funktionerne at gøre). Mange udskifter til gengæld hele bilen efter 2/4/6 år, og forventer, at den indeholder opdateret teknologi ved købet, inkl. indsprøjtningspumpe.
Og med kontrolsystemer til f.eks. robotter er det absolut ikke urimeligt at forvente en levetid på 10-15 år.
Med en CMS har du derimod ofte et ønske om at signalere, at du forstår at følge med og er med på den nyeste teknologi.

Lars Tørnes Hansen

Enig med dig om WordPress.

For nogle år siden skrottede jeg WordPress på grund af de evindelig mængder af sikkerhedsfejl osm hurtigst muligt skalle lappes.
Jeg droppede derfor WordPress til fordel for et simpl HTML+CSS website fordi at det var faktisk kun det jeg havde brug.

Kommentarer lå på et andet website hvor emnet for web siden var relevant.

Websitet er på GitHub Pages, og jeg bruger en ekstremt hurtig static web page generator der hedder Hugo: http://gohugo.io/

En anden fordel er selvfølgelig at HTML+CSS websites kan hostes hvor som helst, og virker efter en DNS opdatering.

David Konrad

Med "samlet repo" menes blot at alle komponenter ligger samlet i eet repo, som f.eks denne indledende øvelse (gætter jeg), altså forkede versioner af de brugte open source komponenter sammen med versionerede udgaver af egenudviklet backend og frontend.

Det sikrer maksimal kontrol over et hvilket som helst delelement, og dermed også over afhængigheder og kompatibilitet. Med et CMS/CMP er man mere eller mindre prisgivet udgiverens luner, og t.ex rettelse af et sikkerhedshul i eet 3parts plugin foretages kun ift bestemte versioner af "kernen", så man må opgradere, selvom andre komponenter/plugins ikke understøtter den nye version, og man derfor ender i deadlock lignende valg.

CMS “plugin” versionerne af de populære OS-komponenter lader også ofte meget tilbage at ønske. Typisk er et CMS plugin en “wrapper” for noget allerede populær client JS / jQuery, eller backend PHP/node/ruby/python, så det nemt kan “installeres” i f.eks wordpress. Men der er få (udviklere) om nogen, der aktivt vedligeholder, og typisk er pluginnet ikke uptodate ift bleeding edge versionen på github, og kun halvdelen af funktionaliteten bruges eller eksponeres; dvs du ender op med et subset udelukkende fordi du kører f.eks Drupal. Altså et ringere produkt i en sort boks blot fordi man håber t.ex Wordpress har en “hurtigere læringskurve”, lige indtil man opdager hvor bevidst obfuscated Wordpress egentlig er (i hvert fald sidst jeg tjekkede) og hvor meget spildtid der går på at reverse-engineere dårligt programmerede “plugins”.

Zetlands legoklods-metode er imho den helt rigtige, og sådan alle burde gøre! Det er langt hurtigere at sætte sig ind i de "rene" OS-komponenter og så simpelthen cherrypicke det bedste ift funktionalitet og lækkerhed, ikke ift hvor godt en anden nu har porteret til Umbraco (som jeg i øvrigt ikke kender i praksis). Jeg kan ikke vide det med sikkerhed, men jeg tror langt de fleste forfalder til et CMS alene pga CRUD. I virkeligheden ønsker folk ikke et CMS, de ønsker en out of the box CRUD skabelon som et starting point, og det har CMS’erne - desværre betales den sparede 1-2 dags arbejde med en meget høj pris: For evigt fanget af CMS’ets begrænsninger - med mindre man investerer dyrt i noget virkelig skræddersyet, og så kunne man lige så godt have gjort det rigtigt fra starten.

Også rent forretningmæssigt er det win-win. Frem for at sidde med en masse indhold i et standard CMS der lider af knopskydningssyge, så ender man op med et stykke unik software der i sig selv udgør en ret stor immateriel værdi for virksomheden. Zetland får ikke blot et bedre system tilpasset lige præcis deres egne visioner, uden tvungne kompromiser, virksomheden bliver samtidig mere værd.

Martin Dahl

Medmindre man synes det er en sjov øvelse og ikke skal betale for det, så er det en stor risiko at løbe og sandsynligvis ikke bæredygtigt at udvikle sit eget CMS.

Det er vildt spændende i begyndelsen, men der kommer et punkt, hvor man bliver overhalet af at skulle udvikle alle de små vigtige detaljer, som et modent CMS/CMF leverer out-of-the-box og i mange tilfælde ganske gratis.

Det drejer sig om sikkerhed, eksisterende kompleks funktionalitet og hastighed for nye tiltag.

Jeg tror på, at interfacet påvirkes af den underliggende arkitektur - om man vil det eller ej. Og risikoen for at ligne de andre bliver større for hver hyldevare, man bruger.

Alle moderne CMS/CMF'er har et tydeligt system for IA og et klart skel mellem frontend og backend. Hvis ikke man skriver sin egen frontend dvs. udvikler sit theme fra bunden, så er det klart man kommer til at ligne andre. Det er en helt almindelig opgave, der skal løses for hvert nyt digitalt produkt, og der er ingen begrænsninger på hvorledes man kan udtrykke sin frontend, hvis man ikke er begrænset til tilpasse eksisterende temaer.

Det kunne lyde som om, Zetland har ønsket et moderne og distribueret arbejdsflow, integration med stærke værktøjer og en solid visuel identitet udtrykt i et levende webdesign, hvilket jo er et reelt og fornemt brief på et spændende digitalt produkt. Men der er intet i et sådan brief, som udelukker eksisterende platforme.

Det er vigtigt at sammenligningsgrundlaget ikke er et CMS med de plugins, man lige kan få til at fungere ved at klikke med sin mus og kopiere scripts man finder på nettet. Og det er klart at man ikke kan tage udgangspunkt i tilpasning af eksisterende themes, hvis man er seriøs om at ville et stærkt design. Det er det ordentligt egetudviklede CMS, som skal sammenlignes med ordentlig implementering i et eksisterende CMS/CMF.

Det er et spændende regnestykke hvad der giver bedste løsning, men jeg er overbevist om at det i dette tilfælde samlet er den bedste løsning for både udviklere, redaktører, journalister og ejere at basere sin digitale forretning på et etableret, tidssvarende, battletestet CMS/CMF.

Log ind eller opret en konto for at skrive kommentarer

Pressemeddelelser

Big Data Lake Summit: Fast and Trusted Insights

If you want to outpace, outsmart and outperform your competition in a digital world, you need trusted data that can be turned into actionable business insights at speed.
24. apr 2017

Welcome to Free course to learn about the combined power of Alteryx and Qlik!

Affecto invites to a free course, where we want to share our knowledge of this self-service analysis platform together with the power of Qlik.
20. apr 2017

Robotics Process Automation (RPA) changes the way organizations think about and perform work at a reduced cost, higher efficiency and greater productivity

Join us for this exiting seminar, which Affecto hosts with our business partner SmartRPA May 3rd, 2017 at 13.00 in Copenhagen.
30. mar 2017