cms, optimerade för programmerare eller hur kan ett sådan ...427462/fulltext01.pdf · the test...
TRANSCRIPT
Examensarbete
David Strömbom
2011-05-20
Ämne: Datavetenskap
Nivå: B
Kurskod: 1DV40E
CMS, optimerade för programmerare
Eller hur kan ett sådan skapas.
Abstrakt
Denna rapport fokuserar på att undersöka några av de CMS som finns på marknaden
idag. Syftet är att se om dessa CMS är optimerade för programmerare och ger den frihet
som man vill ha när man skapar webbsajter. Utifrån dessa undersökningar skapas sedan
en testplattform för att se hur ett CMS skulle kunna skapas för att vara mer optimerat
för programmerare och ge dem den frihet som önskas. Testplattformen Dast CMS visar
att det går att skapa ett CMS som är mer anpassat för programmerare istället för
konfigurerare.
Abstract
This article focuses on examining some CMS available on the market today. The aim is
to see if these CMS is optimized for programmers and provides the freedom that you
want when creating websites. Based on these examinations a test platform is then
created to see how a CMS could be created that’s more optimized for programmers and
give them the freedom that is desired. The test platform Dast CMS indicates that it is
possible to create a CMS that is more customized for programmers instead of
configurators.
Förord
Idéen till detta arbete uppkom då jag ville skapa ett verktyg för att skapa webbsidor med
större frihet än många existerande CMS idag kunde erbjuda. Jag ville ha full kontroll
över koden och över när, var och hur koden exekveras, samtidigt så ville jag att detta
verktyg ska vara snabbare och smidigare än att skapa allt från grunden. Det har varit
intressant att undersöka och skapa den testplattform som i alla fall är en början på det
verktyg som är målet. Tack till min handledare Daniel Toll för hjälp med kod samt med
att bolla idéer om hur målet kunde uppfyllas.
Innehållsförteckning
Abstrakt ................................................................................................................ I
Abstract ................................................................................................................ I
Förord ..................................................................................................................II
1. Bakgrund ...................................................................................................... 1
1.1 Introduktion till problemområdet ................................................................................ 1
1.1.1 CMS på markanaden idag ..................................................................................... 1
1.1.2 Problem ................................................................................................................... 3
1.2 Tidigare forskning ........................................................................................................... 4
1.3 Avgränsningar .................................................................................................................. 4
2. Metod ........................................................................................................... 5
2.1 Metoddiskussion .............................................................................................................. 5
3. Genomförande .............................................................................................. 6
4. Resultat ........................................................................................................ 7
5. Slutsats ........................................................................................................11
6. Källförteckning ........................................................................................... 14
6.1 Elektroniska källor ........................................................................................................ 14
6.2 Artiklar ............................................................................................................................ 14
1
1. Bakgrund
Enligt Vaidyanathan och Mautone (2009) är ett Content Management System (CMS)
ett system som gör det möjligt för användaren att hantera dynamiskt innehåll på en
webbsida genom ett användarvänligt gränssnitt. Detta görs normalt genom
kommunikation med en databas där användaren kan spara och hämta den information
som behövs. Det gör att användaren har möjlighet att lätt anpassa webbsidornas
innehåll efter personlig smak och kan skapa en mer interaktiv upplevelse för
webbsidornas besökare.
Några av de mest använda CMS1 idag är Wordpress, Drupal, Joomla och vBulletin.
1.1 Introduktion till problemområdet
Hur mycket frihet ger existerande CMS för programmerare idag?
Hur kan ett CMS skapas som är mer anpassat för programmerare och ger den frihet
som kan behövas?
Frihet är en abstrakt term, med frihet i detta sammanhang menas möjligheten att skapa
och konfigurera sidorna efter de önskemål som finns via det CMS som används. Ett
CMS som är mer anpassat för en programmerare ger därför denna möjlighet att
utveckla sidorna utan några begränsningar. Syftet med detta är att skapa ett verktyg
som, utifrån de tester och undersökningar som kommer göras, ger en programmerare
möjligheten att snabbt och effektivt skapa en skräddarsydd sida åt en klient.
Författaren har under detta projekt installerat och undersökt ett par av de mesta
använda CMS på marknaden idag. De CMS som valts är Wordpress och Drupal då
dessa är de mest populära idag1.
1.1.1 CMS på marknaden idag
1.1.1.1 Wordpress
Wordpress är ett av de vanligaste och mest populära1 CMS som används idag. Det går
snabbt att installera och få igång. 11 tabeller skapas i databasen vid grundinstallation.
Wordpress 3.1 innehåller 846 filer och 83 mappar som tar upp 11,4 MB
1 http://trends.builtwith.com/cms
2
hårddiskutrymme vid grundinstallation. Grundinstallationen ger användaren utseendet
av en blogg, för att ändra utseendet så får man ladda ner ett annat tema eller skapa ett
egen skräddarsytt tema. Det går ganska snabbt att lära sig Wordpress, man får dock ett
starkt intryck av att det är skapat för bloggar. I gränssnittet så kan man skapa inlägg
och det är ju helt inriktat mot bloggar. Man kan även skapa sidor som man kan editera
med en inbyggd WYSIWYG-editor. Bloggintrycket kan förminskas genom att
konfigurera en del inställningar, men för att få bort det helt samt få en sida för ens
specifika behov måste ett skräddarsytt tema skapas. Om man vill skräddarsy sidan mer
än att ändra text och bilder så måste man installera tillägg. I grundinstallationen är 2
tillägg installerade. Det går att bläddra och söka efter fler plugin direkt från Wordpress
gränssnitt. Det är lätt att hitta något som kan passa behovet då det finns över 14000
plugin nu och antalet växer ständigt. Om man inte hittar något som passar det man vill
ha så får man skriva ett eget plugin eller redigera ett redan existerande plugin (vilket
går att göra direkt från gränssnittet). När man väl har ett plugin som man vill installera
så går detta smidigt och man kan sedan använda det vart man vill på den aktuella
sidan. Wordpress har bra dokumentation och det är lätt att hitta det som man behöver
mer information om. Wordpress är ett mycket kraftfullt och användarvänligt verktyg
och även fast det kan finnas en del begräsningar till att skräddarsy allt så är det ett bra
alternativ för många användare.
1.1.1.2 Drupal
Drupal är också ett mycket populärt2 CMS. Drupals grundinstallation är större än
Wordpress. Vid grundinstallation skapas 73 tabeller i databasen. Drupal 7.0 innehåller
1125 filer, 139 mappar som tar upp 14,2 MB hårddiskutrymme vid grundinstallation.
Drupal går snabbt att installera och komma igång med. Författaren upplever dock att
det var lättare att lära sig Wordpress gränssnitt. Drupal ger inte samma bloggintryck
som Wordpress, det märks att Drupal är större i storlek och mer avancerat. Istället för
att ha en administration/presentation-sida så har man då man loggat in en
administratör-meny överst på sidan. Alla val man gör i menyn läggs som en ”overlay”
så man stannar kvar på sidan. Detta gör att man inte behöver växla mellan
2 http://trends.builtwith.com/cms
3
administrationsgränssnittet och pressentationsgränssnittet för att se eller göra
förändringar på webbsidorna.
Det kommer inte med en editor med grundinstallationen av Drupal utan man kan
istället ändra ”Text format”. Man kan antingen skriva bara text eller ren html-kod.
Detta gör att Drupal är mer fritt för de användare som kan html. Det finns en
WYSIWYG-editor att ladda ner som ett plugin om så skulle önskas. Plugin (eller
moduler som de kallas i Drupal) är lätta att ladda ner och installera. Det finns även här
många att välja från (7857 stycken då detta skrivs). Allt som allt så ger Drupal ett mer
professionellt intryck, det är mer avancerat och man kan tänka sig att det passar mer
för användare med lite högre kunskapsnivå inom html.
1.1.2 Problem
1.1.2.1 Wordpress
Wordpress är byggt mer för konfigurerare eller de användare som inte har någon
kunskap om programmering. Det är byggt för att i stort sett vem som helst ska kunna
skapa en webbsida och börja skriva innehållet i en miljö som de känner till. Det kan
vara svårt för en programmerare att skräddarsy sidan så som de själva vill ha den. Den
frihet som man ofta vill ha som programmerare minskas. Den frihet som saknas är
bland annat möjligheten att kunna skriva PHP-kod vart man vill på sidan, utan att
behöva skapa eller ladda ner plugin. Eftersom det inte finns någon ordentlig debugger
så kan det bli svårt att felsöka koden som skrivs i ett plugin, det blir därför svårt att
skapa ett stort plugin.
1.1.2.2 Drupal
Drupal är byggt för lite mer avancerade användare som kan en del html och liknande.
Det kan dock även här vara problem att få en skräddarsydd sida. Den frihet som man
ofta vill ha som programmerare minskas. Drupals grundinstallation kommer även med
en del moduler som kan vara överflödiga för en del sidor. Den frihet som saknas är
bland annat möjligheten att kunna skriva PHP-kod vart man vill på sidan, utan att
behöva skapa eller ladda ner plugin. Det finns en modul för Drupal som gör det
möjligt att skriva PHP-kod blandat med html men denna måste man som sagt ladda
ner och installera. Eftersom det inte finns någon ordentlig debugger så kan det bli
svårt att felsöka koden som skrivs i ett plugin, det blir därför svårt att skapa stora
moduler.
4
1.2 Tidigare forskning
Efter mycket letande har ingen forskning hittats inom området CMS för
programmerare.
1.3 Avgränsningar
Detta projekt kommer att ha fokus på att undersöka en del av de CMS som finns på
marknaden idag och se om dessa kan begränsa en programmerare att skapa en
webbsida eller applikation som uppfyller de behov och krav som skapats. Vidare så
skapas en testplattform för ett CMS för att undersöka hur en programmerare kan
producera ett eget CMS som ger mer frihet. Avgränsningar görs för säkerhet då detta
är ett stort område som inte hinns med. Vidare fokuserar testplattformen Dast CMS
på funktionalitet och stora avgränsningar kommer göras för utseendet av detta system.
5
2. Metod
Under detta projekt kommer en explorativ metod användas. Wordpress och Drupal
kommer att undersökas och prövas. En testsida där möjligheter för att kunna blanda
PHP-kod med XHTML från gränssnittet kommer att skapas. En testplattform
kommer att skapas där möjligheterna för mer frihet för programmerare i ett CMS
kommer att testas och undersökas. För att minska begränsningen i testplattformen när
koden skrivs så skall PHP-kod direkt kunna blandas med XHTML via gränssnittet vid
redigering eller skapandet av en sida. Lagring av kod i databas kommer att testas. Den
testmiljö som kommer användas är Windows 7 på lokal maskin och med hjälp av
programmet EasyPHP som agerar som lokal server samt mysql-databas. Dessa tester
kommer även testas på webbserver på ett webbhotell.
2.1 Metoddiskussion
Den största bristen med denna metod är att en testgrupp av programmerare inte finns
som kan testa releaserna av projektet. Andra brister i metoden är möjligtvis att de
resultat som framkommer av detta projekt till stor del är författarens åsikter och
bredare studier med fler parter kan ge ett mer rättvisande resultat. Ett annat alternativ
är att använda sig av intervjuer av programmerare som använder CMS idag och se vad
dessa tycker samt om de känner sig begränsade. Enkäter riktade till programmerare
som använder CMS skulle också kunna användas. Grundtanken med detta projekt var
ursprungligen att skapa ett CMS för programmerare och att använda en explorativ
metod bedömdes vara mest lämpligt. Den valda metoden passar denna typ av arbete,
större undersökningar med intervjuer är för tidskrävande.
6
3. Genomförande
Testerna gick till så att webbsidor skapades i de utvalda CMS. En testsida skapades där
möjligheterna för att blanda PHP-kod i XHTML undersöktes. De olika funktionerna
och möjligheterna undersöktes för varje CMS. Utvecklingsmöjligheterna för dessa
testades och begränsningar i deras design undersöktes. Utifrån dessa tester och
undersökningar skapades sedan en testplattform av hur ett CMS kan skapas för att
förbättra en programmerares frihet vid utvecklingen av sidor åt en klient.
Genomförandet skedde utan några avvikelser. Testerna genomfördes som planerat.
7
4. Resultat
I Drupal och Wordpress så fanns ingen möjlighet att blanda PHP-kod och XHTML
på annat sätt än att skriva eller ladda ner en modul som möjliggör detta.
Testplattformen Dast CMS skapades för att se om ett CMS med mer frihet kunde
förbättra en programmerares möjligheter att enkelt och snabbt skapa skräddarsydda
webbsidor. Dast CMS ger användaren möjlighet att, via administrationsgränssnittet,
skapa webbsidor och placera dessa i meny som sedan visas på
pressentationsgränssnittet. Det som gör att denna testplattform skiljer sig från
Wordpress och Drupal är att när en webbsida skapas så kan användaren skriva PHP
kod som sedan körs och placeras på webbsidan (se figur 1 & 2). Med Dast CMS så kan
PHP-kod och XHTML blandas efter programmerarens behov och på så sätt ge mer
frihet i sättet som de programmerar.
8
Figur 1. Här visas hur PHP kod kan skrivas direkt på sidan. Resultatet visas på figur 2.
Figur 2. Här visas resultatet av PHP kod (se figur 1).
9
Detta ger enligt författaren användaren mer frihet. Alla PHP-filer från mappen
”data/modules” inkluderas in i programmet vilket gör det möjligt för användaren att
skapa klasser som den sedan kan kalla på via webbsidorna för att återanvända kod (se
figur 3 - 5).
Figur 3. Här visas koden från PHP-fil som anropas via koden från sidan (se figur 4).
Figur 4. Här visas hur funktionen ViewDate anropas via koden (se figur 3). Resultatet
av koden visas i figur 5.
10
Figur 5. Här visas resultatet av PHP koden som skrevs på sidan (se figur 4).
11
5. Slutdiskussion
Slutsatsen som jag kom fram till är att existerande CMS inte är optimala för
programmerare utan är mer anpassat för konfigurerare. Efter att ha genomfört
undersökningen av Wordpress så kan författaren konstatera att det är skapat mer för
konfigurerare än för programmerare. Det ger dock användaren chans till utveckling
genom att möjliggöra skapandet av moduler som kan installeras och på så sätt ge en
programmerare möjligheten att skräddarsy webbsidan. Wordpress har emellertid
begränsat moduler som skapats genom designbeslut som tagits under utvecklingen av
detta CMS. Drupal har liknande designbeslut. Varken Wordpress eller Drupal ger
användaren möjlighet att skriva egna funktioner för användning på webbsidor, utan
moduler måste skapas, laddas ner och installeras.
5.1 Vidareutveckling av Dast CMS
Genom att ha utvecklat testplattformen Dast CMS har jag kunnat se hur man skulle
kunna utveckla ett CMS som kan ge programmerare mer frihet. Detta kan dock leda
till brist på säkerhet eftersom ägaren av en webbserver kanske inte vill att de som
utvecklar sidan ska kunna komma åt eller förstöra information på servern. När man
därför utvecklar Dast CMS vidare så bör man begränsa det en del. Man skulle kunna
tänka sig att man skapar olika roller som har olika rättigheter av exekvering av PHP.
Vissa funktioner borde begränsas så att vissa roller inte får använda dem. Ett exempel
vore PHP-funktionen3 die som avslutar all PHP och gör att all kod efter anropet till
die inte körs vilket kan ha förödande effekter. Vissa roller bör heller inte ha möjlighet
till att ändra databasstrukturen, som drop table som tar bort en hel tabell i databasen.
All PHP-kod som skrivs på sidorna bör kollas så funktioner och delar som användaren
inte har tillåtelse att använda tas bort. Man kan också tänka sig att man har olika
gränssnitt för olika roller, en konfigurerare behöver inte ha ett gränssnitt där
modulhantering visas utan att redigera innehållet på sidorna är tillräckligt.
Vidareutveckling av Dast CMS kan också göras genom att man inom ”moduler” ska
kunna utveckla PHP-skript direkt i gränssnittet. En ordentlig editor måste utvecklas
som ger användaren hjälpmedel som färgmarkering av koden, radnumrering samt
debugger som underlättar vid större moduler. Detta saknades i Wordpress och Drupal.
3 http://php.net/
12
Man kan tänka sig att man skapar en iframe eller liknande på sidan som när man tar
spara modul visar om det finns några fel i koden. Detta kan man kanske göra genom
att använda funktionen php_check_syntax som tar en specifik fil och testar om det
finns några skript fel. Denna iframe kan även innehålla den utskrift som skriptet
genererar så användaren direkt ser vad modulen skriver ut. Sen så borde man också
tänka på namespace, vad ska hända om man använder en variabel som används någon
annanstans på sidan och hur kan man hindra att man gör det? Om man nu vill
begränsa användandet av dessa namespace. Man kan kanske lägga in dem i den
kontroll av kod som körs för att kolla funktioner som används eller liknande. Denna
utveckling borde köras på en egen server eller genom att använda en virtuell server
som funktionen Runkit_Sandbox4 vilket skapar en ny instans som körs separat från
resten av servern. Med hjälp av Runkit_Sandbox kan man ta bort funktioner som inte
får användas genom att använda disable_functions och disable_classes. Användaren
kan därför ges möjligheten att utveckla med PHP som den önskar men med
begränsade rättigheter. På så sätt kan man inte göra någon skada på existerande sidor
när man utvecklar en modul.
5.2 Fil eller databas
En annan sak som bör diskuteras är om man ska lägga modulerna som skapas som en
fil på servern som görs idag eller om dessa ska läggas i databasen. Genom att lägga
dem i databasen så kan man versionshantera kod lättare genom att använda insert
istället för update när man lägger in kod. Man kan då ha en tabell knuten till dem som
håller koll på vilken version av koden som körs och man kan på så sätt gå tillbaka till
tidigare kod lättare. Angående säkerhet så är det kanske säkrare att ha dem som filer då
det är lättare att göra SQL-injektioner om koden ligger i databas, eftersom databasen
är knuten till användarkonton på Dast CMS. Att ladda upp en fil till webbservern är
dock mer begränsat då den oftast är knuten till ett FTP-konto. En annan fördel med
att använda moduler som filer är ju att man lättare kan dela funktionerna man skriver.
Det är lättare att ladda upp en fil till en mapp på servern som man sedan kan använda
hur mycket man vill än att kopiera och klistra in kod i olika tabellfält i databasen.
4 http://php.net/manual/en/runkit.sandbox.php
13
5.3 Dokumentation
Det får heller inte glömmas att om man skapar ett CMS så måste god dokumentation
finnas så att de som använder det lättare kan sätta sig in i hur allt fungerar. Man bör ha
exempel på hur man gör saker som att skapa ny sida, skriva PHP-kod på sidorna, hur
man skriver moduler, hur man anropar dessa från sidorna och menyhantering. Ju fler
exempel som tas med i dokumentationen ju lättare blir det för användaren att förstå
hur detta CMS är uppbyggt.
5.4 Bör Dast CMS vidareutvecklas?
Genom att vidareutveckla Dast CMS enligt diskussionen ovan som hjälp så kommer
ett CMS som är optimerat för programmerare kunna skapas. Det kommer ge
användaren en större frihet att utveckla sidorna så som de vill ha dem. Det kommer
också vara snabbare än att koda allt från grunden. Man kan sedan lätt lämna över
underhållet av sidorna och dess innehåll till konfigurerare. Detta gör att det finns
mycket värde i att vidareutveckla Dast CMS.
14
6. Källförteckning
6.1 Elektroniska källor
BuiltWith trends (2011). CMS Usage Statistics
http://trends.builtwith.com/cms [2011-05-11]
PHP documentation (2011). PHP.net
http://php.net/ [2011-05-11]
6.2 Artiklar
Vaidyanathan, G. & Mautone, S. (2009). Security in Dynamic Web Content
Management Systems Applications. Communications of the ACM, (12), 121-125.