In letzter Zeit spiele ich mit dem Gedanken meinen Blog umzuziehen. Nicht komplett, eigentlich nur einen Teil. Alles andere bleibt hier, wie gehabt. Doch das Vorhaben ist gar nicht so einfach wie ich Anfangs dachte. Die Kriterien die ich an eine eigene Hosting Lösung habe sind überschaubar: einfache Anpassparkeit, Erweiterungsfähig um z.B. neue Funktionalität zu implementieren, Verwaltungsseiten um Kommentare und Beiträge im Web zu editieren und zu guter Letzt eine Codebasis in der ich mich schnell zurecht finde. Die Anpassbarkeit wäre auch im Code für mich ok, voraussgesetzt es ist eine einfach zu verstehende Codebasis. Mein derzeitiger Blog gibt mir nicht die Möglichkeit mal kurz einen neuen Trend zu implementieren bzw. auch nur per Template einzufügen. Die Codebasis ist alt und ein Update steht noch aus und ist derzeit auch nicht angekündigt. Also habe ich verschiedene Engines in Betracht gezogen.

Wordpress

Mein Kollege Oliver Scheer ist begeistert von Wordpress. Einfache Installation, einfache Anpassbarkeit, gute Themes und erweitern kann man das ganze auch – vorausgesetzt – man hat die Lust und die Muse sich mit PHP auseinanderzusetzen. Nix gegen PHP, aber ich komme jetzt schon mit viel zu vielen Technologien in Kontakt und da möchte ich mir die Einarbeitung, bzw. alleine das Arbeiten damit ersparen. Sonst wäre Wordpress in Sachen Funktionalität und Themes meine erste Wahl geworden.

dasBlog

Der Klassiker. Ich erinnere mich immer noch, als wäre es erst gestern gewesen, wie Clemens auf einem CLIP Meeting der Community seine 60.000 Zeilen Code geschenkt hat. Clemens hat damals die Engine von Chris Anderson – Blogx – als Grundlage für dasBlog verwendet. Am Anfang gab es noch keine SQL Unterstützung aber mittlerweile ist das gesamte Softwarepaket zu einem richtigen Monster ausgewachsen welches man sich auf http://dasblog.codeplex.com/ besorgen kann. An für sich erfüllt dasBlog die Kriterien der Anpassparkeit, Erweiterbarkeit und sogar die Codebasis ist mittlerweile auf .NET 2.0, doch irgendwie werde ich nicht warm damit. Das mag an der ersten Erfahrung liegen. Ich habe keinen IIS auf meiner Maschine installiert doch dasBlog ist wie ein Biest und Redirected an manchen Stellen von http://localhost:1234 –> http://localhost. Sprich, wer nicht gleich einige Zeit in die Codebasis stecken möchte, sollte einen IIS irgendwo zur Verfügung haben, hätte ich zwar, aber eben nicht auf allen Entwicklermaschinen.

BlogEngine.NET 1.5

In aller Munde in den letzten Monaten und vom Hören – Sagen, mein Favorit. Die Codebasis ist moderner, das Paket kommt mit ein paar mittelmässigen Themes und vom Aufbau her ist alles recht kompakt. Daraufhin habe ich angefangen einige Experimente mit der Engine zu machen und ja, man könnte recht schnell was hinbasteln. Und ich habe auch irgendwie das Gefühl das es sich um basteln handelt. Trotz des Bastelgefühls arbeite ich mal mit der Engine weiter.

Da stehe ich nun mit einer ersten Version meines Experiments und frage mich wie ich nun meine bisherigen Blog Posts in die Engine bekomme – BlogML ist hier das Zauberwort. BlogML erlaubt es Blogs zu exportieren und in andere Engines zu importieren. Vorausgesetzt beide Blogengines unterstützen dieses Format. BlogML ist bei der BlogEngine.NET 1.5 dabei. Cool. Doch nach einigen Suchen für meinen momentanen Blog stelle ich fest das der Community Server über ein Dashboard Server Control für BlogML erweitert werden kann und bei meinem Blog gibt es dieses Control nicht. Auch bin ich nicht der Admin der Maschine. Keine Chance also.

