Pirate Party Ad

lördag 8 mars 2008

Drupal och 17 fördelar

Att programmera välstrukturerade, snygga, stora dynamiska webbplatser är inte enkelt och jag börjar komma till slutsatsen att det kanske inte är så smart att återuppfinna hjulet varje gång. Efter att ha djupstuderat ett fritt (CMS) system som heter Drupal har jag kommit till insikt att advancerade sajter kan skapas på ett bättre sätt.

Webbplatser bygger på en uppsjö av olika tekniker för att fungera. När de första webbsidan publicerades 1991 av Tim Berners-Lee så bestod varje webbsida av vanlig text, fylla med en del kodsnuttar som berättade exempelvis var fetstil började och slutade. Detta blev vad som skulle kallas HTML (HyperText Markup Language). Fyra år senare kom JavaScript, den första tekniken som kunde få statiska sidor på Internet att vara lite mer levande, och däremellan hade redan dynamisk generering av webbsidor uppkommit (t.ex. aftonbladet). Men som vi alla vet så har utvecklingen gått snabbare och snabbare och idag finns det en uppsjö av tekniker och metoder för att få den professionella funktionalitet/design som så många webbplatser har: HTML, XML, XHTML, CSS, JavaScript, Apache/PHP/SQL, ASP(.NET), Python, JSP (Java), Ruby on Rails med flera...

Precis som glaset kan vara både halvfyllt och halvtomt så ger alla dessa tekniker både fantastiska möjligheter men saknar samtidigt ett klart och tydligt sätt hur de ska interagera på ett flexibelt sätt. Som en webbutvecklare för större webbplatser så frågar man sig ständigt frågor såsom:

  • Hur kan jag konstruera en webbplats där jag över en dag kan ändra hur den ser ut?
  • Hur konstruerar jag ett smidigt och snabbt system för hur behörigheter på webbplatsen fungerar?
  • Vilket typ av innehåll ska min webbplats innehålla? Hur strukturerar jag det i databasen?
  • Hur implementerar jag en flerspråkig webbplats?
  • Hur implementerar jag sökmotor för hela webbplatsen?
När jag under ett års tid satt jag som förtroendevald webmaster åt Helsingkrona nation i Lund så ställdes frågor som dessa på prov. Arbetet bestod i att underhålla och utveckla helsingkrona.se. i samarbete med andra förmän och utskott.

Helsingkrona.se är en helt hemsnickrad komplex webbsajt som erbjuder användare med en viss behörighet att redigera alla artiklar och publicera både interna och externa nyheter. Utöver detta så har webbplatsen ett community som erbjuder funktioner á la (simplifierad) Facebook/Lunarstorm; bildgalleri, privata meddelanden, forum med mera.

Viktigt att förstå är att jag här inte bara talar om hur man impmenterar funktioner i listan, över utan även hur man strukturar en webbplats på ett så sätt att ny tung funktionalitet såsom lägga till ett nytt språk, en ny design, flytta webbplatsen, skins - arbeten som kan bli oerhört tunga om man inte har haft det i åtanke redan från första början. Kalla det vad ni vill - flexivilitet, modularitet - kärt barn har många namn.

Att skriva ett flexibelt hemsidesystem är oerhört svårt. Hur vet man hur stor en webbplats kommer att bli? Ska man räkna med att sidan skall översättas till spanska, engelska och italienska redan från första dagen? Vi som utvecklade Helsingkronas hemsida insåg att webbplatsens kod behövdes omarbetas och arbetar i själva verket för tillfället med att städa upp och strukturera upp.

Men i samband med att jag har tre andra större webbplatsprojekt inom en nära framtid så har jag under de senaste veckorna gjort en djupdykning i CMS-djungeln. Jag har fokuserat på Drupal då många forum och äldre blogginlägg tycktes visa på att denna CMS visserligen hade en lite högre inlärningströskel än många andra, men var oerhört kraftfullt.

