Puppet Labs Releases Faces, Relicenses Puppet Under Apache 2.0
Puppet Labs released a command-line interface and set of APIs last week, called Faces, that allows sysadmins to create or extend subcommands and actions for Puppet. The API is callable from Ruby and includes objects that expose Puppet’s internal subsystem. Using either the command-line interface or the the API sysadmins can access Puppet objects like report to create, display and submit reports, and catalog to compile, save, view and convert catalogs.
According to Luke Kanies, creator of Puppet and CEO of Puppet Labs, “With Faces, we have tried to follow the Unix approach of creating small tools chained together to create something powerful, but all backed by a simple, extensible API.”
Like Puppet, Faces uses a model-driven approach that is extensible by design, meaning sysadmins can build custom behaviors and actions to control other software. Faces includes subcommands that provide access to the certificate authority, manage certificate requests and handle revoked certificates. Faces also includes access to the report facility to create, display and submit reports, a parser subcommand that provides access to the internal parser, and a node subcommand to view and manage nodes. Subcommands include:
- downloading or reporting
The company noted that they had used faces to create new cloud commands, called Cloud Pack, to set up a server on Amazon’s EC2. Faces requires Puppet 2.7 and therefore does not work with Puppet Enterprise, which is still in 2.6 release. According to the company Puppet Enterprise 2.7 is expected to be released in the summer of 2011. The current Faces release cannot work as a network API, but Puppet Labs indicates that a network API is in the works. That release will likely coincide with the release of Puppet Enterprise 2.7.
Puppet Relicensed under Apache 2.0
The GNU Public License (GPL) has long been criticized because programs licensed under it are not allowed to link to libraries covered under non-GPL licenses. The restriction in turn makes it difficult for some third-party developers to extend programs covered under the GPL without making similar code available under a separate license. While earlier version of Puppet were released under the GPL, the latest release of Puppet was relicensed under Apache 2.0. In his recent Blog post Kanies explains that:
Our goal at Puppet Labs, and my goal since I started the company and the project, has been to have Puppet everywhere. I want every OS to ship with Puppet, I want every appliance to use Puppet, and I want every device that can’t run Puppet to speak its language and still integrate with it. Heck, I want to replace the package manifest formats with Puppet’s language.
Kanies goes on to say that while many companies are comfortable with GPL, others fear that they will have to release additional code. “In the end, choosing GPL means more companies that want to partner with us have to pay us, else their software must also be open.”
Kanies contrasts this with the Apache license, writing that:
...choosing Apache means anyone can use, embed, and extend Puppet without having to worry about it affecting any other software... Apache enables far more partnerships but few (if any) that pay us.
The company points out that their flagship product, MCollective is already licensed under Apache 2.0 and that the change in licensing brings their products into alignment. Those who want to contribute to the Puppet project will have to sign a Contributor License Agreement (CLA). The CLA does not assign copyrights, but allows contributors to retain rights to their code while providing a license to Puppet Labs to use the code. According to Puppet Labs, past contributors have already been approached and asked to sign the CLA.
In contrast to Puppet, Faces is based on a public API is not considered a derivative work. Newly created Faces are therefore not restricted by any license and can be used freely.