SlideShare uma empresa Scribd logo
1 de 66
From 1 to 100
Building Your Project Community
What we’ll cover
• The Funnel
• Design for Division of Labor
• Being Welcoming
• Licensing (if needed and time suffices)
THE FUNNEL
Categories
• Defines levels of community involvement
• People can move from one category to
another, including in reverse.
• Typical Categories are:
– Users
– Contributors
– Committers
– LeadersPMC membersetc.
Categories
• Defines levels of community involvement
• People can move from one category to another,
including in reverse.
• Typical Categories are:
– VisitorsPotential Members!
– Users
– Contributors
– Committers
– LeadersPMC membersetc.
Visitor to User Funnel
Users
Visitor
Visitor
Visitor
Turn Visitors Into Users
• Optimize homepage for new users, not
development.
Example: Jenkins
Turn Visitors Into Users
• Make it easy to find the appropriate
downloads
Simplify Downloading
Example: OpenLP
Turn Visitors Into Users
• Make it easy to find the appropriate
downloads
– Pro tip: Put on NuGet Gallery, Microsoft WPI,
Xamarin Component Store, etc.
Turn Visitors Into Users
• Simplify setup
– If it’s three steps, make it two. If it’s two, make it
one.
User to Contributor Funnel
Contributors
User
User
User
Turn Users into Contributors
• Recruit them to do user support, particularly
new users
– New users often have similar issues
Turn Users into Contributors
• Mark bugs for new contributors
– Should not take more than two hours TOTAL
Example: Mozilla
Turn Users into Contributors
• Tag bugs with a specific mentor for new
contributor
Example: Mozilla
Example: Mozilla
Turn Users into Contributors
• Simplify (developer) Setup
– If it’s three steps make it two, if it’s two steps
make it one.
Example: Outercurve’s Signing Service
• “ServiceStack based web service and client
tools for performing remote Authenticode and
.NET Assembly Strong Name signing”
• A single Powershell command or MSBuild
tasks can sign PE files, Powershell scripts,
MSIs, or OPC files
Example: Outercurve’s Signing Service
• Source is designed for hacking by default, NOT
production
• ASP.net Signing Service
– Defaults to a sample signing certificate
– Defaults to using the Azure Storage Emulator
• Cmdlet DLL
– Has a debug command set in .csproj
– Debug command starts new Powershell session,
removes installed Cmdlet version and imports the
debug module
Turn Users into Contributors
• Design for division of labor
DESIGN FOR DIVISION OF LABOR
Two types of productivity
• Individual productivity
• Community productivity
Individual vs. community productivity
• Tools for one don’t necessarily help with the
other
Does LINQ help community productivity that
much?
var max = list.Select(i =>
i.SomeProperty).GroupBy(i=>
_service.Call(i.MethodCall())).Max(i =>
i.AnotherProperty)
• Side effects of Select? SomeProperty? Call?
MethodCall? AnotherProperty/?
• Side effects to any side effects?
• How does this line fit into the other 1000?
10000? 100000?
The Problem of Explaining Code
• There’s only one of you!
• People will have the same questions.
You’re a Finite Resource
public Answer GetAnswer (Question q)
{
lock (you)
{
return you.Answer(q);
}
}
Collaboration is hard!
• Multi-lingual communication is hard
• Working in different time zones is hard
• Not everyone looks at code or even life in the
same way
• People in OSS projects are often faceless
Modularity
• Don’t design for a few developers.
– How most software development on teams occurs
• Design for a radically large number of
developers
– 50? 100? 500? More?
• Very, very clearly document your interfaces
• Require only the minimal amount of
knowledge to complete a development task
Example: NuGet
• NuGet has 14,233 packages (7/15)
– Almost all created by non-NuGet team members
• Why so successful?
– Package creators don’t need to know how NuGet
is constructed
• Simple, straightforward interface that hides
the details
Plugins
• “Modularity taken to it’s logical
consequences”
• True extensibility doesn’t begin with external
interface!
• Extensibility starts at root of the core
• If core can do it, plugins can do it
Example: Orchard
• Uses dependency injection through Autofac
IoC
Example: Orchard
1. Create an interface inheriting IDependency
Example: Orchard
2. Implement your interface, using other
IDependency-inheriting interfaces
Example: Orchard
• Other interfaces:
– ISingletonDependency
– IUnitOfWorkDependency
– ITransientDependency
“If core can do something plugins can’t, that’s a
bug.”
- Kohsuke Kawaguchi (creator of Jenkins)
Example: Orchard
GREAT Way to Recruit Long Term Contributors
• New contributors can accomplish tasks with
minimal time and effort
• Contributors are now invested
• More likely to look into other parts of the
system
BEING WELCOMING
BEING WELCOMING
“Don’t Be An Asshole”
Don’t be an asshole
• How many positive interactions does it take to
offset a negative one?
• It takes 5 positive interactions just to offset 1
negative interaction
• It takes 5 positive interactions just to offset 1
negative interaction
• In workplace, 66% of targets of assholes had
decreased performance by and 38% dropped
their quality.
So how many people really quit?
• 25% of targets quit
• 20% of witnesses quit
What isn’t an asshole?
• Someone who respectfully disagrees on
technical changes
What is an asshole? A simple test
“After talking to the asshole, does the target feel
oppressed, humiliated, de-energized, or
belittled?”
- Donnie Berkholz (Gentoo Linux leader)
Ways You (and Your Community) Can Be
Welcoming
• Be positive towards people in public
– If you MUST be negative, do that in private.
Ways You (and Your Community) Can Be
Welcoming
• Be positive towards people in public
• Have a way of reporting assholes
Ways You (and Your Community) Can Be
Welcoming
• Be positive towards people in public
• Have a way of reporting assholes
• Believe people when they say something hurts
them AND fix the problem.
Ways You (and Your Community) Can Be
Welcoming
• Be positive towards people in public
• Have a way of reporting assholes
• Believe people when they say something hurts
them AND fix the problem.
• Be flexible on technical and coding standards
at first
Ways You (and Your Community) Can Be
Welcoming
• Be positive towards people in public
• Have a way of reporting assholes
• Believe people when they say something hurts
them AND fix the problem
• Be flexible on technical and coding standards
at first
• Create a Code of Conduct
LICENSING
You need a license*
• If Companies can’t use your code without a
license on it And Full time employees working
on your project is really good
• Then…
You need a license*
• If Companies can’t use your code without a
license on it And Full time employees working
on your project is really good
• Then you need a license on your code.
You need a license*
• If Companies can’t use your code without a
license on it And Full time employees working
on your project is really good
• Then you need a license on your code.
• EndIf
You need a license*
*Public Domain will suffice as well
Questions?
@EricOutercurve
eschultz@outercurve.org
This work is licensed under a Creative Commons Attribution 3.0 Unported License.

