Building software: the lessons from open source

Arnaud Porterie
Arnaud PorterieEngineering Manager at Docker
Arnaud Porterie - @icecrime
Building software: the lessons
from Open Source
Arnaud Porterie - @icecrime
VP Engineering - Vente Privée
Open source matters
Nobody can afford to ignore the open source movement
Virtually every company uses open source infrastructure software
“Software is eating the world, open source is eating software”
Kubernetes
# of commits per month - 6 months moving average
Kafka
# of commits per month - 6 months moving average
Linux
# of commits per month - 6 months moving average
The open source world seems
to be doing something right
Leveraging open source code in your company
Contributing to open source as a company
Open sourcing company’s code
What this talk is not about
What this talk is about
Taking inspiration from open source in the way we
build software in-house software
Alternative title
How my role as VP Engineering today is
influenced by my previous experience
managing a large scale open source project
(they said it was too long ¯_(ツ)_/¯)
Arnaud Porterie - @icecrime
A primer on open source
project organization
Users
● File issues, report bugs, ask for features
● Influence the project by voicing their opinions
Participants in an Open Source project
Contributors
● Send patches, fix bugs, write documentation
● Often are also users of the project
● Influence the project by submitting modifications
Participants in an Open Source project
Maintainers
● Guardians of the temple
○ Responsible for the overall health of the project
○ Quality of the code
○ Project scalability
○ Project testing and release cycle
○ Culture of the community
● Typically are also contributors of the project
● Influence the project by deciding what goes in
Participants in an Open Source project
● Read the contributing guide (usually CONTRIBUTING.md)
● Discuss with maintainers
○ Explain the need
○ Explain how you intend to implement it
● Produce the contribution
● Submit a Pull Request (GitHub)
● Patch gets merged when two maintainers give their LGTM
Typical contribution process
Upstreams Downstreams
Managing dependencies
Code flow
In Open Source, your dependencies (upstreams) don’t work for you
● What you need to be done you contribute yourself
As a maintainer, you play nice with those who depend on you (downstreams)
● When they come in to file an issue or contribute a patch, be helpful
Managing dependencies
Arnaud Porterie - @icecrime
The elements of healthy
open source
Healthy open source
An open codebase with identified maintainers is not enough
● A healthy open source community fosters collective intelligence
● Not a coincidence but a deliberate act of designing a community
Under the right circumstances, groups are remarkably intelligent, and are
often smarter than the smartest people in them.
The Wisdom of Crowds, James Surowiecki
Patterns of a wise crowd
Culture & Empire - Pieter Hintjens
ISBN-13: 978-1492999775
Patterns of a wise crowd
Patterns of a wise crowd
● Strong mission: a formulation of the single main problem to solve
● Free-entry: strangers may walk in and get involved
● Strong protocols: a set of rules to collaborate properly
● Fair authority: a scalable authority to enforce the rules
● Transparency: all activity takes place in the open
● …
Patterns of a wise crowd
Successful online communities expose those patterns
For an open source project, it’s a matter of survival
Impact of wise crowds patterns
Ignoring wise crowds patterns Applying wise crowds patterns
Open source software
Pushes the community away
Will inevitably die
Scales to thousands contributors
Maintains quality and velocity
Has extreme resilience
Impact of wise crowds patterns
Ignoring wise crowds patterns Applying wise crowds patterns
Open source software
Pushes the community away
Will inevitably die
Scales to thousands contributors
Maintains quality and velocity
Has extreme resilience
Closed source software
? ?
Arnaud Porterie - @icecrime
Looking back at the enterprise
Is the enterprise enabling wise crowds?
● No universal answer: there are as many organizations as there are companies
● The traditional enterprise optimizes for control and predictability
○ Contrary to open source, applying the patterns is not a matter of survival
● Some of the common organizational pitfalls are clear wise crowds antipatterns
with immediate impact on the software it produces
“Application teams” commonly yield
● Lack of a strong mission expressed in user terms
● Arcane undocumented maintenance knowledge
Wise crowds antipatterns
Wise crowds patterns
Strong mission Measurable success
Free entry High scoring
Transparency Decentralization
Full remixability Free workspaces
Strong protocols Smooth learning
Fair authority Regular structure
Non-tribalism Positivity
Self-organization Sense of humor
Tolerance Minimalism
Organizational silos commonly yield
● Strong sense of ownership
● Membership model / “us and them” situations
● Heterogeneous structures between departments
Wise crowds antipatterns
Wise crowds patterns
Strong mission Measurable success
Free entry High scoring
Transparency Decentralization
Full remixability Free workspaces
Strong protocols Smooth learning
Fair authority Regular structure
Non-tribalism Positivity
Self-organization Sense of humor
Tolerance Minimalism
Top-down decision making commonly yields
● Complexity (decision decoupled from constraints)
● Suboptimal, insufficiently challenged solutions
● Centralization and an inability to scale
● Reluctance to express conflicting opinions
Wise crowds antipatterns
Wise crowds patterns
Strong mission Measurable success
Free entry High scoring
Transparency Decentralization
Full remixability Free workspaces
Strong protocols Smooth learning
Fair authority Regular structure
Non-tribalism Positivity
Self-organization Sense of humor
Tolerance Minimalism
Impact of wise crowds patterns
Ignoring wise crowds patterns Applying wise crowds patterns
Open source software
Pushes the community away
Will inevitably die
Scales to thousands contributors
Maintains quality and velocity
Has extreme resilience
Closed source software
Relies on tribal knowledge
Produces lower quality output
Tends to build castles over cities ?
Can we raise the “collective intelligence score”
of an enterprise by importing patterns of the
open source world?
Arnaud Porterie - @icecrime
Inner source & practical
implementation
Inner source
https://en.wikipedia.org/wiki/Inner_source
Inner source is the use of open source software development best practices
and the establishment of an open source-like culture within organizations.
The organization may still develop proprietary software, but internally opens
up its development. The term was coined by Tim O'Reilly in 2000.
Impact on teams dynamics
Distinguishing maintainer and contributor roles
● Alters the sense of ownership
○ Maintainers “own” the quality, coherence, and sustainability of the project
○ The organization collectively “owns” the code
● Contributors becomes an open group (free entry principle)
○ Anyone can walk in and participate
● Maintainers also becomes an open group! (fair authority principle)
○ Constructive participation to the project must be rewarded
Impact on teams dynamics
Encouraging cross-teams contributions
● Puts the collective goal above individual ownership considerations
● Raises the bar for best practices, particularly on documentation and testing
● Gives individual teams more control of their destiny
● Keeps the development effort where the need exists versus where its implemented
ADOPTION
Other engineering teams start
depending on the project
CONTRIBUTIONS
Downstreams participate in
the project’s development
PROJECT’S TEAM GROWTH
The project promotes maintainers to
follow and sustain a healthy growth
Grow software, not teams
Impact on teams dynamics
More importantly
● Creates a community where people collaborate and learn from each other
● Creates a environment where engineers aren’t confined to a single codebase
Inspired by Joel Spolsky’s “The Joel Test: 12 Steps to Better Code”
https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/
A practical checklist for
implementing inner source
● Pick a single source manager for the entire organization
○ Preferably choose a stack-agnostic solution
○ Preferably choose a solution that supports managing and publishing documentation
○ Typically GitHub or GitLab (GitHub may be better if you plan on open sourcing later)
● Potentially a cultural barrier to cross
1. Does everyone in the organization have access to all of
the codebase by default?
● Openness has little value without discoverability
● Choose a physical organization the team is familiar with
○ Don’t follow the organization chart, it will likely change over time
○ Ideally follow a reasonably stable functional layout (e.g., domain / product / component)
● Allows individual pieces to become “stepping stones” for others to build upon
2. Is the codebase structured or documented in a way that
makes it easy to explore?
● Think of the single main problem your project is solving for the users
○ This is crucial to constrain the scope
○ NB: “continuing to exist” is not a mission
● Typically formulated in a README.md at the root of the repository
3. Do individual projects have a documented mission?
● Low barrier of entry is key for a welcoming project
○ Anyone should be able to build, test, run with very few steps
○ Future hires to the team will thank you
● Typically formulated in a CONTRIBUTING.md at the root of the repository
4. Do individual projects have a documented and
straightforward contribution process?
● If there’s two processes, you can be sure that one of them is obsolete
○ Spoiler: it’s the one used by people external to the project
● Applies to
○ Coding guidelines
○ Contributions expectation
○ SLA for patch review (recommandation: use FIFO is most cases)
○ Testing (are maintainers relying on a dedicated QA team?)
● Don’t blame external contributors for not knowing your undocumented rules
5. Are all contributors treated equally (i.e., teams /
maintainers follow a different process)?
● Organise your company communications for transparency & discoverability
○ Encourage conversations to be public by default
○ Make the channels easy to discover (e.g., use a common format for teams)
● Document design and architecture decisions
○ Can be markdown files in git, or simply issue comments
6. Is there an open discussion platform where decisions are
taken and can be challenged?
● Good rules
○ Are collectively defined and managed as code
○ Start small, and grow in scope as we learn from experience
○ Foster collaboration while leaving space for self-organization
■ For example: to enforce the previously mentioned items of the checklist
● Who is the “fair authority” inside your organization?
○ Ideally a group of highly respected technical leaders (preferrably IC over managers)
7. Is there a set of commonly agreed upon rules enforced
by a fair authority?
Inner source: a checklist
1. Does everyone in the organization have access to all of the codebase by default?
2. Is the codebase structured or documented in a way that makes it easy to explore?
3. Do individual projects have a documented mission?
4. Do individual projects have a documented and straightforward contribution process?
5. Are all contributors treated equally (i.e., teams / maintainers follow a different process)?
6. Is there an open discussion platform where decisions are taken and can be challenged?
7. Is there a set of commonly agreed upon rules enforced by a fair authority?
Final words
Ignoring wise crowds patterns Applying wise crowds patterns
Open source software
Pushes the community away
Will inevitably die
Scales to thousands contributors
Maintains quality and velocity
Has extreme resilience
Closed source software
Relies on tribal knowledge
Produces lower quality output
Tends to build castles over cities
Allows to scale wisely
Puts group’s interest over teams
Raises the bar for best practices
Final words
Open source communities have repeatedly shown a capacity to produce high
quality sustainable software by carefully designing for collective intelligence
These recipes apply to the enterprise, but it’s a matter of culture
● Requiring full support from leadership
● Immune to whatever tool you may throw at it
Arnaud Porterie - @icecrime
Thank you!
1 of 49

Recommended

Process improvement manager perfomance appraisal 2 by
Process improvement manager perfomance appraisal 2Process improvement manager perfomance appraisal 2
Process improvement manager perfomance appraisal 2tonychoper3404
4.1K views18 slides
CISA Summary V1.0 by
CISA Summary V1.0CISA Summary V1.0
CISA Summary V1.0christianreina
9.7K views20 slides
It help desk support performance appraisal by
It help desk support performance appraisalIt help desk support performance appraisal
It help desk support performance appraisalluisshahara11
10.8K views18 slides
Ce 3205-lecture-08-spillways by
Ce 3205-lecture-08-spillwaysCe 3205-lecture-08-spillways
Ce 3205-lecture-08-spillwayssaibabu48
191 views32 slides
Project Success/Failure by
Project Success/FailureProject Success/Failure
Project Success/FailurePeter Salmon
15.2K views20 slides
Let's talk FOSS! by
Let's talk FOSS!Let's talk FOSS!
Let's talk FOSS!AditiSaxena72
149 views44 slides

More Related Content

Similar to Building software: the lessons from open source

"Open Source and the Choice to Cooperate" by Brian Behlendorf @ eLiberatica 2007 by
"Open Source and the Choice to Cooperate" by Brian Behlendorf @ eLiberatica 2007"Open Source and the Choice to Cooperate" by Brian Behlendorf @ eLiberatica 2007
"Open Source and the Choice to Cooperate" by Brian Behlendorf @ eLiberatica 2007eLiberatica
267 views11 slides
Michael Widenius by
Michael WideniusMichael Widenius
Michael WideniusCodeFest
673 views55 slides
Open Source Building Career and Competency by
Open Source Building Career and CompetencyOpen Source Building Career and Competency
Open Source Building Career and CompetencyKrishna-Kumar
254 views21 slides
Micheal Monty Widenius - Free Open Source Software Entrepreneurship by
Micheal Monty Widenius -  Free Open Source Software EntrepreneurshipMicheal Monty Widenius -  Free Open Source Software Entrepreneurship
Micheal Monty Widenius - Free Open Source Software EntrepreneurshipSouth Tyrol Free Software Conference
1.4K views37 slides
Open Source Product Management by
Open Source Product ManagementOpen Source Product Management
Open Source Product ManagementDanny Rosen
664 views31 slides
Open Source Product Management with KEMP Tech's PM by
Open Source Product Management with KEMP Tech's PMOpen Source Product Management with KEMP Tech's PM
Open Source Product Management with KEMP Tech's PMProduct School
879 views33 slides