Förkortningen CMS står för Content Management System och är precis vad som har implementerats på Helsingkrona.se. Ett CMS kan sägas vara en webbpubliceringsplattform - ett system som erbjuder enkel redigering av webbsidan via en webbläsare. Vissa kommer även med funktioner för att ha ett community.

Det finns oerhört många att välja bland - vissa är gratis, andra fria och en del behöver man betala töntigt stora summor för. Drupal är öppen källkod, vilket ger många fördelar gentemot slutna; Över hundra utvecklare sitter världen över och ser över all kod som skrivs till plattformen. Detta gör att koden inte kan tappa fokus på vara lättläst eller sakna flexibilitet för att passa många behov. Det ger såklart även en boost i hur säker systemet kan anses. 200 ögon är bättre än sex.

Att projektet är kollaborativt ger även en annan boost - Drupals dokumentation är alldelles fantastisk. Det finns guider för allt, och skriftliga beskrivningar över API:er. Skulle dokumentation av någon anledning saknas så finns hjälp alltid nära till hands via dess stora användarbas på groups.drupal.org.

Vi har tio sidors tunn dokumentation av Helsingkronas hemsida.

För att hålla min stora nya fascination för Drupal kort så presenterar jag här en lista över alla de fantastiska fördelar som jag ser med det:
  1. Öppen källkod.
  2. Stor användarbas med aktiva forum och diskussionsgrupper.
  3. Snygg, väldokumenterad kod.
  4. Ett mycket snillrikt system uppbyggt av moduler som starkt uppmuntrar ny kod att delas upp så att man vet var man hittar den. Möjlighet att stänga av och sätta på moduler finns.
  5. Många färdigskrivna moduler
  6. Stöd för sökmotorvänliga adresser.
  7. Stöd för mallar/skins som gör att man kan dela upp användargränssnitt och bibliotek.
  8. Stöd för webbplatser på flera språk.
    1. Automatisk igenkänning av vilket språk en besökare har på sin dator.
    2. Läckra användargränssnitt för att se vilka sidor som behöver uppdatera sin översättning.
    3. Möjlighet att ladda ner alla (~1600!) vanliga ord och uttryck från drupal.org samt bidra till gemenskapen om man har uppdaterat översättningarna till det bättre.
  9. Tydligt administrationsgränssnitt.
  10. Läckert API för att hantera formulärdata på ett flexibelt och mycket mer säkert sätt.
  11. Möjlighet att kategorisera nyheter och sidor på sin webbplats och filtrera efter detta.
  12. Communityfunktioner så det ryker om det:
    1. Vänlistor
    2. Skicka meddelanden mellan användare
    3. Skriva böcker och artiklar tillsammans
    4. Forum
    5. Delta/Skapa i grupper
    6. Bloggar
  13. Fantastisk behörighetssystem för att dela in användare i grupper såsom författare, webmaster etc. Man kan t.ex. ställa in att vissa användare bara får redigera vissa artiklar/böcker.
  14. Snabbt (har överlevt en slashdottning) - har inbyggt cache i systemet.
  15. Mycket snygg och flexibel lösning på hur man administrerar menyer på en sajt.
  16. Hjälpfunktioner för AJAX-funktionalitet.
  17. Möjlighet att översätta JavaScriptkod till flera språk.
...och sist men inte minst så har Drupal tänkt på så mycket att avancerad funktionalitet är lätt att implementera. Det var det den här bloggposten egentligen handlade om.

Drupal är fantastiskt och jag ser fram emot att jobba i det. Version 6.0 kom ut för ett par veckor sedan och deras moduler håller på att upgraderas till den nya versionen. Jag har hjälpt till lite med översättnignen till Svenska.

2 kommentarer:

Unknown sa...

En entusistisk och strukturerad bild av Drupal. Tack.

Anonym sa...

mycket intiresno, tack