├── 2024
├── a-tale-of-two-leaders
│ ├── dries-and-matt.jpg
│ ├── social.webp
│ └── the-checkbox.webp
├── a-vision-for-software-commons
│ ├── codehosting.webp
│ ├── first-commit.png
│ ├── invoice-58306118.pdf
│ ├── invoice-58306118.webp
│ ├── languages.webp
│ ├── lets-fix-it-this-way.webp
│ └── social.webp
├── distributing-funds-in-open-source
│ ├── index.md
│ ├── konstantin.png
│ ├── pachinko.jpg
│ ├── serkan.png
│ ├── social.webp
│ └── twyw.png
├── fair-source-does-not-equal-software-commons
│ └── social.webp
├── funding-the-five-thousand
│ ├── a-few-thousand-people.webp
│ ├── fair-pay-no-hoops.webp
│ └── social.webp
├── leadership-and-power-in-open-source
│ ├── old-call.webp
│ ├── open-call.webp
│ ├── openpress.com.webp
│ └── social.webp
├── open-source-is-a-restaurant
│ └── social.webp
├── questioning-the-value-of-open-source-software
│ ├── figure-1.webp
│ ├── languages.webp
│ ├── paper.webp
│ └── social.webp
├── relicensing-and-rug-pulls
│ ├── Percentage_of_Commits_by_Era_and_Relation.webp
│ ├── betatesters.webp
│ └── social.webp
├── thank-you-ben
│ └── social.webp
├── the-case-for-a-new-institution
│ └── burnout.webp
├── the-future-of-foss-foundations
│ ├── level-3.gif
│ ├── osss.webp
│ └── social.webp
├── the-historical-case-for-fair-source
│ ├── code_rush.webp
│ ├── navigator.webp
│ ├── not-bad.jpg
│ ├── social.webp
│ ├── twiki.webp
│ └── underlying-points-of-view.webp
├── the-open-source-sustainability-crisis
│ └── social.webp
├── towards-software-commons
│ ├── corporate-welfare-program.webp
│ ├── please-trespass.webp
│ └── social.webp
├── welcome-to-open-path
│ └── social.webp
└── widespread-use-of-a-fair-source-product
│ ├── Percentage_of_Commits_by_Era_and_Relation.webp
│ ├── atlassian.webp
│ ├── dashboard.webp
│ └── social.webp
├── 2025
├── how-to-vote-in-the-2025-osi-election
│ └── social.webp
├── luke-missed-the-memo
│ └── social.webp
├── open-source-is-a-bad-gift-economy
│ ├── index.md
│ └── social.webp
├── point-four-of-elons-fork-is-the-scary-one
│ └── social.webp
└── the-birth-of-the-american-empire
│ ├── hail-caesar.webp
│ └── social.webp
├── .bundle
└── config
├── .gitignore
├── .tool-versions
├── 404.html
├── CNAME
├── Gemfile
├── Gemfile.lock
├── Makefile
├── README.md
├── _config.yml
├── _includes
├── img.html
├── posts.html
└── youtube.html
├── _layouts
├── default.html
└── post.html
├── _posts
├── 2024-01-04-welcome-to-open-path.md
├── 2024-01-19-the-open-source-sustainability-crisis.md
├── 2024-01-25-questioning-the-value-of-open-source-software.md
├── 2024-02-05-funding-the-five-thousand.md
├── 2024-02-22-towards-software-commons.md
├── 2024-03-05-the-case-for-a-new-institution.md
├── 2024-03-21-relicensing-and-rug-pulls.md
├── 2024-04-01-fair-source-does-not-equal-software-commons.md
├── 2024-04-04-a-vision-for-software-commons.md
├── 2024-04-05-open-source-is-a-restaurant.md
├── 2024-04-26-the-future-of-foss-foundations.md
├── 2024-05-15-widespread-use-of-a-fair-source-product.md
├── 2024-06-20-the-historical-case-for-fair-source.md
├── 2024-10-11-a-tale-of-two-leaders.md
├── 2024-10-14-leadership-and-power-in-open-source.md
├── 2024-11-04-thank-you-ben.md
├── 2025-02-01-point-four-of-elons-fork-is-the-scary-one.md
├── 2025-02-03-the-birth-of-the-american-empire.md
├── 2025-02-25-luke-missed-the-memo.md
└── 2025-02-27-how-to-vote-in-the-2025-osi-election.md
├── assets
├── Czarin-Medium.otf
├── banner.webp
├── chadwhitacre.jpg
├── email-header.jpg
├── hero.webp
├── replies.js
├── sentry.svg
├── slice.jpg
├── social
│ ├── bluesky.svg
│ ├── email.svg
│ ├── github.svg
│ ├── rss.svg
│ └── x.svg
└── style.scss
├── bin
├── new
└── pub
├── blog.html
├── index.html
└── social.webp
/.bundle/config:
--------------------------------------------------------------------------------
1 | ---
2 | BUNDLE_PATH: ".bundle"
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .bundle/ruby
3 | .jekyll-cache
4 | .sass-cache
5 | TODO
6 | _site
7 | _drafts/*
8 |
--------------------------------------------------------------------------------
/.tool-versions:
--------------------------------------------------------------------------------
1 | ruby 2.6.5
2 |
--------------------------------------------------------------------------------
/2024/a-tale-of-two-leaders/dries-and-matt.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/a-tale-of-two-leaders/dries-and-matt.jpg
--------------------------------------------------------------------------------
/2024/a-tale-of-two-leaders/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/a-tale-of-two-leaders/social.webp
--------------------------------------------------------------------------------
/2024/a-tale-of-two-leaders/the-checkbox.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/a-tale-of-two-leaders/the-checkbox.webp
--------------------------------------------------------------------------------
/2024/a-vision-for-software-commons/codehosting.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/a-vision-for-software-commons/codehosting.webp
--------------------------------------------------------------------------------
/2024/a-vision-for-software-commons/first-commit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/a-vision-for-software-commons/first-commit.png
--------------------------------------------------------------------------------
/2024/a-vision-for-software-commons/invoice-58306118.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/a-vision-for-software-commons/invoice-58306118.pdf
--------------------------------------------------------------------------------
/2024/a-vision-for-software-commons/invoice-58306118.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/a-vision-for-software-commons/invoice-58306118.webp
--------------------------------------------------------------------------------
/2024/a-vision-for-software-commons/languages.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/a-vision-for-software-commons/languages.webp
--------------------------------------------------------------------------------
/2024/a-vision-for-software-commons/lets-fix-it-this-way.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/a-vision-for-software-commons/lets-fix-it-this-way.webp
--------------------------------------------------------------------------------
/2024/a-vision-for-software-commons/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/a-vision-for-software-commons/social.webp
--------------------------------------------------------------------------------
/2024/distributing-funds-in-open-source/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Distributing Funds in Open Source
3 | excerpt: More experiments please.
4 | noindex: true
5 | ---
6 | Solving the [Open Source sustainability
7 | crisis](/2024/the-open-source-sustainability-crisis/) has two parts:
8 |
9 | 1. unlocking funds from corporations, and
10 | 2. distributing funds to individuals.
11 |
12 | Both are hard. I've [talked
13 | elsewhere](/2024/a-vision-for-software-commons/#three-funding-levers) about the
14 | [three basic approaches](https://spectrum.ieee.org/open-source-crisis) to
15 | solving the first problem. The [Open Source
16 | Pledge](https://opensourcepledge.com/) is one implementation of one of the
17 | approaches. In this post I want to talk about the second part: assuming funds
18 | are flowing, how do we distribute them?
19 |
20 | {% include img.html src="pachinko.jpg" caption="It's not a perfect analogy, but I imagine distribution as a pachinko machine." url="https://www.youtube.com/watch?v=7RTg89WEsXQ" %}
21 |
22 |
23 | ## A Policy Goal
24 |
25 | Let's define a policy goal: **We should distribute money to
26 | individuals to fairly reward past contributions and motivate valuable
27 | future contributions.** Notice these subordinate aims:
28 |
29 | 1. Balance perspectives. Consumers of Open Source want high-quality
30 | software today and into the future. Producers want compensation for past
31 | time spent, and stability to plan for the future.
32 |
33 | 1. Recognize all contributions. Code is the core, but complete
34 | software involves much more, such as testing, documentation, design, and
35 | support. All contributions have some value.
36 |
37 | 1. Focus on individuals. Funding flows are complex, often involving
38 | multiple entities, both for-profit or non-profit. Yet, ultimately, it is
39 | individuals who produce Open Source software, individuals who make corporate
40 | funding decisions, individuals at platforms who develop funding algorithms,
41 | individuals leading projects who make distribution decisions, and individuals
42 | who ultimately receive funds.
43 |
44 | 1. Negotiate fairness. The crux of the problem is optimizing a feeling
45 | of fairness across the wide web of individuals involved.
46 |
47 | Of course, fair compensation is a key contributor to future motivation. Why
48 | not fold down to a single goal of creating future value? Well, on a certain
49 | interpretation of this attribute taken in isolation, we already have an optimal
50 | status quo. Companies receive tremendous value from Open Source. The problem to
51 | solve is maintainer burn-out. The maintainer perspective needs to be explicitly
52 | in view.
53 |
54 | ## Algorithms and People
55 |
56 | There are two basic approaches to distributing funds to individuals. We can
57 | come up with algorithms to distribute funds at scale, and we can empower some
58 | individuals to make direct decisions. All variations of both approaches are
59 | worth trying at this stage. It's early days on Open Source sustainability, a
60 | time for divergence and exploration. Over time and as the sustainability
61 | movement matures, I expect we'll settle into relatively stable, long-lived
62 | patterns.
63 |
64 | ### Algorithms
65 |
66 | I am aware of seven examples of an algorithmic approach: two from individuals,
67 | two from companies, and three products from funding platforms, two of which are
68 | still extant.
69 |
70 | #### Individual Experiments With Algorithmic Distribution
71 |
72 | Let's start by looking at algorithmic Open Source funding experiments from two
73 | generous **individuals**: Serkan Holat and Konstantin Vinogradov.
74 |
75 | [Serkan Holat](https://www.linkedin.com/in/serkanholat/), a software
76 | developer and independent researcher, [launched a monthly funding
77 | experiment](https://dev.to/coni2k/open-source-public-fund-experiment-lc8)
78 | nearly two years ago. He has been running it faithfully ever since, with
79 | [monthly updates on this X/Twitter
80 | thread](https://x.com/coni2k/status/1865379070030033053), and higher-level
81 | write-ups at [six](https://x.com/coni2k/status/1543986591286321152),
82 | [twelve](https://www.linkedin.com/feed/update/urn:li:activity:7022915965306712064/),
83 | and [eighteen
84 | months](https://dev.to/coni2k/open-source-public-fund-experiment-one-and-a-half-years-update-367d).
85 |
86 | {% include img.html src="serkan.png" caption="Each month, Serkan Holat distributes $100 among three projects on Open Collective." url="https://x.com/coni2k/status/1865379070030033053" %}
87 |
88 | Serkan's experiment uses [Rob Pike's Criticality Score
89 | algorithm](https://github.com/ossf/criticality_score), part of the
90 | [OpenSSF](https://openssf.org/) initiative. A project's Criticality Score is a measure of its influence and importance. Serkan takes his monthly budget of
91 | $100, picks three projects at random from Open Collective, and distributes his
92 | budget based on the Criticality Score of each. I love Serkan for doing
93 | this consistently for so long. It's a humble but inspiring experiment. Serkan's
94 | long-term vision is to [fund Open Source through a public tax on proprietary
95 | software](https://podcast.sustainoss.org/175). His experiment points towards a
96 | method for distributing this tax should it ever come about.
97 |
98 | Venture capitalist [Konstanin Vinogradov](https://kvinogradov.com/)
99 | recently conducted an algorithmic funding experiment of his own, framed as "[an
100 | open-source analogue of the S&P 500](https://kvinogradov.com/algo-sponsors/)."
101 | He distributed a budget of $5,000 within the Python ecosystem through GitHub
102 | Sponsors.
103 |
104 | {% include img.html src="konstantin.png" caption="Konstantin Vinogradov sent $5,037 to 866 users via GitHub Sponsors." url="https://kvinogradov.com/algo-sponsors/" %}
105 |
106 | Like Serkan, Konstantin incorporated work from OpenSSF, in this case
107 | the [Scorecard](https://github.com/ossf/scorecard/). Whereas Criticality Score
108 | measures influence and importance, Scorecard measures security
109 | best practices. A lower Scorecard score suggests a project at higher risk of
110 | security compromise. Konstanin's algorithm is a function of Scorecard score,
111 | number of sponsors (another proxy for risk), and number of downloads (a proxy
112 | for value, a rough substitute for Criticality Score). Also like Serkan,
113 | Konstantin's experiment contributes to the development of
114 | a long-term vision: an [Open Source
115 | endowment](https://kvinogradov.com/oss-universities/).
116 |
117 | #### Company Experiments With Algorithmic Distribution
118 |
119 | Serkan and Konstantin are to be commended for their individual initiatives. As
120 | both of their larger visions suggest, corporations are the primary
121 | beneficiaries of Open Source and must ultimately fund it, whether directly or
122 | through government. Let's look at two approaches to algorithmic funding from
123 | **companies**.
124 |
125 | Earlier this year, Microsoft conducted [a one-off
126 | iteration](https://opensource.microsoft.com/blog/2024/06/27/5-things-we-learned-from-sponsoring-a-sampling-of-our-open-source-dependencies/)
127 | of their long-standing [FOSS Fund](https://aka.ms/microsoftfossfund) program
128 | [using an algorithmic
129 | approach](https://github.com/microsoft/OSPO/blob/main/bulk-targeted-sponsorship/README.md)
130 | instead of their usual employee voting process. Employee input was still part
131 | of the equation, but they also looked at number and scale of projects,
132 | individual or organization entity, and requests for support in the sponsors’
133 | profile. They used data from Ecosyste.ms and supposedly also CHAOSS but I don't
134 | see that.
135 |
136 | Sentry - "[We Just Gave](https://blog.sentry.io/we-just-gave-750-000-dollars-to-open-source-maintainers/)" - only looking at deps and employee input, no external metrics.
137 |
138 | #### Platform Products for Algorithmic Distribution
139 |
140 | These are great but we need basically every company to participate, and ain't nobody got time for that. Therefore we need **platforms**.
141 |
142 | [thanks.dev](https://thanks.dev/home)
143 |
144 | [ecosyste.ms funds](https://funds.ecosyste.ms/)
145 |
146 | Also [StackAid](https://www.stackaid.us/). RIP StackAid. ✌️
147 |
148 | #### Summary of Algorithmic Approaches
149 |
150 | Here are some design tradeoffs and questions I notice with these approaches:
151 |
152 | 1. Do we incorporate usage data specific to donors (thanks.dev, Microsoft), or
153 | donate based on general data not tied to specific funding sources
154 | (ecosyste.ms, Konstantin)?
155 |
156 | 1. How do we best [balance transparency and resistance to
157 | gamification](https://news.ycombinator.com/item?id=42350238)?
158 |
159 | 1. Can we at least get [post-distribution transparency per
160 | sponsor](https://bsky.app/profile/chadwhitacre.com/post/2lckusuwvas2p) even
161 | if the algorithm is semi-secret?
162 |
163 | #### But What About DAOs?
164 |
165 | A little voice in my head tells me I should also mention [decentralized autonomous
166 | organizations](https://www.investopedia.com/tech/what-dao/)
167 | (DAOs), but to be honest they make little sense to me and feel like an esoteric
168 | waste of time. I don't know of any Open Source-focused ones. I supposed they can
169 | be a scaled-up version of what we find in typescript-eslint, which has [a
170 | point-based system for recognizing
171 | contributions](https://typescript-eslint.io/maintenance/contributor-tiers/). Unlike [Drupal's credit system](https://dri.es/balancing-makers-and-takers-to-scale-and-sustain-open-source), points in typescript-eslint [directly drive compensation](https://typescript-eslint.io/maintenance/contributor-tiers#reimbursement). Crucially, though, they note:
172 |
173 | > We treat everything here as approximate numbers. We're a small enough team to
174 | > informally discuss changes ad hoc and allow off-by-one-or-two months.
175 |
176 | In other words, they operate at a human scale.
177 |
178 | ### People
179 |
180 | Frankly, I find algorithms insufficient. There are too many factors in the
181 | computation of fairness across all individuals involved in the production of
182 | Open Source:
183 |
184 | 1. need
185 | 1. ambition
186 | 1. seniority
187 | 1. stage of life
188 | 1. productivity
189 | 1. cost of living
190 | 1. cultural expectations
191 |
192 | On the one hand, algorithms can offer a level playing field, impartial rules
193 | for all. On the other hand, algorithms are developed by people. They are an
194 | abstraction over decisions by individuals, but without recourse for individuals
195 | unjustly affected to appeal. Let's develop systems that augment rather than
196 | replace human judgement and relationships.
197 |
198 | Models for human decision-making include tried-and-true negotiation of
199 | employment or contractor relationships, as well as grant programs with an
200 | application process.
201 |
202 | - The [Sovereign Tech Agency](https://www.sovereign.tech/) distributes tens of
203 | millions of euros a year for critical digital infrastructure based on direct
204 | decision-making.
205 | - Django has [an active Fellows
206 | program](https://www.djangoproject.com/fundraising/#fellowship-program), as
207 | does [Django CMS](https://www.django-cms.org/en/fellowship-program/).
208 | - Foundations such as
209 | [Python](https://pyfound.blogspot.com/2023/06/announcing-our-new-security-developer.html)
210 | and
211 | [Ruby](https://rubycentral.org/news/ruby-central-welcomes-new-software-engineer-in-residence-sponsored-by-aws/)
212 | have started employing software engineers.
213 | - The PHP Foundation makes this [their raison
214 | d'etre](https://thephp.foundation/foundation/#foundation-activities): "The
215 | primary task of the PHP Foundation is to fund developers to work on PHP."
216 |
217 | Ten years ago I experimented with [a take-what-you-want (twyw)
218 | model](https://gratipay.news/sharing-our-take-what-you-want-story-911dad62ac32)
219 | for distributing funds to individuals within a high-trust Open Source project. In
220 | this scenario, each individual can see what others are taking. Based on that,
221 | they can decide for themselves what is fair for themselves to take. Given
222 | proper management, it can be [a fantastic way to optimize fairness without
223 | ruining intrinsic
224 | motivation](https://opensource.com/open-organization/16/7/compensating-employees-letting-them-take-what-they-want).
225 | Liberapay continues to offer [a "team takes"
226 | implementation](https://en.liberapay.com/about/teams).
227 |
228 | {% include img.html src="twyw.png" caption="Kids ate first in Gratipay's twyw implementation." url="https://opensource.com/open-organization/16/7/compensating-employees-letting-them-take-what-they-want" %}
229 |
230 | ## Attention Is Costly
231 |
232 | Whether we can find algorithms we trust to distribute funds from companies to
233 | individual maintainers, or whether we [continue evolving FOSS
234 | governance](/2024/the-future-of-foss-foundations/) to include directing funding
235 | flows, encapsulation is key to scaling.
236 |
237 | When I buy a cup of coffee, I am not burdened with deciding how much of my five
238 | dollars to distribute to the farmer who grew the beans, and the shipping company
239 | that transported them, and the roaster who roasted them, and the suppliers of
240 | the cup, the paper sleeve, the lid, the milk, and the sugar, and the barista. I
241 | pay for a product. We need the same with Open Source.
242 |
243 | At Sentry [we sponsor upwards of 1,000
244 | projects](https://blog.sentry.io/we-just-gave-750-000-dollars-to-open-source-maintainers).
245 | Classical sponsorship models such as the original [FOSS Contributor
246 | Fund](https://www.oreilly.com/library/view/investing-in-open/9781098111915/)
247 | require way too much attention to each project to work at this scale. This is
248 | also the limitation I see with attempts such as
249 | [Drips](https://www.drips.network/), where "anyone can create a _Drip List_ to
250 | flexibly send funds to a list of up to 200 open-source GitHub repositories and
251 | Ethereum addresses at a time." Who has time for that? Same with issue bounties.
252 | I don't see that scaling, because it depends a lot of attention at a really
253 | fine-grained level.
254 |
255 | I see this mismatched expectation at the project level as well. I hear from
256 | maintainers trying to sell me ad space on their README. Sentry does a handful
257 | of sponsorships for Open Source projects out of our digital marketing budget,
258 | where we're closely tracking ROI of paid logo placement based on click-through
259 | and conversion rates. Our [main funding
260 | program](https://blog.sentry.io/we-just-gave-750-000-dollars-to-open-source-maintainers/)
261 | (which is the pattern for the [Open Source
262 | Pledge](https://opensourcepledge.com/)) operates at a much higher level of
263 | abstractionl. Maybe someone will build DoubleClick for Open Source to scale
264 | this up. Until then I don't have time to pay individual attention to thousands
265 | of placements.
266 |
--------------------------------------------------------------------------------
/2024/distributing-funds-in-open-source/konstantin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/distributing-funds-in-open-source/konstantin.png
--------------------------------------------------------------------------------
/2024/distributing-funds-in-open-source/pachinko.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/distributing-funds-in-open-source/pachinko.jpg
--------------------------------------------------------------------------------
/2024/distributing-funds-in-open-source/serkan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/distributing-funds-in-open-source/serkan.png
--------------------------------------------------------------------------------
/2024/distributing-funds-in-open-source/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/distributing-funds-in-open-source/social.webp
--------------------------------------------------------------------------------
/2024/distributing-funds-in-open-source/twyw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/distributing-funds-in-open-source/twyw.png
--------------------------------------------------------------------------------
/2024/fair-source-does-not-equal-software-commons/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/fair-source-does-not-equal-software-commons/social.webp
--------------------------------------------------------------------------------
/2024/funding-the-five-thousand/a-few-thousand-people.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/funding-the-five-thousand/a-few-thousand-people.webp
--------------------------------------------------------------------------------
/2024/funding-the-five-thousand/fair-pay-no-hoops.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/funding-the-five-thousand/fair-pay-no-hoops.webp
--------------------------------------------------------------------------------
/2024/funding-the-five-thousand/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/funding-the-five-thousand/social.webp
--------------------------------------------------------------------------------
/2024/leadership-and-power-in-open-source/old-call.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/leadership-and-power-in-open-source/old-call.webp
--------------------------------------------------------------------------------
/2024/leadership-and-power-in-open-source/open-call.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/leadership-and-power-in-open-source/open-call.webp
--------------------------------------------------------------------------------
/2024/leadership-and-power-in-open-source/openpress.com.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/leadership-and-power-in-open-source/openpress.com.webp
--------------------------------------------------------------------------------
/2024/leadership-and-power-in-open-source/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/leadership-and-power-in-open-source/social.webp
--------------------------------------------------------------------------------
/2024/open-source-is-a-restaurant/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/open-source-is-a-restaurant/social.webp
--------------------------------------------------------------------------------
/2024/questioning-the-value-of-open-source-software/figure-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/questioning-the-value-of-open-source-software/figure-1.webp
--------------------------------------------------------------------------------
/2024/questioning-the-value-of-open-source-software/languages.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/questioning-the-value-of-open-source-software/languages.webp
--------------------------------------------------------------------------------
/2024/questioning-the-value-of-open-source-software/paper.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/questioning-the-value-of-open-source-software/paper.webp
--------------------------------------------------------------------------------
/2024/questioning-the-value-of-open-source-software/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/questioning-the-value-of-open-source-software/social.webp
--------------------------------------------------------------------------------
/2024/relicensing-and-rug-pulls/Percentage_of_Commits_by_Era_and_Relation.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/relicensing-and-rug-pulls/Percentage_of_Commits_by_Era_and_Relation.webp
--------------------------------------------------------------------------------
/2024/relicensing-and-rug-pulls/betatesters.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/relicensing-and-rug-pulls/betatesters.webp
--------------------------------------------------------------------------------
/2024/relicensing-and-rug-pulls/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/relicensing-and-rug-pulls/social.webp
--------------------------------------------------------------------------------
/2024/thank-you-ben/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/thank-you-ben/social.webp
--------------------------------------------------------------------------------
/2024/the-case-for-a-new-institution/burnout.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-case-for-a-new-institution/burnout.webp
--------------------------------------------------------------------------------
/2024/the-future-of-foss-foundations/level-3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-future-of-foss-foundations/level-3.gif
--------------------------------------------------------------------------------
/2024/the-future-of-foss-foundations/osss.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-future-of-foss-foundations/osss.webp
--------------------------------------------------------------------------------
/2024/the-future-of-foss-foundations/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-future-of-foss-foundations/social.webp
--------------------------------------------------------------------------------
/2024/the-historical-case-for-fair-source/code_rush.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-historical-case-for-fair-source/code_rush.webp
--------------------------------------------------------------------------------
/2024/the-historical-case-for-fair-source/navigator.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-historical-case-for-fair-source/navigator.webp
--------------------------------------------------------------------------------
/2024/the-historical-case-for-fair-source/not-bad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-historical-case-for-fair-source/not-bad.jpg
--------------------------------------------------------------------------------
/2024/the-historical-case-for-fair-source/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-historical-case-for-fair-source/social.webp
--------------------------------------------------------------------------------
/2024/the-historical-case-for-fair-source/twiki.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-historical-case-for-fair-source/twiki.webp
--------------------------------------------------------------------------------
/2024/the-historical-case-for-fair-source/underlying-points-of-view.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-historical-case-for-fair-source/underlying-points-of-view.webp
--------------------------------------------------------------------------------
/2024/the-open-source-sustainability-crisis/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/the-open-source-sustainability-crisis/social.webp
--------------------------------------------------------------------------------
/2024/towards-software-commons/corporate-welfare-program.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/towards-software-commons/corporate-welfare-program.webp
--------------------------------------------------------------------------------
/2024/towards-software-commons/please-trespass.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/towards-software-commons/please-trespass.webp
--------------------------------------------------------------------------------
/2024/towards-software-commons/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/towards-software-commons/social.webp
--------------------------------------------------------------------------------
/2024/welcome-to-open-path/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/welcome-to-open-path/social.webp
--------------------------------------------------------------------------------
/2024/widespread-use-of-a-fair-source-product/Percentage_of_Commits_by_Era_and_Relation.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/widespread-use-of-a-fair-source-product/Percentage_of_Commits_by_Era_and_Relation.webp
--------------------------------------------------------------------------------
/2024/widespread-use-of-a-fair-source-product/atlassian.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/widespread-use-of-a-fair-source-product/atlassian.webp
--------------------------------------------------------------------------------
/2024/widespread-use-of-a-fair-source-product/dashboard.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/widespread-use-of-a-fair-source-product/dashboard.webp
--------------------------------------------------------------------------------
/2024/widespread-use-of-a-fair-source-product/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2024/widespread-use-of-a-fair-source-product/social.webp
--------------------------------------------------------------------------------
/2025/how-to-vote-in-the-2025-osi-election/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2025/how-to-vote-in-the-2025-osi-election/social.webp
--------------------------------------------------------------------------------
/2025/luke-missed-the-memo/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2025/luke-missed-the-memo/social.webp
--------------------------------------------------------------------------------
/2025/open-source-is-a-bad-gift-economy/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Open Source Is a Bad Gift Economy
3 | excerpt: Foo.
4 | noindex: true
5 | ---
6 | {% include img.html src="social.webp" caption="" url="" %}
7 |
8 | Let's take it that an economy is a system by which humans exchange goods and
9 | services. Several such systems are commonly observed, such as armed robbery,
10 | central planning, free trade. Rules for these systems sometimes end up in
11 | as laws and contracts, sometimes in unwritten social expectations.
12 |
13 | The system most of us are most accustomed to is the global market economy: we
14 | give money and get stuff, both parties walk away clean.
15 |
16 | A gift economy is a system of exchange in which gifts carry obligations. The
17 | exchange is agonistic. You are never clean, you're always entangled.
18 |
19 | Open Source is a gift. Does it carry obligations? Is it agonistic?
20 |
21 | Some think it does, some think it doesn't. For those who think it does, the
22 | obligation to reciprocate is ill-defined. Mismatched expectations suck, and
23 | we've got a huge case of just that.
24 |
25 | Who are the parties?
26 |
27 | Producers and consumers. Maybe individuals, but more likely groups: projects
28 | and companies.
29 |
30 | There are three ways to reciprocate: time, product, and money. All are part of
31 | a healthy diet. There's not one exact right answer, but we could stand to be
32 | clearer on the *range* of behaviors that is appropriate for people
33 |
34 | Open Source Pledge is a social contract, right now it's about money and that's
35 | what we're focused on. Some day it could also address product and time. Drupal
36 | and WordPress have systems for time accounting, as does typescript-eslint on a
37 | smaller scale. Companies that offer in-kind can probably give us the fair
38 | market value pretty easily.
39 |
40 | These are all invitations. We're in the realm of social, not legal. We have a
41 | system that makes sharing easy and sustainability hard, vs. the market where
42 | sustainability is easy and sharing is hard. It's good to have both, to
43 | rebalance ever so slightly.
44 |
45 | Open Source is a gift economy because it's based not on clean transactions, but
46 | on gifts of time, money, and resources that carry with them an obligation to
47 | reciprocate. It is a bad gift economy because the rules are not sufficiently
48 | shared between parties. We should make them clear in order to make Open Source
49 | function better.
50 |
51 | Preferential treatment in vendor relations and in marketing.
52 |
--------------------------------------------------------------------------------
/2025/open-source-is-a-bad-gift-economy/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2025/open-source-is-a-bad-gift-economy/social.webp
--------------------------------------------------------------------------------
/2025/point-four-of-elons-fork-is-the-scary-one/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2025/point-four-of-elons-fork-is-the-scary-one/social.webp
--------------------------------------------------------------------------------
/2025/the-birth-of-the-american-empire/hail-caesar.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2025/the-birth-of-the-american-empire/hail-caesar.webp
--------------------------------------------------------------------------------
/2025/the-birth-of-the-american-empire/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/2025/the-birth-of-the-american-empire/social.webp
--------------------------------------------------------------------------------
/404.html:
--------------------------------------------------------------------------------
1 | ---
2 | title: 404 Not Found
3 | layout: default
4 | permalink: /404.html
5 | ---
6 |
7 |
47 |
--------------------------------------------------------------------------------
/_posts/2024-01-04-welcome-to-open-path.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Welcome to Open Path
3 | excerpt: Open Path is a new blog by Chad Whitacre about Open Source, tech, and society.
4 | ---
5 |
6 | Greetings! Welcome to [Open Path](/). The purpose of this blog is to contribute
7 | to important conversations about topics that matter to the Open Source
8 | community, the wider tech industry, and society at large. In this intro post
9 | I'll give you a little background on myself, and sketch the big picture for the
10 | direction of this blog.
11 |
12 | ## A Little About Me
13 |
14 | My name is [Chad
15 | Whitacre](https://chadwhitacre.com/), and I've been involved in Open Source
16 | since 2001, soon after Christine Peterson [coined the
17 | term](https://opensource.com/article/18/2/coining-term-open-source-software). I
18 | participated in the Python web development boom in the 2000s that gave rise to
19 | Django and Flask. During this time, I experienced first-hand the tension
20 | between volunteer Open Source work and paid closed source work, so I spent the
21 | 2010s as founder of a crowdfunding startup called Gittip (later Gratipay). Now,
22 | here in the 2020s, I am Head of Open Source at
23 | [Sentry](https://sentry.io/welcome/), an application monitoring company with
24 | deep roots in the Open Source community.
25 |
26 | In the past I've published on the [Gittip](https://blog.gittip.com/) and
27 | [Gratipay](https://gratipay.news) blogs, as well as [on
28 | OpenSource.com](https://opensource.com/users/whit537). In my current role I
29 | publish [on Sentry's blog](https://blog.sentry.io/authors/chad-whitacre/), but
30 | there is more I need to say than makes sense to post there. With Open Path I am
31 | establishing a platform for myself to explore themes in Open Source and beyond.
32 |
33 | ## Why? So I Won't Get Fined
34 |
35 | To be honest, I'm irrationally terrified to start blogging again. A
36 | psychologist evaluated me in 2018 (a routine part of kidney donation). He
37 | diagnosed me with PTSD from all of the online conflict related to the end of
38 | Gittip (Gratipay). 2015–2017 did, in fact, suck.
39 |
40 | In one sense, then, [I'm just here so I won't get
41 | fined](https://www.youtube.com/watch?v=rmABbHSOTqQ). I work for Sentry, and my job
42 | requires me to be a "thought leader," so I need a platform. Others at Sentry
43 | have theirs:
44 |
45 | - [David Cramer](https://cra.mr/)—[technical
46 | co-founder](https://github.com/getsentry/sentry/commit/3c2e87573d3bd16f61cf08fece0638cc47a4fc22), my boss
47 | - [Armin Ronacher](https://lucumr.pocoo.org/)—[employee
48 | 1](https://blog.sentry.io/welcome-armin-ronacher/), principle architect
49 | - [Ben
50 | Vinegar](https://benv.ca/)—[employee
51 | 2](https://blog.sentry.io/welcome-ben-vinegar/), my former boss
52 |
53 | Those are theirs. This is mine.
54 |
55 | Now, I'm a mission-driven guy. I naturally tend to want to relate my work in
56 | the world back to crisp fundamentals. Sentry's mission is **to enable
57 | developers to ship with confidence**, so that guides my work in Open Source at
58 | Sentry.
59 |
60 | Our Open Source Program Office (OSPO) has four programs:
61 |
62 | 1. _Self-hosted._ Our business model is SaaS, but we want all developers to be
63 | able to use Sentry and Codecov. My team is responsible for our self-hosted
64 | offerings, which are suitable out-of-the-box for small-volume and
65 | proof-of-concept deployments, and can serve as blueprints for more robust
66 | setups.
67 |
68 | 1. _Community engagement._ Open Source is the de facto development model for
69 | developers society-wide. Practically speaking, my team maintains GitHub
70 | automations to help us stay on top of inbound issues.
71 |
72 | 1. _Licensing and compliance._ We work closely with Legal to ensure compliance
73 | with the terms of the licenses of the components we use, and to properly
74 | license the software we ourselves produce.
75 |
76 | 1. _Funding._ We give lots of money to Open Source projects. It's fun.
77 |
78 | I see (1) as directly related to our mission. My team "enables developers" by
79 | making Sentry and Codecov available to use in a way they couldn't otherwise. I
80 | see (2) as one degree removed. When developers have trouble using our products,
81 | we want to hear about it, so we can help them out and potentially improve the
82 | products.
83 |
84 | I see (3) and (4) as further removed from Sentry's mission, narrowly
85 | understood. Our licensing and funding activities do not directly help Sentry
86 | and Codecov users ship their own software with confidence. If you squint, you
87 | could be like, "Well, Sentry and Codecov need a strong Open Source supply chain
88 | in order to be stable products." Meh, maybe. I think this only really gets
89 | interesting when we start talking about the state of the Open Source ecosystem
90 | as a whole, beyond just our own products.
91 |
92 | Broadly understood, Sentry's mission includes solving the [Open Source
93 | sustainability crisis](/2024/the-open-source-sustainability-crisis/). We want
94 | to enable developers to ship with confidence, meaning:
95 |
96 | - for developers in general, confidence in the security and overall quality of
97 | their Open Source dependencies; and
98 | - for noncommercial Open Source developers, confidence that we've collectively,
99 | financially got their back.
100 |
101 | Both are way bigger than Sentry, and that's where thought leadership enters my
102 | job description. Hence, this blog.
103 |
104 | ## Really Why? The Lens of Love
105 |
106 | Sentry's mission is to enable developers to ship with confidence, but this is
107 | my platform, not Sentry's. These are my opinions, not those of my employer.
108 | What is my mission? What are the fundamentals I care about?
109 |
110 | I wrote about this when Gratipay was dying its slow death.
111 | [**Love**](https://opensource.com/open-organization/16/9/openness-means-to-what-end)
112 | is the word. That's the lens I come back to, trite and loaded as it may be.
113 | Open Source is not an end in itself. To get from Open Source to Love and back,
114 | we have a lot of ground to cover:
115 |
116 | - will
117 | - trust
118 | - unity
119 | - voices
120 | - service
121 | - conflict
122 | - scarcity
123 | - fairness
124 | - legalism
125 | - activism
126 | - freedom
127 | - diversity
128 | - gratitude
129 | - authority
130 | - hierarchy
131 | - humanity
132 | - producers
133 | - obedience
134 | - resistance
135 | - generosity
136 | - journalism
137 | - economics
138 | - consumers
139 | - community
140 | - submission
141 | - resentment
142 | - productivity
143 | - employment
144 | - corporations
145 | - post-scarcity
146 | - sustainability
147 | - confrontation
148 | - future of work
149 | - platform decay
150 | - open companies
151 | - exit to community
152 | - individual and group
153 | - governing the commons
154 |
155 | Like I say, I naturally tend to want to relate my work in the world back to
156 | fundamentals. If I'm going to blog in my own voice on my own platform, I'm not
157 | sure how I'll be able to avoid going down rabbit holes such as these. 🐰🕳️
158 |
159 | I do think Open Source is one of the most interesting things going right now,
160 | precisely because it does touch on so many fundamental questions about what it
161 | means to be human in the world. I'm terrified at the prospect of engaging these
162 | questions publicly—to press the metaphor, this path seems to be starting out along the
163 | edge of a cliff!
164 |
165 | Hopefully [Open Path](https://openpath.quest/) leads to a good
166 | place. Hopefully I won't get fined.
167 |
168 | Thanks for visiting! 💃
169 |
--------------------------------------------------------------------------------
/_posts/2024-01-19-the-open-source-sustainability-crisis.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Open Source Sustainability Crisis
3 | excerpt: What is Open Source sustainability? Fair pay, no hoops. Why is it in crisis? Burnout.
4 | bluesky: https://bsky.app/profile/chadwhitacre.com/post/3lbvmt5wtgk2q
5 | homepage_rank: 1
6 | ---
7 |
8 | Let's get [the XKCD reference](https://xkcd.com/2347/) out of the way, shall we?
9 |
10 | {% include img.html src="https://imgs.xkcd.com/comics/dependency_2x.png" url="https://xkcd.com/2347/" orientation="portrait" %}
11 |
12 | Okay, now let's talk about the Open Source sustainability crisis. The purpose
13 | of this post is to define terms. What is Open Source sustainability? Why do I
14 | say it is in crisis? My answers are that sustainability is when people are
15 | getting paid _without jumping through hoops_, and we're in a crisis because
16 | people aren't _and they're burning out_.
17 |
18 | ## What is Open Source Sustainability?
19 |
20 | Open Source sustainability is when any smart, motivated person can produce
21 | widely adopted Open Source software and get paid fairly without jumping through
22 | hoops.
23 |
24 | Consider these four examples:
25 |
26 | 1. [**Jordan Harband**](https://twitter.com/ljharb) is a smart, motivated
27 | person who produces [widely adopted Open Source
28 | software](https://github.com/ljharb) and [can't get paid fairly without jumping
29 | through
30 | hoops](https://thenewstack.io/open-source-needs-maintainers-but-how-can-they-get-paid/).
31 |
32 | 1. [**Josh Goldberg**](https://www.joshuakgoldberg.com/) is a smart, motivated
33 | person who produces [widely adopted Open Source
34 | software](https://github.com/JoshuaKGoldberg) and [can't get paid fairly
35 | without jumping through
36 | hoops](https://twitter.com/JoshuaKGoldberg/status/1737229604442517902).
37 |
38 |
My yearly income milestones as an independent open source person: * 2022: minimum wage for NYC (~$35k/year) * 2023: livable wage for NYC (~$60k/year) * 2024 goal: entry level software developer salary (~$100k/year)
39 |
40 | 1. [**Filippo Valsorda**](https://filippo.io/) is a smart, motivated person who
41 | produces [widely adopted Open Source
42 | software](https://github.com/FiloSottile) and can't get paid fairly without
43 | [jumping through hoops](https://words.filippo.io/full-time-maintainer/).
44 |
45 | 1. [**Caleb Porzio**](https://calebporzio.com/) is a smart, motivated person
46 | who produces [widely adopted Open Source
47 | software](https://github.com/calebporzio) and can't get [paid
48 | fairly](https://calebporzio.com/i-just-hit-dollar-100000yr-on-github-sponsors-heres-how-i-did-it)
49 | without [jumping through hoops](https://calebporzio.com/sponsorware).
50 |
51 | Those are four people at the top of the Open Source game, clearly illustrating
52 | that we have not reached Open Source sustainability yet. We've hardly begun.
53 | For, sustainability means the opportunity to produce Open Source software and
54 | get paid fairly without jumping through hoops is widely available to many, many
55 | people.
56 |
57 | How many? There are [30
58 | million](https://www.statista.com/statistics/627312/worldwide-developer-population/)
59 | developers in the world. The largest tech companies each employ on the order of
60 | magnitude of 10,000 to 100,000 of us. The sustainable Open Source community
61 | taken as a whole will be roughly the same size. Open Source is [a sleeping tech
62 | giant](https://gratipay.news/your-company-should-probably-pay-2000-per-person-for-open-source-9205443e209d).
63 |
64 | - 1 person sustained - a glimpse
65 | - 10 people - a glimmer
66 | - 100 - a milestone
67 | - 1,000 - progress
68 | - 10,000 - arrival
69 | - 100,000 - success
70 |
71 | Today we are at zero.
72 |
73 | ## What's Wrong With Hoops?
74 |
75 | Hoops are boring. We've had scarcity-based economic relations for millenia.
76 | Open Source is designed for a different world. It presents the first real
77 | opportunity in our society to begin to develop a post-scarcity economic model
78 | at scale. That likely wants unpacking in [a future
79 | post](https://github.com/chadwhitacre/openpath/issues/15). For now, I assert
80 | that our creative use of [well-trodden
81 | paths](https://twitter.com/eigenjoy/status/862412458517962752) is Open Source
82 | _subsidization_, not _sustainability_.
83 |
84 |
If you're interested in monetizing your open-source project, I made this handy chart for you: pic.twitter.com/2yAjCRt78T
85 |
86 | As I define it, Open Source sustainability means no hoops, no "New Role" in
87 | Nate's chart. Self-determined individuals freely produce Open Source software,
88 | and get paid in proportion to their productivity without having to also become
89 | tech influencers, or sell contracts, or any other shenanigans. Those can who
90 | want to. I envision a world where we don't have to.
91 |
92 | ## What is the Sustainability Crisis?
93 |
94 | High-profile security kerfuffles such as Heartbleed and Log4Shell often come to
95 | mind when we think about Open Source in crisis. But, while they draw attention
96 | to the sustainability crisis, the crisis is not about security. Microsoft pays
97 | [100,000](https://devblogs.microsoft.com/engineering-at-microsoft/welcome-to-the-engineering-at-microsoft-blog/)
98 | developers and still has [plenty of security
99 | issues](https://msrc.microsoft.com/update-guide/vulnerability). Yes, companies
100 | and governments should [care about Open Source security](https://openssf.org/),
101 | and those efforts can contribute to what I'm calling sustainability, but
102 | security is a proxy concern. Let's call that the Open Source security crisis.
103 |
104 | Just as the security crisis is adjacent to the sustainability crisis, so is the
105 | [Open Source
106 | diversity](https://en.wikipedia.org/wiki/Diversity_in_open-source_software)
107 | crisis: Open Source is markedly less demographically diverse than software
108 | engineering in general. We have not just inequality of outcome but inequality of
109 | opportunity.
110 | [35%](https://www.statista.com/statistics/617136/digital-population-worldwide/)
111 | of people don't even have Internet access yet, let alone free time to hack on
112 | Open Source projects. Structural inequalities can be thought of as the largest
113 | of hoops to jump through in order to get paid fairly for producing widely
114 | adopted Open Source software. We should [directly address this wider diversity
115 | crisis](https://www.outreachy.org/), and, we should work on resolving the
116 | sustainability crisis.
117 |
118 | Open Source has created an economic value vacuum. Our society depends
119 | utterly on the common pool resource of Open Source software, and this commons
120 | is severely underprovisioned. How do we know? The real indicator of the Open
121 | Source sustainability crisis as I define it is **maintainer burnout**.
122 |
123 |
Log4j maintainers have been working sleeplessly on mitigation measures; fixes, docs, CVE, replies to inquiries, etc. Yet nothing is stopping people to bash us, for work we aren't paid for, for a feature we all dislike yet needed to keep due to backward compatibility concerns. https://t.co/W2u6AcBUM8
124 |
125 | We have a long-standing pattern of chewing people up and spitting them out, as
126 | youthful idealism and enthusiasm give way to resentment and depression. We see
127 | it most clearly when a high-profile vulnerability shines a spotlight, but it
128 | plays out much more widely in less visible circumstances. For example, here is
129 | how **Marc Grabanski** tells [his
130 | story](https://blog.opencollective.com/frontend-masters/):
131 |
132 | > I created an open source component that literally every website or piece of
133 | > software at the time used, and often still do. Go to the WordPress control
134 | > panel and there's my date picker. But in 15 years, the only money I ever got
135 | > for that was $400 from a guy who needed me to add a specific feature. I think I
136 | > got a handful of change thrown at me through PayPal, like $50 bucks. There was
137 | > no economic sustainability whatsoever.
138 | >
139 | > There was a long time where I was doing open source almost more time than my
140 | > full time job, and getting paid nothing. I just burnt out. I stopped writing
141 | > and contributing to open source. I never built up my GitHub profile when that
142 | > came around. I just gave up, because what's the point when all you get is
143 | > constant issues? You give and give and give, and people just take and take and
144 | > take.
145 | >
146 | > My open source success went from a major blessing to a great curse. It was
147 | > one of the darkest times in my life. Something that started out with such hope
148 | > and light ended up just being about getting thousands of emails.
149 |
150 | There was no viral moment when we collectively realized that we were taking
151 | advantage of Marc. We quietly crushed him without ever noticing. [There are
152 | many such cases](https://blog.tidelift.com/maintainer-burnout-is-real).
153 |
154 |
The thing I'd add to that, is I was able to create a network
158 | that eventually led to Frontend Masters. My story is not all doom and gloom
159 | like it is portrayed in the article. But it def wasn't a given I'd be able to
160 | capitalize on the networking opportunities that OSS gave me."
161 |
162 |
163 | ## The Path Lies Through Platforms
164 |
165 | Funding platforms are critical to achieving Open Source sustainability. Maybe
166 | you want to classify "join a platform" under "jump through hoops." It's not the
167 | same, though.
168 |
169 |
170 |
171 | If you are an open-source maintainer, I would recommend creating an account
172 | on
173 | @thanks_dev. I've received $268 in 2 months, and the only thing I did was create
175 | an account and click on "withdraw". 👍🏻
176 | pic.twitter.com/WHyAA75oRZ
177 |
184 |
185 | Building platforms and recruiting devs to receive free money is easy. The main
186 | options today are [GitHub Sponsors](https://github.com/sponsors), [Open
187 | Collective](https://opencollective.com/), and
188 | [Tidelift](https://tidelift.com/). I'm also rooting for
189 | [Thanks.dev](https://thanks.dev/home) (they are helping me a lot at Sentry) and
190 | [Liberapay](https://liberapay.com/) (they are a fork of Gittip/Gratipay).
191 |
192 | What's hard is opening the corporate floodgates. Companies receive outsized
193 | value from Open Source, and companies control nearly all the funds. How do we
194 | open the floodgates? _tl;dr_ Taxes and social pressure. More on that in [a
195 | future post](https://github.com/chadwhitacre/openpath/issues/14).
196 |
--------------------------------------------------------------------------------
/_posts/2024-01-25-questioning-the-value-of-open-source-software.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Questioning “The Value of Open Source Software”
3 | excerpt: The new HBS working paper seems fundamentally flawed to me, though it has some helpful parts.
4 | update: 'I posted some further thoughts on the Sustain forum, including an email I sent to the authors.'
5 | ---
6 |
7 | Harvard Business School (HBS) recently published a working paper titled, "[The
8 | Value of Open Source
9 | Software](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4693148),"
10 | authored by postdoc [Manuel
11 | Hoffmann](https://www.linkedin.com/in/manuel-hoffmann-b4798773/), assistant
12 | professor [Frank Nagle](https://www.linkedin.com/in/frank-nagle/), and grad
13 | student [Yanuo Zhou](https://www.linkedin.com/in/yanuo-zhou/). The Linux
14 | Foundation sponsored the research, which builds on the [Census
15 | II](https://www.linuxfoundation.org/research/census-ii-of-free-and-open-source-software-application-libraries)
16 | project.
17 |
18 | {% include img.html src="./paper.webp" url="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4693148" orientation="portrait" %}
19 |
20 | Here is [Frank's
21 | tl;dr](https://www.linkedin.com/feed/update/urn:li:activity:7153860222812372993/):
22 |
23 | > If OSS didn't exist, companies would spend 3.5 times more on software than
24 | > they currently do. More precisely, our results show a cost of $4.15 billion
25 | > if society had to replace these packages once (e.g., OSS still exists, but
26 | > all of the most widely used packages were deleted and had to be rewritten),
27 | > but a cost of $8.8 trillion if each company that uses these packages had to
28 | > rewrite every package it uses (e.g., if OSS didn't exist at all).
29 |
30 | Okay, so that's three headline results:
31 |
32 | 1. If OSS didn't exist, companies would spend 3.5 times more on software than
33 | they currently do.
34 |
35 | 2. It would cost $4.15 billion to rebuild all the OSS that currently existed
36 | at the end of 2020 (when the snapshot behind Census II was taken, if I have
37 | it right).
38 |
39 | 3. It would cost $8.8 trillion if each company separately rebuilt all
40 | the OSS it was using at the end of 2020.
41 |
42 | The first result is derived from the third. The working paper estimates that actual
43 | software spending was $3.4 trillion in 2020, and 3.4 + 8.8 = 12.2 trillion,
44 | which is 3.5x the 3.4 actual (page 18). The third result is derived from the
45 | second, multiplying an estimate of the cost to rebuild each piece of OSS
46 | software by an estimate of the number of companies using each piece (p. 13). So
47 | the flow of the argument is, given an end-of-2020 snapshot:
48 |
49 | 1. It would cost $4.15 billion to rebuild all OSS.
50 |
51 | 2. It would cost $8.8 trillion in aggregate for each company to rebuild all of
52 | the OSS they use.
53 |
54 | 3. Companies spent $3.4 trillion for all software they use, besides what they
55 | got for free from OSS.
56 |
57 | 4. Therefore, if OSS didn't exist, companies would have to have spent 3.5 times
58 | more on software than they in fact did.
59 |
60 | Now, I did find some interesting things in this working paper. The first step
61 | in the argument (i.e., the second headline result) seems fine as far as it
62 | goes, as it is based on [COCOMO II](https://en.wikipedia.org/wiki/COCOMO),
63 | which seems pretty well-established (though I'm sure it is messy under the
64 | hood). I learned some basic economics language ([stock and
65 | flow](https://en.wikipedia.org/wiki/Stock_and_flow) variables). I learned about
66 | [GHTorrent](https://gousios.org/bibliography/G13.html) and
67 | [BuiltWith](https://builtwith.com/). The appendix on the goods market analysis
68 | of the value of Open Source seems helpful. The data on the number of
69 | programmers responsible for producing the bulk of OSS (p. 20) is quite
70 | intriguing. I'm going to have to revisit my assumption in [my previous
71 | post](https://openpath.quest/2024/the-open-source-sustainability-crisis/)
72 | that "[t]he sustainable Open Source community taken as a whole will be roughly
73 | the same size" as a big tech company, i.e., 10,000 to 100,000 engineers. It
74 | seems likely to be off by an order of magnitude. I aim to do that in [a future
75 | post](https://github.com/chadwhitacre/openpath/issues/20).
76 |
77 | That said, **I do not accept headline result 1 ("companies would spend 3.5 times
78 | more")**, because I think result 3 ("it would cost $8.8 trillion") is irrelevant.
79 |
80 | ## A Critical Flaw?
81 |
82 | Step 2 in the argument seems critically flawed to me. If so, result 3 is
83 | misleading, and result 1 is false. The options for acquiring software are buy,
84 | borrow, or build. Borrow means OSS. If we take that off the table, companies
85 | still have two options: buy or build. The build option is what the $8.8
86 | trillion estimates. The working paper calls this the "labor market valuation
87 | approach."
88 |
89 | > The thought experiment is that we live in a world where OSS does not exist
90 | > and has to be _recreated at each firm_ that uses a given piece of OSS. (p. 12, emphasis added)
91 |
92 | This is the main methodology in the working paper, and the source of the
93 | "3.5x" headline result.
94 |
95 | But what about the buy option? Surely if OSS ceased to exist, companies would
96 | step in to fill the gap. The authors do explore this option. They call it the
97 | "goods market valuation approach."
98 |
99 | > With the goods market approach, the thought experiment is still that we live
100 | > in a world where OSS does not exist, but it has to be _recreated via one firm_
101 | > that then charges a price for a good that is currently free. (p. 38, emphasis added)
102 |
103 | This seems to me a much more fruitful comparison than the labor market
104 | approach, because it is much closer to what we would expect to actually happen
105 | in an alternate timeline without OSS.
106 |
107 | Compared to the result of the labor market approach, $8.8 trillion, the result
108 | of the goods market approach is **four orders of magnitude lower, at $177
109 | million** (p. 37). If I'm reading it right, using this for step 2 (result 3)
110 | weakens the argument to the point of failure, and result 1 essentially
111 | disappears: 3.4 + 0.000177 = $3.400177 trillion. If so, **companies would spend
112 | 1.00005 times more** on software than they currently do, if OSS didn't exist.
113 |
114 | The working paper includes the goods market approach in an appendix, and does
115 | not report the result in its abstract. I propose either making a better case
116 | for using the labor market approach, or revising the working paper to make the
117 | goods market approach primary (either drop the labor market approach or move it
118 | to an appendix). As it stands, the use of the labor market approach over the
119 | goods market approach as the primary methodology of this research seems to me
120 | to render results 1 and 3 valueless.
121 |
122 | ## Also, What's Up with Golang?
123 |
124 | Something else that jumped out at me in the working paper is the decision to
125 | include Go:
126 |
127 | > Finally, for some analyses we dig deeper and show the top 5 programming
128 | > languages (as classified by GitHub, 2022 for the year 2020; the year our data
129 | > is from). The top 5 programming languages contain C (including C# and C++),
130 | > Java, JavaScript, Python, and Typescript. We also add Go to this list of top
131 | > languages since it is an increasingly widely used language in OSS. (pp.
132 | > 11-12)
133 |
134 | Looking at [the GitHub data
135 | referenced](https://octoverse.github.com/2022/top-programming-languages),
136 | Golang is not even in the top 10.
137 |
138 | {% include img.html src="./languages.webp" url="https://octoverse.github.com/2022/top-programming-languages" %}
139 |
140 | Why was Go included when other languages weren't? The reason given, "it is an
141 | increasingly widely used language in OSS," is not satisfying. There are other
142 | questions to consider, such as why C# and C++ are folded into C, but Typescript
143 | is not folded into JavaScript. The Go discrepancy jumps out in particular
144 | because including it has a dramatically outsized impact in the demand-side
145 | analysis.
146 |
147 | {% include img.html src="./figure-1.webp" %}
148 |
149 | I don't find in the working paper that there is a direct connection between the
150 | headline results and the choice of languages to include for the deeper analyses
151 | as in Figure 1. Neither do I find any links to open data behind the working
152 | paper so I can investigate for myself.
153 |
154 | ## Conclusion
155 |
156 | Years ago, I likewise attempted to estimate the [value of Open Source
157 | software](https://gratipay.news/open-source-captures-almost-none-of-the-value-it-creates-9015eb7e293e),
158 | which I've since used to
159 | [inform](https://gratipay.news/your-company-should-probably-pay-2000-per-person-for-open-source-9205443e209d)
160 | my
161 | [attempts](https://blog.sentry.io/we-just-gave-500-000-dollars-to-open-source-maintainers/)
162 | to [tackle](https://fossfunders.com/) the [Open Source sustainability
163 | crisis](https://openpath.quest/2024/the-open-source-sustainability-crisis/).
164 | Estimates like this are always a messy business, involving lots of assumptions
165 | and hand-waving. Still, they are vital to understanding the nature and scope of
166 | the crisis. We need good work in this area.
167 |
168 | I do not accept the primary result of the "[Value of Open Source
169 | Software](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4693148)" working
170 | paper, that companies would spend 3.5 times more on software if OSS didn't
171 | exist. Based on my reading, companies would spend almost nothing more if OSS
172 | didn't exist. This challenges my own estimates as well. I look forward to
173 | wrestling with the implications in [a future
174 | post](https://github.com/chadwhitacre/openpath/issues/20).
175 |
--------------------------------------------------------------------------------
/_posts/2024-02-05-funding-the-five-thousand.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Funding the Five Thousand
3 | excerpt: We can solve the OSS sustainability crisis for less than $1 billion, priced to cost.
4 | bluesky: https://bsky.app/profile/chadwhitacre.com/post/3kkrmc2e6k32v
5 | ---
6 |
7 | A number of years ago, I did some napkin math on [the value created by Open
8 | Source](https://gratipay.news/open-source-captures-almost-none-of-the-value-it-creates-9015eb7e293e),
9 | in order to come up with a "[fair
10 | share](https://gratipay.news/your-company-should-probably-pay-2000-per-person-for-open-source-9205443e209d)"
11 | amount that companies should be paying projects. Last month, researchers from Harvard
12 | Business School (HBS) published [a working paper with a similar
13 | scope](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4693148). I have
14 | [serious questions about their
15 | work](/2024/questioning-the-value-of-open-source-software/),
16 | but, to be honest, my attempt was also really hand-wavy.
17 |
18 | Some of the details of the HBS paper got me thinking, though. They claim,
19 | credibly enough, that there are only a few thousand developers that produce all
20 | of Open Source (p. 20, highlight mine; forgive me for rounding up to 5,000 for
21 | the purpose of a catchy title 😌):
22 |
23 | > Figure 3 shows the Lorenz curves and the number of repositories that a
24 | > fraction of programmers has contributed to for the supply side (Panel A) and
25 | > the demand side (Panel B). A Lorenz curve that lay directly on the 45 degree
26 | > line would imply a very even distribution of values across programmers.
27 | > Instead, Panel A shows a Lorenz curve as a nearly flat line with a drastic
28 | > increase for the final share of programmers. This implies that the
29 | > distribution of the supply value is highly uneven and considerably more
30 | > concentrated than the 80/20 standard. Indeed, the last five percent of
31 | > programmers, or **3,000 programmers, generate over 93% of the supply side
32 | > value**. Similarly, Panel B shows – when accounting for usage – that those
33 | > last five percent generate over 96% of the demand side value. In aggregate,
34 | > this indicates that a very small number of programmers are creating the bulk
35 | > of OSS code that is heavily relied upon by firms to create their own code. In
36 | > both Panel A and Panel B we can also see a rise in the number of repositories
37 | > for the last 10-15% of programmers that contribute to the highest value,
38 | > which implies that the uneven value that is generated by few programmers is
39 | > not just due to a few highly valuable repositories but by the contributions
40 | > of this handful of contributors to a substantial number of repositories.
41 |
42 | This might feel low, even shockingly low, but hear me out.
43 |
44 | Who are the direct consumers of Open Source software? Largely it is other devs,
45 | of whom there are about [28.7
46 | million](https://www.statista.com/statistics/627312/worldwide-developer-population/)
47 | in the world. Therefore, the ratio of consumers to producers of OSS is approximately
48 | 5,740 to 1. Now, buried in Meta's [most recent
49 | 10-Q](https://d18rn0p25nwr6d.cloudfront.net/CIK-0001326801/00c8dc47-8ba5-46e0-ba88-ed2e959dfd6e.pdf),
50 | I find that they have 71,469 employees (p. 33) serving 3.03 billion monthly
51 | active users (p. 34), which is about 42,400 consumers per producer. This makes
52 | the ratio for OSS seem not unreasonable.
53 |
54 | {% include img.html src="./a-few-thousand-people.webp" url="https://twitter.com/FeyNudibranch/status/1754142226270048572" caption="Based on a slide from Kara Sowles Deloss' talk at FOSDEM." %}
55 |
56 | If there are only a few thousand maintainers, then solving the sustainability
57 | crisis should be quite a tractable problem to approach from the bottom up (who
58 | are they and what do they need?) rather than the top down (how much do we
59 | estimate Open Source is worth?).
60 |
61 | In other words, let's see if we can **price to cost** instead of to value. In
62 | general, that leaves value on the table, but we're not trying to maximize
63 | profit for Open Source as if it were a business. We're trying to make it
64 | [sustainable](/2024/the-open-source-sustainability-crisis/#what-is-open-source-sustainability):
65 |
66 | > Open Source sustainability is when any smart, motivated person can produce
67 | > widely adopted Open Source software and get paid fairly without jumping
68 | > through hoops.
69 |
70 | At a rough sketch, 5,000 devs times a global average salary for a full-stack
71 | developer of
72 | [US$71,100](https://www.statista.com/statistics/793602/worldwide-developer-survey-average-salaries/)
73 | comes out to $355 million per year. We should do some [more work to pin down
74 | the numbers](https://github.com/chadwhitacre/openpath/issues/20), as there may
75 | be more than 5,000 maintainers, and most likely live in higher-cost locales.
76 | For this post let's say it seems likely we can fund all Open Source maintainers
77 | for **under $1 billion**. That's way less than the trillions that HBS and my
78 | old napkin math would have us anchor on.
79 |
80 | ## Narrowing Our Focus
81 |
82 | Let's focus on developing a system for fairly paying _the actual maintainers we
83 | have today_ without making them jump through hoops. If we develop the system
84 | right, then additional individuals will be able to join in on their own terms
85 | in the future, and we will have achieved sustainability as I've defined it.
86 | Accomplishing this will accelerate adjacent efforts such as improving security
87 | and diversity.
88 |
89 | We already have hundreds of millions of dollars flowing into Open Source. The
90 | Linux Foundation alone had projected revenue for 2022 of $243.57M (that's in
91 | their [most recent annual
92 | report](https://project.linuxfoundation.org/hubfs/LF%20Research/2022%20Linux%20Foundation%20Annual%20Report.pdf?hsLang=en),
93 | in a footnote on page 138). However, they are somewhat infamous for [not paying
94 | actual
95 | developers](https://lunduke.substack.com/p/linux-foundation-spends-just-34-of).
96 | Sourcing the funds is a challenge but seems achievable. The other challenge is
97 | directing it to the right people, with transparency and accountability.
98 |
99 | {% include img.html src="./fair-pay-no-hoops.webp" url="https://twitter.com/FeyNudibranch/status/1754142226270048572" caption="Based on a slide from Kara Sowles Deloss' talk at FOSDEM." %}
100 |
101 | The main source of funds will continue to be companies, with governments and
102 | philanthropies as secondary sources. Whether via foundations or funding
103 | platforms, the main target of funding from a company's point of view should be
104 | projects rather than people. That's what companies depend on and care about.
105 | If a maintainer moves on from a project then the funds should be available to
106 | [incentivize someone else to step up and take over
107 | maintenance](https://www.youtube.com/watch?v=e5FV-AnKPlo).
108 |
109 | The problem of getting funds from projects to people is a problem of
110 | governance. This is quite important but should largely be hidden from
111 | companies.
112 |
113 | ## Next Steps
114 |
115 | Here's a GitHub issue for [pinning down the fair share
116 | amount](https://github.com/chadwhitacre/openpath/issues/20) in a robust and
117 | repeatable way. [Andrew Nesbitt](https://nesbitt.io/) from
118 | [Ecosyste.ms](https://ecosyste.ms/) is [in
119 | there](https://github.com/chadwhitacre/openpath/issues/20#issuecomment-1919926941)
120 | so you know it's [going to be
121 | good](https://github.com/chadwhitacre/openpath/issues/20#issuecomment-1921286147).
122 | 😁
123 |
124 | Here's a GitHub issue for [talking about
125 | governance](https://github.com/chadwhitacre/openpath/issues/14) and whether we
126 | need a new institution or what.
127 |
128 | Jump in! 🙂
129 |
--------------------------------------------------------------------------------
/_posts/2024-02-22-towards-software-commons.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Towards Software Commons
3 | excerpt: The world is ready for something beyond Open Source. Is it Software Commons?
4 | ---
5 |
6 | A number of us have been [working for the past six
7 | months](https://github.com/getsentry/fsl.software/issues/2) to find a term,
8 | adjacent to but distinct from Free and Open Source Software (FOSS), to [elevate
9 | developer sustainability to a value on par with user
10 | freedom](https://blog.sentry.io/sentrys-open-source-values/). This is
11 | in response to Chef co-founder [Adam Jacob's proposal](https://twitter.com/adamhjk/status/1687113805237714944):
12 |
13 |
I think the way forward here is to make what I suspect is a loose confederation of folks using non-compete licenses to actually get together and draft their own set of values. To then brand that. And stand behind it proudly.
14 |
15 | FOSS ensures user freedom, which is wonderful. Developer sustainability is also
16 | wonderful, and we've reached a point in the evolution of the tech industry and
17 | our society where it is time to converge on how we're going to balance these
18 | two values.
19 |
20 | ## A Widely Recognized Need
21 |
22 | A number of prominent voices are recognizing the need to resolve this tension
23 | between the limitations inherent in Open Source and the challenge of developer
24 | sustainability, [starting with](https://opensource.org/blog/a-historic-view-of-the-practice-to-delay-releasing-open-source-software-osis-report) the **Open Source Initiative** (OSI) itself:
25 |
26 | > Since the early days of the Open Source movement, companies have experimented
27 | > with finding a balance between granting their users the basic freedoms
28 | > guaranteed by Open Source licenses while also capitalizing on their investments
29 | > in software development.
30 |
31 | Yes, some CEOs are perhaps best described as bad actors conniving malicious
32 | rug pulls. Others are acting in good faith, genuinely intent on sharing their
33 | source code as permissively as possible without exposing their companies to the
34 | existential risk of harmful free-riding. Some even [voluntarily share their
35 | financial success](https://fossfunders.com/) with the non-commercial
36 | maintainers in the ecosystem.
37 |
38 | Regarding different models of sustainability, **Jacob Kaplan-Moss**, co-founder
39 | of Django, recently let loose [a full-throated
40 | rant](https://jacobian.org/2024/feb/16/paying-maintainers-is-good/):
41 |
42 | > My fundamental position is that paying people to work on open source is good,
43 | > full stop, no exceptions. We need to stop criticizing maintainers getting
44 | > paid, and start celebrating.
45 |
46 | Jacob and I are working with similar definitions of sustainability (and similar
47 | background colors lol). He
48 | [writes](https://jacobian.org/2024/feb/16/paying-maintainers-is-good/#sustainability):
49 |
50 | > When I talk about “sustainability”, though, I mean something very specific:
51 | > “can maintainers live a decent-to-comfortable lifestyle writing free
52 | > software?”
53 |
54 | I recently [wrote](https://openpath.quest/2024/the-open-source-sustainability-crisis/#what-is-open-source-sustainability):
55 |
56 | > Open Source sustainability is when any smart, motivated person can produce
57 | > widely adopted Open Source software and get paid fairly without jumping
58 | > through hoops.
59 |
60 | The main difference is in the qualifier, "without jumping through hoops." My
61 | definition is narrower, and much of what Jacob wants to celebrate as "Open
62 | Source sustainability," I would celebrate as "Open Source subsidization." We've
63 | known how to _subsidize_ FOSS since the beginning. The new and interesting
64 | thing will be when we _sustain_ it: fair pay, without hoops. Jacob himself
65 | dreams "that society and governments will recognize free software as the public
66 | good that it most certainly is and fund it appropriately." He doubts "it’ll
67 | happen in our lifetimes if at all." I am optimistic! :-)
68 |
69 | A second difference is that, whereas at Sentry we've [stepped
70 | back](https://blog.sentry.io/lets-talk-about-open-source/), Jacob [takes a strong
71 | stance](https://jacobian.org/2024/feb/16/paying-maintainers-is-good/#open-source--free-software)
72 | on broadening the term "open source":
73 |
74 | > Note the deliberate use of lower case. I’m _not_ referring to Open Source™ as
75 | > defined by OSI, nor to Free Software™ as defined by the FSF. I mean these
76 | > terms in the broadest, most inclusive sense: “software with source code that
77 | > I can read and modify and release variants of, perhaps under some
78 | > conditions.” So I’m including OSI and FSF licenses, but also the [Polyform
79 | > licenses](https://polyformproject.org/licenses/)
80 | > and the [JSON license](https://www.json.org/license.html) and, yes
81 | > [BSL](https://mariadb.com/bsl-faq-mariadb/) in my version of “open source”.
82 |
83 | The [Codecov
84 | kerfuffle](https://news.ycombinator.com/item?id=36971490) taught us
85 | to [look for another
86 | term](https://blog.sentry.io/lets-talk-about-open-source/). As part of
87 | developing [FSL](https://fsl.software/) (our BSL upgrade), we [worked with the
88 | community](https://github.com/getsentry/fsl.software/issues/10) specifically to
89 | make sure we do not confuse people about the OSI definition of Open Source. On
90 | a recent call, [Stef](https://www.linkedin.com/in/maffulli/) and
91 | [Nick](https://www.linkedin.com/in/nickvidal/) made the point that with more
92 | and more legislation written with reference to Open Source, the Open Source
93 | Definition is becoming less and less changeable. Building further abstractions
94 | solidifies lower levels.
95 |
96 | ### Post-Open
97 |
98 | The very author of the Open Source Definition, **Bruce Perens**, is now
99 | also looking for what comes next. At a recent State of Open keynote, he snarked, "[We
100 | have a great corporate welfare
101 | program](https://www.youtube.com/watch?v=suUfS0-p5Yg#t=1m54s)," and talked
102 | about the limitations of the support model for sustaining Open Source.
103 |
104 | {% include img.html src="./corporate-welfare-program.webp"
105 | url="https://www.youtube.com/watch?v=suUfS0-p5Yg#t=1m54s" caption="A slide from Bruce's talk." %}
106 |
107 | Bruce goes so far as to say that we need to "[consider a radical departure](https://www.theregister.com/2023/12/27/bruce_perens_post_open/)":
108 |
109 | > Open Source will continue to exist and provide the same rules and paradigm,
110 | > and the thing that comes after Open Source should be called something else
111 | > and should never try to pass itself off as Open Source. So far, I call it
112 | > Post-Open.
113 |
114 | The [second pillar](https://www.youtube.com/watch?v=suUfS0-p5Yg#t=3m14s) of
115 | Bruce's vision for Post-Open is an expansion beyond low-level systems software
116 | to end-user applications. He wants to "reach the ordinary person" and to "make
117 | software for common people." Yes, please! I've talked about this in the past in
118 | terms of "[open products](https://gratipay.news/open-products-25824a325fea)":
119 |
120 | > I define an _open product_ as "a technology product that happens to be
121 | > open-source." [...] The open products I’m most interested in, however, are
122 | > top-level, consumer-facing web and mobile products that stand on their own _as
123 | > consumer products_ first, and—almost as an afterthought—happen to be almost
124 | > fully open-source to boot.
125 |
126 | {% include img.html src="./please-trespass.webp"
127 | url="https://gratipay.news/open-products-25824a325fea" caption="I wrote
128 | “Open Products” way back in 2013." %}
129 |
130 | I'm excited to find Bruce talking about this. It seems to be a case of
131 | independent discovery: Bruce's work on Post-Open, and the response to Adam's
132 | call to action, to develop a new brand around a new articulation of values.
133 | This is a sign of an idea whose time has come.
134 |
135 | ## Introducing Software Commons
136 |
137 | Last week, I hit upon "Software Commons" as a candidate term for this new
138 | movement. The [Wikipedia
139 | definition](https://en.wikipedia.org/w/index.php?title=Information_commons&oldid=1186082015#Software_commons)
140 | resonates, because it indicates a superset of FOSS:
141 |
142 | > The _software commons_ consists of all computer software which is available
143 | > at little or no cost and which can be reused with few restrictions. It
144 | > includes open source software which can be modified with few restrictions.
145 | > However the commons also includes software outside of these categories[.]
146 |
147 | Amazingly, the [domain](https://softwarecommons.com/) was available. I bought
148 | it forthwith. It seems like [a strong
149 | candidate](https://github.com/getsentry/fsl.software/issues/2#issuecomment-1939868845),
150 | and it is [gaining
151 | momentum](https://github.com/getsentry/fsl.software/issues/2#issuecomment-1941048758)
152 | both with those who, like Jacob, would be just as content to broaden "open
153 | source", as well as some [who would
154 | not](https://github.com/getsentry/fsl.software/issues/2#issuecomment-1939177937).
155 | The parallel with Creative Commons is particularly [suggestive](https://github.com/getsentry/fsl.software/issues/2#issuecomment-1939177937):
156 |
157 | > [Creative Commons] is very popular, and you have licenses like [CC
158 | > BY-NC](https://creativecommons.org/licenses/by-nc/4.0/) there so I feel the
159 | > license categories listed fit perfectly well within what you've defined.
160 |
161 | There is much work to do to hammer out the specifics of the software sharing
162 | models that should qualify for inclusion in Software Commons, but this feels to
163 | me like **the right place to locate the conversation**, because the two failure
164 | modes of a commons are the [tragedy of the
165 | commons](https://en.wikipedia.org/wiki/Tragedy_of_the_commons) and
166 | [enclosure](https://en.wikipedia.org/wiki/Enclosure). In the former, a majority
167 | of people overuses the common resource to the point of destruction, due to _too
168 | few restrictions_. In the latter, a minority of people gains control and
169 | excludes the majority, imposing _too many restrictions_. That is, the tension
170 | inherent in commons management seems to be exactly the tension we find in the
171 | software ecosystem today: [between user freedom and developer
172 | sustainability](https://blog.sentry.io/sentrys-open-source-values/).
173 |
174 | If you think [Software Commons](https://softwarecommons.com/) might have legs,
175 | and you want to help find a balance of user freedom and developer
176 | sustainability that honors Open Source while evolving beyond its limitations,
177 | you can [dive in on
178 | GitHub](https://github.com/getsentry/fsl.software/issues/2). 🙏
179 |
--------------------------------------------------------------------------------
/_posts/2024-03-05-the-case-for-a-new-institution.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Case for an Institution
3 | excerpt: Software Commons is a great name. But for what? It should be an institution.
4 | ---
5 |
6 | Over [on GitHub][0] we've (mostly) converged on "[Software Commons][19]" as our
7 | answer to [Adam Jacob's call][1] to find a brand name other than "Open Source"
8 | to represent the values behind such efforts as [FSL][2]. What we're less clear
9 | on is what exactly it is we are naming. [What are our goals][13]?
10 |
11 | There's a "thin" version in which our goal is to produce an educational
12 | website, and a "thick" version in which we are founding (or joining with?) an
13 | institution. The thick version would obviously be a much more serious
14 | commitment, so it needs justifying. That's what I aim to do in this post.
15 |
16 | - I start by discussing what it means to think about [software as a
17 | commons](#software-as-a-commons); then
18 | - I talk about the [ways a software commons can
19 | fail](#enclosure-and-tragedy-in-software); then
20 | - I present a case for why [an
21 | institution is necessary](#software-commons-an-institution) to protect
22 | against these risks.
23 | - I conclude with [a brief sketch](#sketching-an-institution) of what this
24 | institution might look like.
25 |
26 | ## Software as a Commons
27 |
28 | Economists [classify goods][4] based on excludability (is it widely accessible
29 | or no?) and rivalry (is it lost in consumption or no?):
30 |
31 | - public goods—non-excludable, non-rivalrous
32 | - common-pool resources—non-excludable, rivalrous
33 | - club goods—excludable, non-rivalrous
34 | - private goods—excludable, rivalrous
35 |
36 | In which class is society's shared software?
37 |
38 | Software itself is an [information good][7], so its excludability depends on
39 | whether it is public. To quote [Thomas Jefferson][15]:
40 |
41 | > If nature has made any one thing less susceptible than all others of
42 | > exclusive property, it is the action of the thinking power called an idea,
43 | > which an individual may exclusively possess as long as he keeps it to
44 | > himself; but the moment it is divulged, it forces itself into the possession
45 | > of every one, and the receiver cannot dispossess himself of it.
46 |
47 | The excludability of information in general and software in particular is
48 | implemented not at the natural level, but at the technological and cultural
49 | levels, through information security practices and intellectual property law.
50 | The law makes possible a wide range of degrees of excludability. By nature,
51 | though, published software is non-excludable.
52 |
53 | Information goods are also, by their nature, non-rivalrous. "You can't download
54 | a fish a billion times," I've heard [Andrew Nesbitt][11] say, to make the point
55 | that you _can_ download a software package a billion times. Jefferson proceeds
56 | from the above quotation to make a similar point. This is his famous candle
57 | analogy:
58 |
59 | > [An idea's] peculiar character, too, is that no one possesses the less,
60 | > because every other possesses the whole of it. He who receives an idea from
61 | > me, receives instruction himself without lessening mine; as he who lights
62 | > his taper at mine, receives light without darkening me. That ideas should
63 | > freely spread from one to another over the globe, for the moral and mutual
64 | > instruction of man, and improvement of his condition, seems to have been
65 | > peculiarly and benevolently designed by nature[.]
66 |
67 | Information as such, then, and software as an instance, is a public good:
68 | non-excludable and non-rivalrous. But this misses something crucial, which
69 | [Nadia Asparouhova][14] has described as two "states" of software ([_Working in
70 | Public_][8], p. 121).
71 |
72 | - static—bits on GitHub waiting to be downloaded at negligible marginal
73 | cost; and
74 |
75 | - active—demands piling up in GitHub Issues waiting for the maintainer
76 | to find time for them.
77 |
78 | The rivalrous resource in software as a commons is _maintainer attention_ (p.
79 | 161). "**Open Source is _consumed_ like a public good, [but] _produced_ like a
80 | commons**" (p. 212). This distinction is essential to thinking clearly about
81 | software as a commons.
82 |
83 | ## Enclosure and Tragedy in Software
84 |
85 | Because a commons is non-excludable yet rivalrous, its caretakers must in
86 | general balance against two risks:
87 |
88 | - [enclosure][5]—failure through exclusion, too many restrictions; and
89 | - [tragedy of the commons][6]—failure through overuse, too few
90 | restrictions.
91 |
92 | What do enclosure and tragedy of software as a commons look like? Keep in mind
93 | the distinction between software as a non-rivalrous information good and
94 | maintainer attention as a rivalrous resource. Both matter.
95 |
96 | ### Enclosure of Information
97 |
98 | Considered as an information good, software enclosure means dialing up
99 | exclusivity via licensing restrictions past some threshold. I say "some
100 | threshold" because, as mentioned above, intellectual property law makes
101 | possible a wide range of rights sharing, and there's an art and a negotiation
102 | to deciding at what point in the range we've passed from acceptable to
103 | unacceptable restriction on user freedom.
104 |
105 | Open Source itself allows for some restrictions, for example:
106 |
107 | - on non-attributed use;
108 | - on non-shared-alike use; and
109 | - on patent litigation.
110 |
111 | Open Source draws the line where it does because of its value system: the
112 | freedom of users overrides the needs of maintainers. Attempts by companies to
113 | change an Open Source project's license to a more restrictive license generally
114 | demonstrate the power of Open Source. If there is a real third-party community
115 | around the project, a viable fork emerges.
116 |
117 | Since we value maintainer needs on par with user rights, we are open to
118 | drawing the line of acceptable restriction differently. In the spirit of Jacob
119 | Kaplan-Moss's "[Paying people to work on open source is good actually][9]" (but
120 | declining to muddy the term Open Source), we want to celebrate sustainable
121 | software sharing wherever we see it.
122 |
123 | The hard line of information enclosure in software is closed source, which
124 | today accounts for nearly all of the consumer-grade software that defines our
125 | digital lives. By staking out an all-or-nothing position, Open Source has lost
126 | the possibility of encouraging companies to share more of their code than they
127 | do today. There's a wide range of sharing models available, we should explore
128 | them all. We should celebrate whenever companies share their code, rather than
129 | scolding them for not doing it right.
130 |
131 | ### Enclosure of Attention
132 |
133 | While software itself is a non-rivalrous information good, maintenance
134 | attention to society's publicly shared software is a common-pool resource. What
135 | constitutes enclosure of this resource? It would have to be the hiring of
136 | maintainers by organizations that then influence, whether subtly or overtly, the
137 | maintainer's priorities for the project.
138 |
139 | This is delicate, because surely companies paying staff to produce Open Source
140 | is a primary way that maintainers are paid today. In general it's a wonderful
141 | arrangement to be celebrated, and it would be inappropriate to single out any
142 | individual case for scrutiny. On a macro view, I think we can say that software
143 | as a commons is stronger if the balance of incentives includes a meaningful
144 | contingent of independent developers.
145 |
146 | ### Tragedy of the Software Commons
147 |
148 | Because software as an information good is non-rivalrous, it is by definition
149 | not susceptible to overuse. However, because it is rivalrous, maintainer
150 | attention _is_ prone to the tragedy of the commons. In fact, [we're living
151 | through an Open Source sustainability crisis right now][18].
152 |
153 | {% include img.html src="./burnout.webp"
154 | url="https://blog.tidelift.com/maintainer-burnout-is-real" caption="A chart from Tidelift's annual survey." %}
155 |
156 | What does the tragedy of the commons look like in software? [Maintainer
157 | burnout][10]. The time and attention of maintainers is the rivalrous resource
158 | in software, and overworked people burn out. Time is money, so the way to
159 | address the tragedy of the commons in software is to pay maintainers. Software
160 | Commons celebrates all software sharing, including Open Source. Preserve the
161 | Open Source Definition if we must, but let's please also figure out how to pay
162 | maintainers fairly without making them jump through hoops. Let's stop burning
163 | people out.
164 |
165 | ## Software Commons: An Institution
166 |
167 | Whereas the Free and Open Source Software (FOSS) movement only upholds user
168 | freedom, [we value][3] user freedom _and maintainer sustainability_. We want to
169 | balance the rights of users with the needs of maintainers. Software Commons is
170 | a great name for us, because it so precisely points to the somewhat complex
171 | reality of our situation and the problems we need to solve. But what are we
172 | going to do with this name?
173 |
174 | There's a "thin" version in which we produce an educational website that
175 | discusses software sharing in term of different business models, distribution
176 | models, and contribution models, with a decision tree to guide people to a good
177 | fit for their situation. This might be roughly parallel to GitHub's
178 | [choosealicense.com][12].
179 |
180 | Then there's a "thick" version in which what we are doing is founding (or
181 | joining with?) an institution. The reason we would do this is because it is the
182 | only way to solve the three big problems that our analysis of software as a
183 | commons has uncovered:
184 |
185 | 1. the **closed-source information enclosure** of the bulk of society's software;
186 | 1. the **enclosure of maintainer attention**, eroding overall community independence; and
187 | 1. the **tragedy of the commons**, burning out maintainers.
188 |
189 | If the only problem we are trying to solve is the first, then yes, we can put
190 | up an informational website that educates companies on options for sharing
191 | their source code in ways that fit their business and gives us something to
192 | link to next time we announce an FSL product, and be done with it.
193 |
194 | However, I don't think we can justify using the name Software Commons while
195 | ignoring the second and third problems. Maintainer burnout is a real problem
196 | that has been with us for too long. If we're going to live up to the promise of
197 | the Software Commons name, then we need to directly tackle the task of [funding
198 | maintainers][30], and to do that properly requires an institution.
199 |
200 | ### A Commons Is an Institution
201 |
202 | Why do we need an institution in order to walk back the tragedy of the Open
203 | Source commons? Because that is what we find in actual practice for common-pool
204 | resources (CPRs) that successfully protect against overuse. Here is [Elinor
205 | Ostrom][21] in her definitive work, [_Governing the Commons_][20] (pp. 88-89),
206 | emphasis mine:
207 |
208 | > Despite all of the differences among the CPR settings described in this
209 | > chapter—and substantial differences exist—all share fundamental similarities.
210 | > [...] The most notable similarity of all, of course, is the sheer
211 | > perseverance manifested in these resource systems **and institutions**.
212 |
213 | Ostrom's answer to how to govern the commons is a set of eight, "Design
214 | principles illustrated by long-enduring CPR institutions" (p. 90):
215 |
216 | > 1. Clearly defined boundaries Individuals or households who have
217 | > rights to withdraw resource units from the CPR must be clearly defined, as
218 | > must the boundaries of the CPR itself.
219 | > 1. Congruence between appropriation and provision rules and local
220 | > conditions Appropriation rules restricting time, place, technology,
221 | > and/or quantity of resource units are related to local conditions and to
222 | > provision rules requiring labor, material, and/or money.
223 | > 1. Collective-choice arrangements Most individuals affected by the
224 | > operational rules can participate in modifying the operational rules.
225 | > 1. Monitoring Monitors, who actively audit CPR conditions and
226 | > appropriator behavior, are accountable to the appropriators or are the
227 | > appropriators.
228 | > 1. Graduated sanctions Appropriators who violate operational rules
229 | > are likely to be assessed graduated sanctions (depending on the
230 | > seriousness and context of the offense) by other appropriators, by
231 | > officials accountable to these appropriators, or by both.
232 | > 1. Conflict-resolution mechanisms Appropriators and their officials
233 | > have rapid access to low-cost local arenas to resolve conflicts among
234 | > appropriators or between appropriators and officials.
235 | > 1. Minimal recognition of rights to organize The rights of
236 | > appropriators to devise their own institutions are not challenged by
237 | > external government authorities.
238 | > 1. For CPRs that are parts of larger systems: Nested enterprises Appropriation, provision, monitoring,
239 | > enforcement, conflict resolution, and governance activities are organized
240 | > in mulitple latyers of nested enterprises.
241 |
242 | ## Sketching an Institution
243 |
244 | The sort of institution I have in mind for Software Commons, after Ostrom's
245 | principles:
246 |
247 | 1. brings together producers and consumers of FOSS under one roof, alongside
248 | platform partners, to negotiate an enduring solution to [the Open Source
249 | sustainability crisis][23] (is it a multi-stakeholder platform
250 | cooperative?); and
251 | 1. ~~fleshes out and educates the industry on software sharing practices
252 | between closed and Open Source.~~ [_Update: [dropping this from
253 | scope](/2024/fair-source-does-not-equal-software-commons/)._]
254 |
255 | Perhaps there is an institution that exists today that could be made to fit
256 | this description. It's worth talking about, but I'm skeptical.
257 |
258 | - It's not the [Open Source Initiative][22], which can only promote user
259 | freedom, not maintainer sustainability.
260 | - It's not the [Linux Foundation][25], because it's [a company-centric trade
261 | association][24].
262 | - It's not [Post-Open][27]; I talked with Bruce yesterday, and if I understand
263 | it right, it really only represents producers.
264 | - An Ostrom-ian institution needs to provide accountability for money flow, but
265 | I'm not sure any of the existing platforms ([GitHub Sponsors][28],
266 | [Thanks.dev][29]) on their own is the right solution.
267 | - [OS Collective][26] probably comes closest; it's worth a conversation. My
268 | hunch is FOSS consumer representation is too weak.
269 |
270 | It may fall to us—if we want it—to found Software Commons as a new institution
271 | that fulfills Ostrom's principles. If we don't want it, that's okay. We can
272 | still publish an educational website to encourage a range of sharing between
273 | closed and Open Source. But if we don't also tackle the enclosure of maintainer
274 | attention and particularly the tragedy of the Open Source commons, it would
275 | be beneath us to use the Software Commons name.
276 |
277 | _Something to add? [Discuss on GitHub][13]._
278 |
279 | [0]: https://github.com/getsentry/fsl.software/issues/2
280 | [1]: https://twitter.com/adamhjk/status/1687113805237714944
281 | [2]: https://fsl.software/
282 | [3]: https://blog.sentry.io/sentrys-open-source-values/
283 | [4]: https://en.wikipedia.org/wiki/Goods#Goods_classified_by_exclusivity_and_competitiveness
284 | [5]: https://en.wikipedia.org/wiki/Enclosure
285 | [6]: https://en.wikipedia.org/wiki/Tragedy_of_the_commons
286 | [7]: https://en.wikipedia.org/wiki/Information_good
287 | [8]: https://www.amazon.com/dp/0578675862
288 | [9]: https://jacobian.org/2024/feb/16/paying-maintainers-is-good/
289 | [10]: https://blog.tidelift.com/maintainer-burnout-is-real
290 | [11]: https://nesbitt.io/
291 | [12]: https://choosealicense.com/
292 | [13]: https://github.com/softwarecommons/softwarecommons.com/issues/2
293 | [14]: https://nadia.xyz/
294 | [15]: https://press-pubs.uchicago.edu/founders/documents/a1_8_8s12.html
295 | [16]: https://openpath.quest/2024/the-open-source-sustainability-crisis/#what-is-open-source-sustainability
296 | [17]: https://gratipay.news/open-products-25824a325fea
297 | [18]: https://openpath.quest/2024/the-open-source-sustainability-crisis/#what-is-the-sustainability-crisis
298 | [19]: https://openpath.quest/2024/towards-software-commons/
299 | [20]: https://www.amazon.com/dp/1107569788
300 | [21]: https://en.wikipedia.org/wiki/Elinor_Ostrom
301 | [22]: https://opensource.org/
302 | [23]: https://openpath.quest/2024/the-open-source-sustainability-crisis/
303 | [24]: https://mjg59.dreamwidth.org/39546.html
304 | [25]: https://www.linuxfoundation.org/
305 | [26]: https://www.oscollective.org/
306 | [27]: https://openpath.quest/2024/towards-software-commons/#post-open
307 | [28]: https://github.com/sponsors
308 | [29]: https://thanks.dev/home
309 | [30]: https://openpath.quest/2024/funding-the-five-thousand/
310 |
--------------------------------------------------------------------------------
/_posts/2024-03-21-relicensing-and-rug-pulls.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Relicensing and Rug Pulls
3 | excerpt: If a viable fork of Redis emerges, relicensing was a rug pull. If not, it wasn't ... and that's kinda sad.
4 | homepage_rank: 3
5 | ---
6 |
7 | Another day, [another major Open Source project
8 | relicenses](https://redis.com/blog/redis-adopts-dual-source-available-licensing/)
9 | to avoid [getting
10 | Jeff'd](https://www.youtube.com/watch?v=XZ3w_jec1v8#t=29m27s). This time it's
11 | Redis ... again. Was it a rug pull? It's too soon to tell. It's only a rug pull
12 | if someone was standing on the rug.
13 |
14 |
20 |
21 | ## A Brief History of Redis Licensing
22 |
23 | - 2009—After working on it privately for three years (yes?), Salvatore
24 | [published](https://github.com/redis/redis/commit/ed9b544e10b84cd43348ddfab7068b610a5df1f7)
25 | Redis **core** on GitHub [under
26 | BSD-3](https://github.com/redis/redis/blob/ed9b544e10b84cd43348ddfab7068b610a5df1f7/COPYING).
27 |
28 | {% include img.html src="betatesters.webp"
29 | url="https://github.com/redis/redis/blob/ed9b544e10b84cd43348ddfab7068b610a5df1f7/BETATESTING.txt"
30 | %}
31 |
32 | - 2016—Redis started making **modules**, licensing them under AGPL
33 | (e.g.,
34 | [RediSearch](https://github.com/RediSearch/RediSearch/commit/c60925a9268ac9843244ee33c033c4789dd4ce50),
35 | [RedisJSON](https://github.com/RedisJSON/RedisJSON/commit/6f638aca7df52e884f14b494168462add5366e7a#diff-c693279643b8cd5d248172d9c22cb7cf4ed163a3c98c8a3f69c2717edd3eacb7),
36 | [RedisTimeSeries](https://github.com/RedisTimeSeries/RedisTimeSeries/commit/7224436f2c0b981f48e9331cea306bea85a01ed7#diff-c693279643b8cd5d248172d9c22cb7cf4ed163a3c98c8a3f69c2717edd3eacb7)).
37 |
38 | - 2018—Redis relicensed its **modules** from AGPL to
39 | Apache-2.0-with-Commons-Clause. I don't find an announcement from them,
40 | but here's [a version of events in a TechCrunch
41 | op-ed](https://techcrunch.com/2018/09/07/commons-clause-stops-open-source-abuse/#m_-47614634501600442334829)
42 | from a VC who was involved, and Redis refers to the 2018 Commons Clause
43 | relicensing in [their 2021
44 | post](https://redis.com/blog/redis-labs-modules-license-changes/).
45 |
46 | - 2021—[Commons Clause](https://commonsclause.com/) is a controversial
47 | idea—a non-compete rider on an otherwise Open Source license—with a controversial name. Apache [pushed
48 | back](https://www.apache.org/foundation/license-faq.html#mod-license) on
49 | trademark grounds. What's more, a commons is precisely a resource that is
50 | [governed openly](https://www.amazon.com/dp/0521405998), not corporately. Probably
51 | due to this controversy, Redis [relicensed its **modules**
52 | again](https://redis.com/blog/redis-labs-modules-license-changes/) to a new
53 | license: the non-compete Redis Source Available License (RSAL).
54 |
55 | - 2022—Redis [relicensed its **modules**
56 | again](https://redis.com/blog/rsalv2-sspl-announcement/) to a dual licensing
57 | arrangement: a cleaned-up RSALv2, and—in a bid to reduce license
58 | proliferation—MongoDB's
59 | [SSPL](https://en.wikipedia.org/wiki/Server_Side_Public_License).
60 |
61 | - 2024—Yesterday, after 15 years, **core** Redis went from BSD-3 to the
62 | same RSALv2/SSPL arrangement as the modules.
63 |
64 | ## Criteria for a Rug Pull
65 |
66 | In cases like this, the cry "Foul!" [goes
67 | up](https://news.ycombinator.com/item?id=37904640):
68 |
69 | > [C]ompanies dominate their space by having an open ecosystem and a large
70 | > community of volunteers and then unilaterally switch the license terms from
71 | > under everyone so that the founding team and VCs can make billions.
72 |
73 | It's a smooth narrative, but it's a little _too_ smooth. Not every relicensing
74 | is a rug pull, because not every project has "a large community of volunteers."
75 | Moving a rug with no-one standing on it is not a rug pull, it's just moving a
76 | rug. For a relicensing to be a rug pull, there has to have been a true
77 | developer community around the project—not just users, developers.
78 |
79 | Clearly HashiCorp pulled the rug, because in the wake of [their
80 | relicensing](https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license),
81 | people outside HashiCorp did a lot of work to get the
82 | [OpenTofu](https://www.linuxfoundation.org/press/announcing-opentofu) fork off
83 | the ground. It seems to be viable. On the other hand, since Sentry relicensed
84 | in 2019, no viable fork has emerged. There was no community of people not
85 | employed by Functional Software, Inc. dba Sentry who were developing the
86 | product. There was no-one standing on the rug.
87 |
88 | {% include img.html src="Percentage_of_Commits_by_Era_and_Relation.webp"
89 | url="https://blog.sentry.io/nows-the-time-for-delayed-open-source/?original_referrer=https%3A%2F%2Fblog.sentry.io%2F" caption="Sentry has always been built by Sentry." %}
90 |
91 | Was Redis' relicensing a rug pull? I don't know. They
92 | mention "efforts to support a community-led governance model, and our desire to
93 | [maintain the BSD
94 | license](https://redis.com/blog/redis-license-bsd-will-remain-bsd/)." I
95 | eagerly clicked the link regarding their desire. More eagerly would I have
96 | clicked to learn about their efforts. Maybe they did make an effort,
97 | maybe they didn't. Ultimately, the proof of the pudding is in the eating. Are
98 | there enough people who care enough to launch a viable Open Source fork of
99 | Redis? Was anyone standing on the rug? In the court of public ~~opinion~~
100 | _action_, the jury is out.
101 |
102 | ## But Also, Empty Rugs are Kinda Sad
103 |
104 | I do have to admit that there's something poignant about yesterday's
105 | announcement. I felt a pang of loss when digging up the history shared above.
106 | Fifteen years ago, Salvatore [put something beautiful out into the
107 | world](https://news.ycombinator.com/item?id=35871462), with a sparkle in his
108 | eye and a spring in his step. Redis has always topped my personal list of
109 | really elegant pieces of software—alongside Postgres and Python, Vim, maybe
110 | Git—and Salvatore has always seemed like he's got really good energy. When he
111 | [stepped back](http://antirez.com/news/133) four years ago, he wrote (emphasis
112 | mine):
113 |
114 | > I believe I’m not just leaving Redis in the hands of a community of expert
115 | > programmers, but also in the hands of **people who care about the legacy of the
116 | > community spirit of Redis**.
117 |
118 | If no fork emerges, it seems a death knell for Salvatore's dreams for
119 | Redis-the-community, even while it vindicates the decision of
120 | Redis-the-company. I felt a similar pang of loss when I [watched David
121 | say](https://www.youtube.com/watch?v=MYoipcYW_Qk&t=1713s), in reference to
122 | Sentry's own relicensing (emphasis mine):
123 |
124 | > There's no billion-dollar revenue companies that are exclusively [permissive]
125 | > Open Source[.] I want to believe somebody will do it, at some point. They'll
126 | > take that leap, and it will work. **We were not going to be the ones to
127 | > quite do it**[.]
128 |
129 | Community is at the heart of Open Source. Companies are at the heart of our
130 | economy. Somehow it would sure be great if we could [figure out
131 | how](https://gratipay.news/the-second-open-company-4cbab7ca1a47) to have
132 | [the best of
133 | both](https://blog.gittip.com/post/25215503687/corporations-and-open-ones/).
134 |
--------------------------------------------------------------------------------
/_posts/2024-04-01-fair-source-does-not-equal-software-commons.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Fair Source <> Software Commons
3 | excerpt: Fair Source is about licensing. Software Commons is about funding. Let's do both ... separately.
4 | ---
5 |
6 | Yes, it is April 1. No, this is not an April Fools Joke. This is a quick post
7 | to clear up a misconception about [Software
8 | Commons](https://softwarecommons.com/) that stems from the historical evolution
9 | of the name. If you weren't there for it, then hopefully you aren't confused by
10 | it, and this post will be stating the obvious for you. If you were, hopefully
11 | this helps disentangle what was admittedly a bit of a convoluted discussion.
12 |
13 | "Software Commons"
14 | [emerged](https://github.com/getsentry/fsl.software/issues/2#issuecomment-1939112531)
15 | out of [work we were doing](https://github.com/getsentry/fsl.software/issues/2)
16 | to [find a name other than Open
17 | Source](https://twitter.com/adamhjk/status/1687113805237714944) to [label
18 | Codecov](https://blog.sentry.io/lets-talk-about-open-source/) and projects like
19 | it, which are shared in meaningful ways but ultimately controlled by one company.
20 | Turns out it is better to name two separate approaches to balancing [Sentry's
21 | values](https://blog.sentry.io/sentrys-open-source-values/) of user freedom and
22 | developer sustainability:
23 |
24 | - [**Fair Source**](https://github.com/fairsource/fairsource/pull/9) is the term we are converging on to
25 | celebrate companies meaningfully sharing their core products using non-compete
26 | licenses (the original context in which the name "Software Commons"
27 | arose, hence the confusion).
28 |
29 | - [**Software Commons**](https://softwarecommons.com/) has become about bringing
30 | together companies, foundations, and platforms to solve [the Open Source
31 | sustainability
32 | crisis](https://openpath.quest/2024/the-open-source-sustainability-crisis/).
33 |
34 | I had initially tried to see these two aspects of sustainability—licensing and
35 | funding—as worth pursuing together. Now I see them as worth pursuing
36 | separately. Endorsing one does not entail endorsing the other, and neither one
37 | attempts to change the fundamental definitions of
38 | [Free](https://www.gnu.org/philosophy/free-sw.en.html#fs-definition) and [Open
39 | Source](https://opensource.org/osd) Software.
40 |
41 | Sorry for the confusion!
42 |
--------------------------------------------------------------------------------
/_posts/2024-04-05-open-source-is-a-restaurant.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Open Source Is a Restaurant
3 | excerpt: It was a great meal. Are we going to pay the tab?
4 | ---
5 |
6 | ### Related Video
7 |
8 | {% include youtube.html video_id="AZZyV0gk3TM" %}
9 |
10 | ---
11 |
12 | With [XZ](https://research.swtch.com/xz-timeline) we're in a fresh round of
13 | proposals to fix [Open Source
14 | sustainability](/2024/the-open-source-sustainability-crisis/).
15 | One thing I'm seeing more of this time around is an appetite for tax-based
16 | approaches. Tim Bray proposes
17 | [OSQI](https://www.tbray.org/ongoing/When/202x/2024/04/01/OSQI). Matthew Hodgson also
18 | calls for [government
19 | funding](https://matrix.org/blog/2024/04/open-source-publicly-funded-service/).
20 | I've pitched a weird hybrid "[voluntary
21 | tax](/2024/a-vision-for-software-commons/)."
22 |
23 | Europe is (unsurprisingly) further along with [tax-based
24 | approaches](https://openfuture.eu/policies-for-the-digital-commons/public-digital-infrastructure-fund/)
25 | than the United States. [Sovereign Tech
26 | Fund](https://www.sovereigntechfund.de/) is off and running in Germany.
27 | [FOSSEPS](https://joinup.ec.europa.eu/collection/fosseps/news/funding-sustainability)
28 | seems to be coming along behind at the EU scope.
29 |
30 | Tax-based programs tend to be grant-driven, similar to what we see with
31 | industrial philanthropies in the U.S. such as the [Sloan
32 | Foundation](https://sloan.org/programs/digital-technology). With this model,
33 | maintainers apply for funding for a certain scope of work, and the government
34 | or charity follows up to ensure the work they are funding gets done. It's
35 | basically the tried and true consulting model for subsidizing Open Source, but
36 | with a government (or non-profit) as the client.
37 |
38 | Grant programs do not get us
39 | to [sustainability as I define it](/2024/the-open-source-sustainability-crisis/#what-is-open-source-sustainability):
40 |
41 | > Open Source sustainability is when any smart, motivated person can produce
42 | > widely adopted Open Source software and get paid fairly without jumping
43 | > through hoops.
44 |
45 | Grants are [hoops](https://openpath.quest/2024/the-open-source-sustainability-crisis/#whats-wrong-with-hoops).
46 |
47 | ## The Restaurant Analogy
48 |
49 | I've hit upon an analogy that I think clarifies our situation. It's
50 | [buried](/2024/a-vision-for-software-commons/#the-restaurant-analogy) in "A
51 | Vision for Software Commons," but there's a lot going on there and I think this
52 | is a good enough idea to warrant its own post.
53 |
54 | How should we think about the economics of Open Source? It's not a grocery
55 | store, or a soup kitchen. It's a restaurant.
56 |
57 | ### Not a Grocery Store
58 |
59 | Open Source is not a grocery store. At a grocery store (or pretty much
60 | any other store, but this analogy works best if we use food), you pay _first_,
61 | then you get to eat.
62 |
63 | This is analogous to thinking of payments to Open Source projects in terms of
64 | ROI: what am I getting in the future for the money I am paying now? This
65 | doesn't work, because you _already used the software_. You can pay for other
66 | things _adjacent to_ the software—consulting, packaging, hosting, and so forth.
67 | These _subsidize_ Open Source but do not directly _sustain_ it. ROI as a
68 | mechanism depends on scarcity, and Open Source is essentially, intentionally
69 | non-scarce.
70 |
71 | ### Not a Soup Kitchen
72 |
73 | Open Source is not a soup kitchen. Payments to Open Source projects are
74 | not donations, they are not charity. They would be if someone else ate the
75 | meal, but you ate it.
76 |
77 | Companies are by definition not geared towards making charitable donations.
78 | Yes, corporate philanthropy is a thing. It's peanuts. I'm seeing maybe [$25
79 | billion/year](https://doublethedonation.com/types-of-corporate-philanthropy/),
80 | on a U.S. economy of [$25 _trillion_](https://www.google.com/search?q=us+gdp) a
81 | year. Open Source likely accounts for [100s of billions of this
82 | value](https://gratipay.news/open-source-captures-almost-none-of-the-value-it-creates-9015eb7e293e)
83 | and currently recoups [100s of
84 | millions](https://fosdem.org/2024/events/attachments/fosdem-2024-2751-the-state-of-funding-free-open-source-software/slides/22659/State_of_FOSS_Funding_FOSDEM_2024_IQwHRvb.pdf)
85 | (PDF). We need to grow Open Source income by several orders of magnitude.
86 | Calling it charity is a doomed approach. Fortunately, it's also not accurate.
87 |
88 | ### A Restaurant
89 |
90 | Open Source is a restaurant. At a restaurant, you eat your meal _first_,
91 | and _then_ you are expected to pay for it. Yes, we could dine and dash. But we
92 | don't. When presented with a tab for a meal we have just eaten, we pay
93 | the tab.
94 |
95 | Now picture a meal with a large group of friends. Inevitably, someone forgot
96 | their wallet—or “forgot” “their” “wallet.”
97 | The rest of the group has to pick up their share. Sometimes, one person gets
98 | stuck with the whole tab.
99 |
100 | Our companies are sitting around the table. Open Source is the meal we consume
101 | year after year. **We need to [split the
102 | check](/2024/a-vision-for-software-commons/#splitting-the-check-with-a-fair-share)**.
103 | Be careful here: I'm _not_ saying we should _tip_ Open Source projects. I'm saying
104 | we should _pay our bill_. If some companies want to tip extra, more power to them.
105 |
106 | ### Residential ⇒ Commercial ⇒ Collective
107 |
108 | Hobby projects are akin to residential kitchens. Mounting expectations such as
109 | [CRA](https://digital-strategy.ec.europa.eu/en/library/cyber-resilience-act)
110 | and [EO
111 | 14028](https://www.nist.gov/itl/executive-order-14028-improving-nations-cybersecurity)
112 | are akin to OSHA inspections. We need Open Source foundations to
113 | [become commercial kitchens](/2024/the-future-of-foss-foundations/), as it were, fit to deliver at scale. At the same
114 | time, we need foundations to find ways of funding individuals that [fit the
115 | Open Source ethos of collaborative
116 | autonomy](/2024/a-vision-for-software-commons/#the-heart-of-open-source). If
117 | Open Source is to be a restaurant, let it be the [Moosewood
118 | Collective](https://en.wikipedia.org/wiki/Moosewood_Restaurant).
119 |
120 | ## A New Bucket
121 |
122 | Companies already have a few big buckets that make sense to them to
123 | account for money they spend:
124 |
125 | - Taxes—they pay because they have to or (at some point) they'll be disciplined by government.
126 | - Purchases—they pay because they want the product or service they are buying.
127 | - Donations—they pay because ... well, they don't really, if we're honest. It's couch pennies.
128 |
129 | We need a new bucket:
130 |
131 | - Fair Share—they pay because, at the very least, they don't want to be
132 | seen by their peers as deadbeats.
133 |
134 | Look, don't get me wrong. This is a _huge honkin' deal_. We're essentially
135 | asking our corporations to become a _little teensy tiny bit_ less sociopathic than they
136 | currently by nature are. Everything is against us. There's no way this could
137 | possibly work. Unless enough of us collectively want it to work.
138 |
139 | I want it to work.
140 |
141 |
142 | Update
143 | We're moving this forward as Open Source Pledge.
144 |
145 |
--------------------------------------------------------------------------------
/_posts/2024-04-26-the-future-of-foss-foundations.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Future of FOSS Foundations
3 | excerpt: With new EU legislation, Open Source foundations are growing up fast. Where are we headed?
4 | ---
5 |
6 | I took AP Computer Science in 1994, in a small lab with a dozen
7 | Macintoshes. For homework, we scribbled top-down
8 | designs and Pascal snippets on paper. Some we typed in the next day.
9 |
10 | A few weeks in, my mom (a math teacher in a different district) drove me to CompUSA at Parkway
11 | Center Mall and plunked $124.99 plus tax for a shrink-wrapped box with Borland
12 | Turbo Pascal on probably half a dozen 3½" floppies to install on our Gateway 2000.
13 | We [ate at Chi-Chi’s](https://www.reddit.com/r/pittsburgh/comments/16ufhkw/who_remembers_shopping_at_compusa_and_then/) and I got fried ice cream but not
14 | [hepatitis](https://en.wikipedia.org/wiki/Chi-Chi%27s#Bankruptcy,_hepatitis_A,_and_closure_in_United_States_and_Canada)
15 | (thankfully) and I really hope I can visit [the last one standing](https://www.chi-chis.at/)
16 | in September. So epic. Back home I wrote Pascal on the Gateway instead of
17 | paper.
18 |
19 | {% include img.html src="level-3.gif" caption="Parkway Center Mall floorplan dot tumblr dot com" url="https://www.tumblr.com/kirbypuckett/42594346160/parkway-center-mall" %}
20 |
21 | I thought about this experience when I read Stephen Walli's "[My [Memes About] Free and
22 | Open Source
23 | Software](https://medium.com/@stephenrwalli/my-history-of-free-and-open-source-software-1bac0a75a6ba#5ea4)"
24 | (a good post with a bad title; also, the emphasis below is mine):
25 |
26 | > Meme #7: Don’t confuse products with projects.
27 | >
28 | > A project is a collection of working software that installs and runs and
29 | > solves an interesting problem. It’s a collaboration and conversation in code.
30 | > Projects are NOT products. **A product is something that solves a customer’s
31 | > problem for money.** While a lot of excellent software can come out of a
32 | > well-run open source project that relieves some of the work for engineering,
33 | > there is enormous work still to be done to turn it into a problem-solving
34 | > product for customers.
35 |
36 | Borland Turbo Pascal was clearly a product for me in 1994, on this
37 | definition. It solved my problem for money. I had the shrink-wrap and
38 | blank paper to prove it.
39 |
40 | Now, besides a war on terror and a global pandemic, what's the delta between
41 | 1994's Borland Turbo Pascal and 2024's JavaScript or Rust or Python? I think
42 | it's just the money part. Some projects certainly _feel_ like products, highly
43 | dependable opaque-in-practice solutions to a problem. How many of us
44 | [open](https://chromium.googlesource.com/v8/v8.git)
45 | [the](https://github.com/rust-lang/rust)
46 | [hood](https://github.com/python/cpython)? Probably as many as fix our own car.
47 |
48 | ## Stewarding Borland Turbo ... Python?
49 |
50 | If Python is a product, who is the producer? The Python community, yes, of
51 | which the Python Software Foundation is presently being chiseled into European
52 | Union law as the steward. This is one of the most remarkable aspects of
53 | the [Cyber Resilience Act
54 | (CRA)](https://www.europarl.europa.eu/doceo/document/TA-9-2024-0130_EN.pdf), a
55 | new piece of legislation that has kept the Open Source community in Europe
56 | quite busy for the past 18 months. Many outside Europe are less aware of it, but it will
57 | have a profound impact on all of us in the coming years. (I started [wrapping my
58 | head around the CRA in this
59 | ticket](https://github.com/chadwhitacre/openpath/issues/40), so if you want to
60 | do the same you might start there.)
61 |
62 | Here is the text in the CRA that enshrines Open Source foundations as a
63 | new kind of economic actor alongside manufacturers and consumers (§ 19, emphasis
64 | added):
65 |
66 | > Taking into account the importance for cybersecurity of many products with
67 | > digital elements qualifying as free and open-source software that are
68 | > published, but not made available on the market within the meaning of this
69 | > Regulation, legal persons who provide support on a sustained basis for
70 | > the development of such products which are intended for commercial
71 | > activities, and who play a main role in ensuring the viability of those
72 | > products (**open-source software stewards**), should be subject to a
73 | > light-touch and tailor-made regulatory regime. Open-source software stewards
74 | > include certain foundations as well as entities that develop and publish free
75 | > and open-source software in a business context, such as not-for-profit
76 | > entities developing free and open-source software in a business context. The
77 | > regulatory regime should take account of their specific nature and
78 | > compatibility with the type of obligations imposed.
79 |
80 | Here it is as a slide from the author of the CRA explaining to FOSDEM, "[what
81 | the open-source software steward will
82 | be](https://www.youtube.com/watch?v=wRzqvHulcEA#t=18m07s)":
83 |
84 | {% include img.html src="osss.webp" caption="OSS stewards are a new economic actor in the EU." url="https://fosdem.org/2024/events/attachments/fosdem-2024-3683-the-regulators-are-coming-one-year-on/slides/22201/Slides_CRA_FOSDEM_v3_ukPnQUG.pdf" %}
85 |
86 | The European Union does not regularly invent new kinds of economic actor. The
87 | last time was in 2008, with the "[new legislative
88 | framework](https://single-market-economy.ec.europa.eu/single-market/goods/new-legislative-framework_en),"
89 | since compacted, ossified, solidified, and hardened by 15+ years of government
90 | built atop it. An Open Source carve-out in the CRA is _a really big deal_.
91 |
92 | ## EU Is Saying the Word "Restaurant"
93 |
94 | Stephen Walli's Meme #3 is, "[There is no scale without
95 | discipline](https://medium.com/@stephenrwalli/my-history-of-free-and-open-source-software-1bac0a75a6ba#5d29),"
96 | which he unpacks elsewhere [using a cooking
97 | metaphor](https://medium.com/@stephenrwalli/sustaining-open-source-software-4a62a4b6d0f3#595f)
98 | (emphasis added):
99 |
100 | > Everyone knows how to fry an egg. You can become a reasonable cook with some
101 | > practice, expanding your repertoire and toolset. You may get good enough to
102 | > cook for friends or tackle the Holiday meal for family. You might specialize
103 | > and become very good at baking. But **the world of cooking changes dramatically
104 | > when you say the word ‘restaurant.’**
105 | >
106 | > Restaurants, regardless of whether they are 2-person taco trucks or
107 | > Michelin-starred experiences, are businesses that happen to involve cooking.
108 | > There is suddenly an array of cooking skills required to consistently,
109 | > reliably, repeatably deliver the same food outcome every time. There is a
110 | > team with roles, and that adds all manner of communications challenges to
111 | > ensure the consistent delivery of food (and experience). **There are rules
112 | > and regulations.** Added on top of that customers need to be served, accounts
113 | > payable/receivable need to be managed, (you need to spend less than you
114 | > earn,) and the team needs to be hired, trained, motivated, and paid.
115 | >
116 | > So too with software. There is a considerable difference between the problem
117 | > sets that need to be solved to deliver software solutions consistently at
118 | > scale (to large numbers of users in a community or large numbers of
119 | > customers) versus bespoke solutions in the small or solutions with dozens of
120 | > users not tens of thousands. These aren’t ‘open source’ problems. They’re
121 | > software skillset and experience problems. These problems have everything to
122 | > do with software hygiene and software engineering and **apply to all software
123 | > regardless of licensing regime or community versus corporate creation**.
124 |
125 | With the CRA, the European Union is saying the word "restaurant" over the whole
126 | software industry, including Open Source. The "rules and regulations" are
127 | arriving. They intend a "light-touch and tailor-made regulatory regime" for
128 | Open Source. Cue the unintended consequences. It was green onions from a
129 | distant supplier that took down Chi-Chi's restaurant in the worst hepatitis A
130 | outbreak in U.S. history. My friend's father's friend died. Log4j and XZ are the
131 | green onions. They are grown in [someone's back
132 | yard](https://www.softwaremaxims.com/blog/not-a-supplier). How does this play
133 | out?
134 |
135 | "Open source projects will not be required to directly implement the mandated
136 | processes described in the CRA," [observes Mike
137 | Milinkovich](https://eclipse-foundation.blog/2023/12/19/good-news-on-the-cyber-resilience-act/),
138 | a leader in the Open Source community's response. "But every commercial product
139 | made available in the EU which is built on top of those open source projects
140 | _will_. I predict this will put pressure on projects and communities to enhance
141 | their processes to assist in downstream commercialization." There is no scale
142 | without discipline. Mike continues (emphasis added):
143 |
144 | > After all, if a project is used in hundreds of products, doing the bulk of
145 | > the CE Mark conformance work in the project rather than repeating the effort
146 | > hundreds of times makes enormous sense. But as we all know, **OSS projects at
147 | > the moment simply do not have the resources to do this**. It is impossible to
148 | > know how all of this will play out, but an optimistic hypothesis is that once
149 | > companies are required by law to meet secure software development practices
150 | > they will be incented to invest in the upstream projects they rely upon.
151 |
152 | Pessimistic hypotheses are also available, but let's share Mike's optimism. If
153 | we are to make the best of this new legal landscape, we need to support FOSS
154 | foundations _now more than ever_ in order for them to live up to the demands of
155 | an Open Source software steward. If we are to regulate Open Source like a
156 | restaurant, let us also [fund Open Source like a
157 | restaurant](/2024/open-source-is-a-restaurant/#the-restaurant-analogy).
158 |
159 | ## Rounding Out the Roles
160 |
161 | Historically, FOSS foundations have focused on some things and not others. Back in
162 | 2009, Stephen Walli and co-author Paula Hunter [taxonomized these things as
163 | follows](https://www.jolts.world/index.php/jolts/article/view/64/148):
164 |
165 | 1. Legal Framework for IP Management
166 | 1. Ownership Neutrality
167 | 1. Liability and Risk Management
168 | 1. Code Provenance
169 | 1. The License of a FOSS Project and License Curation
170 | 1. Technical Services
171 | 1. The Forge and the Communications Channel
172 | 1. Mentorship and Incubation
173 | 1. General Management and Operations
174 | 1. Support Across the Project Lifecycle
175 | 1. Funding: Members, Dues, and Donations
176 |
177 | With some minor modifications (rip forges lol), these still obtain. Two things
178 | foundations own today more clearly than 15 years ago jump out:
179 |
180 | 1. Packaging. The Python Software Foundation [runs
181 | PyPI](https://pypi.org/help/#about). The Rust Foundation [runs
182 | Crates.io](https://www.rust-lang.org/governance/teams/crates-io). Ruby Central [runs RubyGems](https://rubygems.org/pages/sponsors).
183 | 1. Events. Ruby Central runs [two conferences](https://rubycentral.org/conferences/). PyCon is "the [single biggest
184 | fundraiser](https://psf-docs.readthedocs.io/en/latest/_docs/faq.html#what-is-the-relationship-between-pycon-us-and-the-psf)
185 | the PSF has every year." "[~60-70% of [CNCF's]
186 | budget](https://twitter.com/cra/status/1763632743127126190) goes to running
187 | events for the community."
188 |
189 | With government regulation of Open Source, foundations seem poised to take on
190 | even more responsibility. In the limit, they could even evolve to look like weird
191 | software companies. Consider a software company like my employer, Sentry. It provides a legal framework for IP
192 | management, technical services, and general management and operations. We have
193 | a service reliability team, and events and marketing staff. We _also_ have a
194 | full-fledged product engineering organization—the bulk of our company.
195 |
196 | Will the foundations of the future employ engineers, to meet the demands
197 | (direct or indirect) of regulators?
198 | [Django](https://www.djangoproject.com/fundraising/#who-are-the-django-fellows)
199 | and [Ruby
200 | Central](https://rubycentral.org/news/ruby-central-welcomes-new-software-engineer-in-residence-sponsored-by-aws/)
201 | have started down this path. PHP is [furthest
202 | along](https://thephp.foundation/structure/#core_developers). Taken to its
203 | conclusion, this would change the character of our foundations, but not
204 | necessarily in a bad way. There is no scale without discipline, and there are
205 | ways to scale that [preserve the heart and soul of Open
206 | Source](/2024/a-vision-for-software-commons/#the-heart-of-open-source).
207 | Foundations have an opportunity—perhaps an obligation—to play a pivotal role in
208 | ensuring that homegrown green onions from a thousand back yards are safe for
209 | mass consumption.
210 |
--------------------------------------------------------------------------------
/_posts/2024-05-15-widespread-use-of-a-fair-source-product.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Widespread Use of a Fair Source Product
3 | excerpt: Self-hosted Sentry is a clear existence proof of the viability of the Fair Source model.
4 | ---
5 |
6 | We aim to [launch Fair Source](https://github.com/fairsource/fair.io/issues/14)
7 | in August, just over a year from Adam Jacob's [call for a new
8 | term](https://twitter.com/adamhjk/status/1687113805237714944) after our
9 | [Codecov misstep](https://news.ycombinator.com/item?id=36971490). Yesterday, we
10 | hit ESR's radar. His [reaction was
11 | negative](https://twitter.com/esrtweet/status/1790350881424056680): "No
12 | corporate legal department will _ever_ sign off on letting a 'fair source'
13 | project be used in house[.]" I
14 | [said](https://twitter.com/chadwhitacre_/status/1790382981028159807) that
15 | Sentry seems a clear existence proof to the contrary. Eric [inquired
16 | further](https://twitter.com/esrtweet/status/1790680602053579084):
17 |
18 | > I find your claim about widespread "fair source" use surprising and in fact
19 | > barely even believable.
20 | >
21 | > 1. There seems to be an inconsistency between the claim that "fair source" is
22 | > already in wide use and the fact that some people are only now getting
23 | > around to naming and formulating the concept and putting up a website
24 | > about it.
25 | > 2. If it's nevertheless true, I'm wondering why no word of such an important
26 | > development had never [sic] reached me before.
27 | >
28 | > Color me skeptical but willing to learn.
29 |
30 | In this post I aim to back up my claim. I'll explain what self-hosted Sentry
31 | is, then unpack my claim that we have 10,000+ installations out in the wild.
32 | I'll end by addressing Eric's additional points.
33 |
34 | ## Self-hosted Sentry
35 |
36 | [Sentry](https://sentry.io/welcome/) is a software product for monitoring
37 | errors and performance issues in software products. David Cramer started the
38 | project 16 years ago as [an unlicensed 71-line Django
39 | plugin](https://github.com/getsentry/sentry/commit/3c2e87573d3bd16f61cf08fece0638cc47a4fc22).
40 | Today 300+ people produce Sentry in a corporation with a SaaS hosting business
41 | serving [100,000+
42 | customers](https://blog.sentry.io/building-for-the-fortune-500-000/). We get
43 | occassional code contributions from non-staff (much more so in our SDKs, which
44 | are MIT-licensed), but by and large Sentry-the-product has [always been
45 | produced](https://blog.sentry.io/nows-the-time-for-delayed-open-source/#sentrys-history-with-delayed-open-source)
46 | by Sentry-the-company.
47 |
48 | {% include img.html src="Percentage_of_Commits_by_Era_and_Relation.webp" caption="Sentry has always been produced by Sentry." url="https://blog.sentry.io/nows-the-time-for-delayed-open-source/#sentrys-history-with-delayed-open-source" %}
49 |
50 | In addition to SaaS, we offer [self-hosted
51 | Sentry](https://github.com/getsentry/self-hosted), a Docker Compose packaging
52 | of the [core Django monolith](https://github.com/getsentry/sentry) and other
53 | services ([too many!](https://github.com/getsentry/team-ospo/issues/232)). It
54 | is suitable out of the box for low-volume and proof-of-concept deployments, and
55 | also serves as a blueprint for those who want to operate Sentry at scale. The
56 | feature set is the same between self-hosted and SaaS. In fact, sufficiently
57 | motivated self-hosted users can enable bleeding edge features before they're
58 | enabled in SaaS. We do not monetize self-hosted Sentry.
59 |
60 | Since 2019, we have licensed Sentry using what the Open Source Initiative (OSI)
61 | recently called "[delayed Open Source
62 | publication](https://blog.opensource.org/a-historic-view-of-the-practice-to-delay-releasing-open-source-software-osis-report/)."
63 | We [used the Business Source
64 | License](https://blog.sentry.io/relicensing-sentry/) (BSL or BUSL) until 2023,
65 | at which point we [introduced the Functional Source
66 | License](https://blog.sentry.io/introducing-the-functional-source-license-freedom-without-free-riding/)
67 | (FSL). Both our BSL and the FSL count for what we now classify as "Fair
68 | Source." We have almost five years of history with the practice.
69 |
70 | ## Receipts (Almost)
71 |
72 | Sentry has a dashboard on one of our internal BI platforms that we use to
73 | monitor self-hosted. The data comes from our [opt-in
74 | beacon](https://develop.sentry.dev/self-hosted/#self-hosted-beacon). Of course,
75 | many users do not opt in, or have network configurations that block beacon
76 | traffic even if sent. (A few months ago we noticed a precipitous decline over
77 | the course of an hour. Nearly 20% of instances stopped reporting.
78 | Investigation showed patterns in admin emails of dropped instances that lead us
79 | to hypothesize that China blocked us at the Great Firewall.) The self-hosted
80 | instances visible to us are an unknowable fraction of the overall install base.
81 |
82 | {% include img.html src="dashboard.webp" caption="No, you can't actually see the dashboard." url="https://www.youtube.com/watch?v=dQw4w9WgXcQ" %}
83 |
84 | We show 18,751 self-hosted instances in the wild running versions
85 | published in the past five years, under what we now call Fair Source licenses.
86 | Not all of these are active instances, however, and we had [a bug until
87 | recently](https://github.com/getsentry/sentry/pull/62441) that prevents us from
88 | filtering out inactive instances from versions older than five months. We
89 | currently show 3,950 active instances running versions published in the
90 | past five months. These two bounds, along with the recognition that many
91 | instances do not report their existence to us, led me to [claim **10,000+
92 | instances** as a conservative
93 | estimate](https://twitter.com/chadwhitacre_/status/1790382981028159807).
94 |
95 | As to my claim that users range from hobbyists to FAANG companies, I'm not
96 | going to speak further. I'm content to let those doubt who will.
97 |
98 | ## Formulating the Concept
99 |
100 | Besides doubting my claim about the widespread adoption of Sentry under
101 | licenses that we now call Fair Source, Eric makes another point worth
102 | addressing:
103 |
104 | > There seems to be an inconsistency between the claim that “fair source” is
105 | > already in wide use and the fact that some people are only now getting around
106 | > to naming and formulating the concept and putting up a website about it.
107 |
108 | Let's be careful. I don't claim that "fair source" is already in wide use. I do
109 | claim more modestly that _Sentry_ is already in wide use under licenses that we
110 | now call Fair Source. This is sufficient to disprove Eric's original statement,
111 | that "No corporate legal department will ever sign off on letting a ‘fair
112 | source’ project be used in house[.]" Thousands have.
113 |
114 | {% include img.html src="atlassian.webp" caption="Atlassian's legal department did not drive their migration." url="https://sentry.io/customers/atlassian/" %}
115 |
116 | That said, the roots of Fair Source are not as shallow as they might seem.
117 | [Fair Code](https://web.archive.org/web/20240508232939/https://faircode.io/)
118 | was a similar initiative driven by [n8n](https://n8n.io/) with a [similar
119 | origin story](https://github.com/n8n-io/n8n/issues/40) that [kicked off five
120 | years
121 | ago](https://github.com/faircode-io/faircode/commit/fd15361f8af9c19910f773768f632a1713f3e89b).
122 | They [agree in principle](https://github.com/fairsource/fair.io/issues/10) to
123 | merge into Fair Source when the time is right. The reason they chose Fair
124 | Code in the first place is because Fair Source was already staked out for the
125 | name of a particular license. That license has little traction (it's not listed
126 | in SPDX) and the steward has moved on, making way for us to revive the term for
127 | a wider conversation about what lies between closed source and Open Source.
128 |
129 | What's more, OSI executive director Stefano Maffulli is on record about "[Open
130 | Source’s lost
131 | decade](https://opensource.net/lost-decade-crucial-lessons-for-ai/)":
132 |
133 | > Over the last decade, Open Source hasn’t widely addressed the challenges of
134 | > mobile and cloud computing. That means we don’t have an easy way to judge
135 | > what Open Source means in those contexts.
136 |
137 | Maybe that was OSI's job. Maybe they would have been able to forestall the
138 | proliferation of non-compete licenses—SSPL, RSAL, EL, Commons Clause, BSL, now
139 | FSL. Now OSI is trying to [catch
140 | up](https://opensource.org/blog/practical-open-source-2024-submit-your-proposal),
141 | but the [pot is
142 | poisoned](https://opensource.net/why-single-vendor-is-the-new-proprietary/) for
143 | a company like Sentry. Open Source, like Free Software, takes user freedom as
144 | its sole guiding value. [We value developer
145 | sustainability](https://blog.sentry.io/sentrys-open-source-values/) just as
146 | much. As consumers of Open Source this means [we pay for
147 | it](https://blog.sentry.io/we-just-gave-500-000-dollars-to-open-source-maintainers/).
148 | As producers of software, yes: we are "now getting around to naming and
149 | formulating the concept and putting up a website about it." The reason it took
150 | Sentry so long is because we wanted so badly to make this work inside of Open
151 | Source. Now, like n8n before us, we have
152 | [ceded](https://blog.sentry.io/lets-talk-about-open-source/).
153 |
154 | Agree or disagree with the formulation of Fair Source, arguing against it _a
155 | priori_ is untenable. The proof of the pudding is in the eating, and 10,000+
156 | feast happily.
157 |
--------------------------------------------------------------------------------
/_posts/2024-10-11-a-tale-of-two-leaders.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: A Tale of Two Leaders
3 | excerpt: Matt Mullenweg and Dries Buytaert are showing us starkly contrasting ways of leading an Open Source community.
4 | bluesky: https://bsky.app/profile/chadwhitacre.com/post/3l7lbwm3i4h25
5 | ---
6 |
7 | This is my contribution to the (ongoing) [Great WordPress Drama of
8 | 2024](https://en.wikipedia.org/wiki/WP_Engine#WordPress_dispute_and_lawsuit).
9 | Here are explainers from [Ivan Mehta in
10 | _TechCrunch_](https://techcrunch.com/2024/10/10/wordpress-vs-wp-engine-drama-explained/)
11 | and [Emma Roth in _The
12 | Verge_](https://www.theverge.com/2024/9/27/24256361/wordpress-wp-engine-drama-explained-matt-mullenweg)
13 | to get caught up. Adam Jacob is thorough as usual on [the trademark
14 | angle](https://x.com/adamhjk/status/1844043758800957727). Pelle Wessman [gets
15 | closer](https://x.com/voxpelli/status/1844346017879294449) to what I see as the
16 | heart of the matter:
17 |
18 | > WordPress has given the impression that they are a community owned project
19 | > with WordPress Foundation guaranteeing its independence from any one actor.
20 | >
21 | > But now its become apparent that WordPress Foundation is not.
22 |
23 | Yes, this episode reveals much about the importance of good governance in Open
24 | Source. Along with that, it reveals the importance of good _leadership_.
25 |
26 |
30 |
31 | ## Matt Mullenweg Is a Tragic Tyrant
32 |
33 | It is difficult for me not to interpret Matt Mullenweg's behavior during this
34 | crisis through [the lens of Greek
35 | tragedy](https://brill.com/view/journals/agpt/40/2/article-p234_5.xml):
36 |
37 | > The negative meaning of _tyrannos_ ["tyrant"] is always latent in [Greek] tragedy, even
38 | > where the word is used objectively and not as a term of abuse. _Tyrannos_ does
39 | > not simply indicate a powerful individual but implies absolute power, fortune
40 | > and wealth. This absolute power leads to ruin and tyrannical vice. _Tyrannos_
41 | > signifies not a bad or illegitimate ruler, but rather one with the potential
42 | > to develop such characteristics.
43 |
44 | Against that backdrop, consider the hubris:
45 |
46 | - "[I've been post-economic for probably 19 years
47 | now.](https://x.com/sereedmedia/status/1839394786622722432)"
48 |
49 | - "[WordPress.org just belongs to me personally.](https://www.theverge.com/2024/10/4/24262232/matt-mullenweg-wordpress-org-wp-engine)"
50 |
51 | - "[People think they're a lot more important than they actually are.](https://x.com/photomatt/status/1844188190061756918)"
52 |
53 | The [bristling offense](https://archive.is/TWjAr):
54 |
55 | > The abbreviation 'WP' is not covered by the WordPress trademarks, but please
56 | > don’t use it in a way that confuses people. For example, many people think WP
57 | > Engine is 'WordPress Engine' and officially associated with WordPress, which
58 | > it’s not.
59 |
60 | The thin skin: "[My own mother was confused.](https://wordpress.org/news/2024/09/wp-engine/)"
61 |
62 | The [shakedown](https://automattic.com/2024/10/01/wpe-terms/): "[a royalty fee equal to 8% of its Gross Revenue](https://automattic.com/2024/10/01/wpe-terms/)."
63 |
64 | And then, the "[Automattic Alignment](https://ma.tt/2024/10/alignment/)," the
65 | demand of allegiance:
66 |
67 | - "[I ask everyone in the WordPress community to vote with your
68 | wallet.](https://ma.tt/2024/09/ecosystem-thinking/)"
69 |
70 | - "[If you want to experience WordPress, use any other host in the world besides
71 | WP Engine.](https://wordpress.org/news/2024/09/wp-engine-banned/)"
72 |
73 | - "[I want you all to be informed and involved. Not to stay on the
74 | sidelines](https://x.com/JavierCasares/status/1843963086073733523)."
75 |
76 | And finally, The Checkbox™. Yes, it's [really
77 | there](https://login.wordpress.org/) ([archive](https://archive.is/FqfEr)), and
78 | [you have to check it](https://x.com/chadwhitacre_/status/1844483081413214647) to login.
79 |
80 | {% include img.html src="./the-checkbox.webp" url="https://login.wordpress.org/" caption="Go see for yourself." %}
81 |
82 | WP Engine
83 | [alleges](https://wpengine.com/wp-content/uploads/2024/09/Cease-and-Desist-Letter-to-Automattic-and-Request-to-Preserve-Documents-Sent.pdf)
84 | that Matt "threatened [...] to embark on a self-described 'scorched earth
85 | nuclear approach,'" if they didn't resolve their conflict before his WordCamp
86 | keynote. Whether the specific allegation is true, that certainly describes what
87 | has transpired since. Matt himself called it "[going to
88 | war](https://ma.tt/2024/09/charitable-contributions/)." His keynote is his
89 | "[Spiciest WordCamp Talk
90 | Ever!](https://www.youtube.com/watch?v=fnI-QcVSwMU#t=10m05s)" It [immediately
91 | sent the community
92 | reeling](https://www.reddit.com/r/Wordpress/comments/1flqqm5/matt_just_threw_wp_engine_under_the_bus_hard/)
93 | and [the](https://x.com/LinuxJedi/status/1843966957495939093)
94 | [chaos](https://josepha.blog/2024/10/04/thank-you-wordpress/)
95 | [shows](https://x.com/alexmansfield/status/1844086799406334121)
96 | [no](https://x.com/Rarst/status/1844245533004792129)
97 | [sign](https://x.com/rmccue/status/1843967630585311595)
98 | [of](https://x.com/mor10/status/1842640095087919219)
99 | [letting](https://x.com/jonoalderson/status/1843985559745921046)
100 | [up](https://x.com/xwolf/status/1844407543130619984)
101 | [anytime](https://x.com/sereedmedia/status/1844154707100696931)
102 | [soon](https://x.com/LucP/status/1843926970763227255).
103 |
104 | Moreover, Matt's current behavior is in keeping with his past behavior, as Wes Bos
105 | [pointed out](https://x.com/wesbos/status/1839122560597848533): "Real ones
106 | remember the @photomatt and @pearsonified thesis theme spat of 2010." I'm not a
107 | real one so I had to [read up on
108 | it](https://poststatus.com/thesis-automattic-and-wordpress/). Vicious, highly
109 | public conflict seems to be part of Matt's _modus operandi_, part of his
110 | character as a leader.
111 |
112 | The essence of tyranny is absolute power, corrupting absolutely. **Matt does
113 | not share power.** The WordPress Foundation [is a
114 | sham](https://x.com/voxpelli/status/1839264084350369806). He is on the
115 | tyrant's path.
116 |
117 | ## Dries Buytaert Is a Gentle Giant
118 |
119 | {% include img.html src="./dries-and-matt.jpg" url="https://dri.es/two-internet-entrepreneurs-walk-into-an-old-publishing-house" caption="Dries and Matt in 2019, from Dries' blog. CC-BY-NC" %}
120 |
121 | In the heat of the WordPress drama, it's easy to forget that there's another GPL
122 | PHP CMS powering a good chunk of the other 57% of the Web: Drupal. Its founder,
123 | Dries Buytaert, [has all the answers to resolve the WordPress
124 | crisis](https://dri.es/solving-the-maker-taker-problem). No joke.
125 |
126 | Dries' work with Drupal is [a master-class in institution-building for governing
127 | the
128 | commons](https://dri.es/balancing-makers-and-takers-to-scale-and-sustain-open-source).
129 | Elinor Ostrom [wrote the book on this](https://www.amazon.com/dp/1107569788),
130 | which [I summarized in an early
131 | post](https://openpath.quest/2024/the-case-for-a-new-institution/#a-commons-is-an-institution).
132 | The summary of the summary is that healthy commons exhibit seven attributes:
133 |
134 | 1. Clearly defined boundaries
135 | 1. Congruence between appropriation and provision rules and local conditions
136 | 1. Collective-choice arrangements
137 | 1. Monitoring
138 | 1. Graduated sanctions
139 | 1. Conflict-resolution mechanisms
140 | 1. Minimal recognition of rights to organize
141 |
142 | Drupal exhibits all of these, because Dries [explicitly grew Drupal according
143 | to the best research on governing the
144 | commons](https://dri.es/balancing-makers-and-takers-to-scale-and-sustain-open-source).
145 | He created the Drupal Association as a truly independent, credible non-profit.
146 | Dries' company Acquia is one company among many operating on equal terms. The
147 | Drupal community has evolved a complex system of non-monetary accounting for
148 | contributions to the Drupal project, with the Association trusted to carry out
149 | monitoring and enforcement. [Go read Dries' deep dive from five years
150 | ago](https://dri.es/balancing-makers-and-takers-to-scale-and-sustain-open-source).
151 | It's awesome.
152 |
153 | In short, **Dries shares power.** This is the key to Drupal's success, and
154 | inspiring testament to Dries' remarkable character as a leader. What's more,
155 | Dries' irenic tone is exceedingly refreshing. From his
156 | [latest](https://dri.es/solving-the-maker-taker-problem):
157 |
158 | > Although this post was prompted by the controversy between Automattic and WP
159 | > Engine, it is _not_ about them. I don't have insight into their respective
160 | > contributions to WordPress, and I'm not here to judge. I've made an effort to
161 | > keep this post as neutral as possible.
162 |
163 | He just comes across as a really good guy, who has done a lot of really great
164 | work with Drupal and genuinely wants to see others and Open Source succeed.
165 | When he says he considers Matt a good friend, I believe him. If I see hope for
166 | WordPress, it's that peers such as Dries might get through to Matt with
167 | constructive feedback leading to personal growth, and a relaxed grip on
168 | power in the WordPress community.
169 |
170 | ## Two Paths for WordPress
171 |
172 | I think Matt is right that WP Engine is hurting the WordPress community. They
173 | are paradigmatic "Takers" in [Dries'
174 | model](https://dri.es/balancing-makers-and-takers-to-scale-and-sustain-open-source).
175 | As we wrestle with the questions of trademarks and licensing and sustainability
176 | and funding and governance in Open Source that this situation presents, let's
177 | also not forget about leadership.
178 |
179 | For better or worse, organizations and institutions and communities have
180 | leaders. For better or worse, leaders put their stamp on the groups they lead,
181 | often in subtle and far-reaching ways. All leaders make mistakes. Nobody is
182 | perfect (I attest from personal experience ;-). Power can be difficult to
183 | share. Personal growth can be deeply ... personal.
184 |
185 | If Matt does not want to share power in a true Open Source community, he could
186 | at least be more honest about it. We invented [Fair Source](https://fair.io/)
187 | precisely for companies who want to share to an extent while maintaining
188 | control over their core software products. Relicensing might be Matt's most
189 | honest option, since a fork already seems likelier every day (smart money says
190 | Linux Foundation has been courting WP Engine behind the scenes for weeks
191 | now).
192 |
193 | If Matt _does_ want WordPress to live up to its potential as a true Open Source
194 | community, he should follow Dries' advice and make the WordPress Foundation
195 | truly independent of Automattic, with well-designed governance. It won't be
196 | easy. There's a lot of mistrust to overcome. He probably needs to offer WP
197 | Engine a board seat to convince them to shift from Taker to Maker.
198 |
199 | One way or another, **letting go of power is the only cure for tyranny**. It's
200 | not too late for Matt to embark on a path to deeper growth as a leader.
201 | Thoughtfully sharing power would heal and revitalize the WordPress community
202 | and be an inspiration to all of us in Open Source.
203 |
204 | ---
205 |
206 | _Thanks to Michael Selvidge for commenting on a draft of this post._
207 |
--------------------------------------------------------------------------------
/_posts/2024-10-14-leadership-and-power-in-open-source.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Leadership and Power in Open Source
3 | excerpt: Open Source offers a check on power, yet some ways of wielding power are still better than others.
4 | bluesky: https://bsky.app/profile/chadwhitacre.com/post/3lbvny4gy722o
5 | homepage_rank: 2
6 | ---
7 |
8 | Last week I waded into the Great WordPress Drama of 2024 with a post comparing
9 | Matt Mullenweg's leadership of WordPress with Dries Buytaert's leadership of
10 | Drupal. My conclusion was that [Matt does not share power](/2024/a-tale-of-two-leaders/).
11 |
12 | Besides Dries, another key interlocutor of Matt's during this crisis is David
13 | Heinemeier Hansson, whose name I have yet to be able to spell confidently
14 | without checking, despite having followed his work and crossed paths a bit
15 | since 2004. DHH, let's call him. Shall we?
16 |
17 | Matt published [a reply to DHH](https://ma.tt/2024/10/on-dhh/) today [update:
18 | Matt took down the original], which sorta is-what-it-is, par for the course in
19 | the fight Matt is waging. What I found more interesting was [this related
20 | post](https://ma.tt/2019/10/debating-oss-with-dhh/) from 2019, about a
21 | conversation Matt had with DHH on the Rework Podcast entitled, "[Open Source
22 | and Power with Matt
23 | Mullenweg](https://37signals.com/podcast/open-source-and-power-with-matt-mullenweg/)."
24 |
25 | {% include img.html src="old-call.webp" caption="Might be just a bit relevant lol" url="https://37signals.com/podcast/open-source-and-power-with-matt-mullenweg/" %}
26 |
27 | The context was Automattic's Series D, and an emerging narrative around growing
28 | WordPress from 34% of the web to 85%. Today WordPress is at 57%, so Matt is
29 | right on track, I guess. At the time, David rankled at one company
30 | consolidating so much power. A Twitter exchange evolved into [the podcast
31 | episode](https://37signals.com/podcast/open-source-and-power-with-matt-mullenweg/).
32 | tl;dr Matt _really_ does not share power—except when he does, then he
33 | _really_ does.
34 |
35 | ## Evil Monopoly Stuff
36 |
37 | There are some quotes in Matt and David's call that are really juicy in light
38 | of the current crisis. Here's the juiciest, at 13:32:
39 |
40 | > And the truth is that if I had an evil hat on—like let’s say I started doing
41 | > evil monopoly stuff—people could easily fork the software, and they would ...
42 | > tomorrow! So there’s a checks and balances there.
43 |
44 | David pushed back on the feasability of a fork against such a large incumbent,
45 | but today we have Valkey and OpenTofu as existence proofs that it can and will be
46 | done. Who among us will be surprised if and when Linux Foundation and WP Engine
47 | [announce OpenPress](https://x.com/jessethanley/status/1839087749271531655) or
48 | whatever?
49 |
50 | {% include img.html src="openpress.com.webp" caption="Veeeeeery interesting indeed." url="https://openpress.com/" %}
51 |
52 | Here's the kicker: **Any fork, _especially_ if WP Engine backs it, will be a
53 | win for Matt**. It means they're finally contributing. Since it's GPL their
54 | modifications are available to everyone else, including Automattic. And it's
55 | what Matt has said all along. Here he is at 49:25:
56 |
57 | > I think in "the benevolent dictator," which is an interesting sidebar, I really
58 | > like the benevolent part. And again, I think on the dictator part, I don’t
59 | > love that terminology. I don’t think either of us would be attached to that.
60 | > But in other places, you know, companies, they typically have a CEO.
61 | > Countries, they typically have presidents or something like that. And all of
62 | > these systems are set up to have checks and balances, whether that’s a board
63 | > or shareholders or voters or things like that. And if you don’t like your
64 | > country for example, it’s really actually difficult to move to another one
65 | > and opt into like a different governance system. But in software it is a
66 | > hundred, a thousand, a million times easier than like uprooting your family
67 | > and your friends and everything like that and moving to a different country.
68 |
69 | > Actually, Free Software Foundation is a good example of that. Myself
70 | > and many others drifted away from them over the years. So, even though they
71 | > started things, their influence got smaller and smaller and smaller as they
72 | > took positions which didn’t really align with the future where people were
73 | > going or where their constituents, be that developers, users, donors,
74 | > whatever, were headed.
75 |
76 | > To the extent that Rails is doing great, WordPress, is doing great, et
77 | > cetera, I think that we’ve been responsive to changes in the marketplace. I
78 | > think that term started as a joke. There is something interesting that with a
79 | > lot of these Open Source projects there’s almost nothing you can name on the
80 | > list that has a committee-based leadership structure. And I think about that
81 | > all the time. Like, why is it difficult for committees or an alternative
82 | > governance structure to create really great software, backend software,
83 | > frontend software. You typically have something more like a director of a
84 | > movie or a conductor of an orchestra. There’s no perfect analogies because
85 | > it’s software, it’s different. But you typically have a person with whom a
86 | > great deal of decision-making power for determining the platform rests and
87 | > that is often a good thing for the health and quality of the platform, and I
88 | > don’t mind it as much because we have these checks and balances with Open
89 | > Source forking or all sorts of different ways that people can opt out of that
90 | > person’s power.
91 |
92 | It's hard for me to fault his main point. Personally, I can't stand WordPress
93 | as a software product. It really frustrates me every time I have to use it. So
94 | I don't, for the most part. That's me opting out of Matt's power. If I did love
95 | WordPress and didn't like what Matt is doing, I would think about contributing
96 | to a fork. He's right that Open Source provides a meaningful check-and-balance
97 | that, e.g., Mark Zuckerberg does not have. David finds this to be "[uncharted
98 | and dangerous territory for open
99 | source](https://x.com/dhh/status/1845197490829889605)," but I'm not sure it's
100 | not fine. Matt is being quite aggressive, yes. But WP Engine really was a
101 | "Taker," in Dries'
102 | [terminology](https://dri.es/solving-the-maker-taker-problem). Dries' patient,
103 | thoughtful approach to resolving the Maker/Taker problem is inspiring to me.
104 | Matt's tyrannical approach is not. But I'm free to opt out of Matt's power, so
105 | what's the problem?
106 |
107 | In Matt's [reply to DHH](https://ma.tt/2024/10/on-dhh/) [update: Matt took down
108 | the original], he called out David and Dries for holding the trademarks for
109 | Ruby on Rails and Drupal, rather than vesting those with their respective
110 | foundations. He has a point there, as well.
111 |
112 | What I'm seeing here is a clarification of ways to lead in Open Source, ways to
113 | wield power. I'm grateful that I can opt out of people's power in Open Source,
114 | and I trust that the best ways of wielding it will win out over time.
115 |
116 | ## P.S. Yay For More Emotional Bandwidth
117 |
118 | By the way, I love that we're finally learning to move conversations from
119 | text-based online communication, which has low emotional bandwidth, to podcasts
120 | and video calls, which have higher emotional bandwidth. Just the other week I
121 | did two of these, with [Peer
122 | Richelsen](https://x.com/chadwhitacre_/status/1839348202660638802) and with
123 | [Pete from Hugging Face](https://www.youtube.com/watch?v=QdUfB-hBoqk). I first
124 | experienced the power of this practice [back in 2013, with
125 | DHH](https://www.youtube.com/watch?v=p1E-svVd9Xc), in fact. We talked about
126 | [mixing Open Source and
127 | money](https://dhh.dk/2013/the-perils-of-mixing-open-source-and-money.html),
128 | which is [still highly
129 | relevant](https://lucumr.pocoo.org/2024/10/14/mixing-oss-and-money/).
130 |
131 | {% include img.html src="open-call.webp" caption="Streamed 10 years ago." url="https://www.youtube.com/watch?v=p1E-svVd9Xc" %}
132 |
133 | The roots go back much further. The term [emotional bandwidth is Mitch Kapor's,
134 | from 1995](https://tricycle.org/magazine/emotional-bandwidth/). Mitch was
135 | wrestling with the tension between the promise of the early Internet to bring
136 | people together, and the reality of the flamewars and conflict that we ended up
137 | in, even back then. "The answer," he wrote, "may lie in increasing the emotional
138 | bandwidth of communication." But he could only dream of the future we're living
139 | in today:
140 |
141 | > As telephone systems are upgraded and cable television becomes an access path
142 | > to the Internet, higher speed connections capable of carrying voice and face
143 | > will become much more common.
144 |
145 | We're pretty accustomed to dropping to a call in our work lives, inside our
146 | companies. It's great progress that we're starting to see more of this in
147 | public life as well. Hopefully someday national presidential politics will
148 | catch up. ;-)
149 |
--------------------------------------------------------------------------------
/_posts/2024-11-04-thank-you-ben.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Thank You, Ben
3 | excerpt: Ben Vinegar hired me into Sentry four years ago, and now he is moving on. Allow me a few words.
4 | bluesky: https://bsky.app/profile/chadwhitacre.com/post/3la57ptdk5n2w
5 | ---
6 |
7 | One of my favorite books on leadership is The Captain
9 | Class, by Sam Walker. It
10 | is a delightfully thorough study of the top sports dynasties of all time. Based
11 | on a number of criteria—teams of 5+ players, competing at a national or
12 | international level, winning 4+ annual championships in a row—it turns out
13 | there are only 17 truly elite teams in sports history.
14 |
15 | The thesis of the book is that it's not a star player or a brilliant coach that
16 | sets legendary teams apart. No, it's rather the presence of an exceptional
17 | **captain**, a player with an extreme drive to win, who commands the respect of his
18 | or her teammates and works relentlessly to level up everyone else, in ways that
19 | the crowd never sees.
20 |
21 | Ben Vinegar was not the founder or CEO or CTO of
22 | Team Sentry. He was the captain.
23 |
24 | Thanks for hiring me in, Ben, and for a great run. All the best on what's next.
25 | 🫡 💃
26 |
--------------------------------------------------------------------------------
/_posts/2025-02-01-point-four-of-elons-fork-is-the-scary-one.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Point Four of Elon's Fork is the Scary One"
3 | excerpt: "The concept of a 'fork' comes from Open Source software, and it means a schism."
4 | ---
5 |
6 | Have you read Elon's "[Fork in the Road](https://www.opm.gov/fork)" email? This
7 | is the one where he starts doing to the United States government what he did to
8 | Twitter.
9 |
10 | Honestly, I'm kind of in the camp that Twitter as a software product is as good
11 | or better now than it was before, with an order of magnitude less staff.
12 | Certainly the [chicken-little about its impending catastrophic
13 | failure](https://www.zdnet.com/article/why-twitter-will-fail-shortly/) was
14 | wrong. Elon _does_ seem (to this casual observer) to have made it much more
15 | efficient, and I have no reason to doubt he can do the same with the federal
16 | government. Maybe that's not so bad.
17 |
18 | However, only three of the four points in Fork in the Road—"Return to Office,"
19 | "Performance culture," and "More streamlined and flexible workforce"—are about
20 | efficiency. The fourth point, entitled "Enhanced standards of conduct," is the
21 | one that seems to indicate the most dramatic, far-reaching change (emphasis
22 | mine):
23 |
24 | > **The federal workforce should be comprised of employees who are reliable,
25 | loyal, trustworthy**, and who strive for excellence in their daily work.
26 | Employees will be subject to enhanced standards of suitability and conduct as
27 | we move forward. Employees who engage in unlawful behavior **or other
28 | misconduct** will be prioritized for appropriate investigation and discipline,
29 | including termination.
30 |
31 | If the referent of loyalty were the Constitution, that would be one thing. To
32 | this casual observer, the referent is Trump. If future historians come to see
33 | Trump as one who shifted America away from the [rule of
34 | law](https://en.wikipedia.org/wiki/Rule_of_law), point four of "Fork in the
35 | Road" may be a key text.
36 |
37 | Elon's choice of the word "fork" is quite interesting. [A fork in the context
38 | of an Open Source software
39 | project](https://en.wikipedia.org/wiki/Fork_(software_development)) is a split
40 | in the software project community (emphasis mine):
41 |
42 | > In software engineering, a project fork happens when developers take a copy
43 | of source code from one software package and start independent development on
44 | it, creating a distinct and separate piece of software. The term often implies
45 | not merely a development branch, but also a split in the developer community;
46 | as such, it is **a form of schism**.
47 |
48 | I don't expect Trump to have known this meaning of the word. Perhaps Elon
49 | explained it to him.
50 |
51 | Empires don't last forever. [Neither do
52 | republics](/2025/the-birth-of-the-american-empire/).
53 |
--------------------------------------------------------------------------------
/_posts/2025-02-03-the-birth-of-the-american-empire.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Birth of the American Empire
3 | excerpt: We may have just witnessed the end of the Republic, with the accession of Augustus Musk.
4 | ---
5 |
6 | Yesterday I [commented on point
7 | four](/2025/point-four-of-elons-fork-is-the-scary-one/) of Elon Musk's "[Fork
8 | in the Road](https://www.opm.gov/fork)" document.
9 | "[Fork](https://en.wikipedia.org/wiki/Fork_(software_development))" is a
10 | technical term in Open Source software that refers to a schism in the community
11 | behind a project.
12 | [Unfolding](https://www.reuters.com/world/us/musk-aides-lock-government-workers-out-computer-systems-us-agency-sources-say-2025-01-31/)
13 | [developments](https://www.washingtonpost.com/business/2025/01/31/elon-musk-treasury-department-payment-systems/)
14 | [suggest](https://www.wired.com/story/elon-musk-government-young-engineers/)
15 | that point four may indeed signal [the end of the rule of
16 | law](/2025/point-four-of-elons-fork-is-the-scary-one/) in the United States of
17 | America. What comes after? Empire.
18 |
19 | ## Hail Caesar
20 |
21 | Elon thinks about the Roman Empire [every
22 | day](https://www.reddit.com/r/EnoughMuskSpam/comments/16k06r1/elon_says_he_thinks_about_the_roman_empire_every/).
23 | His supporters call his controversial gesture at the inauguration [a Roman
24 | salute](https://theconversation.com/elon-musk-and-the-history-of-the-roman-salute-248032).
25 |
26 | {% include img.html src="hail-caesar.webp" caption="Hail Caesar!" %}
27 |
28 | The [Roman Republic](https://en.wikipedia.org/wiki/Roman_Republic) gave way to
29 | the [Roman Empire](https://en.wikipedia.org/wiki/Roman_Empire) in 27 BC, when
30 | Octavian took the title [Augustus
31 | Caesar](https://en.wikipedia.org/wiki/Augustus):
32 |
33 | > The reign of Augustus initiated an imperial cult, as well as an era of
34 | > imperial peace (the _Pax Romana_ or _Pax Augusta_) in which the Roman world
35 | > was largely free of armed conflict.
36 |
37 | Elon's Twitter bio once read "[Imperator of
38 | Mars](https://www.newsweek.com/elon-musk-imperator-mars-meaning-definition-twitter-bio-1582768)."
39 | Imperator is a "title conferred by the Roman senate on Julius Caesar and
40 | Augustus and adopted by later successors."
41 |
42 | I strongly suspect that in Elon's mind, January 20, 2025 was the end of the
43 | American Republic, and the birth of the American Empire. I suspect he thinks of
44 | himself as having forked the United States as Octavian did Rome.
45 |
46 | ## So What?
47 |
48 | If Elon has essentially succeeded in forking America into an empire under his
49 | Caesar-ship, what does it mean? Here are a few brief comments on what may turn
50 | out to have been one of the pivotal moments of human history:
51 |
52 | 1. Many will accept Musk's rise to power as good news.
53 |
54 | 1. I don't see this change being forcibly reverted in the short term. The next
55 | election will be a critical test.
56 |
57 | 1. [Unlike Rome](https://en.wikipedia.org/wiki/War_of_Actium), this transition
58 | happened without an overt war (so far), which is good.
59 |
60 | 1. Elon seems to me likely to succeed in making the U.S. more efficient and
61 | effective, based on his success with Twitter and his other companies.
62 |
63 | 1. Once consolidated, Elon is likely to use his new power primarily to pursue
64 | his [interplanetary
65 | agenda](https://nss.org/elon-musk-making-humans-a-multiplanetary-species/).
66 |
67 | 1. In empires, succession is often inefficient. Clearly Musk has positioned
68 | himself to succeed (preempt?) Trump. Who succeeds Musk? According to what
69 | process?
70 |
71 | 1. It hasn't happened yet, but Elon indicated he would return Twitter to a public
72 | company after reorganizing it as X. Is there a world in which he returns the
73 | U.S. to a republic once he has run his course?
74 |
75 | 1. This is a salient time to worship a deity other than Caesar.
76 |
--------------------------------------------------------------------------------
/_posts/2025-02-25-luke-missed-the-memo.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Luke Missed the Memo
3 | excerpt: The OSI is not being arbitrary and capricious.
4 | bluesky: https://bsky.app/profile/chadwhitacre.com/post/3liz2htc3sc2x
5 | ---
6 |
7 | This is a response to Luke Faraone's post, "[I'm running for the OSI board...
8 | maybe](https://blog.luke.wf/2025/02/im-running-for-osi-board-maybe.html)."
9 | ([HN](https://news.ycombinator.com/item?id=43121920),
10 | [X](https://x.com/lfaraone/status/1892719576137294167),
11 | [bsky](https://bsky.app/profile/lwf.bsky.social/post/3linixuf7s22e)).
12 | I tried
13 | leaving this as a comment on Luke's blog, but only members of the blog may post
14 | comments.
15 |
16 | And yes I'm running. [Vote March 7](https://opensource.org/blog/get-ready-to-vote-for-osis-board-of-directors-in-2025)! :-)
17 |
18 |
22 |
23 | ### My Comment for Luke's Blog
24 |
25 | I received the following email from OSI on February 14. It looks to me like a
26 | generic email sent to the whole membership list, and the timezone is clearly
27 | defined. Were you a member of OSI on February 14? Did you receive this email?
28 |
29 | (Your post _does_ explain some of Bradley's questions on the call. ;-)
30 |
31 | ----
32 |
33 | From: OSI Team
34 | Subject: Your chance to shape the future of Open Source – self-nominate today!
35 |
36 | Dear Chad,
37 |
38 | Time is running out! Nominations for the OSI Board of Directors close soon, and
39 | we want you to take part. If you’re passionate about Open Source and ready to
40 | lead, consider nominating yourself.
41 |
42 | Nomination Deadline: Monday 11:59 pm UTC *(3:59 pm PST / 6:59 pm EST / 12:59 am
43 | CET [Tuesday] / 7:59 am CST [Tuesday])*
44 |
45 | As a full member of OSI, your vision and leadership can drive innovation and
46 | create lasting impact in our community.
47 |
48 | [Learn
49 | more](https://opensource.org/about/board-of-directors/elections/individual)
50 | about the nomination process and seize this opportunity to help shape the
51 | future of Open Source!
52 |
53 |
54 |
55 | Best regards,
56 |
57 | OSI Election Committee
58 |
59 | --
60 |
61 | 8605 Santa Monica Blvd
62 | PMB 63639
63 | West Hollywood, California 90069-4109
64 | United States
65 |
66 | [Stop receiving](https://members.opensource.org/civicrm/mailing/unsubscribe/) these emails.
67 |
--------------------------------------------------------------------------------
/_posts/2025-02-27-how-to-vote-in-the-2025-osi-election.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: How to Vote in the 2025 OSI Election
3 | excerpt: Join the Open Source Initiative (OSI) before March 7. Watch your email for a link. Vote before March 17.
4 | ---
5 |
6 | I'm running in the [Open Source Initiative (OSI) Board of Directors
7 | election](https://opensource.org/blog/get-ready-to-vote-for-osis-board-of-directors-in-2025).
8 | I intend to say more next week about _why_ you should vote and what I am bringing to
9 | the table. For now I wanted to get the word out about _how_ to vote.
10 |
11 | {% include youtube.html video_id="e20ShFBD1fg" %}
12 |
13 | Voting is open to all [dues-paying
14 | members](https://members.opensource.org/join/) of the OSI. There are two "full"
15 | (aka paid) membership levels:
16 |
17 | 1. Supporting for $50/year, and
18 | 2. Professional for $300/yr.
19 |
20 | There is a Basic tier that's free but doesn't carry voting privileges. The link
21 | to vote will go out in email on March 7, and **voting closes on March 17 at 5:00
22 | UTC**. The candidates should be announced tomorrow (February 28) and the results
23 | should be announced by March 24.
24 |
25 | If you care about Open Source—whether Open Source AI, or open-washing, or [the
26 | Open Source sustainability
27 | crisis](https://openpath.quest/2024/the-open-source-sustainability-crisis/), or
28 | any of a number of other issues—[join OSI before March
29 | 7](https://members.opensource.org/join/) and watch your email to vote in the
30 | election by March 17. Let's move Open Source forward together!
31 |
--------------------------------------------------------------------------------
/assets/Czarin-Medium.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/assets/Czarin-Medium.otf
--------------------------------------------------------------------------------
/assets/banner.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/assets/banner.webp
--------------------------------------------------------------------------------
/assets/chadwhitacre.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/assets/chadwhitacre.jpg
--------------------------------------------------------------------------------
/assets/email-header.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/assets/email-header.jpg
--------------------------------------------------------------------------------
/assets/hero.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chadwhitacre/openpath/7c807df966f05f79ebb8f1f172a4556857d337dd/assets/hero.webp
--------------------------------------------------------------------------------
/assets/replies.js:
--------------------------------------------------------------------------------
1 | // Heavily modified from https://github.com/czue/bluesky-comments under MIT.
2 | // This file is also under MIT.
3 |
4 | const ICONS = {
5 | bsky: ``,
6 | heart: ``,
7 | repost: ``,
8 | reply: ``
9 | };
10 |
11 | class BlueskyReplies {
12 | constructor(selector, httpUri, atUri) {
13 | this.container = document.querySelector(selector);
14 | this.uri = atUri;
15 | this.httpUri = httpUri;
16 | this.visibleCount = 3;
17 | this.thread = null;
18 | this.init();
19 | }
20 |
21 | async init() {
22 | try {
23 | this.renderMessage('Loading ...');
24 | await this.fetchThreadData();
25 | this.render();
26 | } catch (err) {
27 | this.renderMessage(`Failed to load replies for ${this.httpUri}: ${err.message}`);
28 | }
29 | }
30 |
31 | renderMessage(message) {
32 | this.container.innerHTML = `