On Fri, Aug 29, 2014 at 2:11 PM, Kylo Ginsberg <[email protected]> wrote:
> There are a couple really good issues here, and I'm torn on the answers: > > 1) While semver clearly applies to the Facter *API*, I'm not sure if it > provides guidance on Facter *values*. Yes, on the one hand, I could argue > that the values are part of the Facter contract, but that seems like a > contortion of "API". I incline toward treating semver as API-only. > >From the perspective of direct clients of Facter's Ruby API, such as Puppet itself, the values might not be part of the API. (But then again they might -- what if the change broke a provider constraint?) >From the perspective of someone writing manifests, Facter values are part of the API of the Puppet DSL. From this perspective, Facter's Ruby API is meaningless -- only the existence of facts and values are meaningful. Someone writing a module expects to be able to count on both the existence and the values of core facts. > 2) More importantly, a strict reading of semver as applied to facts would > tie our hands (or force more rapid majors). E.g. I add fact 'foo' in 3.0, > and it turns out to work great on RHEL but is incoherent on, say, Windows. > But it's now out in the wild, so if I'm completely strict about changes we > have to leave it be until 4.0, although that may mean that more and more > Windows users painfully write manifests around the 3.0 behavior. > It would depend on how badly broken it is on a particular platform -- If it's so broken as to be unusable, then changing it for that platform should not be a problem. But if it's usable with work arounds or more effort than really needed, then you're probably suck with that behavior. I realize there's plenty of room for interpretation there. Of course, a strict reading of SemVer reveals that it only applies to APIs -- Not environments, user interfaces, platforms, etc. And that it is not clear about how it applies to dependencies. So, if, for example, you were the *user* of a piece of software and if one of the libraries that software depended on increased a minimum version of one of *its* dependencies, such that the whole thing ceased to work on, say, the version of a language interpreter that ships with your OS, well, that's ok and you're out of luck for several reasons. I found this out myself: https://github.com/gollum/gollum-lib/issues/44 Wil -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/CAMmm3r7e%2BuzgXukJp3rhRKQttiWCaX%3D%2BR5fxDv1OR2jnC_b4sw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
