First published on July 29, 2021
Until about a month ago, I had never thought deeply about public goods. The last time I was exposed to the concept was in an introductory economics paper, many years ago. Despite its importance as a key source of market failure, it is the sort of concept that is glossed over in a single lecture and never spoken about or considered again. For the most part, it is an academic public policy problem that does not warrant consideration from the average person. The average person pays taxes and rates and expects the government to use some of that money to pay for public goods that cannot be efficiently funded by private enterprise.
My understanding of public goods has been helped greatly by participating as an applicant in the recent Gitcoin Grants Round 10. My goal in participating was to raise a small amount of money for a podcast I host that gives a conversational platform to builders and participants in web3. Any money raised would be used to offset some of the ongoing expenses incurred in creating the content. This, of course, raises the question, can a podcast be a public good?
Going into the grants round, I had a vague understanding of what a public good is. It is obviously possible to deduce from the name that a public good is something that is good for the public. However, just because something is good for the public does not necessarily mean that it is a public good.
Public goods share two immutable characteristics: they are non-excludable and non-rivalrous. Put simply, we cannot exclude anyone from using the good and one person’s enjoyment of the good does not diminish the ability of others to enjoy the same good. Common examples of public goods include air quality, national defence, radio broadcasts, and street lighting, among many other examples. In most cases, it falls upon governments to provide these goods because:
One clear and obvious exception to the idea that governments should fund public goods is open source code. Open source projects generate hundreds of billions of dollars in economic activity each year. Despite its collective economic impact, the creation of open source code falls almost exclusively upon private individuals and organizations who contribute time, money, and resources. In return for their contributions, open source contributors often receive little more than social praise from the developer community.
Why then would anyone contribute to open source code? What is the motivation? Why would contributors not just use their skills to contribute to for-profit projects where the economic incentives are better aligned? Altruism is one of the more surprising traits of human nature. For many, life is about more than just the pure pursuit of money and power. On an individual level, contributors are intrinsically motivated by a sense of mission. The chance to be involved in something bigger than themselves can leave contributors with a real sense of purpose that cannot be found in purely profit-driven work.
Distributed open source code is a miracle in human coordination. How does a group of people, not defined by race, religion, gender, or geography, come together to contribute time and money to a reimagined reality that only exists on the open internet? It is an emergent phenomenon that would have been unimaginable not so long ago.
Just as we do not like to think about where our meat comes from, we also do not like to think about the people who are sacrificing to create and maintain open source code. It is easy to take open source code for granted, just as it is easy to take all public goods for granted. Open source code magically exists. As consumers, we do not see the sacrifice of the individuals involved. Instead, we see the value captured by large tech companies who neatly package the code in the apps and websites we use on a daily basis.
It is natural to assume that open source contributors are being remunerated and compensated in some way for their contributions. It is even easier not to think about it at all. The reality is that the contributors often receive nothing for their contributions. To what extent can an internal sense of fulfilment sustain us? Open source developers get limited recognition if everything works perfectly and blame and social ostracisation if anything goes wrong. Burn-out among developers is common. While money does not fix this, it does go some way in ameliorating feelings of discontent and exhaustion. Money is a signal — it is a token of appreciation. When we pay nothing, we signal that something has no value. When we pay little, we signal that something has some value. When we pay a lot, we signal that something has a great deal of value.
How much, then, should we pay open source developers who contribute to something that generates tens of billions of dollars per year? The principal argument against paying open source contributors is that it may attract the wrong types of people who are motivated by money, rather than a mission. However, even if we can agree that open source developers should be paid some indeterminable amount of money for their contributions, the bigger issue here is trying to figure out who should pay.
Decentralized open source projects have historically relied on donations from companies and individuals. This has proven to be a very ineffective mechanism of value transfer. A company that uses open source code in a project that goes on to generate tens of millions of dollars in revenue, has no obligation to contribute anything to the creators and maintainers of that code. This is the free-rider problem on full display.
We all use Wikipedia on a daily basis, but how many of us donate to the Wikipedia Foundation each year? Imagine the internet without Wikipedia. It is one of the few websites that actually needs to exist. Most of us will pay for Netflix each month, but we will not pay for something that is hugely enriching to our collective lives. Why? Because Netflix is able to restrict access to content and Wikipedia is unable to do the same, without damaging the integrity of the project. If we are reluctant to contribute money to a consumer-facing project like Wikipedia, that we knowingly use on a daily basis, what hope is there for other open source projects that are less well known, to capture some of the economic value they generate?
Large corporations are also actively involved in the creation and maintenance of open source projects. Facebook Inc, for instance, created React, which is a vital component for many decentralized applications. There are countless other examples, including Google’s creation of Angular and Vercel’s creation of Next.js. However, for the most part, these companies do not create these open source projects for the betterment of humanity. They create them because they are economically incentivised to do so. Overall, having large corporations involved in the creation of open source code is a net positive, but having open source code that is owned and maintained by its users is always preferred.
The production of decentralized open source code has laid the foundations for how we think about public goods and public goods funding in web3. However, with no taxation or government to rely on, the same funding void exists. We are forced to ask, to the extent that we are trying to create a metaverse, whose responsibility is it to fund public goods in web3? Who builds the roads of the metaverse? Who funds the media? More importantly for web3, who funds the open-source code and creates the projects needed for the metaverse to function?
What is a public good in the context of web3? We know from our standard economics definition above that a public good is non-excludable and non-rivalrous. As we have established, open source code clearly comes within this definition, and can therefore be considered a public good. What about a Twitter account? Can a Twitter account be a public good? What about a podcast or news website? Can digital art be considered a public good? Anything that satisfies the definition of a public good could, in theory, be a public good. So a Twitter account could be a public good if access is not restricted, since we know that one person viewing a tweet does not stop another person from viewing the same tweet. Public goods need to be evaluated on a case-by-case basis.
Consider another example, like a podcast.
Why would we fund something like a podcast as a public good? What is the consequence of not funding a podcast? One of three things will happen:
Is it the end of the world if a podcast cannot make money and the creator stops producing the content? On an individual basis, no, it does not matter. On a collective basis, in the way we think about public goods, it matters a great deal. If we expect people to contribute and create public goods of value that are not corrupted by outside interests, we need to find a way to ensure that these people have access to funding. In the case of the media, if we want clean discussions and clean information, we have to move away from the special interests that plague traditional media. To do this, we have to fund media and content creation in web3 as a public good.
When it comes to open source code, it is much easier to identify public goods and assign a value to the work. When it comes to everything else, a lot more that needs to be considered.
Deciding who should get access to public goods money and how much they should receive is very challenging. There are a lot of mouths to feed in web3. There are a lot of people creating and contributing to public goods. So, who decides?
The challenge of funding public goods in web3 is one of the most interesting real-world experiments ever conducted. In a perfect world, public goods would be managed by a contract that magically knows how much money to allocate to each person or project and automatically distributes the money in the fairest and most impactful way possible. The contract would know exactly what to do and would act autonomously of people, who could be corrupted by outside influences.
In reality, it is a much more complicated proposition. Even if we agree that public goods should receive funding in web3, we still have to raise money and then determine how to equitably distribute that money in some way. We can break the funding of public goods into two distinct tasks — raising money and then distributing money.
To the extent that any of this is easy, raising money is the easier of the two tasks. Money is voluntarily donated to Gitcoin by people and projects in web3 who value the funding of digital public goods. Gitcoin then has the task of pooling donations and distributing this money to fund public goods. Rather than having a central body making decisions about distributions, Gitcoin is experimenting with a decentralized approach using something called quadratic funding.
The quadratic funding model exists as an attempt to decentralize and democratize the decision-making process when it comes to the funding of public goods in web3. The concept of quadratic funding comes from a paper published in 2018 by Vitalik Buterin, Glen Weyl, and Zoe Hitzig called ‘A Flexible Design for Funding Public Goods.’
Rather than having a central body deciding on public goods funding allocations, quadratic funding lets the community decide. Quadratic funding leans heavily on two assumptions:
Are either of these assumptions true? Probably not. But, like most things in web3, it is an experiment. Quadratic funding does not need to be perfect. It only needs to be marginally better than the status quo. One way to look at Gitcoin is that it is a decentralized web3 government, whose sole responsibility is the funding of public goods. Gitcoin is of course not a government, but rather a DAO that does not resemble a traditional government in any way. Quadratic funding decentralizes the decision-making process and ensures, for the most part, that no-one within Gitcoin has too much power which could negatively influence how money is distributed.
There are two components needed to make quadratic funding work: community donations and a common matching pool. During a grant round, public goods projects are able to create a page on Gitcoin’s website and request donations. Members of the community then come together and “vote” on the projects they believe in. Voting happens in the form of donations. Once a grant round closes, the quadratic funding mechanism allocates a portion of the matching pool to participating projects, based on a quadratic formula linked to the number of donations a project receives and the amount raised.
It is easy to point out flaws with popularity being used as a weighting mechanism for quadratic funding. If, for instance, a popular project receives several thousand dollars in funding from hundreds of donors, the project will likely receive a large matching donation from Gitcoin. (There are also many other ways to game grant rounds, which are being addressed by the Gitcoin team on an ongoing basis.) Despite the fact that Gitcoin screens project applications before they are included in a grant round, there does not appear to be any consensus around the definition of a public good. Instead, the decision is left to the public.
In a perfect world, the community knows what a public good is and is in the best position to judge what is needed and/or valuable. Unfortunately, this has proven to be untrue. The community is more likely to donate to popular projects they have seen before, with little or no consideration as to whether or not a project is a public good. Projects, whose founders have larger social media followings, are obviously going to receive more donations than other projects. As a result, these projects will likely receive a greater amount of money from the matching pool. In what way then does quadratic funding improve upon the current centralized approach to the funding of public goods at a government level? To the extent that the community’s participation acts as a voting signal for a quadratic formula, surely there should be clarity around what participants are voting for. Are they voting for what they think a public good is or what a public good actually is? Without the quadratic matching, this would not matter. With quadratic matching, it matters a great deal. The matching pool consists of money collected from donors who expect that the money will be used to fund digital public goods. At the moment, there are clearly projects being funded by the Gitcoin matching pool that are not public goods and could not fall within a broader definition of public goods.
In a post on Other Internet by Toby Shorin, Laura Lotti, and Sam Hart called ‘Positive Sum Worlds: Remaking Public Goods’, the authors argue for an expanded definition of public goods. The authors focus on our interpretation of the words “public” and “good” and propose the need to move beyond the standard economics definition of public goods currently being used in web3. Developing a better understanding of what we mean by “public goods” is going to become increasingly important. We need to educate people in web3 so we can make better decisions as individuals. If we can make better decisions as individuals, the collective will be better off and innovations like quadratic funding will function much more efficiently.
We need to abandon our legacy understanding of the term “public good” and repurpose it for web3. Any definition should focus on the characteristics that we would like to see the term embody. The standard definition focuses on public goods being non-rivalrous and non-excludable. This definition, while restrictive, creates an objective standard that we can use. If we broaden this definition, we must ensure that it actually helps by creating similar standards that aid our identification and understanding of digital public goods. After all, why do we need a definition in the first place? We need a definition to help us make decisions about what projects and people should be eligible for and receive funding.
In my opinion, the two principal characteristics we should be thinking about when defining public goods in web3 are market failure and value added to a community. By visualizing the problem we are trying to solve, we can develop a decision-making matrix that could improve decision-making and lay the foundations for what we mean by public goods in web3.
In the context of the Public Goods Funding Matrix above, market failure relates to the difficulty a project may face in monetizing its outputs. If the market failure is high, it means that a project will find it difficult or impossible to monetize outputs. If market failure is low, it means that there are many pathways towards monetization. This could include things like subscriptions, products, donations, sponsorship, merchandise, and advertising.
Value to the community refers to the perceived value a project or person has to a community. This could refer to the ecosystem more broadly or smaller segments within a given community within web3. A low community value naturally indicates that the project is not considered valuable to the community, while a high community value indicates that the project is perceived to have a lot of value.
While these standards are entirely subjective and open to interpretation, using a decision-making matrix can improve decision-making at an individual level and also at a governance level. An individual might use these standards when considering donations to projects during a grants round, while a DAO focused on public goods funding might use these standards when thinking about the sorts of projects or people to fund.
The Public Goods Funding Matrix uses a simple traffic lights system to indicate whether a project should be funded. If a project falls into category 1, 4, or 7, we might decide that a project should receive little to no funding. If a project falls into category 2, 5, or 8 we might decide to look more into the project before allocating funding. If a project falls within category 3, 6, or 9 we might decide that the project should receive funding.
It is helpful to consider an example before we discuss how the funding matrix might be used. An open source project, for instance, might have limited pathways towards monetization, which indicates a high degree of market failure. Immediately, we know that the project will be a 7, 8, or 9. If the value to the community is also high, we might say that the project is a 9. Since it is a 9, it should receive a greater amount in donations relative to similar green-lit projects in categories 3 or 6.
How does this work in practice? Let’s assume that this project is attempting to raise money during a Gitcoin Grants round. As a potential donor, I might decide to give a category 9 project $50 since there are few pathways towards monetization and the value to the community is high. If the project was a 6 and there are more pathways towards monetization, I might decide to give the project $20. If it was a category 3 project, where there are many pathways towards monetization, I might decide to give the project $5.
Another person might view the same project and determine that it is not a category 9 project at all, but rather a 7 as they do not feel there is as much value to the community. In that case, the individual would not donate to the project. While an objective standard is much tidier, the funding matrix forces individuals to consider what they value. Participatory decision-making by individuals in the community is always preferred in web3, compared to a top-down directive.
Using the funding matrix, we can fund public goods that would never fall within the pure economics definition. For instance, projects that are in category 2 or a 3 would never receive funding under the current model because the market failure is so low. These projects should, however, be eligible for funding because the value to the community is high.
Kernel is an example of a project that is not strictly a public good based on the standard economics definition, but should be eligible for public goods funding based on the value provided to the web3 community. Kernel is a cohort-based web3 learning community for builders and creators. Participants are guided through an eight-week program as a community, learning about web3 based on an open syllabus. As part of the program, participants are supported by stewards and mentors while they bring projects to life in self-directed ‘adventures’. Think of Kernel as a web3 “metaversity” — what a university should look like in the metaverse. Like a university, Kernel is unable to accept everyone who applies. Using the funding matrix, we might conclude that Kernel is a category 6 project because of the value the program provides to the wider web3 ecosystem. If Kernel adapts its business model to be profit-focused, it might change to a category 3 project. Conversely, Kernel could decide to alter its programme and make it open for everyone, which might move Kernel to a category 9 project, where it should receive more public goods funding.
Projects will likely move between categories over time. If, for instance, a category 5 Ethereum-based podcast grew in popularity and chose to move away from a sponsorship model to reduce bias, its position would naturally change. In this instance, the market failure would be representatively higher, even though the decision was voluntary, so the project might move from category 5 to category 9. The podcast should therefore receive more funding from a greater number of participants. Conversely, the same podcast could choose to become a Bitcoin-maxi podcast because of a sponsorship opportunity. In this instance, the market failure would decrease and the value to the Ethereum community would also decline. The project would then shift from category 5 to category 1, where it should no longer be funded as a public good.
There is no way to effectively fund public goods in a decentralized way without community participation. We need to abandon the standard definition of public goods and develop new tools and mental models to improve decision-making surrounding public goods funding in web3. While a broader definition of public goods is certainly needed, we also need to develop effective standards to improve our collective understanding of market failure and community value. These standards will guide decision-making and improve community outcomes going forward. A decentralized metaverse requires a decentralized solution to the funding of public goods in web3. We can either come together as a community to work through these problems now or we can wait for a large technology corporation to do the work for us. The clock is ticking and the choice is yours.
Special thanks to Scott Moore, co-founder of Gitcoin, for activating my interest in public goods with his Mirror post “It’s Time To Build (For The Public Good).” I was very fortunate to speak to Scott about public goods funding prior to writing this post. You can watch the conversation here. If you would like to reach out, you can DM me on Twitter any time @futurealisha
Here are some useful links to learn more about public goods in web3: