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

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Último (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

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