Rutherford will be spinning in his grave. 100 years on and we're
reviving the
Plum Pudding model - well OK it's a physicist's joke but the
estimable work on the Atom API
has been increasingly frustrating me of late.
The Atom API
for those that don't know is a well meaning and commendable effort
by the technical Blog community to produce a standard, clean
application protocol for retrieving, editing and syndicating blog
content. Now I'm a newbie outsider in the Blog community - I wrote
Blogxter as a simple test application for NetKernel - but
perhaps an arriviste can offer a fresh perspective.
I think this is an opportunity to invoke The First Law of
Blogging, which I shall now make up...
"The invitation to voice an
opinion, as presented by a Blog, empowers rational people to
present instant opninions on any matter, regardless of their
knowledge or comprehension of the subject. This opportunity is
seldom overlooked." which in short form is "Having a Blog, makes
you a loud mouth".
In this spirit I offer these suggestions to the Atom
community...
Think about the layering.
HTTP is a transport but surely not the only one. What about
email or instant messaging? I know we love the HTTP tree. It has
protected us, provided food, given shelter. In ten short years it
has grown into a magnificent specimen. We want to stay here
forever... But step back... look there are some other trees over
there ... that one's an SMS isn't it? latin name Messagus
Textus. Gosh that's shot up hasn't it ... ... hey it's got more
leaves than ours!
Over the top I know, but Atom looks at the world with HTTP
spectacles. If we're going to do a blog protocol let's do it right.
Abstract the messaging from the transport. Work out what you want
to exchange, define a transport neutral layer and plug the
transports (HTTP, SMS, IM, email, BPP[1]...) into the
framework. Anyone remember the OSI
7-layer model? Just because today blogging's a predominantly
web-centric activity doesn't mean blog publishing couldn't be a
killer app for 3G mobile multi-media messaging tomorrow. Can you
imagine a Voice Blog... a Video Blog...er, oh dear, the genie got
out - next stop pornography! Janet, can we talk about the wardrobe
again...
Security model? What security model?
"Oh we'll leave that to .htaccess", is not an answer. Security
1-0-1. I present credentials (username:password, Diffie Hellman key
exchange,cellphone A-number, DNA ... whatever). Credentials are
validated - we trust that you are you..."Welcome Nerdric
Bloghammer II, you last logged in 2,456,668 ms ago...".
Now don't get me wrong. .htaccess digest authentication works,
but managing those access files - oh boy what a pain. We could
stick it all in the application layer - give you a cookie with a
proxy token in it. OBJECTION! PRIVACY! OUTRAGE!... Actually it
doesn't matter how you do it. What's needed is to establish trust -
which basically means a Blog needs to know which user you are. Put
this in a layer - define the internal user token you need let the
transport boundary layer offer an implementation. Just let it give
the Atom implementor a user token (XML of course). Then you can do
cool services like My Digital TV recordings... Our family
photoblog... Your little black book of Hot Dates (commercial
syndication opportunity or what?) ...
Roles
Now,I don't know nothin' but writing Blogxter I realised I
needed a minimum of four roles Admin, Editor, Author, Reader.
Reader can view a blog, author can add entries, editor can publish
entries, add content, do power stuff, admin can change a users
roles, configure the blog settings etc. You could add Syndicator
and probably others. Atom needs to consider if the roles a user has
effects the services that are available to them.
Atom's not gone too far yet. The principles are correct. Define
some XML messages. Define interfaces for exchanging those messages.
But please think beyond HTTP and give serious consideration to the
security model.
[1]
BPP I live in the sticks. No DSL.
Steve L and I have
a running joke about BPP - or Bursty Pigeon Protocol, a very high
bandwidth link with very high latency. A carrier pigeon with DAT
tape strapped to it's leg.