InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Interview with Mads Kristensen of BlogEngine.NET

Posted by Jonathan Allen on Nov 12, 2007

Sections
Operations & Infrastructure,
Enterprise Architecture,
Development,
Architecture & Design
Topics
Open Source ,
Web 2.0 ,
.NET
Tags
Blog Servers ,
Mono

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?

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.

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?

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.

Go Mads!!! by Adron Hall Posted
  1. Back to top

    Go Mads!!!

    by Adron Hall

    Congrats on the interview! btw - Excellent product. I'm going to put in some time and try it out, as I think it would be kind of cool to have more control over my blog than what I currently do with Community Server.

    Again, congrats and keep up the good work!

Educational Content

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.

Max Protect: Scalability and Caching at ESPN.com

Sean Comerford unveils ESPN.com’s architecture, what components are used and why, and the current changes the website goes through.

The Seven Deadly Sins of Enterprise Agile Adoption

Are there repeated patterns of failure on Enterprise Agile Enablement efforts? Sanjiv and Arlen discuss Seven Deadly Sins to avoid when adopting Agile in an enterprise.