Similar to Building software: the lessons from open source(20)

"Open Source and the Choice to Cooperate" by Brian Behlendorf @ eLiberatica 2007 by eLiberatica
"Open Source and the Choice to Cooperate" by Brian Behlendorf @ eLiberatica 2007"Open Source and the Choice to Cooperate" by Brian Behlendorf @ eLiberatica 2007
"Open Source and the Choice to Cooperate" by Brian Behlendorf @ eLiberatica 2007
eLiberatica267 views
Michael Widenius by CodeFest
Michael WideniusMichael Widenius
Michael Widenius
CodeFest673 views
Open Source Building Career and Competency by Krishna-Kumar
Open Source Building Career and CompetencyOpen Source Building Career and Competency
Open Source Building Career and Competency
Krishna-Kumar 254 views
Open Source Product Management by Danny Rosen
Open Source Product ManagementOpen Source Product Management
Open Source Product Management
Danny Rosen664 views
Open Source Product Management with KEMP Tech's PM by Product School
Open Source Product Management with KEMP Tech's PMOpen Source Product Management with KEMP Tech's PM
Open Source Product Management with KEMP Tech's PM
Product School879 views
Open Source: What is It? by DuraSpace
Open Source: What is It?Open Source: What is It?
Open Source: What is It?
DuraSpace3.4K views
[Workshop] Building an Integration Agile Digital Enterprise with Open Source ... by WSO2
[Workshop] Building an Integration Agile Digital Enterprise with Open Source ...[Workshop] Building an Integration Agile Digital Enterprise with Open Source ...
[Workshop] Building an Integration Agile Digital Enterprise with Open Source ...
WSO2784 views
IDCEE 2013: How to do a successful company around open source - Michael Widen... by IDCEE
IDCEE 2013: How to do a successful company around open source - Michael Widen...IDCEE 2013: How to do a successful company around open source - Michael Widen...
IDCEE 2013: How to do a successful company around open source - Michael Widen...
IDCEE2.4K views
InnerSourcing - Worldwide enterprise development teams collaboration by Julian Werba
InnerSourcing - Worldwide enterprise development teams collaborationInnerSourcing - Worldwide enterprise development teams collaboration
InnerSourcing - Worldwide enterprise development teams collaboration
Julian Werba1K views
Gardler bosc2010 community_developmentattheasf by BOSC 2010
Gardler bosc2010 community_developmentattheasfGardler bosc2010 community_developmentattheasf
Gardler bosc2010 community_developmentattheasf
BOSC 20105.1K views
DockerCon US 2016 - Scaling Open Source operations by Arnaud Porterie
DockerCon US 2016 - Scaling Open Source operationsDockerCon US 2016 - Scaling Open Source operations
DockerCon US 2016 - Scaling Open Source operations
Arnaud Porterie3.3K views
Agile Software Development by Ahmet Bulut
Agile Software DevelopmentAgile Software Development
Agile Software Development
Ahmet Bulut387 views
IS HEC open innovation by osimod
IS HEC open innovationIS HEC open innovation
IS HEC open innovation
osimod595 views
Building Bridges Across Company and Community -SCALE15x by Nithya A. Ruff
Building Bridges Across Company and Community -SCALE15xBuilding Bridges Across Company and Community -SCALE15x
Building Bridges Across Company and Community -SCALE15x
Nithya A. Ruff434 views
Markings of a Healthy OSS Project by Clement Ho
Markings of a Healthy OSS ProjectMarkings of a Healthy OSS Project
Markings of a Healthy OSS Project
Clement Ho65 views

