[Camps-users] Integration with related projects
jon at endpoint.com
Fri Dec 26 22:29:57 UTC 2008
Thanks for the discussion the topic of language for version 4 of the camps
system. (The system hasn't been explicitly versioned to date. Versions 1
and 2 were used by our clients internally only and never released, and the
current public version is version 3. I just added the version number 3.00
to the code in Git.)
The various data points I'm considering are:
* As before, I think the implementation language isn't very relevant to
end-users, and Perl, Ruby, or Python would all be fine. That also means
that we can change it in a later version without much, if any, disruption.
* Since integration with Puppet or Capistrano is still theoretical at this
point, and in any case may not require direct library usage from Ruby,
integration isn't a compelling reason to switch to Ruby now.
* Moose definitely makes compilation slower, but there are lightweight
options, and I agree with Brian that we shouldn't prematurely optimize
here. Our use of Moose will likely be pretty simple, but even if it's not,
we should wait to worry about invocation speed when there's a proven need.
* Also, I won't be at all surprised if Moose ships in core Perl 5.12,
given the amount of traction it's gotten, and that that's being explicitly
discussed in the community. In effect, Moose is already the standard
"modern" Perl 5 object system, so we can be comfortable using it and not
feeling like Moose is an esoteric dependency.
* End Point is the major contributor to camps. Most non-End Pointers who
contributed to camps did so earlier in its development. Thus whatever
language is most convenient to us *today* is probably the best to go with.
That means Perl or Ruby, with Perl having a strong advantage.
* Camps version 3 is written in Perl. While there may not be much code
sharing between it and the new version, there's bound to be a least some,
so not changing the language means fewer hurdles.
I'm going to make an executive decision to forestall any further
distractions about language and say we'll use Perl 5 with Moose for camps
To be specific, let's say it needs to work with stock Red Hat and Debian
Perl, version 5.8.0 at a minimum (which RHEL 3 ships with), and if that
causes any trouble, 5.8.5 (RHEL 4), and if that's a problem, then 5.8.8
(RHEL 5). It should work with End Point's custom Perl 5.10.0 as well.
I've gone through all the modules the current camp system depends on, and
it looks like only File::pushd isn't shipped with Perl 5.8.0 and later by
default. If we can keep the list of additional dependencies short in
version 4, that'll make life easier for users.
End Point Corporation
More information about the Camps-users