This repository has been archived by the owner on Aug 17, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
10-newcomers.tex
908 lines (752 loc) · 38.8 KB
/
10-newcomers.tex
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
\documentclass[10pt,letterpaper]{article}
%------------------------------------------------------------
\usepackage[top=0.85in,left=2.75in,footskip=0.75in]{geometry}
% amsmath and amssymb packages, useful for mathematical formulas and symbols
\usepackage{amsmath,amssymb}
% Use adjustwidth environment to exceed column width (see example table in text)
\usepackage{changepage}
% Use Unicode characters when possible
\usepackage[utf8x]{inputenc}
% textcomp package and marvosym package for additional characters
\usepackage{textcomp,marvosym}
% cite package, to clean up citations in the main text. Do not remove.
\usepackage{cite}
% Use nameref to cite supporting information files (see Supporting Information section for more info)
\usepackage{nameref,hyperref}
% line numbers
\usepackage[right]{lineno}
% ligatures disabled
\usepackage{microtype}
\DisableLigatures[f]{encoding = *, family = * }
% color can be used to apply background shading to table cells only
\usepackage[table]{xcolor}
% array package and thick rules for tables
\usepackage{array}
% enumerate package lets us use letters instead of numbers
\usepackage{enumerate}
% create "+" rule type for thick vertical lines
\newcolumntype{+}{!{\vrule width 2pt}}
% create \thickcline for thick horizontal lines of variable length
\newlength\savedwidth
\newcommand\thickcline[1]{%
\noalign{\global\savedwidth\arrayrulewidth\global\arrayrulewidth 2pt}%
\cline{#1}%
\noalign{\vskip\arrayrulewidth}%
\noalign{\global\arrayrulewidth\savedwidth}%
}
% \thickhline command for thick horizontal lines that span the table
\newcommand\thickhline{\noalign{\global\savedwidth\arrayrulewidth\global\arrayrulewidth 2pt}%
\hline
\noalign{\global\arrayrulewidth\savedwidth}}
\usepackage{color}
% Remove comment for double spacing
%\usepackage{setspace}
%\doublespacing
% Text layout
\raggedright
\setlength{\parindent}{0.5cm}
\textwidth 5.25in
\textheight 8.75in
% Bold the 'Figure #' in the caption and separate it from the title/caption with a period
% Captions will be left justified
\usepackage[aboveskip=1pt,labelfont=bf,labelsep=period,justification=raggedright,singlelinecheck=off]{caption}
\renewcommand{\figurename}{Fig}
% Use the PLoS provided BiBTeX style
\bibliographystyle{plos2015}
% Remove brackets from numbering in List of References
\makeatletter
\renewcommand{\@biblabel}[1]{\quad#1.}
\makeatother
% Leave date blank
\date{}
% Header and Footer with logo
\usepackage{lastpage,fancyhdr,graphicx}
\usepackage{epstopdf}
\pagestyle{myheadings}
\pagestyle{fancy}
\fancyhf{}
\setlength{\headheight}{27.023pt}
% \lhead{\includegraphics[width=2.0in]{PLOS-submission.eps}}
\rfoot{\thepage/\pageref{LastPage}}
\renewcommand{\footrule}{\hrule height 2pt \vspace{2mm}}
\fancyheadoffset[L]{2.25in}
\fancyfootoffset[L]{2.25in}
\lfoot{\sf PLOS}
\usepackage{tcolorbox}
%------------------------------------------------------------
\newcommand{\rulemajor}[1]{\section*{#1}}
\newcommand{\withurl}[2]{{#1}\footnote{{\texttt{#2}}}}
\begin{document}
\vspace*{0.2in}
\begin{flushleft}
{\Large
\textbf\newline{Ten Simple Rules for Helping Newcomers Become Contributors to Open Projects}
}
\newline
\\
{Dan Sholler}\textsuperscript{1{\ddag}},
{Igor Steinmacher}\textsuperscript{2{\ddag}},
{Denae Ford}\textsuperscript{3{\ddag}},
{Mara Averick}\textsuperscript{4{\ddag}},
{Mike Hoye}\textsuperscript{5{\ddag}},
{Greg Wilson}\textsuperscript{6{\ddag}*}
\\
\bigskip
\textbf{1} Berkeley Institute for Data Science, University of California Berkeley, Berkeley, CA, United States\\
\textbf{2} School of Informatics, Computing, and Cyber Systems, Northern Arizona University, Flagstaff, AZ, United States\\
\textbf{3} Department of Computer Science, North Carolina State University, Raleigh, NC, United States\\
\textbf{4} RStudio, Inc., Boston, MA, United States\\
\textbf{5} Mozilla Corporation, Toronto, ON, Canada\\
\textbf{6} RStudio, Inc., Toronto, ON, Canada\\
* Corresponding author, [email protected]. \\
\bigskip
{\ddag} These authors contributed equally to this work.
\end{flushleft}
\section*{Introduction}
To survive and thrive,
a community must attract new members,
retain them,
and help them be productive~\cite{qureshi2011}.
As openness becomes the norm in research, software development, and education,
knowing how to do this has become a essential skill
for principal investigators and community managers alike.
A growing body of knowledge in sociology, anthropology, education, and software engineering
can guide decisions about how to facilitate this.
What exactly do we mean by ``community''?
In the case of open source and open science,
the most usual meaning is a ``community of practice''.
As defined by Lave and Wenger~\cite{lave1991,wenger1999},
groups as diverse as knitting circles, oncology researchers, and web designers
share three key characteristics:
\begin{enumerate}
\item Participants have a common product or purpose that they work on or toward.
\item They are mutually engaged, \textit{i.e.}, they assist and mentor each another.
\item They develop shared resources and domain knowledge.
\end{enumerate}
Brown~\cite{brown2019} specializes this to define a ``community of effort'' as,
``\textit{{\ldots}a community formed in pursuit of a common goal.
The goal can be definite or indefinite in time,
and may not be clearly defined,
but it is something that (generally speaking) the community is aligned on.}''
People working to preserve coral reefs in the face of global climate change
are an example of such a community.
No central organization coordinates their work,
but the scientists who study coral reefs,
the environmentalists who work to protect them,
and the citizens who support them financially and politically
are aware of each other's efforts,
collaborate in ad hoc ways,
and are conscious of contributing toward a shared purpose.
Open source software projects are also communities of effort.
For example,
the Mozilla Firefox~\cite{mozilla} community includes a mix of paid professionals,
highly-involved volunteers,
and occasional contributors who not only create software,
documentation,
and tutorials,
but also organize events,
answer questions in online forums,
mentor newcomers,
and advocate for open standards.
Every community of effort has unique features,
but they have enough in common to profit from one another's experience.
The 10 rules laid out below are based on studies of such communities
and on the authors' experience as members, leaders, and observers.
Our focus is on small and medium-sized projects,
i.e., ones that have a handful to a few hundreds participants
and are a few months to a few years old,
but may not (yet) have any formal legal standing
such as incorporation as a non-profit.
\rulemajor{Rule 1: Be welcoming.}
Karl Fogel wrote~\cite{fogel2005},
``If a project doesn't make a good first impression, newcomers may wait a long time before giving it a second chance.''
Other authors have empirically confirmed the importance of kind and polite social environments
in open source projects \cite{singh2012,steinmacher2013,steinmacher2018a}.
Therefore, projects should not just say that they welcome new members:
they should make a proactive effort to foster positive feelings in them.
One way to do this is to post a welcome message on the project's social media pages, Slack channels, forums, or email lists.
Projects might also consider maintaining a dedicated ``Welcome'' channel or list,
where a project lead or community manager writes a short post asking newcomers to introduce themselves.
Other ways to be welcoming include
offering assistance in finding ways to make an initial contribution,
directing the newcomer to project members who have a similar background or skill set
so as to demonstrate fit to the newcomer,
and pointing the newcomer to essential project resources (e.g., the contribution guidelines).
It also helps to clearly identify work items they can start with:
a growing number of projects explicitly tag bugs or issues as ``suitable for newcomers'',
and ask established members not to fix them
in order to ensure there are suitable places for new arrivals to start work.
Projects can further designate one or two members to serve as a point-of-contact for each newcomer.
Doing this may reduce the newcomer's hesitancy to ask questions,
particularly when they are told from the outset that there are no dumb questions in the community.
\rulemajor{Rule 2: Help potential contributors evaluate if the project is a good fit.}
People could contribute to many different projects;
the first and most important step in being welcoming is to help them determine whether
your project is a good fit for their interests and abilities.
Their decision to contribute can be related to reputation or external needs,
but also to a desire to learn or give back to the community.
In all of these cases,
the more you help newcomers understand if this is the right project for them,
the more quickly they will either start contributing or look elsewhere.
To do this,
the project should explicitly state what the different types of skills required are.
This information should be easily accessible and guide new members to the tasks they may handle.
LibreOffice,
for example,
provides a way for developers to filter available tasks by required skills and difficulty~\cite{libreoffice-filtered}.
The project should also help developers evaluate their skills,
since ``basic Python skills'' means very different things to different people.
Tools like My GitHub Resume~\cite{my-github-resume} and Visual Resume~\cite{sarma2016}
that aggregate information from previous contributions can help with this assessment,
while the now-defunct OpenHatch project~\cite{openhatch}
aggregated entry-level issues from a variety of open source projects
and classified them according to language and other required skills
to provide a one-stop portal for finding appropriate projects.
\rulemajor{Rule 3: Make governance explicit.}
Raymond's ``The Cathedral and the Bazaar''~\cite{raymond2001}
described an egalitarian world in which everyone could contribute equally to open projects.
Two decades later,
we can see how unequal and unwelcoming the supposedly egalitarian ``bazaar'' of open source can be
if authority lies with those willing to shout loudest and longest.
As Bezroukov pointed out~\cite{bezroukov1999},
Raymond ignored the realities of how power arises,
becomes concentrated in a few hands,
and is then used to perpetuate itself.
Bezroukov's criticism drew on Freeman's influential essay ``The Tyranny of Structurelessness''~\cite{freeman1972},
which explained how an apparent lack of structure in organizations ``{\ldots}too often disguised an informal,
unacknowledged and unaccountable leadership that was all the more pernicious because its very existence was denied.''
The solution is to make a project's governance explicit
so that people know who makes which decisions.
Large, well-established projects that incorporate as non-profits are required to promulgate bylaws,
such as those for the Python Software Foundation~\cite{psf-bylaws}.
What smaller projects should do is less well-documented,
but generally falls under one of three headings~\cite{fogel2005}.
The first is a ``benevolent dictator'' (often the project founder),
who the community agrees has final say on important issues.
This model is common in young or small projects,
but is brittle,
and inevitably fosters the emergence of unofficial (and hence unaccountable) de facto leaders
in specific areas.
The second model formalizes a consensus-building process
in which the whole community can take part.
One example is Martha's Rules~\cite{minahan1986},
under which anyone can put forward proposals,
but those proposals are only adopted once it is clear that most people are not strongly opposed.
The third model is based on elected representation.
In the Carpentries~\cite{carpentries-bylaws},
for example,
the electorate includes anyone who has:
\begin{itemize}
\item
completed instructor certification in the preceding year;
\item
completed certification in the last two years and taught at least one workshop;
\item
been certified for more than two years and has taught at least twice in that time;
or
\item
made a significant contribution to lesson development, infrastructure, or other activities
as determined by the Executive Council.
\end{itemize}
\noindent
Decisions are then made by those elected,
though they may decide or be required to take some matters to a referendum vote.
More complex models are possible~\cite{apache-governance},
but the most important thing is to decide on the rules well in advance of contentious issues emerging,
since tempers may already be running hot by the time this point is reached.
\rulemajor{Rule 4: Keep knowledge up to date and findable.}
When starting to contribute to a project,
newcomers must orient themselves in an unfamiliar landscape~\cite{dagenais2010}.
It is therefore important to make sure that all necessary information is both accessible and findable.
A single project may use wikis, files in GitHub, shared Google Docs, old tweets or Slack messages, and email archives;
keeping information about a specific topic in a single place
and clearly defining the purpose of each communication medium
saves newcomers from having to navigate multiple unfamiliar data sources to find what they need.
Doing this makes newcomers more confident and oriented~\cite{steinmacher2016}.
At the same time,
outdated documentation may lead newcomers to a wrong understanding of the project,
which is also demotivating.
While it may be hard to keep material up to date,
community members should at least remove or clearly mark outdated information.
Signalling the absence or staleness of material can save newcomers time
and also suggest opportunities for them to make contributions that they themselves would find useful.
One special case of this rule is to provide ``how to contribute'' guidelines in easy-to-find, readily-available places.
Many projects follow GitHub's recommendation for placing such information in a \texttt{CONTRIBUTING.md} file~\cite{github-rec}.
Other projects,
such as the Apache Open Office Suite and rOpenSci,
provide newcomer manuals and learning modules accessed through a web interface~\cite{apache-guidelines,ropensci-guidelines}.
Still others take a more interactive approach;
for example,
the GNOME project's Newcomers Guide~\cite{gnome-newcomers}, walks potential contributors through the contribution pipeline:
choosing a project,
acquiring and installing the necessary computing tools,
finding problems or choosing issues to work on,
submitting changes,
and following up on feedback.
Such guidelines do more than just describe how to contribute.
First,
their mere existence can ease newcomers' hesitation
about whether or not their work is sufficient and suitable for the project.
Second,
they provide a centralized, well-organized description of resources
that a newcomer can consult while learning to navigate the project's technical and social environments~\cite{zanatta2017}.
Guidelines also acclimate newcomers to the norms of work and communication,
particularly when items such as necessary computing tools and codes of conduct are foregrounded.
\rulemajor{Rule 5: Have and enforce a code of conduct.}
Community leaders should model the behaviors they want to encourage,
but that by itself is not enough:
experience shows that communities must also make norms about acceptable behavior explicit.
This helps ensure that everyone---not just newcomers---will find the environment healthy and welcoming.
It also sends a clear signal that the community actually \textit{has} standards:
many potential contributors will be painfully familiar with communities that don't,
and are more likely to give yours a try if they believe
it is not just another troll-infested chat room.
Being explicit also makes the project more accessible to people from differing cultural backgrounds,
as it helps them understand how expectations may differ from what they are used to.
A popular way to make norms explicit is to adopt a Code of Conduct.
Research on these is still in its infancy~\cite{tourani2017},
but many projects such as rOpenSci~\cite{ropensci-coc},
NumPy~\cite{numpy-coc},
and Project Jupyter~\cite{jupyter-coc}
have adopted the Contributor Covenant~\cite{covenant}
or used other frameworks such as SciPy's Code of Conduct~\cite{scipy-coc}.
A Code of Conduct is only useful if there is a clear reporting mechanism that community members trust,
and if it is enforced~\cite{aurora2019}.
Projects should designate an independent party
(i.e., an individual not employed by or otherwise closely connected the project)
to receive and review reports.
An independent party offers a degree of objectivity
and can help protect reporters from hesitating to raise issues concerning project leaders
out of fear of retribution or damage to their reputation.
When possible,
the independent party should be part of a more extensive code of conduct committee
made up of several people with varied characteristics
(e.g., gender identity, race, ethnicity, roles in the community).
Any member of the committee implicated in the incident should be refused from reviewing the violations.
Project leaders should also develop and publicize enforcement mechanisms,
which may range from verbal or written warnings,
limits on access to project communication avenues (e.g., Slack channels or mailing lists),
or suspension or expulsion from contributing to the project.
When safe for the reporter,
project leaders should also publicize enforcement decisions:
if this is not done,
the community may come to believe that the code is meaningless.
\rulemajor{Rule 6: Develop forms of legitimate peripheral participation.}
A core concept in the theory of communities of practice is that of
legitimate peripheral participation (LPP)~\cite{lave1991,wenger1999}.
Newcomers become members of a community by participating in simple, low-risk tasks
that further the goals of the community.
Through these peripheral activities,
newcomers become acquainted with the community's tasks, vocabulary, and governance
so that they can ease into the project.
In communities such as GitHub,
core activities such as committing code and submitting pull requests can be socially daunting for newcomers~\cite{steinmacher2015}.
One way to encourage LPP in this case is to encourage newcomers to submit issues to a repository when they notice a bug
or to join the dialog on recently submitted pull requests or issues.
Another way is to have newcomers help with documentation,
particularly with translation and localization,
and a third (mentioned in Rule~3) is to mark some issues as suitable for newcomers.
Building multiple ways of participating in a community demonstrates the variety of approaches newcomers can take to join the community.
This further demonstrates that there is not just one way to make technical contributions.
For example,
the main form of interaction in the community on Stack Overflow is to ask a question and posting an answer,
but engaging in that type of interaction can present barriers some users
including an intimidating community size and fear of negative feedback~\cite{ford2016}.
Thus, it is important to provide additional forms of participation.
On Stack Overflow, this is demonstrated through the ability to edit questions and answer without the restriction of reputation points.
Developing a pathway to participation can decrease the presence of barriers.
In studying the evolution of how content is formed in these communities~\cite{baltes2018},
newcomers can better understand the norms of a community and the best way to contribute~\cite{ford2018}.
\rulemajor{Rule 7: Make it easy for newcomers to get started.}
One way to facilitate LPP is to make it easy for newcomers to get set up
so that they can start work on contributions.
Getting set up to work on a project---going from ``I want to help''
to ``I'm able to help'' to ``I'm helping''---is often someone's first experience as a community participant.
Any complexity or confusion at this point is therefore a significant barrier to participation~\cite{steinmacher2014}.
By treating the process of getting involved with the same care and attention you give to the product itself,
you're making it clear that you value those contributors' time and effort,
and forestalling reactions like this~\cite{steinmacher2018b}:
\begin{quote}
I am still trying to build, because many errors occurred{\ldots}
I was expecting to move forward,
because so far I did not have time to look at the source code{\ldots}
It is frustrating.
\end{quote}
This work does not just benefit newcomers:
it also helps retention of existing intermittent contributors and the same work that makes your project more
accessible to new contributors today will do the same for future you.
Wheelchair ramps and the buttons that open heavy doors are not just used by those in wheelchairs:
they are just as helpful to people with strollers or one too many bags of groceries.
None of us are ever more than a sprained ankle away from desperately wanting that wheelchair ramp to be there.
In that same vein, a drive failure will someday force you to download a gigabyte of data
and reinstall some software, inevitably at the least convenient moment imaginable.
There is therefore a lot to be gained from automating as much of your setup process you can
and thoroughly documenting whatever you cannot.
\rulemajor{Rule 8: Use opportunities for in-person interaction---with care.}
Open source software projects often rely heavily on remote workers communicating via text, audio, and video.
Research on face-to-face and audio/video-mediated communication is mixed
with regard to their comparative effectiveness~\cite{doherty1997,gallupe1990,nardi2002},
but demonstrates that each form has benefits and drawbacks.
In-person interaction is valuable for uninterrupted, synchronous dialog
and helps to establish mutual understanding in a streamlined way~\cite{omalley1996}.
Projects can therefore benefit from engaging newcomers in in-person interaction from time to time.
According to Huppenkothen and colleagues~\cite{huppenkothen2018},
newcomers may particularly benefit from events that,
``{\ldots}combine structured periods focused on pedagogy
(often with an emphasis on statistical and computational techniques)
and less structured periods devoted to hacks and creative projects,
with the goal of encouraging collaboration and learning among people at various stages of their career.''
Combining newcomer-friendly events and activities with larger gatherings such as conferences
also amortize participants' financial costs and travel time.
However,
potential contributors might shy away from the project if they are introverted,
suffer from social anxiety,
or have had bad experiences in the past in face-to-face settings.
A Code of Conduct helps allay these concerns,
but some newcomers may still feel uncomfortable in group settings.
In this case,
not going to a meetup may leave them feeling less a part of the community.
Face-to-face communication also involves forms of information exchange
that are not easily captured and archived for all project members to see.
For example,
collocated project members might hash out ideas on whiteboards,
by scribbling notes,
or through informal chats.
Even when transcribing and/or taking photos of these is possible,
important contextual information may be lost~\cite{cherubini2007}.
Decisions and changes may seem to come out of nowhere when evaluated by a non-attendee,
so project leads should develop universally-accessible ways to communicate and explain the results of in-person activities.
\rulemajor{Rule 9: Acknowledge all contributions.}
People in open source sometimes joke that
a programmer is someone who will do something for a laptop sticker
that they would not do for a hundred dollars.
The kernel of truth in this joke is that
gratitude and recognition are the most powerful tools community builders have.
It is therefore crucial to acknowledge newcomers' contributions and thank them for their work.
Every hour that someone has given your project may be an hour taken away from their personal life
or their official employment;
recognize that fact
and make it clear that while more hours would be welcome,
you do not expect them to make unsustainable sacrifices.
To ensure completeness and fairness,
every project should adopt and publicize guidelines describing
what constitutes a contribution,
how contributions will be acknowledged,
and how they will be used.
Who can use the data collected by the project for what purposes,
and what attribution do they have to give?
How must they acknowledge the project and/or its contributors?
Who holds the copyright on contributed material?
Most projects now place this information in files called \texttt{LICENSE.md} and \texttt{CITATION.md},
and place a brief, readable summary in plain language in onboarding materials.
\rulemajor{Rule 10: Follow up on both success and failure.}
Once someone has carried their first contribution over the line,
you and they are likely to have a better sense of what they have to offer
and how the project can help them.
Helping newcomers find the next problem they might want to work on
or pointing them at the next thing they might enjoy reading
is both helpful and supportive.
In particular,
encouraging them to help the next wave of newcomers
is both a good way to recognize what they have learned,
and an effective way to pass it on.
Mentoring programs are a popular way to do this.
However,
their effectiveness appears mixed.
\cite{fagerholm2014} found that,
``{\ldots}developers receiving deliberate onboarding support through mentoring
were more active at an earlier stage than developers entering projects through conventional means.''
In contrast,
\cite{labuschagne2015} found that,
``{\ldots}developers who join an organization through these programs
are half as likely to transition into long-term community members
than developers who do not use these programs{\ldots}
although developers who do succeed through these programs find them valuable.''
One explanation for this disparity is that people become members of open projects for different reasons,
and hence respond to things like mentoring programs in different ways.
For example,
Barcomb et al.\ identified four types of episodic or intermittent contributors to open source projects~\cite{barcomb2019},
while M\"{a}enp\"{a}\"{a} et al.\ looked at how to reconcile
the competing yet complementary needs of stakeholders in hybrid open/commercial projects \cite{maenpaa2018}.
More research is needed,
but as openness becomes the norm in research,
doing it well becomes a core skill for every researcher.
When they can,
projects should also try to follow up on their failures.
Why did potential contributors \emph{not} become community members?
Did they realize that the project wasn't a good fit
(in which case, the overview may need an overhaul)?
Was it too difficult to find a starting point or to get set up to start work
(in which case information may need to be consolidated, tagged, filled in, or updated)?
Or did they feel uncomfortable or under-valued
(in which case the community may need to have a more difficult conversation)?
The conversations with individuals should in most cases be confidential,
but making the conclusions and corrective actions public
is the best possible way to signal that you are serious about building the best community you can.
\section*{Martha's Rules}
\begin{enumerate}
\item
Anyone may put forward a proposal up to 24 hours before a meeting.
Proposals must include a one-line summary,
a brief description,
any required background information,
and a discussion of pros and cons (including alternatives).
\item
Once a person has sponsored a proposal, they are responsible for it:
the group may not discuss or vote on the issue unless the sponsor is present.
\item
After the sponsor presents the proposal,
a ``sense'' vote is taken prior to any discussion
in which people indicate whether the like the proposal,
can live with it,
or are uncomfortable with it.
\item
If all or most of the group likes or can live with the proposal,
it moves to a formal vote with no further discussion.
\item
If most of the group is uncomfortable with the proposal,
it is postponed for further rework by the sponsor.
\item
If some members are uncomfortable they can briefly state their objections.
After ten minute of moderated discussion,
the facilitator calls for a yes-or-no vote on adoption.
If a majority votes "yes" the proposal is implemented.
Otherwise, the proposal is returned to the sponsor for further work.
\end{enumerate}
\subsection*{Acknowledgments}
The authors are grateful to everyone who gave feedback on early versions of this paper,
and particularly to Erin Robinson for her detailed, knowledgeable, and helpful critique.
\begin{thebibliography}{10}
\bibitem{qureshi2011}
Qureshi I, Fang Y.
\newblock Socialization in open source software projects: A growth mixture
modeling approach.
\newblock Organizational Research Methods. 2011;14(1):208--238.
\bibitem{lave1991}
Lave J, Wenger E.
\newblock Situated Learning: Legitimate Peripheral Participation.
\newblock Cambridge University Press; 1991.
\bibitem{wenger1999}
Wenger E.
\newblock Communities of Practice: Learning, Meaning, and Identity.
\newblock Cambridge University Press; 1999.
\bibitem{brown2019}
Brown CT. Sustaining open source: thinking about communities of effort;
Accessed March 21, 2019.
\newblock http://ivory.idyll.org/blog/author/c-titus-brown.html.
\bibitem{mozilla}
{Mozilla Foundation}. Mozilla Firefox; Accessed March 21, 2019.
\newblock https://www.mozilla.org/en-US/.
\bibitem{fogel2005}
Fogel K.
\newblock Producing Open Source Software: How to Run a Successful Free Software
Project.
\newblock O'Reilly Media; 2005.
\bibitem{singh2012}
Singh V.
\newblock Newcomer integration and learning in technical support communities
for open source software.
\newblock In: Proc.\ 2012 {ACM} International Conference on Supporting Group
Work - {GROUP'12}. {ACM} Press; 2012.
\bibitem{steinmacher2013}
Steinmacher I, Wiese I, Chaves AP, Gerosa MA.
\newblock Why do newcomers abandon open source software projects?
\newblock In: Proc.\ 2013 International Workshop on Cooperative and Human
Aspects of Software Engineering ({CHASE'13}). Institute of Electrical and
Electronics Engineers ({IEEE}); 2013.
\bibitem{steinmacher2018a}
Steinmacher I, Pinto G, Wiese IS, Gerosa MA.
\newblock Almost There: A Study on Quasi-Contributors in Open-Source Software
Projects.
\newblock In: Proc.\ 2018 International Conference on Software Engineering
({ICSE'18}). {ACM} Press; 2018.
\bibitem{libreoffice-filtered}
{The Document Foundation}. LibreOffice Easy Hacks by Required Skill; Accessed
March 21, 2019.
\newblock
https://wiki.documentfoundation.org/Development/EasyHacks/by\_Required\_Skill.
\bibitem{my-github-resume}
Coallier D. My GitHub Resume; Accessed March 21, 2019.
\newblock https://resume.github.io/.
\bibitem{sarma2016}
Sarma A, Chen X, Kuttal S, Dabbish L, Wang Z.
\newblock Hiring in the Global Stage: Profiles of Online Contributions.
\newblock In: Proc.\ 2016 {IEEE} International Conference on Global Software
Engineering. ICGSE 2016. Institute of Electrical and Electronics Engineers
({IEEE}); 2016.
\bibitem{openhatch}
OpenHatch; Accessed March 27 2019.
\newblock http://openhatch.org/.
\bibitem{raymond2001}
Raymond ES. The Cathedral and the Bazaar; 2001.
\bibitem{bezroukov1999}
Bezroukov N. A Second Look at the Cathedral and the Bazaar; 1999.
\newblock https://firstmonday.org/article/view/708/618.
\bibitem{freeman1972}
Freeman J.
\newblock The Tyranny of Structurelessness.
\newblock The Second Wave. 1972;2(1).
\bibitem{psf-bylaws}
Python Software Foundation Bylaws; Accessed February 16, 2019.
\newblock https://www.python.org/psf/bylaws/.
\bibitem{minahan1986}
Minahan A.
\newblock Martha's Rules.
\newblock Affilia. 1986;1(2):53--56.
\newblock doi:{10.1177/088610998600100206}.
\bibitem{carpentries-bylaws}
The Carpentries Bylaws; Accessed February 16, 2019.
\newblock https://docs.carpentries.org/topic\_folders/governance/index.html.
\bibitem{apache-governance}
{Apache Software Foundation}. The Apache Software Foundation: How It Works;
Accessed March 27, 2019.
\newblock https://www-us.apache.org/foundation/how-it-works.html.
\bibitem{dagenais2010}
Dagenais B, Ossher H, Bellamy RKE, Robillard MP, de~Vries JP.
\newblock Moving Into a New Software Project Landscape.
\newblock In: Proc.\ 2010 International Conference on Software Engineering
({ICSE'10}). {ACM} Press; 2010.
\bibitem{steinmacher2016}
Steinmacher I, Conte TU, Treude C, Gerosa MA.
\newblock Overcoming open source project entry barriers with a portal for
newcomers.
\newblock In: Proc.\ 2016 International Conference on Software Engineering
({ICSE'16}). {ACM} Press; 2016.
\bibitem{github-rec}
GitHub. Setting Guidelines for Repository Contributors; Accessed February 16,
2019.
\newblock https://help.github.com/articles/setting-guidelines-for-repository-
contributors/.
\bibitem{apache-guidelines}
{Apache Software Foundation}. Introduction to Contributing to Apache
OpenOffice; Accessed February 16, 2019.
\newblock https://openoffice.apache.org/orientation/intro-contributing.html.
\bibitem{ropensci-guidelines}
rOpenSci Packages: Develpoment, Maintenance, and Peer Review; Accessed February
16, 2019.
\newblock https://ropensci.github.io/dev\_guide/.
\bibitem{gnome-newcomers}
GNOME Newcomers' Guide; Accessed February 16, 2019.
\newblock https://wiki.gnome.org/Newcomers/SubmitContribution.
\bibitem{zanatta2017}
Zanatta AL, Steinmacher I, Machado LS, de~Souza CRB, Prikladnicki R.
\newblock Barriers Faced by Newcomers to Software-Crowdsourcing Projects.
\newblock {IEEE} Software. 2017;34(2):37--43.
\newblock doi:{10.1109/ms.2017.32}.
\bibitem{tourani2017}
Tourani P, Adams B, Serebrenik A.
\newblock Code of Conduct in Open Source Projects.
\newblock In: Proc.\ 2017 International Conference on Software Analysis,
Evolution and Reengineering ({SANER'17}). {IEEE}; 2017.
\bibitem{ropensci-coc}
rOpenSci Code of Conduct; Accessed February 14, 2019.
\newblock https://ropensci.org/code-of-conduct/.
\bibitem{numpy-coc}
{SciPy Community}. NumPy Code of Conduct; Accessed February 14, 2019.
\newblock https://www.numpy.org/devdocs/dev/conduct/code\_of\_conduct.html.
\bibitem{jupyter-coc}
{Project Jupyter}. Code of Conduct; Accessed February 14, 2019.
\newblock
https://github.com/jupyter/governance/blob/master/conduct/code\_of\_conduct.md.
\bibitem{covenant}
Contributor Covenant; Accessed February 14, 2019.
\newblock https://www.contributor-covenant.org/.
\bibitem{scipy-coc}
SciPy Code of Conduct; Accessed February 14, 2019.
\newblock
https://docs.scipy.org/doc/scipy/reference/dev/conduct/code\_of\_conduct.html.
\bibitem{aurora2019}
Aurora V, Gardiner M.
\newblock How to Respond to Code of Conduct Reports.
\newblock Version 1.1 ed. Frame Shift Consulting LLC; 2019.
\bibitem{steinmacher2015}
Steinmacher I, Conte T, Gerosa MA, Redmiles D.
\newblock Social Barriers Faced by Newcomers Placing Their First Contribution
in Open Source Software Projects.
\newblock In: Proc.\ 2015 {ACM} Conference on Computer Supported Cooperative
Work {\&} Social Computing. CSCW 2015. {ACM} Press; 2015.
\bibitem{ford2016}
Ford D, Smith J, Guo PJ, Parnin C.
\newblock Paradise Unplugged: Identifying Barriers for Female Participation on
Stack Overflow.
\newblock In: Proc.\ 2016 ACM SIGSOFT International Symposium on Foundations of
Software Engineering ({FSE'16}). FSE 2016. {ACM} Press; 2016. p. 846--857.
\bibitem{baltes2018}
Baltes S, Dumani L, Treude C, Diehl S.
\newblock The Evolution of Stack Overflow Posts: Reconstruction and Analysis.
\newblock CoRR. 2018;abs/1811.00804.
\bibitem{ford2018}
Ford D, Lustig K, Banks J, Parnin C.
\newblock "We Don't Do That Here": How Collaborative Editing with Mentors
Improves Engagement in Social {Q\&A} Communities.
\newblock In: Proc.\ 2018 CHI Conference on Human Factors in Computing Systems.
CHI 2018; 2018. p. 608:1--608:12.
\bibitem{steinmacher2014}
Steinmacher I, Wiese I, Conte T, Gerosa M, Redmiles D.
\newblock The Hard Life of Open Source Software Project Newcomers.
\newblock In: Proc.\ 2014 International Workshop on Cooperative and Human
Aspects of Software Engineering ({CHASE'14}). {ACM} Press; 2014.
\bibitem{steinmacher2018b}
Steinmacher I, Treude C, Gerosa MA.
\newblock Let Me In: Guidelines for the Successful Onboarding of Newcomers to
Open Source Projects.
\newblock {IEEE} Software. 2018;doi:{10.1109/MS.2018.110162131}.
\bibitem{doherty1997}
Doherty-Sneddon G, O{\textquotesingle}Malley C, Garrod S, Anderson A, et~al.
\newblock Face-to-face and video-mediated communication: A comparison of
dialogue structure and task performance.
\newblock Journal of Experimental Psychology: Applied. 1997;3(2):105--125.
\newblock doi:{10.1037/1076-898x.3.2.105}.
\bibitem{gallupe1990}
Gallupe RB, McKeen JD.
\newblock Enhancing Computer-Mediated Communication: An experimental
investigation into the use of a Group Decision Support System for
face-to-face versus remote meetings.
\newblock Information {\&} Management. 1990;18(1):1--13.
\newblock doi:{10.1016/0378-7206(90)90059-q}.
\bibitem{nardi2002}
Nardi BA, Whittaker S.
\newblock The place of face-to-face communication in distributed work.
\newblock In: Hinds P, Kiesler S, editors. Distributed Work. {MIT} Press; 2002.
p. 83--110.
\bibitem{omalley1996}
O'Malley C, Langton S, Anderson A, Doherty-Sneddon G, Bruce V.
\newblock Comparison of face-to-face and video-mediated interaction.
\newblock Interacting with Computers. 1996;8(2):177--192.
\newblock doi:{10.1016/0953-5438(96)01027-2}.
\bibitem{huppenkothen2018}
Huppenkothen D, Arendt A, Hogg DW, Ram K, VanderPlas JT, Rokem A.
\newblock Hack weeks as a model for data science education and collaboration.
\newblock Proc\ National Academy of Sciences. 2018;115(36):8872--8877.
\newblock doi:{10.1073/pnas.1717196115}.
\bibitem{cherubini2007}
Cherubini M, Venolia G, DeLine R, Ko AJ.
\newblock Let's Go to the Whiteboard: How and Why Software Developers Use
Drawings.
\newblock In: Proc.\ 2007 Conference on Human Factors in Computing Systems
({CHI'07}). Association for Computing Machinery ({ACM}); 2007.
\bibitem{fagerholm2014}
Fagerholm F, Guinea AS, M\"{u}nch J, Borenstein J.
\newblock The role of mentoring and project characteristics for onboarding in
open source software projects.
\newblock In: Proc.\ 2014 International Symposium on Empirical Software
Engineering and Measurement ({ESEM'14}). {ACM} Press; 2014.
\bibitem{labuschagne2015}
Labuschagne A, Holmes R.
\newblock Do Onboarding Programs Work?
\newblock In: Proc.\ 2015 Working Conference on Mining Software Repositories
({MSR'15}). {IEEE}; 2015.
\bibitem{barcomb2019}
Barcomb A, Stol KJ, Riehle D, Fitzgerald B.
\newblock Why Do Episodic Volunteers Stay in FLOSS Communities?
\newblock In: Proc.\ 2019 International Conference on Software Engineering
({ICSE'19}). {ACM} Press; 2019.
\bibitem{maenpaa2018}
M\"{a}enp\"{a}\"{a} H, M\"{a}kinen S, Kilamo T, Mikkonen T, M\"{a}nnist\"{o} T,
Ritala P.
\newblock Organizing for openness: six models for developer involvement in
hybrid {OSS} projects.
\newblock Journal of Internet Services and Applications. 2018;9(1).
\newblock doi:{10.1186/s13174-018-0088-1}.
\end{thebibliography}
\end{document}