[Camps-users] Integration with related projects

Jon Jensen 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 
version 4.

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.


Jon Jensen
End Point Corporation

More information about the Camps-users mailing list