Mais conteúdo relacionado

Mais procurados

Gardler bosc2010 community_developmentattheasf
Gardler bosc2010 community_developmentattheasfGardler bosc2010 community_developmentattheasf
Gardler bosc2010 community_developmentattheasfBOSC 2010
 
5 Must-to-Read Books on DevOps
5 Must-to-Read Books on DevOps5 Must-to-Read Books on DevOps
5 Must-to-Read Books on DevOpsGanesh Samarthyam
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....Mike Harris
 
Supersize me: Making Drupal go large
Supersize me: Making Drupal go largeSupersize me: Making Drupal go large
Supersize me: Making Drupal go largeTom Phethean
 
Efficient Code Organisation
Efficient Code OrganisationEfficient Code Organisation
Efficient Code OrganisationSqueed
 
LCA14: LCA14-110: FLOSS Training
LCA14: LCA14-110: FLOSS TrainingLCA14: LCA14-110: FLOSS Training
LCA14: LCA14-110: FLOSS TrainingLinaro
 
Prototyping for responsive web design
Prototyping for responsive web design Prototyping for responsive web design
Prototyping for responsive web design mrscammels
 
Software Craftsmanship Essentials
Software Craftsmanship EssentialsSoftware Craftsmanship Essentials
Software Craftsmanship EssentialsEduards Sizovs
 