More from Arnaud Porterie

Docker Barcelona Meetup - An Introduction to BuildKit by
Docker Barcelona Meetup - An Introduction to BuildKitDocker Barcelona Meetup - An Introduction to BuildKit
Docker Barcelona Meetup - An Introduction to BuildKitArnaud Porterie
225 views22 slides
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins by
DockerCon US 2016 - Extending Docker With APIs, Drivers, and PluginsDockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
DockerCon US 2016 - Extending Docker With APIs, Drivers, and PluginsArnaud Porterie
1.8K views28 slides
The rise of Docker, and the future of computing by
The rise of Docker, and the future of computingThe rise of Docker, and the future of computing
The rise of Docker, and the future of computingArnaud Porterie
1.4K views26 slides
DockerCon EU 2015 - Windows Server Containers by
DockerCon EU 2015 - Windows Server ContainersDockerCon EU 2015 - Windows Server Containers
DockerCon EU 2015 - Windows Server ContainersArnaud Porterie
747 views21 slides
DockerCon US 2015 - Engine Breakout Session by
DockerCon US 2015 - Engine Breakout SessionDockerCon US 2015 - Engine Breakout Session
DockerCon US 2015 - Engine Breakout SessionArnaud Porterie
227 views15 slides
DockerCon EU 2015 - The Latest on Docker Engine by
DockerCon EU 2015 - The Latest on Docker EngineDockerCon EU 2015 - The Latest on Docker Engine
DockerCon EU 2015 - The Latest on Docker EngineArnaud Porterie
1.4K views21 slides

