You read that correctly! Knative has officially become an incubating project at CNCF! This popular open source project is now joining the premier cloud open source foundation, but what does this mean for serverless and the cloud?
NOTE: I am a Googler but everything here is my own personal opinion and does not reflect any stance of Google’s.
Some Background on Knative
Knative was first publicly announced at Google Cloud Next 2018. But what is Knative? In short, it’s an OSS platform designed to bring serverless and event driven containers to Kubernetes.
You may be asking "what’s serverless Kubernetes?". Did we find a way to run Kubernetes without nodes? Well, no, not really. If you look at my previous post, I mention that serverless has nothing to do with eliminating servers from infrastructure. It means abstracting the server infrastructure from the developer.
So what did Knative do? Knative adds components to Kubernetes to automate the deployment and running of containerized applications. Today, Knative has two components, Serving and Eventing. Serving would help automate the deployment process and Eventing binds sources to their sinks.
Why the move to CNCF?
You will hear many opinions as to why this happened and what it means. The official announcement goes into details around the strategy. Like many OSS projects, Knative was sponsored by a for-profit corporation (Google) with many corporate and non-corporate contributors.
Now in and of itself, there is no problem with a for-profit corporation sponsoring an open source project. There can be many benefits to that. For one, it can be expensive to fund these projects. Having a company (or companies) contribute funding can help ensure that the project has the resources needed to grow both from a engineering and a marketing standpoint.
However, this brings up the question as to who actually "owns" the project. This is where licensing comes in. Sure, I can create a project and call it open source but what happens when someone contributes to the project? Who owns the contributions? Am I able to use the project as I wish? What if I try to commercialize. This is why licensing is important. There are a variety of licenses that are recognized as being open source by the Open Source Initiative.
Why are we talking about licenses?
I promise that we will not be diving into the finer facts of the law. I am by no means a lawyer nor do I play one on TV. For those curious, you can go to choosealicense.com to get a quick overview on the different licenses and what they entail. However, licensing is important when it comes to open source because it tells you you can.
Open source software is, by its nature, communal software. Anyone can contribute and/or distribute the software as a component of their software. Most open source licenses have allowed users to contribute and then commercialize the software later. One example would be Kubernetes. I could download it for free and install it on some VMs and it would be completely within my rights to do so as per the license, in this case Apache 2.0.
Now, would Kubernetes or Linux be where it is today if it were a "free for all"? Of course not. There needs to be review processes, strategy, marketing, etc. This usually comes in the form of "governance". There are many governance models but ultimately a committee of volunteers will "steer" the direction of the project. Often times these committee may be heavily weighted with members of the sponsoring company but you will also see other people whom are committed to the project on these committees. Sometimes they represent themselves, sometimes they represent a group, but most often, they represent a company.
Now what happens if a company decides to change the governance or license to better suit their commercial needs? We actually saw this happen recently with the creation of the Server Side Public License (SSPL). Now I am not here to say whether or not this is a good license but I will say that the Open Source Initiative does not recognize it as a true open source license.
TL;DR, this license requires anyone wanting to offer a managed version of the open source project to release all infrastructure details and code changes to the community. This is antithetical to the "free to use" nature of open source. From a pure business standpoint, this makes sense as it allows the corporation sponsoring the project to commercialize it without enabling competitors. However, in the name of open source, it raises a lot of questions in regards to ownership and rights.
What does this have to do with Knative?
Okay this is all interesting but you may be asking, what does this have to do with anything? Well the concern about a single entity sponsoring or "owning" the open source project. They would have a lot of power to steer the project in a way that is more advantageous to them OR change the license and governance altogether.
This can be a potential hindrance to adoption as it may make enterprises reluctant to contribute or use the software. It can also make individual developers hesitant to contribute as they don’t know how they will be effected.
The Cloud Native Computing Foundation (CNCF) is a neutral nonprofit foundation. It is funded by multiple corporations, individuals, universities, and other sources to maintain a strong ecosystem of open source projects. They essentially help manage the larger communinty of member open source projects. By having them "hold the keys to the kingdom" for Knative, two things can be accomplished (in my eyes).
For one, no one company or organization is doing the majority of the steering for the project. Instead, we have a community of developers, end users, and vendors steering the project. In this governance model, it can help prevent someone from trying to "change the rules" to better suit their interests. I don’t know about you, but I feel easier knowing that we are all in this together and not just benefitting some corporation for free.
Secondly, it makes it easier to be a part of the larger cloud native ecosystem. Does an open source project need to be a part of the CNCF in order to be considered cloud native? Of course not. However, when you have the CNCF as the "umbrella" to all of these other projects, you start to see better collaboration and interaction. Knative may now be better able to find developers to help scale it. They may also be able to collaborate with other projects to create some interesting end-to-end solutions.
So what now?
I have been a long time fan of open source. I used to used Ubuntu 4.10 on my computer and while I haven’t done much code contribution, I have contributed my skills in other ways to projects. I love what Knative has to offer to the cloud native ecosystem and I really hope that within a year, this CNCF membership results in growth in Serverless Eventing and Serverless Containers!