The Apache Way - Dataworks Summit 2017
The Apache Way - Dataworks Summit 2017The Apache Way - Dataworks Summit 2017
The Apache Way - Dataworks Summit 2017Brett Porter
 
Scaling a Serverless Developer Platform for Teams
Scaling a Serverless Developer Platform for TeamsScaling a Serverless Developer Platform for Teams
Scaling a Serverless Developer Platform for TeamsMikael Vesavuori
 
Continuous Delivery (The newest)
Continuous Delivery (The newest)Continuous Delivery (The newest)
Continuous Delivery (The newest)Eduards Sizovs
 
Software is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for ChangeSoftware is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for ChangeCantina
 
Leveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup projectLeveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup projectThomas Jaskula
 
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012Atlassian
 
5-10-15 years of Java developer career - Warszawa JUG 2015
5-10-15 years of Java developer career - Warszawa JUG 20155-10-15 years of Java developer career - Warszawa JUG 2015
5-10-15 years of Java developer career - Warszawa JUG 2015Wojciech Seliga
 
Ten lessons I painfully learnt while moving from software developer
to entrep...
Ten lessons I painfully learnt while moving from software developer
to entrep...Ten lessons I painfully learnt while moving from software developer
to entrep...
Ten lessons I painfully learnt while moving from software developer
to entrep...Wojciech Seliga
 
TDD - Cultivating a Beginner's Mind
TDD -  Cultivating a Beginner's MindTDD -  Cultivating a Beginner's Mind
TDD - Cultivating a Beginner's MindShai Yallin
 
Open is as Open does
Open is as Open doesOpen is as Open does
Open is as Open doesAndrew Shafer
 
JavaZone 2019 - Better software, faster: Principles of Continuous Delivery an...
JavaZone 2019 - Better software, faster: Principles of Continuous Delivery an...JavaZone 2019 - Better software, faster: Principles of Continuous Delivery an...
JavaZone 2019 - Better software, faster: Principles of Continuous Delivery an...Bert Jan Schrijver
 

Mais procurados (20)

Gardler bosc2010 community_developmentattheasf
Gardler bosc2010 community_developmentattheasfGardler bosc2010 community_developmentattheasf
Gardler bosc2010 community_developmentattheasf
 
5 Must-to-Read Books on DevOps
5 Must-to-Read Books on DevOps5 Must-to-Read Books on DevOps
5 Must-to-Read Books on DevOps
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
 
Supersize me: Making Drupal go large
Supersize me: Making Drupal go largeSupersize me: Making Drupal go large
Supersize me: Making Drupal go large
 
Efficient Code Organisation
Efficient Code OrganisationEfficient Code Organisation
Efficient Code Organisation
 
LCA14: LCA14-110: FLOSS Training
LCA14: LCA14-110: FLOSS TrainingLCA14: LCA14-110: FLOSS Training
LCA14: LCA14-110: FLOSS Training
 
Prototyping for responsive web design
Prototyping for responsive web design Prototyping for responsive web design
Prototyping for responsive web design
 
Software Craftsmanship Essentials
Software Craftsmanship EssentialsSoftware Craftsmanship Essentials
Software Craftsmanship Essentials
 
The Apache Way - Dataworks Summit 2017
The Apache Way - Dataworks Summit 2017The Apache Way - Dataworks Summit 2017
The Apache Way - Dataworks Summit 2017
 
Scaling a Serverless Developer Platform for Teams
Scaling a Serverless Developer Platform for TeamsScaling a Serverless Developer Platform for Teams
Scaling a Serverless Developer Platform for Teams
 
Continuous Delivery (The newest)
Continuous Delivery (The newest)Continuous Delivery (The newest)
Continuous Delivery (The newest)
 
Software is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for ChangeSoftware is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for Change
 
Leveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup projectLeveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup project
 
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
 
5-10-15 years of Java developer career - Warszawa JUG 2015
5-10-15 years of Java developer career - Warszawa JUG 20155-10-15 years of Java developer career - Warszawa JUG 2015
5-10-15 years of Java developer career - Warszawa JUG 2015
 
