Interview with Mads Kristensen of BlogEngine.NET
In the first we hope to be a series on .NET in the open source world, we interviewed Mads Kristensen of BlogEngine.NET.
Can you give us a brief overview of BlogEngine.NET?
Historically there has been a general belief that .NET developers and open source projects don't mix. Did you run into any of that, or is this just another open source project that happens to use .NET?
BlogEngine.NET started out to solve the biggest problem with ASP.NET blog platforms at the time. Complexity. Community Server, DasBlog and SubText were all too complex to easily modify, extend or personalize. The Visual Studio solutions for each of them consist of multiple class library projects and heavy use of third-party .dll file dependencies. So not only was it hard to find exactly where to modify certain features, but you could end up finding that the place to modify it was in one of the many third-party .dll files they used. I wanted something easier and that’s how the BlogEngine.NET project started.
We solved the problem by focusing all the code around the KISS simplicity principle and I do believe we succeeded. There is not a single third-party dependency and the lines of code are only a fraction of the other platforms, but still having all the important features. I actually think we have more features than DasBlog and SubText (I’m not sure though).
To write custom themes for the other platforms can be a pain so that was a very important part of BlogEngine.NET from the beginning. I needed to find a way to make this as simple as possible. So we ended up with an architecture that gives unprecedented power and flexibility to theme builders in a very simple way. That was possible because we took advantage of all the relevant ASP.NET 2.0 features already available on the ASP.NET platform such as user controls, master pages and of course C# code-behind with no limits.
From an ASP.NET developer’s point of view, BlogEngine.NET is extremely easy to modify, extend and personalize and it’s extremely easy to install for non-developers too. Just download the files and upload them to your web server and it runs. We decided to use XML as data storage because SQL Server can be expensive for some on shared hosting. We knew that not everybody wanted to use XML, so we made sure to support SQL Server as well out of the box for those who prefer it.
BlogEngine.NET keeps focus on being a blog engine and only a blog engine. To keep everything as simple as possible I didn’t wanted to add features that moved focus away, even though many users requested a lot of those features. It could be galleries, templates, file management etc. Instead we build an extension framework that allows ASP.NET developers create their own extensions and share them with the community. That way, a lot of the features we left out to keep focus, is something others can do for them selves.
To sum up this (not so) brief overview, you can say that BlogEngine.NET is simple and focused with all the features you would expect a blog engine to have in 2007. I do have enormous respect for CS, DasBlog and SubText and they are all very good at what they do. BlogEngine.NET is merely and add-on to the .NET blog platform selection.
I guess that we fell a bit under the shadow of other great .NET open source projects like Umbraco, DasBlog and SubText so it was generally well received as a .NET open source project right away. I do read occasional blog posts and articles about why BlogEngine.NET is not open source because it is a Microsoft .NET project and therefore cannot be completely open source. Also, there has been a little heat coming from the dynamic language (Python, Ruby etc.) people that claim that .NET open source is a waste of time and shouldn’t be taken seriously. I completely ignore it when I read it. Except one time where eWeek wrote about Microsoft open source projects and listed BlogEngine.NET among 19 other projects. BlogEngine.NET was badmouthed for being a blog platform which the author ridiculed because there are so many already. That hurt a bit because I believe eWeek to b a serious website with good articles and many readers.
But all in all, there have been no problems, just a few occasional anti-Microsoft articles that reflected poorly on BlogEngine.NET as a result. Nothing to keep me awake at night. It’s good to run open source projects on a Microsoft platform. BlogEngine.NET is just another open source project using .NET.
Why did you decide to support Mono?
Originally that wasn’t the plan. Not because we didn’t wanted to, but because we didn’t think of it. I’ve never used Linux really and therefore didn’t think of Mono. Then one guy who downloaded the early beta version wrote to me that he had some problems running BE on Mono. That was a wakeup call and I thought it would be very cool to run on Mono if it was possible. He taught us how to do it, and it literally only took an hour to make the adjustments. The issues with Mono was simply addressed by using the right casing for file names and do the file paths in a slightly different way. For the next release we plan on taking it even further and support MySQL and PostgreSQL out of the box. The whole Mono thing feels very good and I hope it becomes a first-class citizen in the Linux world if it isn’t already. It’s definitely something we will keep on supporting for future versions.