On Fri, Aug 29, 2014 at 2:11 PM, Kylo Ginsberg <k...@puppetlabs.com> 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 puppet-dev+unsubscr...@googlegroups.com.
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