Keyvan Nayyeri

God breathing through me

BlogML 2.1 Released

Not only in the software world, but also in almost every aspect of our life, sometimes we need to make small movements rather than making big plans just in order to activate a work and let it proceed. I think that this BlogML release is such a minor change to reactivate the project after a long time.

Background

Unlike what some people think about the BlogML project as something originally started by me, BlogML was a pet project started by Darren Neimke in 2005 with a few initial versions that subsequently improved a proposed specification and a corresponding .NET API. The idea behind BlogML was simple yet nobel: to represent the content of a blog with an XML derivation. There were two general advantages for such a format: the ability to back up/restore the content of a blog on the same blog engine, and the ability to move the content of a blog from one blog engine to another.

Version 1.0 of BlogML was the first mature version that could earn a good reputation and wide usage on the .NET community, and I joined to the project and Darren at this point by implementing a converter for Telligent Community Server.

Since then I was an active contributor to the project for almost two years and got the help from other team members to take the project to the next level. We moved the project from GotDotNet to CodePlex as one of the first projects hosted on the new open source community by Microsoft, and implemented BlogML 2.0 specification and .NET API to releas it in September 2006 in which we basically added a set of new features to the project. Version 2.0 has been the most stable and widely used version of BlogML ever, and since then we’ve been hearing about new implementations and migrations done by this standard. We even heard about the good use of BlogML on other communities while BlogML is already a part of all prominent ASP.NET blog engines.

To be honest, I have to admit that BlogML needed more attention after version 2.0 and could be much better, but my military service and the fact that no one else had taken any role in leading the project suspended everything. There were some errors and complains as well as comments and suggestions reported for the project, but being busy with my conscript and books, I had no time to think about this project.

I had a few attempts to implement a new version of specification and the .NET library in this while but the codebase, itself, was also daunting enough to distract me and stop my work.

As a matter of a fact, BlogML is a great idea and the best of its kind and the proof for this assertion is the growing usage of this standard despite its long suspension and some problems it has. But its original design that was inherited in later versions isn’t relevant for today’s software world at all. There is no documentation for the specification and API, and things are ambiguous for someone new. Additionally, the Writer part of things are implemented by manual XML operations while the Reader part is implemented using the serialization techniques in the .NET framework. Having these said, one big problem for solving the issues was that I had to maintain the compatibility with the previous versions and some inheritances were restricting me from going far. It’s also worth saying that we didn’t have time to unit test the .NET API for version 2.0, so we couldn’t have a good level of quality assurance in that version.

Therefore, all my attempts failed in reactivating the project until just recently when I finally decided to go for a fresh new .NET API that doesn’t care much about the old structure. I was smoothly working on this new version until Saturday when Phil Haack reminded me of a few issues specifically a very bad bug in the .NET API that forced me to drop a minor version as 2.1 to resolve this issue.

Seeing this encouraged me to neglect the whole compatibility thing and go for a fresh new specification as well because some inheritances in the specification were also restricting further work on the standard.

BlogML 2.1

So BlogML 2.1 is just a minor revision with a very small fix to a very big bug, and I have to confess that it was my fault that I hadn’t tested this to catch it before the release.

This new version doesn’t change anything with the XSD schema and other stuff. It only updates the .NET library but you even don’t need to worry about compatibility or recompile your projects. All you need to do is replacing the previous .NET assembly with the new one to resolve the issue. All the existing converters and tools that work with BlogML 2.0 will work with BlogML 2.1 assembly.

But the issue is with embedded file attachments that are supposed to be stored in Base64 format, however, that bug was adding a sequence of constant A’s to the output.

You can download the new version from the CodePlex workspace that contains both the binaries and source codes.

The Future Perspective

This was a good reason to push me forward in accelerating the development of BlogML 3.0 codenamed Haacked, a new fresh version of this standard. I’m going to contact some members of the team such as Darren, Phil, and Simone to ask about their thoughts and comments to plan for the next version, but I strictly want to have a Beta out by the end of the year.

