Open Source Licensing
Puppet 2.7 Switches From GPL to Apache 2.0
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 decisions.
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.