Many folks have asked me to share the results of the evaluation that resulted in my choice of Graffiti to power misfitgeek.com, so here it is.
My blog ran on .text until it was orphaned when it’s author went to Telligent to work on Community Server. It’s since been forked by Microsoft’s own Phil Haack – see Subtext.
I tried the 1st version of Community Server but it was just way more than I needed for a blog.
At the time I was doing some Podcast work and Subtext (at the time) lacked support for RSS Enclosures so I moved to DasBlog.
At some point I migrated to BlogEngine.net – which I loved, but I had lots of little “issues”. I couldn’t find a theme that I liked; I also felt that, though it had many slick features, it was missing some niceties. Adding permanent content on the home page required editing the theme, which meant switching themes was a pain, etc. Though it was fast and had good support for static pages, eventually, my frustrations brought me back to DasBlog.
DasBlog has served me well, but then I had started to have some performance issues.
I run my log in a Hyper-V Instance at MaximumASP. I have between 6/7 hundred posts, most have images, and nothing has been really optimized.
DasBlog uses .xml file based storage and I started to find that comment administration had become VERY Slow. Since I moderate comments on my blog and since DasBlog lacks any batch moderation feature (difficult with an .xml based storage mechanism) the performance issue I was having became a problem.
There was also another factor that was asking me to consider a move. I want to publish more.
Code, snippets, etc….. But Microsoft has been experiencing an increased attack phenomenon of late. It seems like former MVPs (perhaps pissed off about the “former” and the ALT.NETers seem to have taken to attacking everything coming out of DevDiv these days. They expect PERFECTION in version 1.
The result is, we need to be more careful about publishing things like code, whitepapers, non “Product” applications, etc.
We need to have a “review and rework” process for just about everything, this takes time and more time means more expense and less productivity. The end result can’t help but be a decrerase in resources for the development community.
So, to avoid have to go through “process” when I just want to publish some sample code, I’ll do ot on my blog. (My code may suck, don’t blame Microsoft, I know many of my readers are way smarter than I am, if my code sucks, instead of telling me how much it sucks, fix it and I’ll post YOUR code instead J )
Now I know that I can “blog” code, but I wanted the ability to have “permanent” landing pages for certain things.
So…. I went on a search for an engine to meet my needs.
It went something like this…..
WordPress is a GREAT application, but it’s written in PHP. Though I do a lot of work in PHP I strongly prefer to do new development in .NET and I want to be able to extent by publishing platform with .NET code.
I thought about it long and hard, but ultimately wanted a pure .NET solution.
Since I’ve used DasBlog so much, and since its open source, I thought I might “start over” with Das Blog. Obviously, DasBlog works well; Scott Hansleman wrote it and uses it for his own blog. But, I want things that Scott hasn’t added yet so I kept looking.
I’m a Fan. It’s fast, it’s clever, and it supports stand alone “pages”, but……
Its default storage mechanism is .xml (like DasBlog). There is apparently a SQL provider option but I couldn’t find much info about it. Though the community seems to be growing, the themeing options seem to be the same as when I tried it before.
BlogEngine.net is defiantly in my future, it’s free, open source, and the “current” community favorite.
But I decided to keep looking.
4.) Dot Net Nuke.
I have to admit that I haven’t historically been a DNN fan.
It’s a pretty heavyweight framework, but it’s not a publishing platform as compared with thinks think Nuke, Drupal, Joomla, etc.
It’s pretty good if you really know what end result you are looking for but, though it’s “free”, there is a heavy commercial circumference around DNN and most of the plug in functionality I would be interested in is neither free or cheap.
The free DNN blog module seemed “ok” but seemed to be not too much more than a post container. I “guessed” that real customization would be a pretty big investment.
So, I decided to continue my search while making a mental note that DNN has come a lone way and I need to re educate myself to using the latest version.
SharePoint has come a long way…… but not far enough for my need.
The biggest disqualifier is that there still seem to be difficulties using MS AJAX, the ACT and some 3rd party controls.
Since SharePoint is developed in the Microsoft Office Organization (not NDP, where I hang my hat), I decided to avoid the complexities.
Maybe someday I’ll do Developer Community work for the Sharepoint team J
I know, there are some good .NET CMS projects happening. I though about Kentico, Mojo, Rainbow (eek), and Sitefinity.
But, the only one that I really looked into was Umbraco.
Well, first it’s free and open source but with real commercial support available ($$$)
Second, the guy who wrote Umbraco (Niels Hartvig)was at MIX this year and we were able to get him to come and give my team an in-depth demo of Umbraco.
Now, we are NOT an easy crowd (Me, Tim Heuer, Scoot Hansleman, Jesse Liberty, Simon Muzio), but Neils did a great job. We hammered him. “Show how to do THIS ?”. “Why did you do that THAT way ?”
Let me tell you, I WANTED to use Umbraco. I WILL use it for future projects, but not this one.
My reasons are these ……
· It’s flexible, really flexible. I’m sort of in a hurry. Umbraco wants to be embraced.
· I couldn’t find a BlogML importer. (I’ve since found one http://blog4umbraco.codeplex.com/Wiki/View.aspx)
· Lack of canned themes (though I found some http://www.freeumbracotemplates.co.uk)
7.) Telligent Community Server
Before evaluating CS I rejected Graffiti CMS, but since you are reading this served up by Graffiti, I’ll leave that part of the story for last.
I know that CS is not Open Source but it’s free for developer communities, it’s “the standard”, and has an avid ecosystem.
I was pretty much set when I got coached by former softie, ASP.NET Guru and Telligent CEO Rob Howard who told me that the NEXT version of CS really won’t be satisfying for use by a single publisher and he really encouraged me back to Graffiti.
8.) When Graffiti first came out I wanted to like it, but I didn’t.
It was my fault. I think, in hind sight, I just wanted Graffiti to work like stuff I already new (Nuke / Drupal / Joomla / WordPress)…. It didn’t.
Plus, Graffiti came out of the gate to a lot of fanfare. Then, wham, bang, boom….. nothin’ !
Well, not really nothing, just s few quiet some-things. (Version 1.1 & 1.2 that included not only fixes but new features.)
2 new releases from a growing company on second (and lower end) product is actually pretty good, but we all want everything yesterday so expectations were high.
Though no one from Telligent has told me this, I’m sure the economy problems got in the way a bit. Telligent had to do some reorganizing of staff to cut costs. Everyone think that once you get venture capital the money worries are over, but just the opposite is true.
Once you take VC money, you’re on the clock ! There are people (with control) watching when you spend and were (and sometimes second guessing your decisions) and the investors are tracking what you are doing with their money against revenue to make sure you are on track to make their investment a good one. The plunging economy (as an excuse) is of no interest to your investors, they just want to make sure you are gonna get them their money back.
Still, I’ve heard the community chatter that Graffiti is an orphaned product.
Being an old timer and being connected to the community has one or two advantages (to offset all the disadvantages ) and one is that I have access to decision makers, so I connected with Rob and asked him outright. (See Rob’s recent blog on the topic here http://graffiticms.com/blog/what-is-the-future-of-graffiti/)
Graffiti v.next is planned, alive and well. Some additional resources are scheduled and Rob & Company are still passionate about Graffiti CMS.
So, I installed it again and committed to take a real good look at it.
Install is REALLY easy and there are multiple data storage options. The default is VistaDB with is fast, easy, and requires no additional “server” software to be installed. SQL Server is supported so I can always migrate if circumstances require it.
Once installed on my local dev machine I needed to import data from my old www.JoeOn.net site (Blogengine.net) and www.misfitgeek.com (DasBlog)
BlogEngine.net has a BlogML exporter and Graffiti CMS has a BlogML importer and they both worked flawlessly. (And if you’ve worked with BlogML importers and exporters you know this is not always the case.)
Graffiti CMS has a DasBlog importer, so I gave it a try. Kaa-Boom. Crash! (I think it was a NULL Object Reference). So, I remembered there was a DasBlog BlogML utility on the MSDN Code Gallery (http://code.msdn.microsoft.com/DasBlogML) so I tried it.
Kaboom ! Similar crash.
Well, to make a long story short, before I started to moderate comments I got lots of junk comments including comments in apparently unsupported character sets and a few hacking attempts. Some of the older comments were causing any type of I/O of the DasBlog .xml content files to induce fits.
But, I’m tenacious. The one really nice thing about Das Blogs .xml file storage is that each DAY has 2 .xml files. One is for Posts and one is for Comments.
So, I moved the files to the import directory and imported them one day at a time. When the importer crashed, I simply deleted the comments file for that day and imported only the POSTS file. It worked fine.
Now that I had my own real data into Graffiti, I could really start to see if it would handle my needs.
Graffiti is NOT a blogging engine. It’s a publishing platform it is a “light weight” CMS with strong blogging features.
First I needed to pick a theme. I did, and you are looking at it, but I don’t really like this theme. It’s not “me”, but, Graffiti themes have specific functionality. I’ll need to get back to my theme as I want a different look and there are some features I need.
The first is the categories widget is incomplete (for my needs).
In Graffiti, content is assigned to categories (or they are uncategorized), and blog posts go in the blog category.
Other stuff goes in a non-blog category. (Code Snippets, Videos, Etc.)
Each category has it’s own RSS feed.
Problem. Each item of content can only be assigned to a SINGLE category. This is a problem for me because I need to be able to select specific posts to be syndicated to specific Microsoft developer web properties. (Silverlight related posts might need to get syndicated to www.Silverlight.net for example.)
Enter “Tags”. In Graffiti, I can tag a piece of content with as many “tags” as I like.
Problem. Graffiti CMS does support RSS feeds by Tag.
This began to look like a real showstopper for me. I know that Graffiti was built to be extended and since the data was in a VDB database I was sure I could figure out how to create an RSS feed by tag, but how much work would it be for me to learn the Graffiti API, understand the Database Schema and write the code to pull the feed that I needed.
Enter the sheer power that is Twitter. (I often say that if it weren’t for Twitter I’d have no social life what-so-ever.)
First I started Tweeting about stuff I was trying to do with Graffiti. Terri Morton (former Graffiti PM at Telligent and now helping keep www.asp.net up and running at Neudesic) was full of answers for me. (Supporting a product she no longer worked on from a company she no longer works for.)
Still, this apparent RSS inflexibility was a show stopper for me.
I “could” have still used Graffiti and come up with a category strategy that I could stick to for my RSS needs but it really wouldn’t be ideal. Still, it would work until I could figure out a better solution.
Then, I got a Tweet from my new hero, Scott Watermasysk.
Scott tweeted me this ….
@MisfitGeek drop this into your Graffiti site: http://dl.getdropbox.com/u/24455/tagrss.ashx Then just do tagrss.ashx?tag=tagname
…. And this …..
@MisfitGeek if you have access to ISAPI Rewrite, pretty urls: RewriteRule ^/tags/(.+)/feed/ /tagrss.ashx?tag=$1 [NC]
He wrote the RSS by Tag handler on his lunch break !!!!!!!!!
This experienced proved a couple things to me.
1.) If you “grock” GraffitiCMS the custom extensions capability is huge, and this is something I need.
2.) The “core” Graffiti CMS guys are proud of their work and very active.
I’ve been on Graffiti CMS a week and I still like it a lot.
Bacuase it’s “different” than what I’m used to it’s taking me some time to get up to speed.
Though not Open Source the extensibility model is powerful and I’m looking forward to build some customization.
Please feel free to send me thought and suggestions. The CONTACT link now works all the time as my inbound messages from the contact form are now 4 times what they were pre-Graffiti !