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.

Reply via email to