For more than a year, I've been blogging on the excellent dasBlog engine and it has been good. I really like the fact that it runs on XML instead of a database. However, it is written in ASP.NET 1.1 and is quite cumbersome to extend and that's a problem for me, because I have a lot of ideas that I cannot implement.

For the past 6 months or so, I've been thinking about building my own blog engine, but it seemed too time consuming. Then I talked to Michal Talaga and he wanted to join forces. We quickly agreed that the engine also should run on XML but do so within a provider model, so it can easily be changed to run on SQL Server, MySQL or other types of storage.

But before anything is final, we talked about what features it should have. Here is a short list of what we came up with:

  • Written entirely in C# and ASP.NET 2.0
  • Multi user support using the ASP.NET membeship provider model
  • Data store provider model
  • Small in size and source files
  • Plug 'n play implementation (just copy to web server)
  • No third-party assemblies except for FreeTextBox
  • Using ASP.NET themes and skins
  • Easy to extend using plug-ins
  • Events everywhere for plug-ins to use

Besides the development and implementation features we want to include a lot of standard Web 2.0 blog features such as:

The target user for the blog engine is not the typical Blogger or WordPress user, but .NET developers. It will be an easy extendable system if you are a .NET developer. For the not so tech savvy user, it should just be a matter of copy the files to a web server and no more.

Whenever we are done in the near future, the blog engine will be made available for download and it will be open source.


Comment by  Gabriel Rodriguez

Excelent Mads! Cant wait to use it...i've always loved the ellegance and simplicity of all the code snippets you've posted, I guess i'll love this new project of yours. Good Luck!

Gabriel Rodriguez

Comment by  Mauricio Quirós V

Great, I really would like to cooperate with this project if you guys really formalize it and need help, let me know !
I would consider using http://akismet.com/ (maybe Google analytics,FeedBurner.com too), and reconsider the use of asp.net themes and skins, I think (personal opinion) a custom page rendering with urlRewritting and so on would be better, also I would consider have a look at wordpress templates engine to have the closest similarity so "we" can have a huge library of already made templates, I bet people would love this.

Comment by  Phil Reif

Sounds interesting - may I add to the suggestions? I'd optionally include OpenID for authentication, which is technically very easy to do, and it is very convenient for users.

Phil Reif

Comment by Mads Kristensen

Hi Guys. Thanks for all the positive feedback. OpenID is for sure something the engine should support.

The reason we chose not to use any third-party libraries or closed components, is because it would be harder to maintain and manipulate every corner of the engine. It's not because we don't like all the great components you guys have sent so far. It's all due to the KISS principle and it is something both Michal and I feel strongly about.

Comment by  Steven Smith

You might want to add support for BlogML to your list as well - might make it easier for folks to move from other engines to yours, for example.

Comment by  Simone

Maybe my comment is a little bit biased, but:
2 years ago I wanted to start writing my own blog engine, but, even if building a blog engine from scratch will only take few days of work, then you end up with a very rudimental engine, that allow you only to add posts.
If the you also want trackbacks, pingbacks, comments, and many other stuff then you need to start adding more 3rd party lib, or putting more work in.
Of course having your own blog engine allows you to drop in any feature you want, because you have a complete knowledge of the application, and you have source code, but if then you want to make the blog engine opensource, then you have to start to deal with what the users want, not only what you want. And you have to start thinking about the user experience, and other stuff...
And a thing that could have been completed in 2 weeks of work, becomes a 1 year long project.

A benefit of working on your own, compared to working inside an established OS team is that you are the boss, and you can add as many features as you want.

Anyway, 2 years ago my decision was to start contributing to another OS project... because I wanted something well designed and established, without having to start writing the basics from scratch.

And now I'm part of the Subtext team, I made friends around the world, and, even if in the beginning I was a "rookie" and I had to gain the trust of the "old" members (like Phil and Steve and Robb), now I'm part of the core team and I'm in charge of the design and development of the plugin SDK for Subtext.

So, my suggestion based on my story is to join another OS project: this also have an higher "ROI" :-)

I'm not saying "Join Subtext", since you are using dasBlog the logical thing will be to contribute to dasBlog... but don't throw away your valuable time reinventing the wheel :)

Comment by Mads Kristensen

I really like subtext. It's probably the best .NET blog engine at the moment. The whole point about writing my own blog is to eliminate some problems subtext and dasblog has. First of all, it is too big. 10 project in the Visual Studio solution and thousands of lines of code. That makes them complex and more difficult to modify. Then add all the third-party components and it quickly adds up.

With this project I'll show that it is possible to make a full featured blog with no third-party libraries or components (except from FreeTextBox) using a fraction of the code. I also wanted to take full advantage of the ASP.NET platform with themes. Basically, I want a blog that I can extend easily so that I can "play" with it.

Comment by Mads Kristensen

Simone, I understand you point but I have already proven it to be wrong. I've written pingback, trackback, captcha etc. support without third-party libraries. The core blog engine was written in a couple of hours, it is all the rest that takes time. I've now been working on the project for 11 days and I have an almost beta ready blog. I will make it open source but I really don't hope it to be a 1 year project even though I know projects like these often take much longer than planned.

Thank you very much for your advice. I will keep it in mind.

Comment by  Simone

just a small thing to say:
with days I meant imagining you are doing it in your spare time, so 8 work hours will be 3-4 days using my metrics :)