Your SlideShare is downloading. ×
BDD in Open Source
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

BDD in Open Source


Published on

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

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

Published in: Technology

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 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. Who am I? Paweł Jędrzejewski Huge beliver in Open Source Passionate user of Symfony, Behat, phpspec Creator of Sylius
  • 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. 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. 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. 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. StoryBDD + SpecBDD Behat + phpspec Why? Because Communication. Because Code Quality.
  • 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. The differences OS vs. Client's project Lead Developer, Core Team, Community Emergent process vs. Client, Product Owner, Team Agile process
  • 11. Who is the Customer? People around the project Lead Developer Contributors Developers who use Sylius Merchants who use Sylius
  • 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. What is important? For an Open Source project People = Community = Communication
  • 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. 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. 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. 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. 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. 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. feature Requests I would like to have this supported ExpressionLanguage used in promotion rules We want to defne more complex rules, easily
  • 21. feature Requests Promotion rules written with the expression language Quick overview of the Sylius promotions system
  • 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. Documentation For new people around the project Behat scenarios are perfect documentation Why? Cause they are stories and examples
  • 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. 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. 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. 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. 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. 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. @pjedrzejewski THANK YOU Questions?