MetaWeblog API vs. Atom Publishing Protocol support

44 views
Skip to first unread message

Gour

unread,
Feb 19, 2009, 5:45:13 AM2/19/09
to django...@googlegroups.com
Hi!

I'm new to Django exploring what can be done with it and I'd like that
blog users could use some of desktop blog clients to publish their posts
to Django-powered blog site, so I did some research about support for
MetaWeblog and Atom PP in DJango which has brought me to the two
tickets:

http://code.djangoproject.com/ticket/226) and
http://code.djangoproject.com/ticket/3570.


Now, I'm curious if someone can explain me why is the ticket for
MetaWeblog API (#226) closed and marked as 'invalid ' with the comment
"Django's not a weblog engine; it's a framework for building content
management systems. It's going to be up to individual authors of blog
packages to support any APIs." while the ticket for adding Atom PP
(#3570)is accepted and being worked on?

I asked on #django and got the answer that "It's not possible to please
everyone." which is true 'cause I'm not please by that answer :-) and
wonder if there is some deeper (aka: technological) reason behind it
'cause both protocols seems to be very popular in blog-engines?


Sincerely,
Gour

--

Gour | Zagreb, Croatia | GPG key: C6E7162D
----------------------------------------------------------------

Russell Keith-Magee

unread,
Feb 19, 2009, 6:39:54 AM2/19/09
to django...@googlegroups.com
On Thu, Feb 19, 2009 at 7:45 PM, Gour <go...@mail.inet.hr> wrote:
> Hi!
>
> I'm new to Django exploring what can be done with it and I'd like that
> blog users could use some of desktop blog clients to publish their posts
> to Django-powered blog site, so I did some research about support for
> MetaWeblog and Atom PP in DJango which has brought me to the two
> tickets:
>
> http://code.djangoproject.com/ticket/226) and
> http://code.djangoproject.com/ticket/3570.
>
> Now, I'm curious if someone can explain me why is the ticket for
> MetaWeblog API (#226) closed and marked as 'invalid ' with the comment
> "Django's not a weblog engine; it's a framework for building content
> management systems. It's going to be up to individual authors of blog
> packages to support any APIs." while the ticket for adding Atom PP
> (#3570)is accepted and being worked on?
>
> I asked on #django and got the answer that "It's not possible to please
> everyone." which is true 'cause I'm not please by that answer :-) and
> wonder if there is some deeper (aka: technological) reason behind it
> 'cause both protocols seems to be very popular in blog-engines?

In this case, it looks like a combination of factors:

1) The age difference between the two tickets,

2) A Ticket that just hasn't been completely updated to the current
triage process,

3) Some background confusion over the difference between Atom PP and
the Atom Syndication format.

#226 was closed 4 years ago, in the early days of Django. Back then,
we didn't have django.contrib, so there wasn't really anywhere for a
protocol like MetaWeblog to live. In that context, Jacob's reasoning
is sound - While many people use Django to build their blog, there is
nothing blog-specific about Django; protocols that are specifically
applicable to blogging are better suited to external projects. Also,
when Django was a very small and young project, it needed to remain
focussed in order to make any progress. Pushing domain-specific
protocols outside the project core is a great way to maintain that
focus while simultaneously promoting the greater ecosystem around the
project.

#3570 is only 2 years old. At the time that ticket was opened, we had
established django.contrib, so there was somewhere that a protocol
implementation like Atom PP could fit. There was some initial
confusion over the difference between Atom PP and Atom Syndication,
but once that was resolved, the ticket is really pending a decision
about whether it is suitable for inclusion in django.contrib. In the
absence of a solid implementation that someone is pushing for
inclusion into django.contrib, the ticket has gone stale - it hasn't
been rejected outright as a bad idea, but it hasn't been formally
accepted either. It should probably be marked 'someday/maybe', but
again, for historical reasons - that ticket state didn't exist at the
time triage was actually happening on the ticket.

Regardless - protocols like this can (and, for the most part, should)
exist as external projects. James Tauber's approach with
django-atompub is exactly the right idea. If you particularly want
MetaWeblog support, it doesn't need to live in Django's core. Hunt
around to see if anyone else has implemented it, and if they haven't,
start a project. In time, if you create a robust implementation and
can demonstrate demand for it, it may be considered for inclusion in
django.contrib. Until then, it can live happily in the ecosystem
without requiring any official blessing from us.

Yours,
Russ Magee %-)

Gour

unread,
Feb 19, 2009, 12:51:14 PM2/19/09
to django...@googlegroups.com
>>>>> "Russell" == Russell Keith-Magee <freakb...@gmail.com> writes:
Hi Russ,

