[Mailman-Developers] Re: Mailman-Developers digest, Vol 1 #442 - 12 msgs

Bill Bumgarner bbum@codefab.com
Mon, 7 Feb 2000 12:33:37 -0500


Agreed.  I wish I had the time to fully generalize the code though I'm quite  
happy to hear that others think this is a good idea!

As it stands, it is relatively close-- the Rewrite.py module has been extended  
such that the resulting rewritten message contains instances of  
WebDAVAttachment that contain the eventual URL (archival and retrieval) for the  
attachment and the decoded raw data of the attachment.

I made the decision to call it WebDAVAttachment to imply the context within  
which it was written.  However, the actual implementation of that particular  
class has very little that is specific to WebDAV other than some of the URL  
names.  In hindsight, I really should have not prefixed the retrieval URL with  
'dav'-- it has nothing to do with DAV, even given the current implementation.

The ToArchiver Handler could clearly use some generalization!    Actually, the  
actual process() method is relatively general, but the do_dav() method should  
likely be broken out.

Applying a bit more thought to this, it strikes me that what should likely  
happen is one of several things:

- enabling/disabling different archival methods should be separated from the  
configuration of that individual archival method.   Certain archival  
configuration optiosn-- like monthly/weekly/etc (which the WebDAV stuff  
currently ignores.  I apologize for that-- more below)-- should be left in a  
sort of "global" configuration area assuming that it is appropriate to apply  
the same options to more than one archive "style".

- individual or broken out screens for the individual archival methods

- broken out mechanism that does the actual "splitting" of the archive into  
the appropriate paths.  Regardless of whether it is a filesystem or URL based  
archival mechanism, you pretty much *always* have a "root" location below which  
the entire archive resides.   The current implementation does not share any  
code between the pipermail archiver and the WebDAV archiver.   Part of this was  
because it was indicated that the pipermail stuff needed to be largely  
revisited and partially because I simply didn't have time to do the  
generalization I wanted.

---

Thomas:

	If you want to contribute to the effort prior to Barry's work  
integrating back into the core repository, I can take on the task of  
integrating your patches into my source.   Let me know and I can make sure the  
latest sources are available to you via a more direct means than the occasional  
tarball.   The changes that you indicated are certainly the correct direction  
for this codebase-- it would likely make Barry's life easier in doing the final  
to-repository integration if the code were a bit more refined.

	Ultimately, it is likely Barry's call-- I have a limited amount of  
time available now that this stuff works, but I would like to invest that time  
in ensuring that the codebase is moving as rapidly as possible into being a  
supported part of the existing Mailman infrastructure.


--

Apologies:

	These extensions were actually done as a part of the development of a  
proprietary solution for a client of CodeFab's.   Early in the specification  
phase, it become abundantly clear that leveraging Mailman would gain us a whole  
bunch of functionality for free.   Of course, the challenge was then  
convincing the client that the requirement for releasing said changes back to  
the community was a small price compared to the gain in feature set.

	This proved surprisingly easy.  The client is a very positive minded,  
forward thinking group of folks that definitely understand and believe in  
things like Open Source and Good Engineering Practices.   (If anyone is  
interested in working for such an entity in the NYC area-- with obvious ties to  
the Python community-- please let me know and I can forward your contact  
information to the appropriate individuals.  They are a "pre-IPO" "dot com"  
with excellent "potential valuation".  Yadda.).

	Our initial approach was to try and hire someone from this community  
to do the work.  Both because we wanted someone more familiar with the codebase  
than me (1.2 expiremental via cvs was my first real exposure) and because I  
really wanted to focus on other aspects of the project.

	That didn't happen and I ended up doing all the work.  Fine by me, I  
*love* programming in Python-- especially when working with a cool sourcebase.   
 However, it did mean that there was a lot of pressure on me to make the code  
work as quickly as possible and minimize the amount of effort put forth to  
making the end result as generic as it really should be.

	To give the client credit, they understand and authorized me spending  
a bunch of time to do a minimal amount of work towards a design and  
implementation that would be palatable to the community.   While they don't  
have an infinite amount of time/money to throw at this, they definitely  
recognized that an implementation that would be accepted by the community as  
rapidly as possible would benefit them, as well.

	So;   I apologize for the state of some of the code.  It is not as  
clean or as elegant as I would normally consider acceptable.

	At the same time, the work has been done, the end result actually  
works, and it is definitely a solution to a problem that has been very much at  
the forefront of a lot of folk's administrative environments.   And, of course,  
getting that initial implementation out the door is always half the battle...

	thanks,
	b.bum

/* From: Thomas Wouters <thomas@xs4all.net>  wrote */

On Fri, Feb 04, 2000 at 01:10:49PM -0500, Barry A. Warsaw wrote:
>
> >>>>> "BB" == Bill Bumgarner <bbum@codefab.com> writes:

>     BB> For the Mailman-decode-mime-file-via-webdav modifications, I
>     BB> have a relatively significant set of addtions and patches to
>     BB> Mailman.

> I'd like to take a crack at integrating the i18n changes this
> weekend.  If that goes smoothly, your stuff is next on my list.

/*
 * I'm curious about this... I've browsed through the decoding/webdav patches,
 * and it seems explicitly webdav. I understand that Bill needed webdav, and
 * has thus only worked on that, and I appreciate the effort (we might have
 * customers who want it, eventually ;) but I'm wondering if the patch can't be
 * split in two different elements; webdav archiving, and attachment-decoding,
 * and making them seperately configurable.
 *
 * I do not care about installing and configuring webdav at the moment, our
 * setup can't handle it yet, but the automatic decoding of whatever
 * word-document or powerpoint presentation our (sometimes) braindead managers
 * post to our internal all-employees mailinglists, and placing it simply as a
 * seperate file in the mailing list archive is a _very_ attractive idea. Not
 * just to me, the rest of the sysadmin departement went 'ooh' and 'ahhh' when
 * I told them about this development ;) (Which made me feel quite good, I must
 * add. I still feel I have to 'prove' python and mailman to them.)
 *
 * I have no problem with (re)writing that part of the code, of course, but I'd
 * prefer to wait until Bill's code is in the CVS tree (so that I know the
 * style/layout and general idea has been approved of ;)
 */