GitHunt
TI

tieguy/community-compact

The Open Source Community Compact

The Community Compact

Introduction

The recent conversations around the difficulties in finding a sustainable
open source business model are close to my heart. I have spent the last decade
plus of my life working to build an open source company at Chef Software. Over
that time, I've made plenty of mistakes, experimented with various models, and
watched with keen interest as others did the same. I believe that the biggest
thing lacking from the conversation right now is a focus on where the power
of an open source business really lies: its community.

Instead, we're focused on ways to eliminate bad actors - large service
providers (Amazon, Microsoft, Google, etc.) building services out of your
product, consultants making money but not giving back, large companies using
your software in mission critical ways, but refusing to see value in supporting
its continued development, etc. All of the ways I've seen suggested so far
involve eliminating or curtailing the communities rights to the software.

I would like to propose another way, one which I think supports the creation
of a sustainable community, with a sustainable business to support it, in harmony
with one another. I call it the Community Compact. It mixes together a modern
understanding of social contracts, copyright licensing, software licensing,
distribution licensing, and terms of service, to create:

  • A community of peers, who voluntarily agree to work together for the
    creation, use, and maintenance of the software.
  • A business model predicated on the growth and sustainability of the
    community, who assists in the creation and enforcement of the sustaining
    business model.
  • The right for any member of the community to decide they no longer wish
    to abide by the Compact, and start a new, competing community or business

I believe the result is a sustainable business model, not in conflict with its
community, but in harmony with it. One that allows us to open source all of the
software we produce, create large businesses around them, but which binds us
together with rules of behavior we all agree to up front.

It produces software that complies with the
Open Source Definiton and the
Free Software Foundations Four Freedoms.

For the impatient, here is how it works:

  • All the software is licensed under an OSI approved license.
  • All copyrights are licensed to each other, not assigned.
  • A business is formed for the sustainability of the software and the community.
  • That business registers the trademark for the software.
  • The business puts commercial terms on the communities official
    distribution, a-la "Red Hat Enterprise Linux". It also can create a Network
    Service (SaaS) and a Consulting Business. It uses its trademark policy and
    a distribution license to do so, not the software license.
  • The business produces a "non-community" build, identical to the official one.
    However, it lacks any of the business restrictions. It does have moral
    and ethical ones - if you use it in a commercial context, the community
    may add you to a FREELOADERS file in the software repository.
  • Contributors can get an exception to the FREELOADERS clause.
  • Licenses can be sold by the business allowing the trademark to be used in
    competing Network Services or Consulting organizations.
  • An exception to the Network Services or Consulting license requirement for
    contributors can be made, dropping the price of the license to $1 USD/year,
    on a 3/4 vote of existing maintainers.
  • If the business becomes a bad steward, the community exercises its right
    to fork. They cannot take the Trademarks with them - they must rename.

The intent is that this becomes a model for individual communities to build on
top of. If you are interested in working with me to refine this idea, we've got
it up in a github repository here - you're all welcome to come. I post this
without any real editing, either - my intent is to start a discussion that
leads a community process towards a final draft.

Nobody at Chef Software had anything to do with this, and it certainly doesn't
apply to Chef's open source communities. It's just my thoughts, after a lot of
pondering.

A note on Social Contracts

There is a long history of the idea of a social contract - starting with
Hobbes, and revived by John Rawls. For the purposes of thinking about how we
can build sustainable open source communities, lets boil it down to saying that
the "Social Contract" is the set of moral and political rules a society (the
community) will follow.

An important thing to realize when talking about these rules is that the
justification for the rules does not need to come form some external force -
there isn't some master set of moral positions that are at play here.
Instead, the fact that everone in a given society agrees to the rules, based on
their own individual reasoning, is enough to justify the existence of the rule.

So for example, if we all agree that in our community it is unacceptable to
say the word "kitten", then even though we would struggle deeply to find a
universal, rational reason for arriving at that rule, for the terms of our
social contract it's enough. That we agree to the rules is the justification for
them.

My belief is that we can apply this line of thought to our open source communities.
That we are forming intentional societies, with rules of behavior and morality,
and as such we are free to define those rules as we wish.

Others will join if they agree to those rules - if they do not agree, well, they
are free to create a new set of rules. This is one of the ways software diverges from,
say, political philosophy. :)

Read The Community Compact

Contributors

Other
Created September 26, 2018
Updated February 12, 2026
tieguy/community-compact | GitHunt