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

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 

Recently uploaded (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

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