While there should be many stuff coming out from our conversations, I think that there are some big changes happening for sure: hopefully, we’ll move the project off the CodePlex, and will rewrite the specification and .NET API from the scratch. For the new .NET library we’ll use a very simple and straightforward API using the standard framework design guidelines, also will use a Test-Driven approach to make sure we’ll meet a minimum level of quality.

I’d also like to see a rich documentation written along with each and every phase of development added to the project even though I’m lazy to do this myself, and I hope we can get new team members to help with such stuff.

Speaking of new contributors to the project, it’s a very sad fact that the whole .NET Open Source community is limited to some specific contacts and specific project types. You may not agree with me on this, but for a long time I’ve been having negative impressions on what is called an open source community around the .NET. Many of these projects are ported from the Java and a reasonable number of prominent projects are focusing on specific areas such as blog engines, forums, photo galleries, O/R mappers, etc. The fact that there wasn’t even a single developer to take the responsibility of BlogML during our long absence was very disappointing as BlogML has a relatively simpler structure than other open source projects while it has a great potential to become a de facto in blog standards.

All in all, I hope that we can reactivate the project and proceed with a better quality, and also get new active members on board to assist us in development and documentation.

12 Comments

Jarrett Vance
Oct 14, 2009 12:41 AM
#
Having recently implemented BlogML support in AtomSite, I found myself wondering why BlogML is not some standard extensions to Atom and AtomPub formats. These formats are very well written and highly extensible. I'd be glad to lend a hand to move BlogML 3.0 in this direction.

Keyvan Nayyeri
Oct 14, 2009 12:45 AM
#
@Jarrett

Yes, that's true, and we worked on that before, however, Atom and AtomPub formats lack the richness needed to maintain all common elements of a blog and that was one of the main reasons to have BlogML as a new format.

We'll be more than happy to have you on board for 3.0.

Jarrett Vance
Oct 14, 2009 1:23 AM
#
It is true that the Atom formats only specify the most common fields, however it provides a great foundation to start with as it was designed to be extensible. We should also consider using the Syndication classes built into 3.5 as these also support that extensibility needed to cover the "richness" of various blog elements.

Keyvan Nayyeri
Oct 14, 2009 1:31 AM
#

@Jarrett

Well, for BlogML we try to build the standard and specification as something independent and don't care about .NET API support. Moreover, we build the .NET library in a way that anyone else can port it to other platforms easily.

Besides, BlogML is originally built by the goal in mind to be a separate standard for its own not something built on top of other standards. For the next version (3.0) I want to rebuild the specification to be simpler yet extensible but nothing based on other formats.


Tuomas Hietanen
Oct 14, 2009 1:54 AM
#
Too much good blogs... I'd need a LINQ to Blogs ...

Keyvan Nayyeri
Oct 14, 2009 2:38 AM
#
@Tuomas

Yes, support for LINQ to BlogML is one of the features I was thinking about, however, I think that it will be included in BlogML 3.x not the 3.0 itself.

Jorge Gamba
Oct 14, 2009 5:53 AM
#
So what happen about Behistun? what´s the relationship between those projects?

Keyvan Nayyeri
Oct 14, 2009 6:02 AM
#
@Jorge

I didn't get what you mean. There is no relationship between these two projects as they target completely different goals.
Pingback from Dew Drop – October 14, 2009 | Alvin Ashcraft's Morning Dew

progg.ru
Oct 15, 2009 11:57 AM
#
Thank you for submitting this cool story - Trackback from progg.ru

Huthaifa Afanah
Oct 19, 2009 8:33 AM
#
Good work, i just discover BlogML and its a great and important standard which should be supported powerfully. We can discuss further cooperation :)

Iñaki
Oct 22, 2009 11:21 AM
#

Hello Keyvan

When exporting my blog in Community Server 2.0, the resulting xml file breaks in one line and shows an error message: Element was not close, error procesing resource...

If I edit the xml code, I can see that some post and commets have been exported. I have reviewed the post to find some invalid charater which could break the xml document, but everything seems to be OK.

Some Ideas?

Congratulation for your books and plugins.

Iñaki.

Leave a Comment





Ads Powered by Lake Quincy Media Network