feedback on the 2.0 specs

Ryan Barrett <pyblosxom-6sb6M7qyT/[email protected]> Sat, 17 Nov 2007 19:18:53 -0800 (PST)
Newsgroups gmane.comp.web.pyblosxom.user
Message-ID <[email protected]>
hey all. i finally had a chance to sit down with the 2.0 specs and write up 
some thoughts. i posted them on the discussion pages on the wiki, and i'll 
include them here too. thanks for writing them up, will and blake!

http://pyblosxom.sourceforge.net/wiki/index.php/Category:2.0_Planning

general:

The [[Filestat and sorting specification]] is god. We should take a closer 
look at support for programmatically creating entry lists and shepherding them 
through the serving pipeline. The spec is the right start, but support for 
other features, like flavour templates, is incomplete. Right now, plugins that 
create entries programmatically often have to reach into PyBlosxom's internals 
to get feature parity.

The "end of the year" goal is aggressive, especially since the req'ts are 
incomplete. We should try to put together a more concrete list of use cases 
and features that aren't supported now, but will be supported by 2.0. Each of 
the individual specs does this pretty well, but it'd be nice to have a (very) 
brief list of *concrete* use cases in the top-level 2.0 planning page.

We should also consider pushing out the date, especially since we all have 
pretty demanding full time jobs. :P


archives:

I understand the motivation for this, but I'm not convinced by the proposal. 
My main concern is that it's unnecessarily surprising. Site admins understand 
that adding or removing a directory can make a request for that directory 
serve a result or a 404, respectively. However, it'd probably be surprising to 
see a specific feature, like archives, trigger only when a directory doesn't 
exist.

PyBlosxom and its plugins have used parts of the path to trigger behavior like 
this for a while. There were probably never clear rules or guidelines, so this 
path usage grew organically, and different plugins used different parts of 
path. This is strange and inconsistent for new developers, site admins, *and* 
end users.

We should try to standardize this. To start, we should discuss whether parts 
of the path should *ever* be used as triggers. I think there's a strong 
argument to be made for only using path to traverse the filesystem, and using 
query parameters for triggers and everything else.

That would break backward compatibility with lots of plugins, though. One 
alternative would be a set of guidelines on which parts of paths a plugin can 
use to trigger dynamic behavior, and which parts are used as filesystem paths.

Most importantly, filesystem paths can be arbitrarily deep, so I'd propose 
that "trigger" parts of the path should always come before filesystem parts. 
We could consider only allowing the beginning part of the path, e.g.
/archive/, to be a trigger. We could consider alowing a small number of parts, 
starting from the beginning. I'm reluctant to let plugins use an arbitrary 
amount of the beginning of the path, though, since I think that starts to get 
surprising.


blog.ini:

I'm not familiar with Paste. Having said that, I think the proposal is great. 
It's simple and mirrors the Python syntax.

My one question is is how syntax errors will be handled. Will unquoted values 
be interpreted as strings? How about unquoted values in lists? I think either 
failing fast or coercing them to strings would be fine.


cache:

+1. I'm all for this. I agree with the spec, and it doesn't hurt that it's 
really well written. :P)

Incidentally, when we have a lull - after 2.0! - we could consider writing a 
memcached cache driver.


filestat:

+1. Solidifying these as callbacks will rock. It's overdue.

The callbacks should probably have different names, filelist because entries 
don't have to be files, and sortlist because it does more than sort (and 
doesn't have to sort). Maybe entry_list and top_entries or entries_to_display?

Also, I think mtime vs. ctime is one of the most confusing parts of PyBlosxom 
for new users. While we're bumping the major version, we should consider a sea 
change and add a config setting that lets users choose between ctime and 
mtime. We could even default to ctime in 2.0, but that's obviously a bigger 
decision.

We'd also want to encourage plugins that implement these callbacks to support 
both ctime and mtime.


entryparser:

Have we heard from many people who want to keep their entries in databases, or 
wherever, as opposed to on filesystems?

Just to clarify, right now, all metadata lines are required to be at the top, 
right below the title? You can't have metadata scattered through an entry, 
right? (If so, that's good. I wonder if we should even support it above the 
title, but that's mostly subjective.)

What's up with the *#markup rst* metadata line? It seems to imply that entries 
can "override" their extension and thus choose their entryparser and 
pre/postformatters. Is that right? Is that supported now? Are you considering 
it for 2.0?

Do you know if we have any users with very large entries? If so, I wonder if 
streaming support would be interesting. If an entry didn't need pre/post 
formatting, and we changed the entry parser calback signature, we could 
support streaming entryparsers so that entries don't have to be loaded into 
memory. Clients would also start seeing the page sooner.

...on second thought, I doubt that's worth doing. It's an interesting idea, 
but not really important for PyBlosxom.


templates:

Hmm. This is a good doc, but I'm unclear on what's new. The only feature that 
was new to me was scoping and function calls in variables. Is that a new 
proposal, or is it supported right now?


plugins:

We should clarify that we'll include a few mature plugins *of our choice* with 
PyBlosxom, as opposed to all mature plugins. Also, we'll only do it with the 
plugin developer's permission, since we'd have to either take over 
maintennance or add them as a committer on SourceForge. :P

BTW, I'd never really paid attention to conditionalhttp before. Does it only 
have a single, site-wide setting for Last-Modified, ETag, etc.? Does it set 
them per page? I wonder how it supports plugins like comments that can result 
in new content outside of entries.

Finally, I agree with moving the plugin registry to the wiki. Of those four 
options, it's easily the biggest bang for the buck.


-Ryan

--
http://snarfed.org/

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/