[Seaside] implementation request: FTPServer

Avi Bryant avi.bryant at gmail.com
Thu Jan 13 13:49:51 CET 2005

This one's been sitting on my TODO list for a while, and I haven't
shown any signs of getting around to it, so I thought I'd put it out
there in case someone's eager for something to work on but hasn't
found the right project yet (I have it on reliable authority that such
people do, in fact, exist).

I'd like an implementation of a dynamic FTP server in Squeak.  By
dynamic I mean that it would be to FTP as Comanche and Swazoo are to
HTTP: there's no assumption that the filesystem as presented to the
client has any direct mapping to a filesystem on the server.  Instead,
I'd like to be able to implement classes in Squeak that handle the FTP
put, get, list, etc requests in any way they choose.  To put it
another way, I'd like to be able to selectively expose a filesystem
view of the Squeak image to an FTP client.

The main motivation for this is to make it easier to collaborate on
Seaside applications with web designers and other content providers. 
I'd like them to be able to point BBEdit or other FTP-equipped text
editors to a running Seaside image and edit CSS and Javascript "files"
that are living in that image.  In fact, these would be part of a
Smalltalk code package, which means they can be easily deployed,
versioned with Monticello, and so on.

Once we had it, of course, I'm sure we'd find many other interesting
uses.  For example, wouldn't it be nice to be able to mount a wiki
(and most operatings systems these days can mount FTP servers pretty
transparently) as a directory full of text files?

If anyone does decide to take this on, I recommend working from Dan
Bernstein's FTP protocol reference: http://cr.yp.to/ftp.html .  It
seems to be written specifically as a guide for implementors, rather
than to be a formal specification.

I expect that someone motivated enough could get this working in a
weekend or two; it would be useful even if imperfect and unreliable,
since the primary use I envision is as a development tool rather than
in production.  Though of course if we had a production-ready
implementation we'd no doubt find interesting uses for that too.

Anyone convinced?


More information about the Seaside mailing list