[Zope-dev] FTP interface being worked on?
Steve Spicklemire
steve@spvi.com
Sat, 24 Mar 2001 13:07:21 -0500 (EST)
Hi Folks,
I posted this to the Wiki... but it's not "in-your-face" like email,
so I never know if anyone reads it. Here are a few, possibly random,
but nonetheless concrete, thoughts of mine on the matter. I'm looking
at all this from the perspective of someone who is using the current
xml/zexp code to manage objects in CVS today, and hoping that whatever
evolutionary/revolutionary process that occurs here not completely
break all my existing stuff. It seems to me that the current import/export
mechanism is actually pretty close to what we need for serialization. It
has some nice properties:
A) All objects are faithfully encoded and saved on the filesystem
in a text format that any configuration management system can
use and track. It seems to me that this property is critical
to maintain.
B) Whole object hierarchies can be saved in a simple file, moved
to any other zope instance (via checkin/checkout) and instantiated.
(This is needed for import/export to be useful)
C) It's possible (through a hack[1]) to make simple objects 'diff'able
so that all the metadata that's in the current xml export rep doesn't
get in the way too much. (this is almost irrelavent, but may be
useful as an interem step to make this part of the native import/export
code... )
There are also a few not-so-nice properties:
D) The current xml representation use by xml import/export is morally
binary, in the sense that you can't easily edit/manage it with
ordinary editors etc.
E) There is no simple way to separate the contents of a containerish
object from the container.
I think that both of these shortcomings could be addresses using Chris M's
idea of letting objects handle their own serialization. (e.g., Folders
could save their meta-data in a 'special' file, or directory and then
proceed to call the serialization methods of their contents). However
I think there would be benefits to working this into the current
import/export scheme. Imagine the following:
A 'serialization' interface is invented that objects could implement
that preserve A-C, and, optionally, fix D-E. If no such interface
is found, the current export method is invoked. (I suppose this could
also be done by adding a default implementation of the interface
that simply does what the current import/export code does.)
Something like this maybe?
class FSObject:
""" Abstract filesystem Object that 'does the right thing'.
Might be implemented as StringIO, or impose special
security restrictions, or whatever.
"""
def chdir(.. )
def mkdir(.. )
def open(.. )
class Serializable:
Serialize(self, serialize_contents_separately=None, use_fs_object=None):
""" Serialize this object. If serialize_contents_separately is
not None then create a 'special' file for meta_data, and
create a new directory for self and subobjects. After saving
meta_data, call Serialize on each content object in turn,
passing appropriate arguments through.. """
Anyway.. it seems to me that this sort of approach would have the
benefit of using what's available today to the best advantage while
permitting tools to be developed that would work well with whavever
serialization process that evolves for all the Zope objects that
are out there..
take care,
-steve
[1] See the ZCVMixin product: ZCVSExIm.py
>>>>> "CM" == Chris McDonough <chrism@digicool.com> writes:
CM> I think the only good reasons we have right now for having
CM> filesystem-compatible serialization are to make Zope content
CM> editable via common tools in a way that makes sense to people
CM> not used to (or comfortable with) the object database, and to
CM> give people a plausible way to put a Zope site under source
CM> control.
CM> Are you thinking that we would build client-side tools to
CM> recognize an XML representation of a subpart of a site?
CM> ----- Original Message ----- From: "Karl Anderson"
CM> <karl@digicool.com> To: "Chris McDonough"
CM> <chrism@digicool.com> Cc: "John D. Heintz"
CM> <jheintz@isogen.com>; "Fred Wilson Horch"
CM> <fhorch@ecoaccess.org>; <zope-dev@zope.org> Sent: Thursday,
CM> March 22, 2001 8:17 PM Subject: Re: [Zope-dev] FTP interface
CM> being worked on?
>> "Chris McDonough" <chrism@digicool.com> writes:
>>
>> > I don't think it's reasonable or wise to impose any "master >
>> structure" for filesystem serialization of bodies of > objects.
>> Each instance (or perhaps each class) should > define how best
>> to serialize itself to disk. > Representations between classes
>> are likely to be radically > different. A place for
>> standardization is in the > "properties" file(s) which
>> accompany each object rep... this > is likely to be XML or
>> another structured variant.
>>
>> Is there a motivation for using serialization to provide an
>> editable "god's eye view" of all or part of a Zope site?
>>
>> That is, provide a two-way XML serialization at any stage of
>> the managed hierarchy of a site? That way, XML tools could be
>> used as stream editors at any level, to the extent that the
>> serialization is understandable.
>>
>> So, for example, we'd have ways to not just alter a template or
>> content that gets templatized, but the containers that organize
>> them, and related metadata or content that isn't as near.
>>
>> This links well with the standardization that you mention -
>> objects can have arbitrary serialization formats, but if
>> certain attributes that we're interested in are recognizable,
>> those attributes could be edited on a containerwide level. So,
>> if we had arbitrary objects that we wanted to have an effect on
>> content or display, the same XML tools could be used to manage
>> them all, limited only by the ability of those tools to slog
>> through a level of the hierarchy.
>>
>> This is kind of stream-of-consciousness talk, and might be more
>> silly than realistic; certainly, if the objects didn't guard
>> how they could be updated, a misconfigured tool could waste
>> them without warning.
>>
>> There's a similar project called psilib that was discussed in
>> xml.com: <http://www.xml.com/pub/a/2000/03/22/psi/index.html>
>>
>> --
>> Karl Anderson karl@digicool.com
>>
>> _______________________________________________ Zope-Dev
>> maillist - Zope-Dev@zope.org
>> http://lists.zope.org/mailman/listinfo/zope-dev ** No cross
>> posts or HTML encoding! ** (Related lists -
>> http://lists.zope.org/mailman/listinfo/zope-announce
>> http://lists.zope.org/mailman/listinfo/zope )
>>
CM> _______________________________________________ Zope-Dev
CM> maillist - Zope-Dev@zope.org
CM> http://lists.zope.org/mailman/listinfo/zope-dev ** No cross
CM> posts or HTML encoding! ** (Related lists -
CM> http://lists.zope.org/mailman/listinfo/zope-announce
CM> http://lists.zope.org/mailman/listinfo/zope )