Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BDD in Open Source

BDD in Open Source

My talk from the London Behat Meetup. Does BDD work for Open Source projects?

7ae8ff67c92e2087f2e84884449d6da6?s=128

Pawel Jedrzejewski

May 22, 2014
Tweet

Transcript

  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
  3. ŁÓDŹ, POLAND

  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. None
  10. 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
  11. The differences OS vs. Client's project Lead Developer, Core Team,

    Community Emergent process vs. Client, Product Owner, Team Agile process
  12. Who is the Customer? People around the project Lead Developer

    Contributors Developers who use Sylius Merchants who use Sylius
  13. Who writes the features? Who decides what is the right

    thing to implement? Most of the time, core team Contributors Feature Requesters Bug Reporters
  14. What is important? For an Open Source project People =

    Community = Communication
  15. 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
  16. 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
  17. 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?
  18. 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
  19. 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
  20. None
  21. 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
  22. feature Requests I would like to have this supported ExpressionLanguage

    used in promotion rules We want to defne more complex rules, easily
  23. feature Requests Promotion rules written with the expression language Quick

    overview of the Sylius promotions system
  24. PROMOTION STRUCTURE SUPER AWESOME PROMOTION ACTION ACTION ACTION RULE RULE

  25. None
  26. None
  27. None
  28. 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
  29. None
  30. None
  31. Documentation For new people around the project Behat scenarios are

    perfect documentation Why? Cause they are stories and examples
  32. 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...
  33. None
  34. 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!
  35. None
  36. 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
  37. 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
  38. 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
  39. 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
  40. Www.sylius.org Github.com/sylius @pjedrzejewski THANK YOU Questions?