Recently, Remix, a framework for building websites, announced that they raised some venture capital (VC) money and would open-source their code. Some people have mixed feelings on the topic, such as Devon Govett, the creator of the open-source project Parcel.
This raises the question: should open-source projects be willing to take money from investors who expect a return on their investment?
Remix was initially planning on taking an approach where users would have to purchase a license to use the framework. That immediately eliminated a majority of potential users since most people don't want to pay for a web framework.
If you think of any popular web framework (Laravel, Next.js, Django), none of them require you to pay for them, so it would require a big paradigm shift from developers to consider using Remix if it were to go the licensed-based route.
Having a project, such as Remix, be free to use and open-source has the advantage of removing the financial barrier to adopt the software and also empowers developers to contribute to the product to make it better.
Funding for open-source projects
Let's take a look at how some other open-source projects handle monetization.
Apollo has raised a bunch of money to develop product offerings surrounding GraphQL. Apollo has open-source software that helps developers build GraphQL APIs, such as the Apollo client and Apollo server. Apollo makes money by allowing users to use their Apollo Studio product to gain additional features surrounding their GraphQL API such as richer insights, alerts, schema change checks, validation of composed/federated graphs, and more.
From personal experience, I've encountered a few issues with Apollo client in the past and it seemed as though the developers working on the library were not able to go about resolving these issues promptly. This could, in part, be because a lot of their developer resources were more focused on building out the products related to the paid Apollo studio offering.
It seems as though Apollo has taken a successful approach to generating revenue with the help of their venture capital money. Their paid products provide good added value for anyone that has a GraphQL API and their open-source software allows people to more easily build GraphQL APIs. Even if their open-source software isn't the best out there (e.g. urql could be a better alternative to Apollo client), it doesn't seem that a user needs to be using their open-source software to benefit from their Apollo studio product.
Docker is another company that has raised venture capital money to continue to improve on its containerization solution and related product offerings. Docker is the most popular way for developers to package up software into "images" that can then be run within "containers" (read this guide on Docker if curious on how Docker works).
The way Docker generates revenue is through its image registry that provides a place for users to store and retrieve their Docker images. It seems to be a strategy that is working out for Docker since they are reporting year-over-year revenue growth of 170% according to their press release article.
Docker relies on many open-source projects that allow developers to create and run Docker images, such as containerd, Docker Compose, Docker CLI, and more. Docker has a vested interest in making sure people continue to use Docker for their containerization needs since their image registry product offering relies on people using Docker images.
Next.js is an open-source framework for building websites with React. Next.js is monetized through Vercel, a platform that allows you to deploy and host web applications. The Vercel platform makes it easy to deploy Next.js applications and so it is the natural choice for anyone building an application using Next.js.
Vercel and Next.js seem to have a great thing going. They've made an effort to keep Next.js well decoupled from Vercel, meaning that you can host Next.js on another platform other than Vercel. This has the advantage of not making developers feel "locked-in" to a particular hosting platform and also opens the door for Next.js to collaborate with other 3rd party organizations, such as Google, to improve the framework.
Here's a quote from the Next.js version 10 announcement blog post talking about how the Google team is collaborating with them on some features:
From their announcement blog post:
If you watch our conference talks, you will find we've been hinting at commercial applications of this infrastructure for years. We are bullish about the technology stack we've built and intend to pursue those commercial applications ourselves.
Profiting on free labor?
Some might argue that open-source projects that are gaining money from their software and investors are profiting from the free labor of community contributors to their project.
In my mind, open-source projects should not expect any contributions from the community and should not be obligated to provide financial compensation for contributions. Making a project open-source is already an act of goodwill, in a way, by allowing anyone to view the source code. If community members want to help improve the product, they don't need to be hired employees, and that should empower users of the open-source project.
No one is forcing community members to contribute to open-source projects, so there should not be an expectation for compensation from community members.
How will Remix make money?
The most obvious way for Remix to make money is using a similar strategy as Next.js: create a platform that has first-class support for deploying Remix applications. Gatsby has done something similar with their Gatsby Cloud offering and, as mentioned earlier in this post, Deno could take a similar approach.
With Next.js, Gatsby, and potentially Remix and Deno all having their platforms that provide first-class support for their respective frameworks, it will be interesting to see how willing people are to use many different platforms for their different applications. To me, it seems like it could be annoying having to have your apps deployed on a bunch of different services and infrastructure.