Os Long
Os LongOs Long
Os Long
 
Ten lessons I painfully learnt while moving from software developer
to entrep...
Ten lessons I painfully learnt while moving from software developer
to entrep...Ten lessons I painfully learnt while moving from software developer
to entrep...
Ten lessons I painfully learnt while moving from software developer
to entrep...
 
TDD - Cultivating a Beginner's Mind
TDD -  Cultivating a Beginner's MindTDD -  Cultivating a Beginner's Mind
TDD - Cultivating a Beginner's Mind
 
Open is as Open does
Open is as Open doesOpen is as Open does
Open is as Open does
 
JavaZone 2019 - Better software, faster: Principles of Continuous Delivery an...
JavaZone 2019 - Better software, faster: Principles of Continuous Delivery an...JavaZone 2019 - Better software, faster: Principles of Continuous Delivery an...
JavaZone 2019 - Better software, faster: Principles of Continuous Delivery an...
 

Semelhante a From 1 to 100

Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&processSheSaysCREATIVE
 
Java DevOps at Enterprise Scale
Java DevOps at Enterprise ScaleJava DevOps at Enterprise Scale
Java DevOps at Enterprise ScaleRyan McGuinness
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slidesSameer Al-Sakran
 
Driving Developers To Your API
Driving Developers To Your APIDriving Developers To Your API
Driving Developers To Your APICarlo Longino
 
Best Practices for API Adoption - WIP Factory presentation for AnyPresence we...
Best Practices for API Adoption - WIP Factory presentation for AnyPresence we...Best Practices for API Adoption - WIP Factory presentation for AnyPresence we...
Best Practices for API Adoption - WIP Factory presentation for AnyPresence we...Carlo Longino
 
Building software: the lessons from open source
Building software: the lessons from open sourceBuilding software: the lessons from open source
Building software: the lessons from open sourceArnaud Porterie
 
From silex to symfony and viceversa
From silex to symfony and viceversaFrom silex to symfony and viceversa
From silex to symfony and viceversaRonny López
 
How to get started in Open Source!
How to get started in Open Source!How to get started in Open Source!
How to get started in Open Source!Pradeep Singh
 
Best practices for using open source software in the enterprise
Best practices for using open source software in the enterpriseBest practices for using open source software in the enterprise
Best practices for using open source software in the enterpriseMarcel de Vries
 
Internet of Things, TYBSC IT, Semester 5, Unit II
Internet of Things, TYBSC IT, Semester 5, Unit IIInternet of Things, TYBSC IT, Semester 5, Unit II
Internet of Things, TYBSC IT, Semester 5, Unit IIArti Parab Academics
 
OOP -interface and objects.pptx
OOP -interface and objects.pptxOOP -interface and objects.pptx
OOP -interface and objects.pptxEdFeranil
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)Nacho Cougil
 
Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsMike Long
 
TDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekNacho Cougil
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation ProjectsAmazon Web Services
 
Introducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsIntroducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsShafiul Azam Chowdhury
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing codeZivtech, LLC
 

Semelhante a From 1 to 100 (20)

Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process
 
Java DevOps at Enterprise Scale
Java DevOps at Enterprise ScaleJava DevOps at Enterprise Scale
Java DevOps at Enterprise Scale
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slides
 
Driving Developers To Your API
Driving Developers To Your APIDriving Developers To Your API
Driving Developers To Your API
 
Best Practices for API Adoption - WIP Factory presentation for AnyPresence we...
Best Practices for API Adoption - WIP Factory presentation for AnyPresence we...Best Practices for API Adoption - WIP Factory presentation for AnyPresence we...
Best Practices for API Adoption - WIP Factory presentation for AnyPresence we...
 
Building software: the lessons from open source
Building software: the lessons from open sourceBuilding software: the lessons from open source
Building software: the lessons from open source
 
From silex to symfony and viceversa
From silex to symfony and viceversaFrom silex to symfony and viceversa
From silex to symfony and viceversa
 
