BlogML
Categories
Have you ever had a blog and wanted to move to another one? Maybe you had an early version of .Text and wanted to move to an upgrade or to CommunityServer when it came out. Maybe you had SingleUserBlog and wanted to move to DasBlog. Did you end up doing it or was it just too difficult? Read on to hear me explain about how this will be a no-brainer in the future...
BlogML - defining a standard for Blogs
A while back I wrote about my desire for there to be a common way to describe a Weblog and today I want to introduce what this will look like. But first, here's a reminder of the vision...
BlogML - the requirements
As a blog user, I should have complete control over my content to the point that I can easily meet these 3 key requirements:
Abililty to port blog content between Blog Engines
This is the case where you might have a blog based on .Text version 0.95 and you want to upgrade to CommunityServer. Having an "Export to BlogML" in .Text and an "Import from BlogML" function in CommunityServer would totally solve this problem.
Abililty to port blog content between Blog Engine Versions
Same as above.
Abililty to port blog content between Storage Providers
This is the case where you might be using a blogging engine such as SingleUserBlog and you are running off of one provider - such as DotTextProvider (where the content reads and writes to an existing .Text schema) and you want to continue to use SingleUserBlog but move to a new data structure. In this case you would configure SingleUserBlog to use the DotTextProvider and run an "Export to BlogML" function, then you would re-configure your provider to your native provider and run the "Import from BlogML" function.
Abililty to easily back-up a blog
Here you would run some sort of scheduled job to automatically run the "Export to BlogML" function and save the output as a compressed backup file somewhere.
What is BlogML
I'm proposing that we define an Xml schema to fully define the structure and content of a blog. To support this schema a blog would typically contain the abovementioned "Export to BlogML" and "Import from BlogML" functions which would emit the BlogML for that blog.
The idea is that the schema would define a hierarchy of types that would allow you to fully describe the following types within a blog:
- Blog
- Categories
- Entries
- Comments
- Trackbacks
- Attachments
- Content
At the bottom of this post is an example of what the output might look like for a Blog that had just a single entry.
In the next little while I will have the import/export features built into SingleUserBlog and will hopefully have concrete implementations (via HttpHandlers) for some other leading blogs too.
<?xml version="1.0" encoding="utf-8" ?>
<blog>
<entries>
<entry id="e1" title="My first post" date="2001-11-19T00:00:00.00000">
<content base64="false">
This is a blog post
</content>
<categories>
<category ref="cat2" />
<category ref="cat1" />
</categories>
<comments>
<comment
name="Darren Neimke"
email="my@email.com"
url="http://my.blog.com"
date="2005-08-01T00:00:00.00000"
>
This is the comment.
</comment>
</comments>
<trackbacks>
<trackback
url="http://my.blog.com"
title="This is a trackback"
/>
</trackbacks>
</entry>
</entries>
<categories>
<category id="cat1" name="Category A" />
<category id="cat2" name="Category B" parentref="cat1"/>
</categories>
</blog>
Comments:
#
While a good idea..
posted by
Jason Tucker
on
9/4/2005 7:09:19 PM
:
why not just use RSS that we have already?
#
Uh, this reminds me of something...
posted by
Tim Bray
on
9/4/2005 7:13:02 PM
:
... oh yes, Atom 1.0. Remarkably similar. In fact, pretty well 100% overlap.
#
Extend It
posted by
PXLated
on
9/4/2005 7:36:19 PM
:
See nothing to do with the actual blog (entry) poster. A lot of systems have membership/posting privileges that would also need to be accounted for.
Good idea, just needs to be really robust and cover a lot more things. Will it scale for that?
#
Re: Atom
posted by
Darren Neimke
on
9/5/2005 12:06:36 AM
:
Hi Tim and, to a lesser extend Jason. Thanks for the feedback regarding Rss and Atom. I did actually look at implementing some of the existing specifications when I first looked at building a blog format. See here:
http://bitworking.org/rfc/draft-gregorio-07.html
Both Rss and Atom - being subscription-centric formats as opposed - didn't really suit being extended for this purpose and, at the time I wasn't really sure that sure adding a depency on Atom is the way to go (for a start). For example, Atom is a syndication format, and I was looking for a "full snapshot" format.
There's something that we shouldn't lose sight of here... there's a reason that nobody has added this critical functionality in the past. Atom alone is certainly not sufficient to take a full snapshot of a blog. Either way we were going to have a BlogML format regardless of whether it sits atop Atom or not right?
#
Good idea...
posted by
Paul Pigg
on
9/5/2005 8:10:28 AM
:
It's a good start, but still has a lot of work to be done. Like PXLated said, there are posters and priveleges to think about, and entries often have meta tags associated with them. The blog tag itself might have more attributes defined, like title, url, date exported, whatever. Also remember that blog content can often contain html. I like this idea alot, and am interested in seeing the idea evolve further.
#
Capability
posted by
Danny
on
9/5/2005 9:48:43 AM
:
As PXLated points out, a lot of systems have capabilities not included here - how can you be sure you've covered the complete blog?
With current technology the only sensible way of dealing with such a situation is to design extensibility into the format. The starting point for XML formats is XML namespaces. Notably lacking here.
It's also generally considered good practice to reuse existing formats if they cover a significant proportion of your requirements. It not only enables interoperability between systems, but also can save a lot of effort as design and implementation work (e.g. parsers, validators, datastores, services) has already been done.
As Tim points out the overlap with Atom is enormous. I'd suggest your time would be better spent on designing extensions for Atom that can support different blogging systems rather than building a new format from scratch.
#
Re: Capability
posted by
Darren Neimke
on
9/5/2005 9:52:23 AM
:
Hi Danny, just in reference to your comment:
>> The starting point for XML formats is XML
>> namespaces. Notably lacking here.
As mentioned in this article, that is pretty much psuedo-code xml. Naturally BlogML is appropriately namespaced.
#
Atom
posted by
Neil T.
on
9/5/2005 6:43:27 PM
:
I think you would be better off basing this around Atom (perhaps as a namespace) rather than trying to create a new format from scratch. The Atom API uses Atom-formatted responses when communicating so it's not tied to just being a syndication format. Just my 2 cents.
#
Speciarism
posted by
Randy Charles Morin
on
2/2/2006 1:01:20 PM
:
Kind of looks like you rewrote Atom in your own vision. Why not just re-use Atom? Or RSS? Why do we always have to re-invent the wheel?
#
Speaking of re-inventing the wheel...
posted by
Darren Neimke
on
2/2/2006 1:54:36 PM
:
... have you invented that word - "speciarism" :-)
Thanks for your comment but, if you've looked at Atom - and believe me I did for a long time - you'll see it's not suitable for fully describing a blog. Posts yes. Blog no.
Everbody that asks why I didn't extend Atom should ask themselves this question - why hasn't anybody *ever* done that? That's right... nobody.
Within a matter of months I have been able to successfully migrate content between .Text 0.94, .Text 0.95, DasBlog, SingleUserBlog, SubText, and Community Server 1.0. And it's not just me either. Other people actually wrote a couple of those tools.
So turn your thinking around. It's not "why not Atom", it's "why on earth Atom?".
#
wow gold
posted by
wow gold
on
9/12/2009 10:34:17 AM
:
http://www.sopgold.com/Posts yes. Blog no. Everbody that asks why I didn't extend Atom should ask themselves this question - why hasn't anybody *ever* done that? That's right... nobody. Within a matter of months I have been able to successfully migrate content between .Text 0.94, .Text 0.95, DasBlog, SingleUserBlog, SubText, and Community Server 1.0. And it's not just me either. Other people actually wrote a couple of those tools.
http://www.webshopvip.com/x0912
#
watches
posted by
watches
on
9/12/2009 10:36:02 AM
:
One more good thing about this online alarm clock is that your computer don't
http://www.canwatches.com/ have to be always online to make it work. With or without Internet connection, as long as the clock has
http://www.mybagsroom.com/ been loaded it will still do its job.
Comments are currently disabled for this post.