The Portainer Open Source Rationale (Tao of Open Source)
by Neil Cresswell, on Aug 7, 2020 3:00:00 PM
Over the past three years, Portainer has become a successful open source project, used all over the world by hundreds of thousands of engineers every month. The Portainer community grows at about 50% CAGR, and with our upcoming Kubernetes release, we expect to see it grow even faster.
While the product itself becomes ever more powerful, the team is working hard to make sure that we don’t deviate from our brand mission to radically simplify the complex technologies of containers and orchestration. This is no easy task.
As you’re no doubt aware, we are preparing to release our first commercial product, which is hugely exciting and a step change for the business. There are three main drivers for doing this:
- The current codebase has been developed and is maintained by a small team, funded by the founders. This is unsustainable. The codebase is large, complex and will only grow. A commercial version will allow us to fund the R&D and the ongoing development and maintenance of the open source project.
- Portainer solves a real problem and creates real value for many users. The founders have a vision for making the complex simple and making advanced tech (K8s, containers etc) accessible to everyman. We are excited by the commercial opportunity and we believe there is real value to be created.
- A commercial product will give Portainer longevity. Portainer has the opportunity to become a widely adopted tool in the IT ops arsenal. By offering a commercial version we give all Portainer users the safety and security of a long-term play.
In releasing a commercial version, we are following in the footsteps of some industry giants. We respect the work of GitLab, Kong, Cockroach DB among many others (Puppet, Chef, Hashicorp…). They have all made this move and their communities are richer for it. We aim to take the best of their experiences and model our behaviour on it.
From studying these success stories, we’ve learned how careful and clear we need to be managing two versions of the product. This blog is the first in what will be an ongoing series of articles designed to lay bare out our strategy for managing our Open Source and Commercial product streams.
Going forwards, Portainer will exist in two versions:
- Portainer Community Edition (CE). CE is for anyone and everyone who wants to use Portainer for free. Now up to version 2.0, with Kubernetes support, it is freely licensed under the ZLib open source license, and its source code can be found in our Git Repository. We consider it to be an ‘edge’ or ‘Dev’ level code, where we take all practical steps to test and validate the code, however bugs may exist and can be reported and tracked through standard Git processes. CE is designed for a wide range of use cases that are non-critical and typically involve either a single user or a small team.
- Portainer Business Edition (BE). Portainer BE is our commercial offering. It’s first version will be 2.0 (implying a code consistency with CE) and is available under a proprietary license, with source available under specific conditions. It has a significantly more thorough test and release process and will typically be a version behind the open source product. While it is largely based on open source code, it is a separate branch and will include a range of features over and above those found in the CE version. Portainer BE includes a support service-level agreement, as well as a customer success program aimed to ensure that a customer’s underlying platform is solid and performant prior to the addition of Portainer. Portainer BE is designed for organizations who require any or all of the following:
- a supported product
- business class features (RBAC, availability, etc – see feature chart)
- a slow release cycle and rigorous (and explicit) pre-release testing
BE customers will typically:
- Value time over cost – BE will include a number of pre-configured components that will allow rapid time to value in a business environment.
- See value in an explicit customer success program, which ensures ongoing alignment between use and best practice
- Use Portainer in a critical or production environment
The challenge for any open source company releasing a commercial variant is to remain clear and fair in respect to the features that are added to each product stream. We want our guiding principles to be clear:
- We will be as transparent as we can be (recognising competitive tensions)
- We expect this to be a conversation between the community and the company
- We won’t always get it right, but we will always listen
- We will never take a feature out of CE and put in BE. Once it’s in, it’s in
- Features will often move from BE to CE
- We will put more of our dev energy (time, money, effort) into the open source version than the commercial version.
We are hugely sensitive to the needs of the community and we hope that by engaging in this conversation early we can earn your trust (or at least the benefit of the doubt) while we figure out the right way to make decisions. This is a hard thing to get right, but the benefits of getting it right are huge and we’re committed to going on the journey with our community.
On behalf of the Portainer team, we thank you for reading this, and if you have any questions, please feel free to comment below.