How to get started in Open Source!
How to get started in Open Source!How to get started in Open Source!
How to get started in Open Source!
 
Best practices for using open source software in the enterprise
Best practices for using open source software in the enterpriseBest practices for using open source software in the enterprise
Best practices for using open source software in the enterprise
 
Internet of Things, TYBSC IT, Semester 5, Unit II
Internet of Things, TYBSC IT, Semester 5, Unit IIInternet of Things, TYBSC IT, Semester 5, Unit II
Internet of Things, TYBSC IT, Semester 5, Unit II
 
OOP -interface and objects.pptx
OOP -interface and objects.pptxOOP -interface and objects.pptx
OOP -interface and objects.pptx
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)
 
Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy Projects
 
TDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech Week
 
DevOps Year One
DevOps Year OneDevOps Year One
DevOps Year One
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
Introducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsIntroducing systems analysis, design & development Concepts
Introducing systems analysis, design & development Concepts
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing code
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 

Último

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Último (20)

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

From 1 to 100

  • 1. From 1 to 100 Building Your Project Community
  • 2.
  • 3. What we’ll cover • The Funnel • Design for Division of Labor • Being Welcoming • Licensing (if needed and time suffices)
  • 5. Categories • Defines levels of community involvement • People can move from one category to another, including in reverse. • Typical Categories are: – Users – Contributors – Committers – LeadersPMC membersetc.
  • 6. Categories • Defines levels of community involvement • People can move from one category to another, including in reverse. • Typical Categories are: – VisitorsPotential Members! – Users – Contributors – Committers – LeadersPMC membersetc.
  • 7. Visitor to User Funnel Users Visitor Visitor Visitor
  • 8. Turn Visitors Into Users • Optimize homepage for new users, not development.
  • 10. Turn Visitors Into Users • Make it easy to find the appropriate downloads
  • 12. Turn Visitors Into Users • Make it easy to find the appropriate downloads – Pro tip: Put on NuGet Gallery, Microsoft WPI, Xamarin Component Store, etc.
  • 13. Turn Visitors Into Users • Simplify setup – If it’s three steps, make it two. If it’s two, make it one.
  • 14. User to Contributor Funnel Contributors User User User
  • 15. Turn Users into Contributors • Recruit them to do user support, particularly new users – New users often have similar issues
  • 16. Turn Users into Contributors • Mark bugs for new contributors – Should not take more than two hours TOTAL
  • 18. Turn Users into Contributors • Tag bugs with a specific mentor for new contributor
  • 21. Turn Users into Contributors • Simplify (developer) Setup – If it’s three steps make it two, if it’s two steps make it one.
  • 22. Example: Outercurve’s Signing Service • “ServiceStack based web service and client tools for performing remote Authenticode and .NET Assembly Strong Name signing” • A single Powershell command or MSBuild tasks can sign PE files, Powershell scripts, MSIs, or OPC files
  • 23. Example: Outercurve’s Signing Service • Source is designed for hacking by default, NOT production • ASP.net Signing Service – Defaults to a sample signing certificate – Defaults to using the Azure Storage Emulator • Cmdlet DLL – Has a debug command set in .csproj – Debug command starts new Powershell session, removes installed Cmdlet version and imports the debug module
  • 24. Turn Users into Contributors • Design for division of labor
  • 26. Two types of productivity • Individual productivity • Community productivity
  • 27. Individual vs. community productivity • Tools for one don’t necessarily help with the other
  • 28. Does LINQ help community productivity that much? var max = list.Select(i => i.SomeProperty).GroupBy(i=> _service.Call(i.MethodCall())).Max(i => i.AnotherProperty) • Side effects of Select? SomeProperty? Call? MethodCall? AnotherProperty/? • Side effects to any side effects? • How does this line fit into the other 1000? 10000? 100000?
  • 29. The Problem of Explaining Code • There’s only one of you! • People will have the same questions.
  • 30. You’re a Finite Resource public Answer GetAnswer (Question q) { lock (you) { return you.Answer(q); } }
  • 31. Collaboration is hard! • Multi-lingual communication is hard • Working in different time zones is hard • Not everyone looks at code or even life in the same way • People in OSS projects are often faceless
  • 32. Modularity • Don’t design for a few developers. – How most software development on teams occurs • Design for a radically large number of developers – 50? 100? 500? More? • Very, very clearly document your interfaces • Require only the minimal amount of knowledge to complete a development task
  • 33. Example: NuGet • NuGet has 14,233 packages (7/15) – Almost all created by non-NuGet team members • Why so successful? – Package creators don’t need to know how NuGet is constructed • Simple, straightforward interface that hides the details
  • 34. Plugins • “Modularity taken to it’s logical consequences” • True extensibility doesn’t begin with external interface! • Extensibility starts at root of the core • If core can do it, plugins can do it
  • 35. Example: Orchard • Uses dependency injection through Autofac IoC
  • 36. Example: Orchard 1. Create an interface inheriting IDependency
  • 37. Example: Orchard 2. Implement your interface, using other IDependency-inheriting interfaces
  • 38. Example: Orchard • Other interfaces: – ISingletonDependency – IUnitOfWorkDependency – ITransientDependency
  • 39. “If core can do something plugins can’t, that’s a bug.” - Kohsuke Kawaguchi (creator of Jenkins)
  • 41. GREAT Way to Recruit Long Term Contributors • New contributors can accomplish tasks with minimal time and effort • Contributors are now invested • More likely to look into other parts of the system
  • 44. Don’t be an asshole • How many positive interactions does it take to offset a negative one?
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50. • It takes 5 positive interactions just to offset 1 negative interaction
  • 51. • It takes 5 positive interactions just to offset 1 negative interaction • In workplace, 66% of targets of assholes had decreased performance by and 38% dropped their quality.
  • 52. So how many people really quit? • 25% of targets quit • 20% of witnesses quit
  • 53. What isn’t an asshole? • Someone who respectfully disagrees on technical changes
  • 54. What is an asshole? A simple test “After talking to the asshole, does the target feel oppressed, humiliated, de-energized, or belittled?” - Donnie Berkholz (Gentoo Linux leader)
  • 55. Ways You (and Your Community) Can Be Welcoming • Be positive towards people in public – If you MUST be negative, do that in private.
  • 56. Ways You (and Your Community) Can Be Welcoming • Be positive towards people in public • Have a way of reporting assholes
  • 57. Ways You (and Your Community) Can Be Welcoming • Be positive towards people in public • Have a way of reporting assholes • Believe people when they say something hurts them AND fix the problem.
  • 58. Ways You (and Your Community) Can Be Welcoming • Be positive towards people in public • Have a way of reporting assholes • Believe people when they say something hurts them AND fix the problem. • Be flexible on technical and coding standards at first
  • 59. Ways You (and Your Community) Can Be Welcoming • Be positive towards people in public • Have a way of reporting assholes • Believe people when they say something hurts them AND fix the problem • Be flexible on technical and coding standards at first • Create a Code of Conduct
  • 61. You need a license* • If Companies can’t use your code without a license on it And Full time employees working on your project is really good • Then…
  • 62. You need a license* • If Companies can’t use your code without a license on it And Full time employees working on your project is really good • Then you need a license on your code.
  • 63. You need a license* • If Companies can’t use your code without a license on it And Full time employees working on your project is really good • Then you need a license on your code. • EndIf
  • 64. You need a license* *Public Domain will suffice as well
  • 66. This work is licensed under a Creative Commons Attribution 3.0 Unported License.

