BDD in Open Source

669 views
561 views

Published on

My talk about Behavior Driven Development in case of an Open Source project - Sylius. Presented at London Behat Meetup.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
669
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
3
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

BDD in Open Source

  1. 1. BDD in Open Source Paweł Jędrzejewski Does it work for Open Source? What are the diferences to a commercial project? How does it afect the OSS community? Is it hard? Behat V3!
  2. 2. Who am I? Paweł Jędrzejewski Huge beliver in Open Source Passionate user of Symfony, Behat, phpspec Creator of Sylius
  3. 3. ŁÓDŹ, POLAND
  4. 4. WHAT IS SYLIUS E-Commerce framework for PHP A set of PHP e-commerce components A set of Symfony2 bundles Symfony2 full-stack framework application providing fexible e-commerce platform
  5. 5. A bit of History From the very beginning to now Started as a set of bundles for E-Commerce Sandbox application as a playground Complete rewrite with Behat Adopted phpspec Components
  6. 6. Components vs. Bundles Standalone components for „raw” PHP Save time and provide default e-commerce business logic Integration layers for the components and Symfony2 Provide forms, Doctrine integration and anything Symfony-specifc
  7. 7. App vs. Bundles All bundles already integrated together Provides a common e- commerce platform Built on Symfony SE Integration layers for the components and Symfony2 Provide forms, Doctrine integration and anything Symfony-specifc
  8. 8. StoryBDD + SpecBDD Behat + phpspec Why? Because Communication. Because Code Quality.
  9. 9. Does BDD work at all? For an Open Source project BDD needs clear stakeholders Agile methodology vs. Open Source... where is the customer? The process is far from classic agile
  10. 10. The differences OS vs. Client's project Lead Developer, Core Team, Community Emergent process vs. Client, Product Owner, Team Agile process
  11. 11. Who is the Customer? People around the project Lead Developer Contributors Developers who use Sylius Merchants who use Sylius
  12. 12. Who writes the features? Who decides what is the right thing to implement? Most of the time, core team Contributors Feature Requesters Bug Reporters
  13. 13. What is important? For an Open Source project People = Community = Communication
  14. 14. Communication Clear vision of what features are desired by community To build a OSS community, you need people People who talk to each other People who communicate ideas, problems People who speak diferent language They can speak one language
  15. 15. OS compared to commercial project The diferences in communication With a client's project, people most often communicate face-to-face StoryBDD is most efcient with face-to-face communication In OS, you talk through github, twitter, e-mails
  16. 16. BDD with Behat Drastically Improves the communication in OSS We communicate using examples Which are the acceptance criteria for our MVP And which are executed and automatically verify everything is working as expected Isn't it awesome?
  17. 17. Passing Business Requirements Client requirements are passed to OS project Every project is diferent Every BUSINESS is diferent But there are common requirements across e- commerce Sylius users transform their client's user stories into Sylius features
  18. 18. The domain language is defined by stakeholders Our is combined language of business and developers Sylius is a framework for developers It is also used by non-technical store managers The language is defned by the community E-Commerce Developer = Business Aware Developer We can be passionate about software, but we should be passionate about delivering value to the world
  19. 19. What is the Workflow? How a Pull Request gets merged Starts with an idea, a problem or missing feature RFC about adding it to core Showing it by example, using Behat scenarios Design phase with phpspec Red Green Refactor
  20. 20. feature Requests I would like to have this supported ExpressionLanguage used in promotion rules We want to defne more complex rules, easily
  21. 21. feature Requests Promotion rules written with the expression language Quick overview of the Sylius promotions system
  22. 22. PROMOTION STRUCTURE SUPER AWESOME PROMOTION ACTION ACTION ACTION RULE RULE
  23. 23. Collaboration Better communication = easier collaboration BDD with Behat makes it easier to collaborate Unifed language for communication Functionality is easier to understand Contributors can fnish the work started by others
  24. 24. Documentation For new people around the project Behat scenarios are perfect documentation Why? Cause they are stories and examples
  25. 25. Question How taxes work in Sylius? New community member: How taxes work in Sylius? Can I apply taxes included in price? Sylius user: Check features/ folder...
  26. 26. Question How Sylius picks the available shipping methods? If you want to know how we display the correct shipping methods for the customer shipping addres... Look at the correct feature fle!
  27. 27. Behat v3 Our experience as an early adopter Behat 3.0.x is faster Suites are awesome Pararell execution will be even better A bit confused about how to structure the contexts Can't wait for PageObject extension
  28. 28. Learning Curve Introducing new people to StoryBDD and SpecBDD New contirbutors need to learn the tools we use, in order to satisfy the requirements New users have more learning materials It might discourage some people to contribute
  29. 29. SATISFACTION Seeing people becoming better developers It feels great to see people involved in the project becoming a better developers Seeing how their career grows and how they become more mature programmers Yes, this includes me
  30. 30. Summary How BDD works for Open Source? Improves the communication around the project Makes it easier to work out features desired by the users Collaboration becomes a lot easier Raises the entry barrier for new contributors Raises the quality of code
  31. 31. Www.sylius.org Github.com/sylius @pjedrzejewski THANK YOU Questions?

×