On Sat, Dec 19, 2015 at 8:16 AM, Nick Wellnhofer <[email protected]> wrote: > On 18/12/2015 04:04, Marvin Humphrey wrote: >> >> Versioning is a hard problem. As much as I would like to make progress on >> it, with multiple hosts to support, I've come to think that Clownfish >> shouldn't be too ambitious about providing simultaneous support for >> multiple versions. > > For now, it should be enough to abort with a meaningful error message if an > incompatible prerequisite is found. In the long term, I'd really like to > find a better solution, though.
Yeah, I know what you mean! The complexity arises, though, when there are multiple consumer libraries which require conflicting versions of a dependency AND which expect to exchange types defined by the dependency. What if the types defined by different versions of the dependency are not compatible? I'm not sure that's a solveable problem -- and thus making it possible for multiple versions of a library to co-exist within a single process seems to have limited value. At most, I think we can contemplate dynamic loading of a custom version on demand at runtime. But for hosts where that's not normally supported, like Perl, I'm reluctant to go there. >> How about instead endorsing SemVer for Clownfish-powered libraries? That >> way, compatibility is encoded in version numbers. >> >> http://semver.org/ >> >> For Clownfish runtime releases prior to 1.0, we can hack something in which >> provides the effect of compatibilityVersion without making it a public >> feature. > > I like Semantic Versioning, but I'd prefer a solution that allows arbitrary > version numbering schemes. The phrase "arbitrary version numbering schemes" scares me pretty bad... However, I think you only mean compatibility with an arbitrary previous version and not arbitrary ordering, arbitrary version number format, etc -- i.e. only what compatibilityVersion would provide. I can live with compatibilityVersion. I think we should still endorse SemVer, though -- even if we extend it with compatibilityVersion. Marvin Humphrey