More from Arnaud Porterie(9)

Docker Barcelona Meetup - An Introduction to BuildKit by Arnaud Porterie
Docker Barcelona Meetup - An Introduction to BuildKitDocker Barcelona Meetup - An Introduction to BuildKit
Docker Barcelona Meetup - An Introduction to BuildKit
Arnaud Porterie225 views
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins by Arnaud Porterie
DockerCon US 2016 - Extending Docker With APIs, Drivers, and PluginsDockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
Arnaud Porterie1.8K views
The rise of Docker, and the future of computing by Arnaud Porterie
The rise of Docker, and the future of computingThe rise of Docker, and the future of computing
The rise of Docker, and the future of computing
Arnaud Porterie1.4K views
DockerCon EU 2015 - Windows Server Containers by Arnaud Porterie
DockerCon EU 2015 - Windows Server ContainersDockerCon EU 2015 - Windows Server Containers
DockerCon EU 2015 - Windows Server Containers
Arnaud Porterie747 views
DockerCon US 2015 - Engine Breakout Session by Arnaud Porterie
DockerCon US 2015 - Engine Breakout SessionDockerCon US 2015 - Engine Breakout Session
DockerCon US 2015 - Engine Breakout Session
Arnaud Porterie227 views
DockerCon EU 2015 - The Latest on Docker Engine by Arnaud Porterie
DockerCon EU 2015 - The Latest on Docker EngineDockerCon EU 2015 - The Latest on Docker Engine
DockerCon EU 2015 - The Latest on Docker Engine
Arnaud Porterie1.4K views
Abusing text/template for data transformation by Arnaud Porterie
Abusing text/template for data transformationAbusing text/template for data transformation
Abusing text/template for data transformation
Arnaud Porterie1.9K views
Arnaud Porterie - Using Machine & Docker to develop & build Docker by Arnaud Porterie
Arnaud Porterie - Using Machine & Docker to develop & build DockerArnaud Porterie - Using Machine & Docker to develop & build Docker
Arnaud Porterie - Using Machine & Docker to develop & build Docker
Arnaud Porterie2.3K views
Arnaud Porterie - The Truth About C++ by Arnaud Porterie
Arnaud Porterie - The Truth About C++Arnaud Porterie - The Truth About C++
Arnaud Porterie - The Truth About C++
Arnaud Porterie2.7K views

Recently uploaded

Pharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptx by
Pharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptxPharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptx
Pharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptxMs. Pooja Bhandare
120 views51 slides
Purpose of maths student display.pptx by
Purpose of maths student display.pptxPurpose of maths student display.pptx
Purpose of maths student display.pptxchristianmathematics
190 views9 slides
A-Level Art by
A-Level ArtA-Level Art
A-Level ArtWestHatch
48 views82 slides
Relationship of psychology with other subjects. by
Relationship of psychology with other subjects.Relationship of psychology with other subjects.
Relationship of psychology with other subjects.palswagata2003
77 views16 slides
REPRESENTATION - GAUNTLET.pptx by
REPRESENTATION - GAUNTLET.pptxREPRESENTATION - GAUNTLET.pptx
REPRESENTATION - GAUNTLET.pptxiammrhaywood
151 views26 slides
MIXING OF PHARMACEUTICALS.pptx by
MIXING OF PHARMACEUTICALS.pptxMIXING OF PHARMACEUTICALS.pptx
MIXING OF PHARMACEUTICALS.pptxAnupkumar Sharma
107 views35 slides

