Puppet 2.7 Switches From GPL to Apache 2.0
Vagueness in the law means that people are afraid to ship GPL’d software with their commercial software.
With Puppet 2.7, Puppet Labs announced they would be
switching from the GPL to the Apache 2.0 license, to encourage
a more widespread adoption of the Puppet systems management
platform. In this interview, JAXenter speaks to Luke Kanies, CEO
and a founder of Puppet Labs, on the decision to make this licensing
change, and what else is new in the 2.7 release.
JAXenter: You recently announced that Puppet
2.7 will move to the Apache 2.0 license, in an attempt to increase
adoption of Puppet. Why do you think some companies are
uncomfortable with the GPL?
Luke Kanies: I think a lot of it has to do with
how untested all of the open source licenses are under law – the
definition of ‘linking’, which the GPL uses, is not at all tested,
for instance, especially in the world of dynamic languages where we
live. This means that a company literally can’t know if it’s in
compliance, because the definition of compliance has not yet been
tested under law.
If the law were clear, then any company could easily know if
they were in compliance, but because it’s not, they have to make
decisions based on fear, rather than on clear legal and rational
This vagueness in the law means that people are afraid to ship
GPL’d software with their commercial software because they often
don’t know if that triggers a requirement that their software also
be open sourced. Open source works great for some companies and
products, but not for all, and with the uncertain law, people
prefer simpler decisions.
JAXenter: Why do you believe the Apache 2.0
license is more appealing to certain companies?
Luke: Essentially for the reasons stated above
– it’s far lower risk to an organization, because there’s no chance
it will result in them having to open source any of their own
software, and it’s essentially impossible to be out of compliance
with the license.
JAXenter: Can you tell us about Puppet
Faces, which is now included as part of Puppet 2.7x?
Luke: Faces is two things – a framework for
exposing, extending, and combining Puppet’s internal API in Ruby
and on the CLI, and a large collection of faces that do this for
all of the core aspects of the system.
It’s really about making it easy to build custom logic on top of
Puppet capabilities. It’s always been easy to run Puppet in a
couple of different modes, such as client/server and serverless,
but Faces make it possible to create whole new modes that work
particularly for your organization. Different groups have different
constraints, such as compliance requirements, DMZs, and very slow
WAN links, all of which can affect the Puppet architecture they
need to implement.
Faces gives them the flexibility to build their own architecture
if needed, and if not, you get the same functionality we’ve had all
along, but in a more easily understood form because it’s all built
on top of this simple API.
JAXenter: What else is new in Puppet 2.7?
Luke Kanies: Other than Faces and the license
change, 2.7 had a lot of internal work done in preparation for big
features in our next release, but we’ve also included some other
significant features. For instance, Puppet can now manage network
devices. The version in 2.7 only supports Cisco devices, but given
how extensible Puppet is, we expect to see many other device types
supported soon. We’re also now fully compatible with Ruby 1.9.2,
which should make a big difference in speed to many people.