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). -JohnThread Previous