SlideShare a Scribd company logo
1 of 30
BDD for the OSS
         Contribution Process



Mike Gehard, Software Engineer   mgehard@pivotallabs.com   @mikegehard
Feature:
Feature:
 As a prospective open source contributor
Feature:
 As a prospective open source contributor
 I would like to be able to easily contribute to a project
Feature:
 As a prospective open source contributor
 I would like to be able to easily contribute to a project
 In order to give back to the community
Scenario: Easily set up a development environment
Scenario: Easily set up a development environment
 Given there is an OSS project that I want to work on
Scenario: Easily set up a development environment
 Given there is an OSS project that I want to work on
 When I clone the git repo
Scenario: Easily set up a development environment
 Given there is an OSS project that I want to work on
 When I clone the git repo
 And I cd into the project
Scenario: Easily set up a development environment
 Given there is an OSS project that I want to work on
 When I clone the git repo
 And I cd into the project
 And I run “bundle install”
Scenario: Easily set up a development environment
 Given there is an OSS project that I want to work on
 When I clone the git repo
 And I cd into the project
 And I run “bundle install”
 And I run “rake”
Scenario: Easily set up a development environment
 Given there is an OSS project that I want to work on
 When I clone the git repo
 And I cd into the project
 And I run “bundle install”
 And I run “rake”
 Then I should see all of the tests pass
Scenario: Easily set up a development environment
 Given there is an OSS project that I want to work on
 When I clone the git repo
 And I cd into the project
 And I run “bundle install”
 And I run “rake”
 Then I should see all of the tests pass
 And I can start working
Scenario: Contribute code
Scenario: Contribute code
 Given I have green tests
Scenario: Contribute code
 Given I have green tests
 When I write tests for the functionality I want to add
Scenario: Contribute code
 Given I have green tests
 When I write tests for the functionality I want to add
 And I watch them fail
Scenario: Contribute code
 Given I have green tests
 When I write tests for the functionality I want to add
 And I watch them fail
 And I write code to make them pass
Scenario: Contribute code
 Given I have green tests
 When I write tests for the functionality I want to add
 And I watch them fail
 And I write code to make them pass
 Then I can easily push code to a fork of the repo
Scenario: Have my commit integrated in the project
Scenario: Have my commit integrated in the project
 Given I have have submitted a well tested patch
Scenario: Have my commit integrated in the project
 Given I have have submitted a well tested patch
 When I wait about a week
Scenario: Have my commit integrated in the project
 Given I have have submitted a well tested patch
 When I wait about a week
 Then I should be able to see my commit in the repo
Scenario: Have my commit integrated in the project
 Given I have have submitted a well tested patch
 When I wait about a week
 Then I should be able to see my commit in the repo
 And I should have commit rights in the main repo
Make it easy to set up dev environment
Write well tested code
Quickly integrate changes
Keep you contributors happy
Be the change you wish to see in the world.
- M Gandhi

More Related Content

More from Mike Gehard

Sustainable developmentwithoutninjas
Sustainable developmentwithoutninjasSustainable developmentwithoutninjas
Sustainable developmentwithoutninjasMike Gehard
 
Agile the Pivotal Way
Agile the Pivotal WayAgile the Pivotal Way
Agile the Pivotal WayMike Gehard
 
Introduction to Pair Programming
Introduction to Pair ProgrammingIntroduction to Pair Programming
Introduction to Pair ProgrammingMike Gehard
 
Experiment Driven Development
Experiment Driven DevelopmentExperiment Driven Development
Experiment Driven DevelopmentMike Gehard
 
Better Ruby Through Design Principles
Better Ruby Through Design PrinciplesBetter Ruby Through Design Principles
Better Ruby Through Design PrinciplesMike Gehard
 
Developing Developers
Developing DevelopersDeveloping Developers
Developing DevelopersMike Gehard
 
Focus and Meditation
Focus and MeditationFocus and Meditation
Focus and MeditationMike Gehard
 
Agile the pivotal way
Agile the pivotal wayAgile the pivotal way
Agile the pivotal wayMike Gehard
 
Meditation and Software
Meditation and SoftwareMeditation and Software
Meditation and SoftwareMike Gehard
 

More from Mike Gehard (9)

Sustainable developmentwithoutninjas
Sustainable developmentwithoutninjasSustainable developmentwithoutninjas
Sustainable developmentwithoutninjas
 
Agile the Pivotal Way
Agile the Pivotal WayAgile the Pivotal Way
Agile the Pivotal Way
 
Introduction to Pair Programming
Introduction to Pair ProgrammingIntroduction to Pair Programming
Introduction to Pair Programming
 
