Guacamole is an open source project. It is entirely free in every sense (under the Apache License, Version 2.0), and will always be so.
We believe that being open source gives Guacamole distinct advantages over purely-commercial alternatives. The public availability of the source means that the codebase is readily modifiable and extendable. It can be embedded in whole or in part in other projects. For the sake of the project and its community, significant effort is made by the Guacamole team to keep the codebase clean and readable. Guacamole is not a “black box”; you can read through the codebase and see exactly what it does and why. Commercial support is available, but because the software itself is free and open, there is no aspect of vendor lock-in.
Guacamole is not public domain, but the Apache license is very permissive, and as long as you follow it’s simple conditions, you can modify and include Guacamole in other projects to your heart’s content, including commercial or proprietary projects.
Joining the project
The Apache Guacamole project operates as a meritocracy. The project is made up of volunteers who, based on the subjective judgement of the existing project members, have demonstrated merit through their contributions and thus have been offered membership themselves. If you wish to join the project, the first step is to be active in the community as a contributor.
If you believe you have a feature or bug fix that would benefit the project, or simply wish to help other users, please feel free to subscribe to and use the project mailing lists. To ensure issues are properly tracked and development effort is not duplicated, all bugs or proposed development should be reported by opening a new ticket in our JIRA.
Code contributions are also always welcome, but do have to go through a review process. The code will more than likely be discussed and sent back a few times in order to bring the style and implementation in line with the rest of the Guacamole codebase.
If you are planning to contribute code, please keep in mind that the point of contributing is to collaborate for the benefit of the project and its community; it is a service you are choosing to provide because you believe, as the members of the Guacamole project believe, that doing so works toward the greater good. It is thus important to remember:
- Expect honest and constructive criticism. It is a good thing.
- A project’s processes exist for a reason. The goal of contributing is to work with the project for the common good, not fight against it.
- Develop against the most recent code on git. Patches against releases and naive copies of entire files cannot be accepted as they lack context and are likely out of date.
- Code must follow consistent style or it will become unreadable and unmaintainable. Please read through our style guidelines and, when in doubt, follow the style of the code you are modifying.
Our full contribution guidelines can be found in the
CONTRIBUTING file in any
of our git repositories. If you need help getting started, the API
documentation is an excellent resource, as are the
mailing lists and the tutorials in the
Committers actively maintain and contribute to the Apache Guacamole project, produce releases, review the code of contributors and fellow committers, and identify contributors who have shown merit and should be offered committership. Apache Guacamole committers are also implicitly members of the Apache Guacamole PPMC.
Committers have write access to Apache Guacamole’s git repositories, but do not make direct changes on their own behalf. Code changes are made only through pull requests, and are merged only after code review by a committer not otherwise directly involved in those changes.
Resources for committers:
- Committers’ FAQ
- Guide for new committers
- Maintaining the website
- Managing pull requests
- Style guidelines
- Beginning the release process
- Producing a release candidate
- Promoting a release candidate to release
- Announcing the release
The Apache Guacamole PPMC is responsible for project oversight. PPMC members participate in discussions on the mailing lists and vote on release candidates, new committers, and new PPMC members. Like committers (who are implicitly PPMC members), the PPMC is responsible for identifying members of the community who have shown merit warranting committership or PPMC membership.