Komme ich nicht drumherum einen RSS Exporter –> BlogML zu schreiben? Auf Codeplex gibt es zwar einen allerdings nicht für die Community Server Engine in der Version in welcher die MSDN Blogs gehostet sind. “Vielleicht sind ja die alten Posts auch auf dem alten Blog gut aufgehoben”, denke ich mir dann.

Wie gesagt, ich probiere einige Sachen mit der BlogEngine.NET 1.5 aus, beim Anpassen stelle ich fest das es keine Verwaltungsseite für Blogposts gibt. Vielleicht habe ich nur was übersehen, ich mache weiter. Ich suche nach Themes, finde eigentlich nichts was mir gefällt, also mache ich mir selbst eines. Nun, was soll ich sagen, ich komme schon klar mit dem Konzept der Usercontrols, aber es ist mir irgendwie zu frickelig. Warum? Weil ich die Engine nicht so gut kenne und mir erst noch das Widget Control und dessen CSS Styles reinziehen mussl. Das einarbeiten in den Source ist ok, aber wie immer nerven mich die Kommentare. Vor allem wenn diese einfach nur Platz im Sourcefenster wegnehmen und keinen, wirklich keinen Mehrwert liefern.

Eine eigene Engine?

Vor einigen Tagen hat Rob Connery auf seinem Blog über ein mögliches Aushängeschild von Entwicklern geschrieben: Be a good Jedi: Build your own Blog. Eigentlich ist es unsinnig eine eigene Blogengine zu schreiben, es gibt doch schon einen Haufen, auf der anderen Seite ist es auch unsinnig sich lange in den Code von anderen reinzuarbeiten um nur einen Blog zu hosten. Vielleicht sind meine Ansprüche zu hoch? Eigentlich nicht. Vielleicht sind die Engines nur aufgeblasen weil diese eben eine Masse an Nutzern bedienen sollen. dasBlog und die BlogEngine.NET sind Softwarepakete die sowohl Benutzern wie auch Entwicklern gefallen sollen, von denen ich nur einen Teil benötige. Um diesen Teil einfach zu erhalten muss ich aber einen gewissen Aufwand reinstecken, da die Anpassbarkeit nicht so einfach ist wie bei Wordpress (ich rede hierbei nicht von der Erweiterung durch PHP).

Vielleicht macht es doch Sinn eine eigene Engine zu schreiben? Warum stelle ich mir eigentlich diese Frage? Nein, macht es nicht. Zumindest nicht für mich. Aber ich kann gut nachvollziehen das Entwickler schnell mal daran denken. Ist ja eigentlich für eine Custom Engine auch relative einfach die Grundfunktionalität zu bauen. Man benötigt ja dann keine ausgeklügelte UI um Anpassungen zu machen, denn man kennt ja die Engine In- und Auswendig.

Softwareentwickler neigen gerne ein Produkt oder ein Framework wieder neu zu erfinden, weil eben der Knopf A nicht auf Position B liegt sondern auf Position C und der Code nicht die Fancy Lambdas aus .NET 3.5 nutzt. Zählt mal alleine die Anzahl an ORM Frameworks die es draußen im Markt und vor allem im Open Source Bereich gibt, so weiß man gar nicht so recht welche man alle Testen soll. Alle haben Vor- und Nachteile, doch überwiegen bei allen die Nachteile so stark das man gleich selbst eines schreiben muß?

Meinem eigentlichen Ziel, ein Blog auf einem eigenen Server zu hosten und dort Teile anpassbar zu haben bin ich zumindest ein bißchen näher gekommen (ca. 1%). Wahrscheinlich werde ich die BlogEngine.NET dazu nehmen, aber vielleicht überkommt es mich ja noch und ich störe mich auch nicht an PHP dann wäre Wordpress wohl die Wahl.

Eine eigene Engine schreiben? Nochmals nein, der Teufel steckt nachher im Detail. Es sei denn es gäbe ein Framework das mir lediglich die Grundkomponenten zur Verfügung stellt. RSS/ATOM Feed Rendering, Ping- und Trackback Services oder ein Domain Modell dass sich lediglich auf die Pflichtattribute von Feeds begrenzt und alles andere optional hinzufügen lassen würde. Ein kleines, übersichtliches Framework, das könnte man als Basis nimmt und wirklich nur das notwendigste zur Verfügung stellt. Damit man die rudimentären Dinge nicht nochmals schreiben müsste. Dann, dann vielleicht.