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

Reply via email to