Notas do Editor

  1. Welcome peopleIf you have any questions just raise your hand or shout it outIntroduce myself and explain what I doI am not an expert, I don’t claim to be an expert.
  2. We provide governance and licensing support to just under 30 projects.
  3. Typical categorization of open source communitiesDescribe what each category doesThere’s one group that’s missing
  4. I’m going to go through converting Visitors to Users and from Users to Contributors.When you have regular contributors, committers often just naturally rise to the top
  5. Kohsuke Kawaguchi of Jenkins refers to this as the funnelI’ve heard estimates ranging from one out of every 100 visitors become users to one out of every five. I’m not sure there’s an answer but suffice it to say, most visitors do not become users.
  6. The previous Jenkins page was a pretty good example of making appropriate downloads easy to find but here’s another.
  7. Download button is VERY prominent.Defaults to proper platformPlatforms are provided by icon, not name
  8. Setup needs to be
  9. Two hours is about the max people will spend to try to get something to work in their free time.If you go above that, many people will give up and do something else.
  10. Or there’s a simplified version
  11. Now developer set up includes things like getting the code, setting up your development environment, etc.
  12. It can sign anything that CryptoAPI can sign and OPC files
  13. What the heck is design for division of labor?I’m going to go off and describe this in more detail because I think it’s one of the most profound insights about open source development
  14. Two types of productivity you can measure in open source software development
  15. Yes, programming language features and tools can help individual productivity productivity but they do they scale?
  16. (Almost) EVERY line requires domain knowledge that a new user doesn’t have. You’re more productive but
  17. You’re a finite resourceThe experts are finite resources
  18. This slide is almost directly from Kohsuke Kawaguchi who created Jenkins but really, he described it better than I ever couldIf you look at all the problems mentioned, they relate back to the problem of how to be more productiveIt’s the Mythical Man Month all over again
  19. “But Eric, that’s just basic software design” No, it’s not really. We design systems for a limited number of developers or a few teams.We design them for You design
  20. Now, you’re probably thinking “Eric, NuGet packages are mostly just inputs, that’s different from working together on code for an open source project.”
  21. This is almost directly from Kohsuke Kawaguchi’s slides at OuterConf but he summarized it really well.
  22. ISingletonDependencyservices that are instantiated only once per program run (more or less)IUnitOfWorkDependency prevents its use in an ISingletonDependencyITransientDependencyservices that are instantiated per usage.
  23. Remember how we talked about
  24. On the first point, people can jump in and with a limited amount of knowledge of the entire system, add a feature to solve their particular problem.
  25. Or in franker terms:
  26. Much of this comes from a presentation at OuterConf by DonnieBerkholz, a leader in the Gentoo Linux community and a researcher on open source software
  27. You might be thinking “Eric, so we get a little snarky once and a while and sometimes people feel hurt by it, so what?”
  28. Think about what this means for your project. Think about the fact that your quality will go down. Think about the fact that you’ll fewer contributions. But let’s get back to the topic of the day: growing your project community.
  29. First part: these are the targets of the assholes quit. That’s 25%. But that’s not all the damage caused by the assholes.Second part: These are the witnesses of others being targeted. That’s 20%.Note that this are employees, not volunteers. They have a financial reason to NOT leave. It’s very likely that some of the 55% who stayed wanted to quit but couldn’t financially. Assholes will have a much larger effect on volunteers to open source projects
  30. Conflict is not bad
  31. Notice: it’s how the target feels, not what you intended.Your intent MAY mitigate how negatively it effects the target but it might not.Even if it does, it probably won’t change it into a neutral or positive experience for them.
  32. N
  33. This is an interesting topic, some project do this differently. I’ve heard of projects having people file bug reports on assholes. I’m not sure that’s a great idea because it violates my first point up there.Either way have someone responding and dealing with the problem.NEEDS to be someone who cares about issues of inclusion and diversity. It’s best if this person is from a traditionally marginalized group.
  34. Don’t blame the victim
  35. This is really important. Most pull-requests are pretty small for first time contributors. People need immediate gratification.Accept them as is and fix them yourself, most of them are pretty minor. After praising them, then you can gently encourage them to look at your coding and technical standards
  36. A lot of larger communities are creating codes of conduct. It makes sense that if you want to address assholes, you need to clarify what is and is not an asshole.It’s often best that this code not be a list of prohibited behaviorsA lot of times there are a list of non-exclusively protected groups and then a list of positive expectations: such as treating people with respect and so forth
  37. I am not a lawyer, this is not legal advice, talk to a lawyer about which license to pick.
  38. And since it already looks like BASIC