Recently uploaded(20)

Pharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptx by Ms. Pooja Bhandare
Pharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptxPharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptx
Pharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptx
Ms. Pooja Bhandare120 views
A-Level Art by WestHatch
A-Level ArtA-Level Art
A-Level Art
WestHatch48 views
Relationship of psychology with other subjects. by palswagata2003
Relationship of psychology with other subjects.Relationship of psychology with other subjects.
Relationship of psychology with other subjects.
palswagata200377 views
REPRESENTATION - GAUNTLET.pptx by iammrhaywood
REPRESENTATION - GAUNTLET.pptxREPRESENTATION - GAUNTLET.pptx
REPRESENTATION - GAUNTLET.pptx
iammrhaywood151 views
ISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks Effectively by PECB
ISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks EffectivelyISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks Effectively
ISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks Effectively
PECB 651 views
EILO EXCURSION PROGRAMME 2023 by info33492
EILO EXCURSION PROGRAMME 2023EILO EXCURSION PROGRAMME 2023
EILO EXCURSION PROGRAMME 2023
info33492124 views
GCSE Spanish by WestHatch
GCSE SpanishGCSE Spanish
GCSE Spanish
WestHatch53 views
11.28.23 Social Capital and Social Exclusion.pptx by mary850239
11.28.23 Social Capital and Social Exclusion.pptx11.28.23 Social Capital and Social Exclusion.pptx
11.28.23 Social Capital and Social Exclusion.pptx
mary850239383 views
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant... by Ms. Pooja Bhandare
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...
Ms. Pooja Bhandare166 views
Create a Structure in VBNet.pptx by Breach_P
Create a Structure in VBNet.pptxCreate a Structure in VBNet.pptx
Create a Structure in VBNet.pptx
Breach_P80 views
Classification of crude drugs.pptx by GayatriPatra14
Classification of crude drugs.pptxClassification of crude drugs.pptx
Classification of crude drugs.pptx
GayatriPatra14104 views

