On 7/29/01 12:48 PM, Bryan C. Warnock wrote:
> Let's just arbitrarily assume that the
> major number of the version is equivalent to that version of the API.
> (In other words, Foo 1.05 gives us a promise that it uses the same API
> as 1.02 and 1.08. Foo 2.01 would use a different (however slight) API
> from 1.99 and 3.10.
The major/minor version scheme is nice. I've seen it used elsewhere, but I
often wonder what happens when I hit 1.99 and the API still isn't changing
in an incompatible way. (Hey, it could happen...good planning! :)
> An alternate way of representing this is through a directory hierarchy,
> vaguely reminiscent of one Perl uses currently. We can abstract both
> the API major version and the minor revision number to two layers of
> directories. So now Foo.pm above could be found as:
>
> perllib/Foo.pm@ -> 1/02/Foo.pm
> perllib/1/Foo.pm@ -> 02/Foo.pm
> perllib/1/02/Foo.pm
Mac OS X (nee NeXT) Framework bundles spring to mind at this point. They
allow for multiple simultaneous versions (using major/minor version
compatibility rules like those described earlier) and even multiple
architectures, all within a single structured directory. More information
can be found here:
http://developer.apple.com/techpubs/macosx/CoreFoundation/BundleServices/Bun
dle_Services/
or in the relevant section of the System Overview document:
http://developer.apple.com/techpubs/macosx/SystemOverview/SystemOverview/Sys
temOverview.pdf
It may not be 100% applicable to Perl, but there are some good ideas in
there (many echoed in Brian's post).
-John