On Mon, 12 Jul 1999, Matthew O. Persico wrote:
"Michael Sperber [Mr. Preprocessor]" wrote:
>
> The following constraint must hold:
>
> Two different author versions of a package must have different
> versions as well.
They better have completely different names, period.
Suppose Dilbert writes package foo and gets to version 1.3. Ralph
the Garbage Man picks though the dumpster, takes Dilbert's code,
tightens
it up to 12 lines from 1500 and submits it back. (Laugh - that was
today's Desktop Dilbert cartoon.)
If Dilbert is having a bad ego day and says "Screw you Ralph." what
version number is Ralph going to put on his version of Foo? 1.0? 1.4?
And if Dilbert upgrades his code, what does he use? 1.4, 1.5?
I think that the multiple author problem needs to be solved at a more
fundamental level, like DON'T DO THAT!
I've had the same thought with regard to rpms. I've built rpms (sendmail
8.9.1), giving them rev 1, but in 20/20 hindsight, that's not right
because somebody else somewhere will most likely pick rev 1. So, I now
tend toward 1jv. Extend this to globally unique names, and you might end
up with Foo-Dilbert(a)AdamsSoftware.com-1.4 and Foo-Ralph(a)garbage.gov-1.4.
> A package is distributed as a directory hierarchy; all files
belonging
> to one package live under that directory, no other files do. The name
> of the directory uniquely identifies the name of the package as well
> as its version. Apart from that property, the name of the direcory is
> completely free-format.
Hmm. Foo-1.4, Foo-1.5, etc. That may be fine for buildnig the package or
even identifying it (a-la Perl modules), but what's going to be the
mechanism for determining which installed Foo will be used? I say keep
the version OUT of the final install directory structures.
If we're speaking philisophically, definately not. You might only want to
use Foo-1.5, but wouldn't it be nice if I could install Foo-1.6b1 along
side Foo-1.5 (and Foo-1.6b2)? You might want to use Foo-1.5 as stable,
but I test 1.6 as beta. Your question is still valid: Which version to
use for (require 'Foo)?
Further, Foo-1.6 might use Bar-1.4, but Foo-1.5 uses Bar-1.3. Transitive
dependencies kill you if you can't have two versions co-exist. That is,
updating one package may trigger a cascade of "you need Bar-1.4, not
Bar-1.3". Worst, then imagine that Baz-1.0 can't use Bar-1.4. That means
that I can't upgrade to Foo-1.5 because Baz-1.0 can't use Bar-1.4.
I hope you get the idea.
> Installation happens simply via dropping a package into a
package
> hierarchy, uninstallation happens via removing its directory. There
> are no associated database files which must be held consistent.
Think about a package framwork builder a-la h2xs -X from the Perl world.
If you want people to use this, don't let them write 57 [sic]
types of shell, perl, lisp scripts to copy stuff to the write
directories;
the anarchy will be bad news. There should be one sanctioned way to
install
files to the installation dir.
I don't know what h2xs is. However, I don't see why 'tar xf' can't
be
your sanctioned installation method, and 'rm -rf' is your sanctioned
removal method.
And before anyone say TMTOWTDI vis-a-vis packages, even the docs say
start
with h2xs.
TMTOWTDI?
-Justin
vallon(a)mindspring.com