Building software: the lessons from open source

  • 1. Arnaud Porterie - @icecrime Building software: the lessons from Open Source Arnaud Porterie - @icecrime VP Engineering - Vente Privée
  • 2. Open source matters Nobody can afford to ignore the open source movement Virtually every company uses open source infrastructure software “Software is eating the world, open source is eating software”
  • 3. Kubernetes # of commits per month - 6 months moving average
  • 4. Kafka # of commits per month - 6 months moving average
  • 5. Linux # of commits per month - 6 months moving average
  • 6. The open source world seems to be doing something right
  • 7. Leveraging open source code in your company Contributing to open source as a company Open sourcing company’s code What this talk is not about
  • 8. What this talk is about Taking inspiration from open source in the way we build software in-house software
  • 9. Alternative title How my role as VP Engineering today is influenced by my previous experience managing a large scale open source project (they said it was too long ¯_(ツ)_/¯)
  • 10. Arnaud Porterie - @icecrime A primer on open source project organization
  • 11. Users ● File issues, report bugs, ask for features ● Influence the project by voicing their opinions Participants in an Open Source project
  • 12. Contributors ● Send patches, fix bugs, write documentation ● Often are also users of the project ● Influence the project by submitting modifications Participants in an Open Source project
  • 13. Maintainers ● Guardians of the temple ○ Responsible for the overall health of the project ○ Quality of the code ○ Project scalability ○ Project testing and release cycle ○ Culture of the community ● Typically are also contributors of the project ● Influence the project by deciding what goes in Participants in an Open Source project
  • 14. ● Read the contributing guide (usually CONTRIBUTING.md) ● Discuss with maintainers ○ Explain the need ○ Explain how you intend to implement it ● Produce the contribution ● Submit a Pull Request (GitHub) ● Patch gets merged when two maintainers give their LGTM Typical contribution process
  • 16. In Open Source, your dependencies (upstreams) don’t work for you ● What you need to be done you contribute yourself As a maintainer, you play nice with those who depend on you (downstreams) ● When they come in to file an issue or contribute a patch, be helpful Managing dependencies
  • 17. Arnaud Porterie - @icecrime The elements of healthy open source
  • 18. Healthy open source An open codebase with identified maintainers is not enough ● A healthy open source community fosters collective intelligence ● Not a coincidence but a deliberate act of designing a community Under the right circumstances, groups are remarkably intelligent, and are often smarter than the smartest people in them. The Wisdom of Crowds, James Surowiecki
  • 19. Patterns of a wise crowd Culture & Empire - Pieter Hintjens ISBN-13: 978-1492999775
  • 20. Patterns of a wise crowd
  • 21. Patterns of a wise crowd ● Strong mission: a formulation of the single main problem to solve ● Free-entry: strangers may walk in and get involved ● Strong protocols: a set of rules to collaborate properly ● Fair authority: a scalable authority to enforce the rules ● Transparency: all activity takes place in the open ● …
  • 22. Patterns of a wise crowd Successful online communities expose those patterns For an open source project, it’s a matter of survival
  • 23. Impact of wise crowds patterns Ignoring wise crowds patterns Applying wise crowds patterns Open source software Pushes the community away Will inevitably die Scales to thousands contributors Maintains quality and velocity Has extreme resilience
  • 24. Impact of wise crowds patterns Ignoring wise crowds patterns Applying wise crowds patterns Open source software Pushes the community away Will inevitably die Scales to thousands contributors Maintains quality and velocity Has extreme resilience Closed source software ? ?
  • 25. Arnaud Porterie - @icecrime Looking back at the enterprise
  • 26. Is the enterprise enabling wise crowds? ● No universal answer: there are as many organizations as there are companies ● The traditional enterprise optimizes for control and predictability ○ Contrary to open source, applying the patterns is not a matter of survival ● Some of the common organizational pitfalls are clear wise crowds antipatterns with immediate impact on the software it produces
  • 27. “Application teams” commonly yield ● Lack of a strong mission expressed in user terms ● Arcane undocumented maintenance knowledge Wise crowds antipatterns Wise crowds patterns Strong mission Measurable success Free entry High scoring Transparency Decentralization Full remixability Free workspaces Strong protocols Smooth learning Fair authority Regular structure Non-tribalism Positivity Self-organization Sense of humor Tolerance Minimalism
  • 28. Organizational silos commonly yield ● Strong sense of ownership ● Membership model / “us and them” situations ● Heterogeneous structures between departments Wise crowds antipatterns Wise crowds patterns Strong mission Measurable success Free entry High scoring Transparency Decentralization Full remixability Free workspaces Strong protocols Smooth learning Fair authority Regular structure Non-tribalism Positivity Self-organization Sense of humor Tolerance Minimalism
  • 29. Top-down decision making commonly yields ● Complexity (decision decoupled from constraints) ● Suboptimal, insufficiently challenged solutions ● Centralization and an inability to scale ● Reluctance to express conflicting opinions Wise crowds antipatterns Wise crowds patterns Strong mission Measurable success Free entry High scoring Transparency Decentralization Full remixability Free workspaces Strong protocols Smooth learning Fair authority Regular structure Non-tribalism Positivity Self-organization Sense of humor Tolerance Minimalism
  • 30. Impact of wise crowds patterns Ignoring wise crowds patterns Applying wise crowds patterns Open source software Pushes the community away Will inevitably die Scales to thousands contributors Maintains quality and velocity Has extreme resilience Closed source software Relies on tribal knowledge Produces lower quality output Tends to build castles over cities ?
  • 31. Can we raise the “collective intelligence score” of an enterprise by importing patterns of the open source world?
  • 32. Arnaud Porterie - @icecrime Inner source & practical implementation
  • 33. Inner source https://en.wikipedia.org/wiki/Inner_source Inner source is the use of open source software development best practices and the establishment of an open source-like culture within organizations. The organization may still develop proprietary software, but internally opens up its development. The term was coined by Tim O'Reilly in 2000.
  • 34. Impact on teams dynamics Distinguishing maintainer and contributor roles ● Alters the sense of ownership ○ Maintainers “own” the quality, coherence, and sustainability of the project ○ The organization collectively “owns” the code ● Contributors becomes an open group (free entry principle) ○ Anyone can walk in and participate ● Maintainers also becomes an open group! (fair authority principle) ○ Constructive participation to the project must be rewarded
  • 35. Impact on teams dynamics Encouraging cross-teams contributions ● Puts the collective goal above individual ownership considerations ● Raises the bar for best practices, particularly on documentation and testing ● Gives individual teams more control of their destiny ● Keeps the development effort where the need exists versus where its implemented
  • 36. ADOPTION Other engineering teams start depending on the project CONTRIBUTIONS Downstreams participate in the project’s development PROJECT’S TEAM GROWTH The project promotes maintainers to follow and sustain a healthy growth Grow software, not teams
  • 37. Impact on teams dynamics More importantly ● Creates a community where people collaborate and learn from each other ● Creates a environment where engineers aren’t confined to a single codebase
  • 38. Inspired by Joel Spolsky’s “The Joel Test: 12 Steps to Better Code” https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/ A practical checklist for implementing inner source
  • 39. ● Pick a single source manager for the entire organization ○ Preferably choose a stack-agnostic solution ○ Preferably choose a solution that supports managing and publishing documentation ○ Typically GitHub or GitLab (GitHub may be better if you plan on open sourcing later) ● Potentially a cultural barrier to cross 1. Does everyone in the organization have access to all of the codebase by default?
  • 40. ● Openness has little value without discoverability ● Choose a physical organization the team is familiar with ○ Don’t follow the organization chart, it will likely change over time ○ Ideally follow a reasonably stable functional layout (e.g., domain / product / component) ● Allows individual pieces to become “stepping stones” for others to build upon 2. Is the codebase structured or documented in a way that makes it easy to explore?
  • 41. ● Think of the single main problem your project is solving for the users ○ This is crucial to constrain the scope ○ NB: “continuing to exist” is not a mission ● Typically formulated in a README.md at the root of the repository 3. Do individual projects have a documented mission?
  • 42. ● Low barrier of entry is key for a welcoming project ○ Anyone should be able to build, test, run with very few steps ○ Future hires to the team will thank you ● Typically formulated in a CONTRIBUTING.md at the root of the repository 4. Do individual projects have a documented and straightforward contribution process?
  • 43. ● If there’s two processes, you can be sure that one of them is obsolete ○ Spoiler: it’s the one used by people external to the project ● Applies to ○ Coding guidelines ○ Contributions expectation ○ SLA for patch review (recommandation: use FIFO is most cases) ○ Testing (are maintainers relying on a dedicated QA team?) ● Don’t blame external contributors for not knowing your undocumented rules 5. Are all contributors treated equally (i.e., teams / maintainers follow a different process)?
  • 44. ● Organise your company communications for transparency & discoverability ○ Encourage conversations to be public by default ○ Make the channels easy to discover (e.g., use a common format for teams) ● Document design and architecture decisions ○ Can be markdown files in git, or simply issue comments 6. Is there an open discussion platform where decisions are taken and can be challenged?
  • 45. ● Good rules ○ Are collectively defined and managed as code ○ Start small, and grow in scope as we learn from experience ○ Foster collaboration while leaving space for self-organization ■ For example: to enforce the previously mentioned items of the checklist ● Who is the “fair authority” inside your organization? ○ Ideally a group of highly respected technical leaders (preferrably IC over managers) 7. Is there a set of commonly agreed upon rules enforced by a fair authority?
  • 46. Inner source: a checklist 1. Does everyone in the organization have access to all of the codebase by default? 2. Is the codebase structured or documented in a way that makes it easy to explore? 3. Do individual projects have a documented mission? 4. Do individual projects have a documented and straightforward contribution process? 5. Are all contributors treated equally (i.e., teams / maintainers follow a different process)? 6. Is there an open discussion platform where decisions are taken and can be challenged? 7. Is there a set of commonly agreed upon rules enforced by a fair authority?
  • 47. Final words Ignoring wise crowds patterns Applying wise crowds patterns Open source software Pushes the community away Will inevitably die Scales to thousands contributors Maintains quality and velocity Has extreme resilience Closed source software Relies on tribal knowledge Produces lower quality output Tends to build castles over cities Allows to scale wisely Puts group’s interest over teams Raises the bar for best practices
  • 48. Final words Open source communities have repeatedly shown a capacity to produce high quality sustainable software by carefully designing for collective intelligence These recipes apply to the enterprise, but it’s a matter of culture ● Requiring full support from leadership ● Immune to whatever tool you may throw at it
  • 49. Arnaud Porterie - @icecrime Thank you!