Why I stopped using OpenFaaS

Goncalo Oliveira
5 min readJun 16, 2023

--

Adopting an open-source project can sometimes be complicated. The community might lack resources, the direction might not meet your expectations or simply the project becomes inactive.

When I first started using OpenFaaS, I was looking for a Kubernetes-based solution (with no vendor lock) that could help me quickly deploy and manage functions and other http-based micro workloads. As opposed to Knative, the learning curve was gentler and so, it seemed like a good option. At the time, the community wasn’t big, but it was helpful and eager to have more users.

After some experiments, I’ve decided to adopt OpenFaaS in one of the company projects. It was still a pilot, but the intention was to extend the usage if it succeeded. At this point, both I, individually, and the company, were sponsoring OpenFaaS.

I’ve written and maintained an ASPNET template for OpenFaaS, since the existing one was too simple and already deprecated. Funny enough, it never got accepted by the founder.

Commercial Open Source

We all know what commercial open source projects are. They provide an open-source product, while offering additional services or premium features for a fee. Companies like InfluxData and MongoDb are good examples of such projects; they both provide a free, open-source product, while offering an enterprise or cloud edition for the right price. And this is good business… on one end, the base product gets more users, more exposure, more contributions and on the other end, companies that need the premium are willing to pay for that. Not OpenFaaS.

OpenFaaS is a commercial product disguised as open source. True, the source code is there, well… some of it is. You won’t be able to find any of the code for the premium features. However, their intention is not to provide an open source product, but to “trap” users to buy the premium.

The Community Edition (CE) of OpenFaaS, at the time I started using and advocating to others, had scale to zero and an operator for custom resources. Probably more, but I can’t argue about what I can’t remember. The scale to zero functionality, quickly became a Pro feature. At the time, it wasn’t an issue for me, so I didn’t really pay much attention to it. But the fact is that the CE product changed and lost functionalities.

If you want those and you are using this, then you need to start paying or… keep using the “old” version.

Some time passed and I had several discussions with the founder. Most of them, related to issues I was facing and needed guidance. The Slack community soon disappeared and moved to Discord, with the small detail that it’s now for paying customers only (and contributors). Since we were a bit more serious in the intention to use OpenFaaS in our products and because the interactions with OpenFaaS were being constantly translated (roughly) into: we don’t have time for non-paying customers so you should start paying if you want help, I enquired about support plans. Since these aren’t an option, I then got a quote for a small 3 node cluster. The answer was circa 30k GBP per year. Right… I can tell you that many companies have that value as their budget for their entire infrastructure, so it was unthinkable for us to spend that much just for OpenFaaS.

We never really got too deep using OpenFaaS after that, but we still used it for some projects of less importance. And as such, the company was still sponsoring OpenFaaS. Only fair, I think.

More recently, we had some issues with one of the clusters after an upgrade (Kubernetes). After sorting out the (typical) issues with ingress-nginx, we decided to also update the Helm chart for OpenFaaS. It instantly stopped working. All components were up, except the gateway. I thought there might be some issue with the Kubernetes engine in question (AKS), since we had issues with ingress-nginx because of it, so I reached out and opened an issue. After some guidance from Alex, which made an exception to a non-paying user, I was seeing the error

A license is required via — license or — license-file

Well… wait, what? Since when a license is required for the CE version? Turns out that no, a license isn’t required, but… you know that really cool feature you’re using? The custom resources operator? That’s now a Pro feature. Brilliant! And the answer from Alex was

You should convert that installation to use the controller mode, no custom resource is available for the community edition.

Or you can revert to the prior version that you were using previously — but beware that the base image and some libraries used contain high severity CVEs.

So, in sum… if you want to keep using that really cool feature you’ve been using so far, you either start paying 30k GBP per year or… you can continue to use the old version that has old libraries and might contain a bunch of security issues! And of course, the next time you upgrade Kubernetes, it might stop working because it’s no longer compatible… a ticking bomb.

And they really mean that! The documentation even got updated to say that

OpenFaaS Community Edition (CE) is meant for open-source developers and basic exploration, OpenFaaS Pro is meant for production.

This was the final drop. As I started typing a response, to say that I was surprised by the breaking change, the issue gets closed and locked. After that, we moved all of our remaining OpenFaaS clusters (we had one more) to something else and stopped sponsoring the project. I mean, it was more productive to throw money out the window.

TL;DR

So… why did I stop using OpenFaaS? Because there’s nothing open about it.

One expects a product to evolve, and I’ve even encouraged Alex (many times) to pursue commercial variants for the product. But imagine if MongoDb suddenly removed time series from the community edition database…

It’s really sad to see this kind of thing. You might not agree with me and I’ll respect that, but if you are making an open source product, you want people to use it and benefit from it. Sure, you want to make money from it, so add commercial support, premium features, but you want to maintain that community alive, not push it into a corner. Maybe that’s why the number of sponsors has dropped so much.

So, what do I use instead of OpenFaaS?

It depends, really… for some projects we use Knative, which is much more complex, but it also offers more options; unfortunately, one does need to take the time (and resources) to learn it.

We are also starting to experiment with JustFaaS, which also aims for simplicity and therefore, is much less complex. At the time of writing, it’s still experimental, but we’re seeing good results so far.

And we also do deployments without direct Kubernetes management, with vendor tools such as Google Functions or Digital Ocean Apps.

Like most things, it really depends on the scope of the project and the available resources for it (and company culture, sometimes).

--

--