Introducing The Community Compact

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: it’s community.

Instead, were 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 as a way to stop these behaviors.

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 it’s
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 I believe complies with the Open Source Definition 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 it’s 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, I’ve got
it up in a github repository here
— you’re all welcome to come. I post this
without any real deep 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

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 everyone 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 and the businesses that sustain them. 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. Some of them might be legal, contractual ones — others might be moral and ethical ones.

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. :)

The Community Compact 0.1

Preamble

It is not a legal agreement, although sections of it likely reference legal
agreements. It is a moral and ethical one — it is the foundation upon which all
communities are built.

By joining the community, you agree to the rules outlined in this compact.

Code of Conduct

Original Intent

[BUSINESS] will sell a distribution of [SOFTWARE] with commercial terms,
enforced by its trademark on [SOFTWARE]. It will also, at it’s option, provide a Network Service (SaaS) or Consulting and Support. Competitive Network Services or Consulting offerings require a special license. An exception is granted to significant contributors to the software, as an alternate means of community support.

Right to Fork

If [BUSINESS] decides to restrict the use of [SOFTWARE] in a way that members of the community disagree with, they have the right to exercise their freedoms under the software license, and create a new distribution of the software without any mention of [SOFTWARE] trademark or branding.

This is not a hostile act — it is a recognition of the symbiotic relationship
between the [BUSINESS] and the Community. Ultimately, both exist to serve the [SOFTWARE], and if that cannot be reconciled, it is our collective
desire that new communities form. Such communities require a new name,
along with a new, independent support model.

[BUSINESS] must remain a good, true, and honest steward of the Community, or loose all the privileges outlined in this compact, through the community abandoning them.

Software License

Copyright License

This is a foundational moral and ethical right of the community — we have all
voluntarily joined together in the creation of [SOFTWARE], and therefore no
single entity can own the [SOFTWARE].

Contribution

The [SOFTWARE] belongs to the community, and as such, the Maintainers have the final say on the source code.

Trademarks

As a policy, [BUSINESS] does not license the Trademark for use by any other
organization for any commercial purposes, except through specific license
agreements with [BUSINESS].

Patents

Distribution License

This is to ensure [BUSINESS] has a viable option for monetization of the
[SOFTWARE]. Combined with [BUSINESS] control of the [SOFTWARE] trademark, it ensures that [BUSINESS] remains in control of how the Community’s official build of the software is distributed.

In addition, the [BUSINESS] will produce a separate, identical, “non-community” (or “nc”) build. This build will have no legal restrictions on it’s use. It will, however, have a moral and ethical restriction: use of this build of the software for commercial purposes is seen as a direct violation of the community compact, as the organizations profiting from the communities labor do not support the communities continued health and existence.

On a 3/4 vote from the Maintainers, known violators of this clause of the
Compact will be added to a FREELOADERS file in the software repository.
Organizations who believe they have been wrongly added to the FREELOADERS file may request removal from the maintainers, and all requests will be granted. Removal is not permanent.

Network Services

If other parties wish to run network services around the [SOFTWARE], we ask
that they contribute to the community through the purchase of a network
services subscription from [BUSINESS].

Consulting License

We ask that all members of the community utilizing consulting businesses do so from only those organizations committed to the communities growth and health.

Contributor Exception

Contributors to the software or community may request a reduced price ($1 USD, or equivalent) Network Services Subscription or Consulting License from the Maintainers. It will be granted by the [BUSINESS] on a 3/4 vote by the Maintainers.

FAQ

Why is the commercial version the community version?

What if people get added to FREELOADERS and they don’t belong?

What if I want to use the software commercially, but I can’t afford the price the business is asking?

Note: contributing might not mean source code. You might answer questions in a forum, you might triage bugs, etc.

This won’t work with software license X!

Is this some new Chef, Habitat, or InSpec thing?

I like what you’re thinking — can I help?

Former CTO at Chef, Open Source nerd, Sustainable Free and Open Source Communities advocate.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store