forked from OpenTechStrategies/open-source-archetypes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
open-source-archetypes.ltx
2306 lines (2010 loc) · 111 KB
/
open-source-archetypes.ltx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\documentclass[12pt]{otsreport}
% Uncomment the following line to disable hyphenation.
%\usepackage[none]{hyphenat}
\usepackage{ots}
\usepackage{amsmath}
\usepackage{setspace} % to control TOC spacing
% This package gives us \RaggedRight to use in place of \raggedright.
% Doing so solves the problem of our big Archetype comparison chart
% (which is implement as a longtable) not being ragged-right in cells.
% For more details, see section 2.1 on page 351 of Klaus Höppner's
% "Typesetting tables with LaTeX" at
% https://www.tug.org/TUGboat/tb28-3/tb90hoeppner.pdf.
\usepackage{ragged2e}
% For coloring individual cells in tables.
\usepackage[table]{xcolor}
% Define colors used in this document here. latexcolor.com may help.
\definecolor{tableheader}{rgb}{0.6, 0.73, 0.89}
\definecolor{rowheaderleft}{rgb}{0.63, 0.79, 0.95}
\definecolor{plainwhite}{rgb}{1, 1, 1}
% Some good blue-y colors Karl found, FWIW:
%
% Eton blue #96C8A2 {0.59, 0.78, 0.64}
% Carolina blue #99BADD {0.6, 0.73, 0.89}
% Baby blue eyes #A1CAF1 {0.63, 0.79, 0.95}
%
% Less sure about these green ones, but they might work together:
%
% Moss green #ADDFAD {0.68, 0.87, 0.68}
% Olivine #9AB973 {0.6, 0.73, 0.45}
% Turquoise green #A0D6B4 {0.63, 0.84, 0.71}
% Without this, a multiline footnote has its first line (including the
% footnote's identifying number) indented by quite a bit inside the
% margin, but then subsequent lines start at the margin, which just
% looks weird IMHO. With this, the numbers start at the margin, and
% all the lines of text line up with each other, indented slightly.
%
% See https://www.ctan.org/pkg/footmisc?lang=en
\usepackage[hang,flushmargin]{footmisc}
\usepackage{ifxetex,ifluatex}
\ifxetex
\usepackage{fontspec,xltxtra,xunicode}
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\else
\ifluatex
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\else
\usepackage[utf8]{inputenc}
\fi
\fi
\newenvironment{absolutelynopagebreak}
{\par\nobreak\vfil\penalty0\vfilneg
\vtop\bgroup}
{\par\xdef\tpd{\the\prevdepth}\egroup
\prevdepth=\tpd}
% This TOC depth causes the table of contents to provide a high-level
% overview of the document, instead of distracting the reader with
% subsection titles and such.
\setcounter{tocdepth}{1}
\usepackage{enumerate}
\usepackage{enumitem}
\ifxetex
\usepackage[setpagesize=false, % page size defined by xetex
unicode=false, % unicode breaks when used with xetex
xetex]{hyperref}
\else
\usepackage[unicode=true]{hyperref}
\fi
\hypersetup{breaklinks=true, pdfborder={0 0 0}}
\setlength{\parindent}{0pt}
\setlength{\parskip}{7pt plus 2pt minus 1pt}
\setcounter{secnumdepth}{0}
\usepackage[margin=1in]{geometry}
\usepackage{changepage}
\usepackage{hyperref}
\usepackage{mdframed} % For an inset box of text
% For logo and accompanying contact info.
\usepackage{graphicx}
\usepackage{float}
\usepackage{color}
\definecolor{dkgreen}{RGB}{50, 109, 72}
\definecolor{dkergreen}{RGB}{0, 100, 0}
\DeclareFixedFont{\viiisf}{OT1}{cmss}{m}{n}{8}
\newcommand{\circlesep}{\raisebox{1.7em}{\hspace{1.8em}\includegraphics[clip, trim=0cm 11cm 19.3cm 11cm, scale=0.05]{otslogo.pdf}\hspace{1.8em}}}
% Use these (instead of \section) to make a top-level section for
% which numbering is on or off, respectively. For most of the
% sections, numbering should be on, but for a few it should be off.
%
% For appendices, use \appdxsection. For Appendix sub and subsubs,
% use appdxsubsection and appdxsubsubsection.
\newcommand{\unnumberedsection}[1]{%
% \newpage
\setcounter{secnumdepth}{-1}\section{#1}}
\newcommand{\numberedsection}[1]{%
% \newpage
\setcounter{secnumdepth}{3}\section{#1}}
\newcommand{\appdxsection}[1]{%
% Save existing section format
\let\oldthesection\thesection
% Create a subsection line in the doc and establish the name of the
% section for label purposes, but don't put it in the TOC
\renewcommand{\thesection}{Appendix \Alph{section}}
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
\hypersetup{bookmarksdepth=0}
\section{#1}
\hypersetup{bookmarksdepth=4}
\addtocontents{toc}{\protect\setcounter{tocdepth}{4}}
% Manually make a line for the TOC without the "Appendix" bit in
\addcontentsline{toc}{section}{\hspace{0.2em}\thesection\hspace{0.5em}#1}
%\addcontentsline{toc}{subsubsection}{\parbox{0.45in}{\hfill\thesubsubsection}\hspace{1em}#1\Dotfill\hspace{0.35em}}
% Restore normal section format
\let\thesection\oldthesection
}
\newcommand{\appdxsubsection}[1]{%
% Save existing section format
\let\oldthesection\thesection
% Create a subsection line in the doc and establish the name of the
% section for label purposes, but don't put it in the TOC
\renewcommand{\thesection}{Appendix \Alph{section}}
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
\hypersetup{bookmarksdepth=0}
\subsection{#1}
\hypersetup{bookmarksdepth=4}
\addtocontents{toc}{\protect\setcounter{tocdepth}{4}}
% Manually make a line for the TOC without the "Appendix" bit in
\renewcommand{\thesection}{\Alph{section}}
\addcontentsline{toc}{subsection}{\thesubsection\hspace{0.5em}#1}
% Restore normal section format
\let\thesection\oldthesection
}
\newcommand{\appdxsubsubsection}[1]{%
% Save existing section format
\let\oldthesection\thesection
% Create a subsection line in the doc and establish the name of the
% section for label purposes, but don't put it in the TOC
\renewcommand{\thesection}{Appendix \Alph{section}}
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
\hypersetup{bookmarksdepth=0}
\subsubsection{#1}
\hypersetup{bookmarksdepth=4}
\addtocontents{toc}{\protect\setcounter{tocdepth}{4}}
% Manually make a line for the TOC without the "Appendix" bit in
\renewcommand{\thesection}{\Alph{section}}
\addcontentsline{toc}{subsubsection}{\hspace{0.2em}\thesubsubsection\hspace{0.5em}#1}
%\addcontentsline{toc}{subsubsection}{\parbox{0.45in}{\hfill\thesubsubsection}\hspace{1em}#1\Dotfill\hspace{0.35em}}
% Restore normal section format
\let\thesection\oldthesection
}
% Use this to refer to a [sub[sub]]section from elsewhere,
% assuming you want to include both its number and its name.
\newcommand{\fullref}[1]{%
\ref{#1}~``\nameref{#1}''}
% Rename the table of contents label
\renewcommand*\contentsname{\vspace{-1em}}
\begin{document}
\otsheader
% Must happen after \otsheader so that the header displays correctly.
\RaggedRight
\begin{center}
\LARGE{Open Source Archetypes: \\
A Framework For Purposeful Open Source}
\vspace{.5em}
\normalsize{3 May 2018}
\end{center}
% The grouping with the \addtocontents and \addvspace bits below are
% to reduce the vertical spacing in the TOC. More information here:
% https://tex.stackexchange.com/questions/111243/lyx-reduce-spacing-in-toc
\begingroup
% \addtocontents{toc}{\protect\setstretch{0.80}}
% \def\addvspace#1{}
\tableofcontents
\endgroup
\newpage
\unnumberedsection{Preface to the Public Edition}\label{preface}
This report was originally commissioned by the Mozilla Corporation for
internal purposes. Mozilla wanted a shared framework for discussing
its options in running open source projects, and requested a survey
and comparative analysis of open source project archetypes --- the
various shapes that open source projects take in order to meet their
various goals. For example, should a project prioritize development
momentum over early collaborator acquisition, or \foreignphrase{vice
versa}? Should it optimize for individual contributors or for
institutional partners? Different projects will have different
answers to these and many other questions.
The benefits of having a common vocabulary of archetypes extend beyond
Mozilla, however, and the vocabulary is more useful and more easily
improvable the more widely it is shared. Accordingly, Mozilla decided
to release the report publicly. Very little has been changed from the
original internal version: the Mozilla-specific orientation has been
left intact, on the theory that the analysis will be clearer if tuned
to a specific (and fortunately well-known) organization rather than
rewritten for a hypothetical general audience.
We emphasize that this is very much a version 1.0. There may be
important archetypes we have not thought of, and for the archetypes we
have identified there may be important properties not discussed here.
We intend this report to be the beginning of a longer conversation
about open source project archetypes. Version 2.0 may or may not come
from us, and may or may not even come from a single source; we think
it will exist eventually, however, and we hope that when it does 1.0
will be regarded as a worthy ancestor.
\newpage
\unnumberedsection{Introduction}\label{introduction}
Producing open source software is part of the core culture at Mozilla,
and has been since the organization's founding. It is one of
Mozilla's greatest strengths and is a key element of Mozilla's
identity both internally and in the world at large.
By ``open source'', we mean software released publicly under a license
that is both a free software license according to the
FSF\footnote{\otsurl{https://fsf.org}} and an open source license
according to the
OSI\footnote{\otsurl{https://opensource.org}}\footnote{This definition
excludes the Creative Commons Attribution (CC-BY) license, the
Attribution-ShareAlike (CC-BY-SA) license, and the CC-Zero (CC0)
public domain dedication. Although they are open source in spirit,
for various technical reasons they are not good choices for software
source code. CC-BY and CC-BY-SA are sometimes appropriate for
documentation and other non-code assets, as mentioned in section
\fullref{per-project-questions}, and we consider a project where the
source code is released under an open source software license and
the documentation under one of these CC licenses to be an open
source project overall. For more discussion of CC0 and how the
public domain is not automatically like an open source license, see
\otsurl{https://opensource.org/faq\#cc-zero} and
\otsurl{https://opensource.org/faq\#public-domain}.}. But this
definition really only describes a mode of software
\emph{distribution}; it does not imply any particular mode of
\emph{production}. While open source distribution is built into
Mozilla's identity and underpins the organization's mission, just
saying ``open source'' actually provides little guidance as to how
Mozilla should manage its projects or its relations with partner
organizations, developers, and users in order to gain strategic market
advantages.
The purpose of this report is to make it easier for Mozillians to talk
productively about open source choices, goals, and tradeoffs. These
discussions may be had internally, with organizational partners, with
contributor communities, and in some cases with users and with media
organizations. Mozilla needs to be able to decide what type of open
source project a given project should be in order to best further
Mozilla's mission, and the answer may be different for different
projects.
The report provides a set of {\bf open source project archetypes} as a
common starting point for discussions and decision-making: a
conceptual framework that Mozillians can use to talk about the goals
and methods appropriate for a given project. The framework is not
intended to resolve differences or to rank archetypes and projects
from worst to best. Instead, we submit these archetypes as a shared
vocabulary and an already-mapped territory that can help Mozilla
understand a range of open source approaches and the potential
benefits of each one.
The purpose of this report is \emph{not} to provide a single, shared
understanding of open source methodology to be agreed on and adopted
across Mozilla. There is no need to unify around just one
understanding, and attempting to do so would be harmful, given the
diversity of products and communities Mozilla works with. Indeed, the
Mozilla Way might be a willingness to explore many approaches to open
source.
\unnumberedsection{How to Use This Document}
The archetypes presented here (categorized in section
\fullref{archetypes}) are not business strategies in themselves;
rather, they are consequences of business strategy decisions.
For any project that Mozilla starts, acquires, or revives, the
question of how to run it must start with the question of what Mozilla
is trying to accomplish with it in the first place. Once there is a
clear understanding of the project's goals, it becomes possible to
discuss what kind of an open source project it should be.
We therefore suggest that this report be used as follows:
\begin{enumerate}
\item First articulate to all stakeholders the goals of the project:
what aspects of Mozilla's mission will it serve, and, from a
product perspective, how will it do so? Why has Mozilla
undertaken this project? These goals should be based upon a
shared understanding of the market ecosystem.
\item Review the array of potential benefits that being open source
can bring, as described in \fullref{benefits-of-open-source}. Which ones, if
any, resonate with your project's needs and goals? Note that no
project should seek (or be expected to obtain) all of these
benefits. The point of the review is to stimulate thought about
which benefits are most important for your particular project ---
and for which you should therefore optimize.
\item Based on an understanding of project goals and the particular
open source benefits you want to generate, find the archetype that
seems like the best fit (see \fullref{archetypes}).
\item Use your chosen archetype to help drive a discussion within the project
team and, as merited, with key external stakeholders. Review the
questions in \fullref{practical-questions}, to help determine if the
archetype seems accurate, and if not, why not. The answers generated
through this discussion will help the team make informed decisions
about the open source project's licensing, governance and
co-development models, and general management.
\end{enumerate}
The set of archetypes in section \fullref{archetypes} is deliberately
coarse-grained and simplified. It is not important that a given
project exactly match every aspect of a particular archetype; some
projects may even incorporate elements from different archetypes. In
general, however, most projects will fit best with one
archetype. After that, governance, licensing, process, and infrastructure decisions can
then be made in light of that archetype, with some adjustments for the
project's specific circumstances.
\unnumberedsection{Benefits of Open Source}\label{benefits-of-open-source}
In order to decide which particular benefits of open source to
optimize for, it helps to survey the reasons a project is open source
in the first place. Below is a checklist of high-level benefits that
being open source can bring; most projects will be motivated by some
subset of this list. Knowing which benefits are most important for a
given project, and their relative priority, will help identify which
archetype from section \fullref{archetypes} would best serve that
project's goals.
Note that this list of benefits is oriented toward organizations.
There will always be individuals who make a personal decision to open
source their code; their motivations may include some of the ones
below, but may also include personal gratification or philosophy, or
even sheer habit. For this report, we focus on organizational and
mission benefits that would be relevant to Mozilla.
Open source can be used to:
\begin{itemize}
\item \emph{Lead a standardization effort in a particular area.}
For this purpose, widespread adoption usually takes precedence
over building a robust contributor ecosystem, at least initially.
Licensing that is compatible with being used in proprietary
systems may also be important, which would imply a non-copyleft
license (see \fullref{licensing-basics}).
\item \emph{Improve product quality.}
This works most effectively in archetypes that have a dedicated
core team that prioritizes involvement from outside developers.
The core team acts as a ``quality ratchet'', filtering the best
ideas from the broad developer pool into the project, ensuring
that those ideas get implemented and stay implemented (often the
core team devotes proportionally more time to QA and test suite
improvements than other developers do), and actively encouraging
continued participation so that more total development energy is
sustained in the project than the core team could ever muster on
its own.
\item \emph{Amplify or expand developer base.}
Like many organizations, Mozilla is sometimes in the position of
wanting to build something and knowing that they cannot build it
alone. Open source sends a strong signal that Mozilla is seeking
like-minded collaborators, and provides a framework for
collaboration once they've been found.
Which archetypes best suit this goal depends on the nature of the
project, but in general they will be archetypes that tend to
invest more up-front effort in making the project welcoming and
easy for others to gain influence in (as opposed to archetypes
that optimize for reaching a minimum viable product early with
internal resources, or that optimize for maintaining Mozilla
control over the long term).
\item \emph{Increase the size or quality of your organization's
developer hiring pool.}
Open source engagement puts an organization in much greater
contact with potential hires who have expertise in technology the
organization values. It also creates a public portfolio of a
potential hire's work. This includes not just their code commits
but also their communication patterns, collaboration style, and
personality. This increased window on a candidate's abilities
provides a significant amount of information relevant to
identifying candidates and deciding to hire them.
\item \emph{Improve internal developer morale.}
Developers want to participate in open source. All of the factors
that bring outside developers into a hiring organization's view also
make their own developers visible to other firms. Open source
allows developers to build a public portfolio and expertise in
widely-used technology (as opposed to expertise in a proprietary
codebase, which doesn't travel very well). The best developers
increasingly demand the ability to display their skills in public
ways that create future opportunities. Open source does that in
ways proprietary pursuits simply cannot.
How this affects retention depends on the organization. Here
Mozilla has an advantage thanks to its mission-driven nature:
Mozilla is better able to keep good developers once hired than the
typical tech company is, because Mozilla offers significant
non-monetary job satisfaction. But the same is true, if to a
lesser degree, at any organization that offers a good workplace
for developers. Thus open source activity offers a relatively
\emph{greater} benefit to organizations that are already good
places to work: it reminds developers of their market value, which
in turn contributes to healthy morale and makes the developers'
current position remain attractive.
Open source involvement also allows a developer to exercise a more
varied set of skills and interact with a wider group of people.
The morale benefit of expanding a job role in this way can be
significant.
\item \emph{Improve internal collaboration within one's own organization.}
Effective open source is all about removing collaboration
barriers. Often people think of those barriers as occurring at
entity boundaries, but large organizations usually have a variety
of internal boundaries as well. Adopting structures that
encourage inter-team collaboration tends to increase it regardless
of whether the two teams reside at different companies or simply
different business units.
\item \emph{Establish a basis for product reputation.}
For some people and organizations, a product's being open source
is a significant factor in adoption decisions.
\item \emph{Establish a basis for organizational brand and credibility.}
Above the level of the individual project, hosting a collection of
well-run open source projects can attract partner interest and
media interest, and in certain circumstances increase political
influence.
\item \emph{Improve market acceptance by eliminating customers' \&
partners' exposure to the risks inherent in proprietary
approaches.}
This benefit views open source as a form of insurance, similar to
code escrow. But in addition to the escrow of the code itself,
the continued investment of other contributors is in a sense
escrowed as well, and is in principle available to be retargeted
should Mozilla ever decide to shift resources away from the project.
Breadth of developer base --- and in particular diversity among the
different organizations who supply participating developers --- is
part of that insurance. Aside from raising the
project's own
bus-factor\footnote{\otsurl{https://en.wikipedia.org/wiki/Bus\_factor}},
broad contributorship means that third parties will have more
routes by which to procure support when they need it.
Thus, for this benefit to be fully realized, it is often best to
choose an archetype that invests in building a broad developer
base in which Mozilla is just one of many participants, or at most
``first among equals''. Note that this may be in tension with
archetypes that are more optimized for making rapid technical
progress. If Mozilla dictates direction and provides the majority
of the driving energy in the project, potential adopters will
realize that and take into account the risk to the project of
Mozilla changing its investment level down the road.
\item \emph{Stop someone else from establishing early dominance in an
particular area.}
Because open source can spread so quickly, often assisted by
third-party developers and packagers, a timely release can
sometimes gain a significant share of a particular user base
against a more slowly-distributed proprietary alternative --- even
when that alternative is initially ahead in terms of
features or user experience.
\item \emph{Engage with users.}
Open source can be a very effective way to learn who is using the
software, how they are using it, and to draw some of them into
closer participation and contribution. How much these benefits
are available depends a great deal on the nature of the software
and the demographics of its user base (e.g., there's a reason why
so many contributions to TeX and LaTeX are from graduate students in
technical fields), but some archetypes are better suited to broad
user engagement than others.
For example, a project can put extra effort into making it easy
for non-technical users to report bugs or have conversations with
support staff and even with developers. This wouldn't necessarily
be a good use of resources for all projects, but it could be for a
project that prioritizes user engagement, or prioritizes
conversion of individual users (as opposed to
organizationally-motivated users) into contributors.
In general, the larger the audience for a given piece of software,
the less likely it is that the users who engage with it as an open
source project will be representative of the user base as a whole.
However, the slope of this curve can be influenced by choice of
archetype.
\item \emph{Provide a framework for collaborating with partners.}
When a project is not open source, bringing partners in as
participants often involves cumbersome overhead: negotiating MOUs,
signing NDAs, etc. On the other hand, when the project is open
source, then organizational partners can just participate using
the same structures as everyone else, and Mozilla still has the
option to grant preferential attention or priority to the partners
as needed. Of course, this works best in a project archetype
where the governance and prioritization mechanisms do not impose
constraints that would prevent Mozilla from acting on such
preferences.
\item \emph{Provide transparency to customers \& partners.}
Sometimes source code transparency --- which is always guaranteed
by open source --- is enough. But sometimes \emph{process}
transparency is desirable as well. For example, a partner may
want to see that their competitors' needs aren't being unduly
favored. Process transparency provides reassurance by showing the
partner how they too can influence the roadmap of the project to
satisfy their needs.\footnote{Some common ways to gain such
influence in an open source project are to invest more time from
current developers, or in some cases to hire a person who is
already influential in the project.}
\item \emph{Increase insight into partners' (or competitors')
strategy and goals.}
One can extrapolate information about partners and competitors
from how their representatives behave in an open source
project. This is most effective when not just developers but
their managers observe the open source project closely; managers
may also have a better sense of market context and thus be able to
infer more information than developers could from observing
external participants' behavior.
\end{itemize}
% Start the main section on its own page
\newpage
\unnumberedsection{Open Source Project Archetypes}\label{archetypes}
% Various points gleaned from trawling the interview notes (many of
% these are items marked with the string "IMPORTANT" in Karl's notes,
% some are from James's notes too):
%
% - categorize projects by demographics of devs they tend to attract.
% (ref:86783cb5)
%
% - Aaron Turon of Rust was interested in making some kind of
% advisory board that could have organizational memberships,
% both for enterprise-level advice on direction and sponsorship
% potential. (ref:8edf2407)
%
% - Re Rust: Companies are very receptive to formalizing and
% regularizing their technical contribution activity, but haven't
% been given a clear path to do so yet. "Even without that, there
% are companies outside Moz that are funding Rust work, so it's
% happening organically, but there are opportunities to do more."
% (ref:2df42bbc)
%
% - Also re scaling to achieve breadth of effect: Ffox "test pilot"
% program (ref:f3bff974). The idea of test-pilot is "if you have
% an interesting idea, if you put in a little effort, we'll try to
% get it in front of users to try it out". Again, use Moz's
% ability to focus resources to scale community efforts.
%
% - Usefulness of investing in mentoring. "We have not found the
% point of diminishing returns in mentoring people in open source.
% The more we put into it, the more we get. I am just constantly
% bowled over by it." (ref:d01ca77f)
%
% - Don't hire all the project's best devs. (ref:7e38b8c3) (ref:97bebee8)
%
% - If there is only one stakeholder (e.g., Moz for Ffox), then it
% is inevitable that the important decisions will be made behind
% closed doors. (ref:c580e617) "There's just a difference
% between one organization using your thing and many many
% organizations using your thing." (ref:7935cb8d)
%
% - Key is to have clearly product-minded leadership doing things in a
% community-visible way. (ref:7f2f4b17)
%
% - Cite "avg time to first patch, for what demographic of
% contributor" in model evaluations, in our report. Distinguish
% time-to-first-patch from longer time-to-first-landing -- the
% difference is the feedback loop, and the nature of that loop
% matters. (ref:34fdefd5)
%
% - Having a product-development/product-vision based roadmap makes
% partnerships easier. Hard to partner with someone when their
% direction bubbles up from the bottom and you can't predict what
% those engineers will come up with. (ref:2c4f11a7)
%
% - Need culture of respecting others' motivations, including profit
% motivation. (ref:5f2d8f92)
%
% - "If I could solve one thing with a snap of the finger, as far as
% open source engagement, understanding the different roles
% that go into building our porduct & how all of them have to work
% together -- b/c most engineers these days have engaged with open
% source in some way or another, but the same is not true of a
% designer or a UX specialist or a product manager". Engineers don't
% know how to communicate with them, and contributors don't
% necessarily even have access to them the same way they have access
% to the engineers. Training, pathway-building, and time allocation
% on both sides is necessary. (ref:f0a57895)
%
% - Maybe mention how Moz module ownership hierarchy should not
% apply to all Moz projects, as it is a blocker to community
% buy-in. (ref:3cacce3d) They seem to have already decided
% this, but good to reinforce it.
%
% - Importance to A-Frame of being explicit about what model of
% control -- what archetype -- the project is using. [ref:c5a1d8ca]
%
% - Someone said, tentatively, that Automattic contributes less than
% 25% of patches to Wordpress right now (ref:8d6590b1). Yet
% Automattic still probably has control. What projects would
% Mozilla like to be in this position with?
%
% - How will this archetype list get updated, if there is not
% healthy information flow of feedback up through the
% organization? The eng level may be serving as a filter that
% prevents upper management from having visibility into all the
% various idiosyncracies of the ways projects are run and how that
% affects partners and contributors and ultimately the product itself.
% (ref:7bef34ce)
%
% - Rust should be a pretty clean example of an archetype. (ref:72121373)
%
% - Fortress-defense mindset vs building-a-new-city mindset.
% Internal inconsistency on which should be the default mindset of the
% organization. The two are incompatible: you have to choose one,
% really, or at least articulate how you'll make tradeoffs. Right now
% it's by default fortress-defense, which means the occasional
% excursions into building a new city often founder. (ref:f24704fb)
%
% - The more attractive you want to be to devs, the less process you
% can afford to have. Everyone wants to be a kernel hacker, thus
% Linus can impose significant overhead to contributing and not
% lose devs -- well, not lose too many anyway. (ref:b7a0a6a7)
% Idea: measure contribution failure: PRs started but not landed,
% or started and responded to but not landed.
The archetypes described here are simplified versions of those found
in the wild.\footnote{There might be some important archetypes that we
simply didn't think of. One of the fastest ways to discover them is
to publish a report claiming to list all the archetypes and then
wait for the bug reports to roll in; that is our approach here.}
The list aims for broad coverage: ideally, it should be
possible to match any real-world open source project to one of these
archetypes, with some adjustment for circumstances. Even though certain
archetypes won't be appropriate for Mozilla to use for the
projects it launches, Mozilla will still often encounter projects with
those types --- through engineering collaboration, through
partnerships, even through purchase --- and being able to discuss how
best to work with or influence such projects can be useful. However,
we will devote less space to archetypes that Mozilla is unlikely to
ever use itself.
These archetypes are intended to help Mozilla with internal discussions
as well as with public positioning. Externally, it is important for Mozilla
to set clear public expectations about every project it starts. This
increases others' faith that Mozilla is a good project host and a good
partner to work with.
For example, if Mozilla
openly declares that a certain project is going to be largely funded by and
wholly controlled by Mozilla for the next few years, and uses the project's
archetype in explaining why, then even potential partners who rely on
that declaration in choosing (for now) not to participate will still
have had a positive experience with Mozilla. Their belief that they
\emph{could} partner with Mozilla on something will be reinforced,
because Mozilla took care to explain itself and not to waste their
time. \otsref{(ref:6414cf95)}
It is perfectly fine to launch a project using one archetype while
stating a plan to switch to another down the road. We include a brief
discussion of the evolution of archetypes for this reason. For
example, a project may need to be tightly focused in its early stages,
but plan to change to a more distributed style of leadership and
decision-making once it attracts a community of diverse interests.
Each of these archetypes is presented with a brief description of its
key characteristics, including how the sponsoring organization could
best benefit from it. Usually this is followed by an example or two
described in some detail, followed by key points on licensing,
co-development, and community, and how tightly any components of the
project are related.
\subsection{Business-to-Business (B2B) Open Source}\label{archetype:b2b-open-source}
{\bf Examples:} \emph{Android, Chromium}
{\bf Characteristics:} Solid control by founder
and (sometimes grudging) acceptance of unpredictability by
redistributors. This also implies a long fork-modify-merge cycle for
partners, and thus a constant temptation on their part to fork
permanently.
This archetype aims at ubiquity. Its open source nature is designed
to spur OEM adoption by partners and competitors across the industry
and to drive out competing options in the same way pricing browsers at
zero once discouraged new entrants into the browser market. It can
also drive down the price of complementary products: for example, as
Red Hat Enterprise Linux (RHEL) does for server hardware and Google's
Android operating system does for handheld devices.\footnote{Compare
with the Mass Market archetype, which can have similar effects on
directly competitive products but is less likely to affect
complementary products.}
It is worth noting that Google does not derive much direct revenue
from Android. Instead, Android's popularity puts Google's
products and search preferences in the hands of users, and that
creates opportunities for Google. Android users default to Google's
search engine, buy media from Google, pay for apps in Google's app
store, provide a river of data for Google to mine, and favor Google's
app ecosystem (Calendar, Gmail, Maps, etc). All of that generates
revenue and strategic advantage for Google. This archetype is thus a
strategy for gaining marketshare as a \emph{revenue opportunity}.
This model probably works best when run by a fairly large company with
multiple ways of applying market pressure and multiple channels for
distribution. It is difficult to wield without considerable financial
resources and other strategic advantages. \otsref{(ref:c25750f5)}
\begin{itemize}
\item {\bf Licensing}: Almost always non-copyleft.
\item {\bf Community standards}: In general, the lead company does not
put much emphasis on welcoming or nurturing contributors; exceptions
may be made for strategically important organizational partners.
\item {\bf Component coupling}: Tightly coupled modules, to allow the
lead company to market one unified product.
\item {\bf Main benefits}: Can drive industry adoption of a technology
that is strategically important to your organization.
\item {\bf Typical governance}: Maintainer-led by a group within
the lead company.
\end{itemize}
\subsection{Multi-Vendor Infrastructure}\label{archetype:multi-vendor-infrastructure}
{\bf Examples:} \emph{Kubernetes, Open Stack}
{\bf Characteristics:} Multi-Vendor Infrastructure are large software projects that provide
fundamental facilities to a wide array of other businesses. This
infrastructure is designed collaboratively by multiple vendors and
then each deploys it in their own way. Kubernetes and OpenStack are
two prominent Multi-Vendor Infrastructure projects that most developers
will have heard of.
Multi-Vendor Infrastructure efforts are driven by business needs rather than
individuals, and are open to relatively lightweight participation. A good
way to distinguish a Multi-Vendor Infrastructure project from
Business-to-Business (B2B) Open Source is to look at how often contributors
continue to participate after they switch employers. When that phenomenon
occurs, it indicates that multiple organizations use the software as
infrastructure in roughly the same way, and thus the same person may
continue representing those technical priorities across different
organizations.
In other words, the difference between this and B2B Open Source is that less
organizational and process overhead is required to take part --- enough
less to make participating a qualitatively different proposition. For
example, individual developers are generally more able and more
likely to make contributions to Kubernetes and OpenStack than they are
to Android, \emph{but} they still tend to do so from organizational
rather than from individual motivation. These organizational
motivations often relate to tactical needs, and may be enabled by
mid-level management decisions. By contrast, B2B open source tends to be
driven by corporate business strategy, and is thus more likely to
figure into executive-level decisions.
What this means for Mozilla is that if Mozilla clearly understands who
within its potential partners is authorizing participation, then
Mozilla will be much better positioned to tune the project's
collaboration processes --- and related things like conference
appearances, media strategies, further partner discovery, etc. --- so
as to maximize the benefit to Mozilla's mission.
Note that both the Multi-Vendor Infrastructure and the B2B Open Source archetypes are
patterns that achieve benefits at scale. They are also patterns that
provide infrastructure to enable a varied set of third-party activity.
The largest advantage of open source to these ecosystems is broad
standardization (including informal or \foreignphrase{de facto} standardization).
Both the container world and the cloud ecosystem provide a set of
tools and pieces that can be combined together in standard ways to
provide custom solutions. That standardization is necessary to allow
reconfiguration and customization. It drives adoption at scale, and,
in a virtuous circle, the scale is what creates the \foreignphrase{de facto}
standards. It would be difficult to achieve this dynamic with a
proprietary approach; open source lowers the cost of participation and
powers network effects that lead to scale.
\begin{itemize}
\item {\bf Licensing}: Typically non-copyleft, given that many members
of the community are likely to maintain proprietary forks of the
core product.
\item {\bf Community standards}: Welcoming, but formal, and often
difficult for individual contributors to enter. Participation takes
a high level of resources.
\item {\bf Component coupling}: Loosely-coupled modules joined by
\foreignphrase{de facto} standards.
\item {\bf Main benefits}: Fosters collaboration with partner
organizations to solve shared problems.
\item {\bf Typical governance}: Formal tech committee, with
membership by each of the major contributing companies.
\end{itemize}
\subsection{Rocket Ship To Mars}\label{archetype:rocket-to-mars}
{\bf Examples:} \emph{Meteor, Signal}
{\bf Characteristics:} ``Rocket Ship To Mars'' projects are
characterized by a small full-time core team that is
wholly focused on a well-articulated and highly specific goal. They
are often led by charismatic
founders and enjoy a funding runway sufficient for bootstrapping.
Their open source strategy is often rooted in a commitment to \emph{transparency} and
providing \emph{insurance}: they want to instill confidence among
developers and users in order to promote adoption, and being open source
is one ingredient in doing that.
Rocket Ships To Mars tend toward non-copyleft licensing when their
goal is broad adoption by the tech industry at large, but may use
copyleft licensing when aiming for deployment and usage scenarios
where there is no particular advantages to non-copyleft. (For
example, Signal notes that their use of the GPL-3.0 license is
primarily for ``quality control''\footnote{See
https://signal.org/blog/license-update/, where Moxie Marlinspike
writes ``We like the GPL for the quality control that it provides.
If someone publicly says that they're using our software, we want to
see if they've made any modifications, and whether they're using it
correctly.''}.) In any event, Rocket Ships To Mars tend not to play
well with others. Every ounce of fuel goes to thrusters, which leads
little energy left over for the hard work of nurturing a contributor
community.
Rocket Ships To Mars typically do not invest a lot of effort
in encouraging broad contributorship, not so much because they
wouldn't welcome contributions as because it is hard to find
contributors who share the project's intensity and specificity of
vision, and who are sufficiently aligned with the founders to take the
time to make their contributions fit in. These projects are also
usually trying to reach a convincing alpha release as quickly as
possible, so the tradeoff between roadmap speed and contributor
development looks different for them than for other types of projects.
Similarly, the components of such projects are generally tightly
coupled: their goal is not to create an ecosystem of plug-and-play
modules, but to create one core product that can be marketed as a
standalone service.
The biggest challenge for Rocket Ship To Mars projects is usually to
detect and take advantage of the right \emph{organizational}
collaboration opportunities. Some strategic partnerships are worth
sacrificing momentum for, especially when they could affect the
project's direction early on.
Part of the purpose of specifying this archetype is to help Mozilla
give itself permission to run projects like this when appropriate.
There are times when Mozilla may want to press forward to some goal
and not stop (at least for a while) to deal with other participants.
At the very least, the people advocating for this should have a
model to point to, and the people arguing against it should have a
clear idea of what it is they're arguing against.
When a Rocket Ship To Mars project is launched, it is important to set
public expectations accurately. Some observers will be interested in
going to Mars, and some will not be, but at least when there is clear
messaging each observer can make an informed decision about how much
to invest in following the project or in aligning themselves with it
sufficiently to be able to participate on Mozilla's terms.
\begin{itemize}
\item {\bf Licensing}: Usually non-copyleft, but may be copyleft under
certain circumstances.
\item {\bf Community standards}: Difficult to enter; focused on the
core group.
\item {\bf Component coupling}: Tight, in order to ship one core
product.
\item {\bf Main benefits}: Achieves a quick, focused effect on a
specific area; if successful, can co-opt competition.
\item {\bf Typical governance}: Maintainer-led by the founding
group.
\end{itemize}
\subsection{Controlled Ecosystem}\label{archetype:controlled-ecosystem}
{\bf Examples:} \emph{WordPress, Drupal}
{\bf Characteristics:} Real community involvement, and diversity of
community motivations, but with a shared understanding that the
founder (or some credible entity) will act as ``benevolent dictator''.
Requires experienced open source community management on part of
project leaders and occasional willingness to compromise. Works best
when technical architecture directly supports out-of-core innovation
and customization, such as via a plugin system.
Controlled Ecosystem efforts find much of their value in that
ecosystem. The core provides base value, but the varied contributions
across a healthy plugin ecosystem allow the project to address a much
larger and diverse set of needs than any one project could tackle
alone. Over time, these projects might see more and more of the core
functionality structured as plugins as the product becomes more
customizable and pluggable. This increasingly lets the plugins
determine the end-user experience, and the core project can eventually
become infrastructure.
\begin{itemize}
\item {\bf Licensing}: Can be either copyleft or non-copyleft.
When copyleft, decisions must be made about whether the core
interfaces (and maintainer-promulgated legal interpretations)
encourage or discourage proprietary plugins.
\item {\bf Community standards}: Welcoming, often with structures
designed to promote participation and introduce new contributors.
\item {\bf Component coupling}: Loosely coupled modules, frequently in
a formal plugin system.
\item {\bf Main benefits}: Builds a sustainable ecosystem in which the
founding organization retains strong influence.
\item {\bf Typical governance}: Benevolent dictatorship, with
significant willingness to compromise to avoid forks.
\end{itemize}
\subsection{Wide Open}\label{archetype:open-by-design}
{\bf Examples\footnote{In some ways the Linux kernel project could
be considered ``Wide Open''. However, both technically and
culturally, Linux kernel development is \foreignphrase{sui generis}
and we have deliberately avoided using it as the basis for any
archetype.}:} \emph{Rust (present day), Apache HTTPD}
{\bf Characteristics:} Wide Open projects actively welcome contributions
from any source, and tend to get contributions at all levels: from
individual developers providing one-off bug fixes to sustained
organizational contributors developing major features and being
involved in long-range project planning.
A Wide Open project values investing in contributors relatively
highly: the core development team is generally willing to pay a high
opportunity cost (in terms of code not written or bugs not fixed) in
order to encourage or onboard a promising new contributor. The
project's collaboration tools and processes reflect this
prioritization. For example, the experienced developers in the
project will still take the time to hold design discussions in
forums-of-record --- even when many of the individuals concerned are
co-located and could make the decisions in person --- in order to
publicly reinforce the possibility of participation by any other
self-nominated interested party.
Wide Open is a good archetype for projects that aim to serve the same
technical purpose over a long period of time, and for which stability
and reliability are more important than rapid development of the code
base or fast adoption of field-specific innovations. Wide Open is
also especially effective when some significant percentage of the user
base is technically oriented (and thus susceptible to being converted
to contributors), and when regular contact with a broad developer base
is likely to bring real-world usage information that would be