Jämförelse mellan Open Source CMS i .NET
Vi är mitt upp i ett laborationsprojekt där vi ska utmana oss själva i ny teknik. Vi har ju lång och bra erfarenhet av webb/Utveckling i Episerver och andra kommersiella plattformar men numera finns det väldigt många spännande open source projekt som kan utmana de kommersiella produkterna inte bara på enklare webbplatser. Vi har valt att titta närmare på några av de CMS produkter som är baserade på språket C# och baserade på .NET: Orchard, Umbraco och en bubblare BrickPile. Kravet för vårt val har varit MVC3 vilket sorterade bort några av de kända open source CMS produkterna som t ex N2.
Först ut är Orchard som är byggt av anställda på Microsoft från början och självaste Scott Guthrie har länge uttalat sig i varma ordalag kring detta projekt. Orchard är helt byggt i MVC3 och har massvis med finesser som vi ville utvärdera direkt.
Tråkig start: Orchard
Eftersom vi utvecklar i Visual Studio vill vi få igång projektet där (och inte i WebMatrix) vilket visade sig vara ett stort problem. Att ladda ner Orchard och få igång en sajt tog inte många minuter men att få det att kompilera i Visual Studio var ingen lätt nöt att knäcka. Till slut visade det sig att man är tvungen att skapa en ny tom MVC3 Web Application och därefter kopiera filer från en Orchard web site och välja att inkludera alla filer utom Modules. Det saknas dessutom dokumentation om detta. Orchard finns inte på NuGet vilket var synd i efterhand när vi ser hur enkelt vissa andra system fungerade.
Till slut är ändå allt frid och fröjd. Efter lite pillande förstår man ganska bra hur det ska gå till för att lägga till sidor, mallar, layout osv. Några spännande koncept kring lager, Widgets, Content Types fick vi lära oss och spännande är att man kör Orchard.Exe för att skapa upp kopior på befintliga teman för att kunna redigera och göra sin egen layout:
Redigeringsgränssnittet är mer likt Wordpress än Episerver och har ingen sajtstruktur på det sätt som Episerver och Umbraco har.
Tyvärr börjar vissa nackdelar för webbutvecklare bli synliga när ska börja bygga något mer än innehåll och layout. För att bygga ut sajten med en egen modell, vy och kontroller behöver man göra en plugin som pluggas in som modul i Orchard. Dessutom stör Orchard ut den vanliga routinguppsättningen vilket gör att man inte kan göra en vanlig route utan man måste göra plugga in en ”Driver” och en ”Module” som sedan registreras och aktiveras i admin. Följ den här tråden så förstår ni vad jag menar. Dessutom tar detta dynamiska pluginsystem att varje kompilering tar lång tid och sajten upplevs långsam innan den blivit cachad. Man har svårt att överblicka vad som händer och allt blir väldigt svårjobbat och komplexiteten gör att det är svårt att överblicka. Antalet dll-filer och det stora antalet beroenden mellan olika bibliotek gör också känslan naggad i kanten. En annan detalj som känns svår är att man inte använder Masterpage i layoutsystemet utan man bygger ett nytt tema som inte ens har intellisense stöd.
Den enda fördelen med konceptet för oss som utvecklare är att allt man bygger blir väldigt pluginbart vilket annars är svårt att åstadkomma för att t ex kunna flytta funktionalitet mellan projekt och utbudet av mer avancerade moduler som Facebook Connect osv ökar. För en redaktör är detta upplägg självklart oslagbart eftersom det inte kräver programmeringskunskaper alls för att bygga ut sina webbplatser.
Nackdelar Orchard:
1. För stort ramverk
2. Inte anpassat till utvecklare / team
3. Man kan inte använda MVC utan att göra om sin kod = ingen intellisense.
4. Svårt att förstå vad som är fel när något går snett
5. Svårt att installera i Visual Studio
Fördelar:
6. Bra för redaktörer
7. Bra för enskilda utvecklare
8. Enkelt att lägga till moduler som t ex bloggar, disqus, lightbox etc.
Umbraco gjorde vi en installation av och upptäckte tyvärr att den nuvarande skarpa versionen inte stöder MVC3 vilket är ett krav för vår labb. Detta stöd kommer först i version 5 som i dagsläget inte finns mer än som Community Technology Preview 1. Vi har installerat denna version för att utvärdera men än så länge är det en bit kvar innan Umbraco 5 är jämförbart med tidigare versioner eftersom många delar behöver skrivas om från början i MVC. Bland annat finns det inga plugins, ingen användarhantering och det går inte att radera information som skrivs in.
Installationen av Umbraco 5 går väldigt smidigt. Ladda ner zipfilen, följ instruktionerna och gå till /install.
Den som har använt EpiServer känner igen sig väldigt snabbt. Alla sidor är organiserade i trädstruktur och alla sidtyper har egenskaper som kan kommas åt från mallsidorna.
Mallegenskaper
Från koden ser allt bra ut, det är MVC3 och fungerar så som man förväntar sig:
Summeringen av Umbraco blir:
1. Stöder ej MVC i dagsläget
2. Väldigt likt Episerver på både gott och ont
3. Har som Orchard stort utbud av plugins och moduler (i skarpa versioner)
4. Kommer med MVC3 i version 5 (dröjer dock länge)
5. Välkänt Open Source CMS med gott renomé.
6. Rätt teknikval och mindre ramverk ger bättre prestanda (version 5).
7. Officeintegration och mobila teman
Ny trend att skala bort
Ju mer vi suttit med dessa stora ramverk inser jag att man helst vill använda ett CMS som är så litet som möjligt, ett som håller sig borta från själva sajten. Applikations/Utveckling handlar väldigt mycket om att ha kontroll och när magiska saker händer uppstår osäkerhet. MVC3 är så pass bra och webbläsarna löser numera mycket med CSS och jQuery som tidigare behövde logik på servern. Att bygga like-knappar för Facebook Connect eller bädda in en Disqus eller google analytics behöver inte ett CMS hantera. Några javascript och en CSS så är det löst. Man behöver inte ha teman, plugins för enkla saker. Den tid man vinner där äts snabbt upp av den tid som tar som strulet med alla ramverk, uppgraderingar mellan versioner etc.
Önskelista på framtidens CMS
Däremot klarar man sig ändå inte utan ett admin, men varför och hur vill man ha ett admin?
1. Lightweigt
2. Snyggt / enkelt att använda
3. Anpassat till modellen/koden, inte tvärtom
4. MVC3 och Razor.
5. Stabilt och hög prestanda
6. Inloggning, säkerhet och användarhantering
7. Framtidssäker lagring, gärna i en NoSQL databas
8. Välkänt
9. Pluginstruktur med tydlighet och stort utbud
10. Stor community, mycket dokumentation, exempeltexter
11. Open Source / Gratis
Är framtiden redan här?
Vi gillar ju RavenDB och med ovanstående lista och några fler sökord hittade jag faktiskt ett CMS projekt som heter BrickPile som är utvecklat av några svenskar. Det är verkligen inte välkänt och har inget stort community än men jag är ändå väldigt imponerad av det jag sett (och snyggast hittills). Det är egentligen för tidigt att säga något om det alls eftersom det enda som finns än är en Technology Preview men till skillnad från båda ovan fungerade installationen på första försöket. All data sparas i RavenDB, allt är byggt i MVC3, och finurligt är att modellerna i MVC styr hela editgränssnittettet och lagringen. Du gör alltså ingen konfigurering alls i CMS när du lägger till nya egenskaper. Allt anpassar sig till din kod:
Genrerar automatiskt denna editor:
Och sparas:
Eftersom admin byggs upp utifrån modellen skapar man bara nya modeller och vyer och sen går man till admin och skapar sidor:
En annan lärdom jag gjort är att NuGet är det hetaste. Alla bra ramverk jag hittade hade sin absolut senaste version via NuGet. Installationen av BrickPile var t ex bara att skapa ett tomt MVC3 projekt och köra NuGet:
PM> Install-Package BrickPile
Då kommer inte bara BrickPile in i ditt projekt utan även alla paket som BrickPile är beroende av (TinyMce, RavenDb, Loggramverk osv), web.config ställs in rätt, nya filer hamnar in i projektet, osv. Det här är framtiden. Inga mer Libs/ThirdParty.
Tyvärr är inte BrickPile redo att börja användas än eftersom många delar saknas, t ex användarhantering, rättigheter, sortering mellan sidor, dokumentation etc. Däremot ser vi väldigt mycket fram emot att följa /Utvecklingen och kommer återkomma till alla tre CMS längre fram när de kommit i betaversioner.
Slutsatsen är att de tre produkter vi testade är utmärkta för tre olika typer av projekt:
1. För bloggen eller mindre webbplatsen utan avancerad funktionalitet: Orchard
2. För större webbplatser och tydlig konkurrent till Episerver: Umbraco
3. För webbapplikationer eller mer avancerade webbplatser: BrickPile
Christian Landgren
2011-08-11