Experiment Driven Development
Experiment Driven DevelopmentExperiment Driven Development
Experiment Driven Development
 
Better Ruby Through Design Principles
Better Ruby Through Design PrinciplesBetter Ruby Through Design Principles
Better Ruby Through Design Principles
 
Developing Developers
Developing DevelopersDeveloping Developers
Developing Developers
 
Focus and Meditation
Focus and MeditationFocus and Meditation
Focus and Meditation
 
Agile the pivotal way
Agile the pivotal wayAgile the pivotal way
Agile the pivotal way
 
Meditation and Software
Meditation and SoftwareMeditation and Software
Meditation and Software
 

Recently uploaded

Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Paige Cruz
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaWSO2
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxFIDO Alliance
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctBrainSell Technologies
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityVictorSzoltysek
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch TuesdayIvanti
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceIES VE
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform EngineeringMarcus Vechiato
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfdanishmna97
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxMarkSteadman7
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....rightmanforbloodline
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxFIDO Alliance
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformWSO2
 

Recently uploaded (20)

Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 

BDD for the OSS Contribution Process

  • 1. BDD for the OSS Contribution Process Mike Gehard, Software Engineer mgehard@pivotallabs.com @mikegehard
  • 2.
  • 4. Feature: As a prospective open source contributor
  • 5. Feature: As a prospective open source contributor I would like to be able to easily contribute to a project
  • 6. Feature: As a prospective open source contributor I would like to be able to easily contribute to a project In order to give back to the community
  • 7.
  • 8. Scenario: Easily set up a development environment
  • 9. Scenario: Easily set up a development environment Given there is an OSS project that I want to work on
  • 10. Scenario: Easily set up a development environment Given there is an OSS project that I want to work on When I clone the git repo
  • 11. Scenario: Easily set up a development environment Given there is an OSS project that I want to work on When I clone the git repo And I cd into the project
  • 12. Scenario: Easily set up a development environment Given there is an OSS project that I want to work on When I clone the git repo And I cd into the project And I run “bundle install”
  • 13. Scenario: Easily set up a development environment Given there is an OSS project that I want to work on When I clone the git repo And I cd into the project And I run “bundle install” And I run “rake”
  • 14. Scenario: Easily set up a development environment Given there is an OSS project that I want to work on When I clone the git repo And I cd into the project And I run “bundle install” And I run “rake” Then I should see all of the tests pass
  • 15. Scenario: Easily set up a development environment Given there is an OSS project that I want to work on When I clone the git repo And I cd into the project And I run “bundle install” And I run “rake” Then I should see all of the tests pass And I can start working
  • 16.
  • 18. Scenario: Contribute code Given I have green tests
  • 19. Scenario: Contribute code Given I have green tests When I write tests for the functionality I want to add
  • 20. Scenario: Contribute code Given I have green tests When I write tests for the functionality I want to add And I watch them fail
  • 21. Scenario: Contribute code Given I have green tests When I write tests for the functionality I want to add And I watch them fail And I write code to make them pass
  • 22. Scenario: Contribute code Given I have green tests When I write tests for the functionality I want to add And I watch them fail And I write code to make them pass Then I can easily push code to a fork of the repo
  • 23.
  • 24. Scenario: Have my commit integrated in the project
  • 25. Scenario: Have my commit integrated in the project Given I have have submitted a well tested patch
  • 26. Scenario: Have my commit integrated in the project Given I have have submitted a well tested patch When I wait about a week
  • 27. Scenario: Have my commit integrated in the project Given I have have submitted a well tested patch When I wait about a week Then I should be able to see my commit in the repo
  • 28. Scenario: Have my commit integrated in the project Given I have have submitted a well tested patch When I wait about a week Then I should be able to see my commit in the repo And I should have commit rights in the main repo
  • 29. Make it easy to set up dev environment Write well tested code Quickly integrate changes Keep you contributors happy
  • 30. Be the change you wish to see in the world. - M Gandhi

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n\n
  7. \n\n
  8. \n\n
  9. \n\n
  10. \n\n
  11. \n\n
  12. \n\n
  13. \n\n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. Thanks to Evan Pheonix and the Rubinius project for the idea of commit rights.\n
  21. Thanks to Evan Pheonix and the Rubinius project for the idea of commit rights.\n
  22. Thanks to Evan Pheonix and the Rubinius project for the idea of commit rights.\n
  23. Thanks to Evan Pheonix and the Rubinius project for the idea of commit rights.\n
  24. Thanks to Evan Pheonix and the Rubinius project for the idea of commit rights.\n
  25. \n
  26. \n