I sent the message below to Andreas, two weeks ago, when I sent my original
query to the perl-modules list.  I'm sending the detailed version to the
full list now, since I don't know how else to petition for the "Tie::File"
module name to be released so that I can use it...
Thanks,
Deven

P.S. I'd still suggest that some general policy is probably worth having,
regardless of how this particular module name is resolved...

---------- Forwarded message ----------
Message-ID: <[EMAIL PROTECTED]>
From: Deven T. Corzine <[EMAIL PROTECTED]>
To: Andreas K�nig <[EMAIL PROTECTED]>
Date: Wed, 28 Nov 2001 18:21:09 -0500 (EST)
Subject: Tie::File module
Return-Receipt-To: [EMAIL PROTECTED]

Andreas,

I wrote the message below 4.5 years ago, and never received any response at
all from Andrew Wilcox.  I copied you at that time, so you would be aware
of the situation.

Now, as then, Andrew Wilcox still has a claim on "Tie::File" in the Perl
modules list, yet has never uploaded such a module to CPAN.  I wrote an
initial implementation in 2 hours, yet in 4.5 years, Mr. Wilcox has never
gotten around to releasing a module under the name he's claimed as his own.

I would like to petition for the prior claim to be vacated as an abandoned
claim on the namespace, and for the "Tie::File" module name to be assigned
to me, so that I can release this module under its most natural name.

What is the procedure for addressing abandoned claims on the namespace?

Deven

---------- Forwarded message ----------
From: Deven T. Corzine <[EMAIL PROTECTED]>
To: Andrew Wilcox <[EMAIL PROTECTED]>
Cc: Andreas Koenig <[EMAIL PROTECTED]>
Date: Thu, 29 May 1997 19:59:21 -0400
Subject: Tie::File module
Return-Receipt-To: [EMAIL PROTECTED]

-----BEGIN PGP SIGNED MESSAGE-----

[A copy of this message is being sent to Andreas Koenig as the CPAN archive
maintainer, for informational purposes.]

Hi there...

Although there is no released "Tie::File" module on CPAN, you are listed as
the author of such a module, presumably under development.  Since I was not
aware of this module listing, I have just implemented a "Tie::File" module
myself.  When I was ready to release it, I found you already had a claim on
the module name.  (Mea culpa!)

Since I have a "Tie::File" module ready to be released, I'm writing to ask
you what the status is of such a module on your end.  Do you actually have
something implemented, or was it more of a plan?  If you have implemented
something already, what can you tell me about it?  Are you near release?

Most importantly, would you consider releasing the "Tie::File" module name
to me if I can convince you that I have a worthwhile implementation?

If you do indeed have an implementation or a good start on one, maybe we can
compare the two to see which is better, and maybe extend that one based on
the good points of the other one?

Here's what happened on my end...

Yesterday, I was contemplating the File::Slurp module, and it occurred to me
that a more natural perl interface for reading/writing whole files was to use
a tied hash instead of function calls.  On the spur of the moment, I decided
to try implementing it myself, since it seemed fairly straightforward.

I wrote the initial implementation in under 2 hours, and spent several hours
more debugging and refining it.  It's working pretty well now, and the tied
hash interface I implemented is fairly complete.  I'd like to comment the
code a bit and add more thorough tests, but otherwise I think it's ready for
an alpha release now.

It was after I finished creating the entire module that I discovered there
was already a "Tie::File" entry in the modules list, with you listed as the
author.  I think my implementation follows the basic idea suggested by the
name "Tie::File" -- it turns all files in a directory into virtual hash
elements in a tied hash.

I believe my implementation is very robust.  It implements the full tied
hash interface, so all of the following functions have reasonable behavior:
exists($hash{$file}), defined($hash{$file}), keys(%hash), values(%hash),
each(%hash), delete($hash{$file}), undef(%hash).

Since such casually overwriting and deleting files is obviously dangerous,
there are flags for the following access modes: ReadOnly, Create, Overwrite,
ClearDir.  (Create is the default, which doesn't allow overwrite/delete.)

I use anonymous globs (created by the Symbol package) for filehandles, so
multiple tied hashes using Tie::File won't conflict with each other, even
with parallel each() iterations active.  (An anonymous glob is saved in the
object (a hash ref) to use as the dirhandle for FIRSTKEY() and NEXTKEY().)

Directories, files and non-regular files will return true for "exists", but
only regular files will return true "defined".  (Caveat: "defined" will still
read the entire file into memory, even if it's discarded after the test...)
Empty regular files return "", not undef.

Symbolic links are considered non-regular files.  That is, the code does not
follow symbolic links.  (Symlinks to directories will, of course, be followed
by the OS as usual if followed with "/".)

Presently, keys/values/each will use the directory contents (minus . and ..)
as the list of keys for the hash.  The key values returned by keys() or each()
will have a trailing "/" appended for directories, to make it easy to scan for
subdirectories.  (@subdirs = grep {s/\/$//} keys %hash;)

I have a number of ideas for possible future enhancements to Tie::File, such
as some subclasses (e.g. Tie::File::gz for magic compression/decompression,
Tie::File::tar to access files inside a tar-format file, etc.), extensions
to make it easier to manipulate directory trees, implementing a search path,
allowing glob references to read/write filehandles, possibly returning and
maybe copying non-regular files and file stats (I'm not sure how), optional
cache mode, perhaps a fake write mode (don't really write, but pretend to),
and a few other options and features...


That's where things are right now.  I have something worth releasing, and
ideas for future improvements.  I'd rather not rename the module, since the
"Tie::File" name makes the most sense.  I'd like to adopt the module name if
possible, since there's no existing release with that name.

Of course, if you have already invested any significant time in this module,
you might have work you don't want to throw away; in that case maybe we can
merge the two versions, or enhance on based on the other.  What to do about
future releases would still be a question to be answered in that case...

So, where do we go from here?

Deven

-----BEGIN PGP SIGNATURE-----
Version: 2.6.2

iQCVAwUBM44YQ+I+P/WmEJcdAQFUzgP9GIHaqWclk9B9qmY+Fdo1e16/hWUHscuf
SkAwU4Y6vrjlfFeELT7sHT7WxN/v4PgYtsHQAuGsQizZwc97YoZJLQ7TyCJFDgQR
P595+YwX1kCZETgQ0bXEg+4raD9nYcc8g/mXQi2R6MabWcA+BQuzXUjfvcZJvRx9
qhwkxIJAJ0A=
=En+h
-----END PGP SIGNATURE-----



Reply via email to