Russell> In this case, it looks like a combination of factors:

Russell> 1) The age difference between the two tickets,

Russell> 2) A Ticket that just hasn't been completely updated to the
Russell> current triage process,

Russell> 3) Some background confusion over the difference between Atom
Russell> PP and the Atom Syndication format.

Thank you very much for elaborate & detailed answer - it completely
satisfied my curiosity.

Russell> Pushing domain-specific protocols outside the project core is a
Russell> great way to maintain that focus while simultaneously promoting
Russell> the greater ecosystem around the project.

I agree wholeheartedly...

Russell> the ticket is really pending a decision about whether it is
Russell> suitable for inclusion in django.contrib. In the absence of a
Russell> solid implementation that someone is pushing for inclusion into
Russell> django.contrib, the ticket has gone stale - it hasn't been
Russell> rejected outright as a bad idea, but it hasn't been formally
Russell> accepted either. It should probably be marked 'someday/maybe',

some GTD ;)

Russell> but again, for historical reasons - that ticket state didn't
Russell> exist at the time triage was actually happening on the ticket.

It looks like MetaWeblog ticket was 'too early' :-D

Russell> If you particularly want MetaWeblog support, it doesn't need to
Russell> live in Django's core.

Sure.

Russell> Hunt around to see if anyone else has implemented it, and if
Russell> they haven't, start a project. In time, if you create a robust
Russell> implementation and can demonstrate demand for it, it may be
Russell> considered for inclusion in django.contrib.

I stumbled upon http://www.allyourpixel.com/post/xmlrpc-djgo/ and
http://www.allyourpixel.com/post/metaweblog-38-django/ posts dating from
'06 and wondered if something has changed in between...

Apparently, there is some demand for it, but let's learn some more
Python/Django first ;)

Russell> Until then, it can live happily in the ecosystem without
Russell> requiring any official blessing from us.

Fair enough.

Thanks again for the input.

Malcolm Tredinnick

unread,
Feb 19, 2009, 6:32:41 PM2/19/09
to django...@googlegroups.com
On Thu, 2009-02-19 at 20:39 +0900, Russell Keith-Magee wrote:
[...]

> Regardless - protocols like this can (and, for the most part, should)
> exist as external projects. James Tauber's approach with
> django-atompub is exactly the right idea. If you particularly want
> MetaWeblog support, it doesn't need to live in Django's core. Hunt
> around to see if anyone else has implemented it, and if they haven't,
> start a project. In time, if you create a robust implementation and
> can demonstrate demand for it, it may be considered for inclusion in
> django.contrib. Until then, it can live happily in the ecosystem
> without requiring any official blessing from us.

Also keep in mind that one of Django's goals is encouraging and enabling
"best practices" where such things exist, particularly when looking at
things for contrib.

Atom sydnication and Atom publishing are standardised protocols that
have gone through the IETF process and are used in lots of situations,
weblogging being only one example. The Metaweblog API has not had the
same level of standardisation and is targeted at blogging-style
applications exclusively. It's also RPC-oriented, rather than
REST-oriented, which isn't particularly good practice in a web-oriented
domain space.

Atom publishing is always going to have an edge in situations like that,
simply because it's a more appropriate general protocol.

Regards,
Malcolm


Gour

unread,
Feb 22, 2009, 5:09:30 AM2/22/09
to django...@googlegroups.com
>>>>> "Malcolm" == Malcolm Tredinnick <mal...@pointy-stick.com> writes:

Malcolm> Atom sydnication and Atom publishing are standardised protocols
Malcolm> that have gone through the IETF process and are used in lots of
Malcolm> situations, weblogging being only one example.

Right.

Malcolm> The Metaweblog API has not had the same level of
Malcolm> standardisation and is targeted at blogging-style applications
Malcolm> exclusively. It's also RPC-oriented, rather than REST-oriented,
Malcolm> which isn't particularly good practice in a web-oriented domain
Malcolm> space.

Yep, I'm aware of it, but according to "..a blind uncle is better than
no uncle" and Django does not have 'official' support (some blog app
like http://byteflow.su/ticket/43 apparently have added some support,
although we would expect more in Django) for either of them, MetaWeblog
could serve the purpose of remote-publishing, at least for some time...

Malcolm> Atom publishing is always going to have an edge in situations
Malcolm> like that, simply because it's a more appropriate general
Malcolm> protocol.

I fully agree with it....

Reply all
Reply to author
Forward
0 new messages