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

Managing requirements for a many-thousands contributors software

flaper87
February 21, 2016

Managing requirements for a many-thousands contributors software

flaper87

February 21, 2016
Tweet

More Decks by flaper87

Other Decks in Programming

Transcript

  1. Managing requirements for
    a >1k contributors software

    View Slide

  2. View Slide

  3. dafuq?, smiling cat?

    View Slide

  4. For attending
    Still here
    feel free to interrupt
    @flaper87
    [email protected]

    View Slide

  5. View Slide

  6. The problem
    Co-Installable software
    What do we depend on?
    Requirements Synced

    View Slide

  7. What do we depend on?
    License
    requirements
    Binary vs Pure
    Python
    Py27 / Py34
    support

    View Slide

  8. What do we depend on?
    License
    requirements
    Binary vs Pure
    Python
    Py27 / Py34
    support

    View Slide

  9. What do we depend on?
    License
    requirements
    Binary vs Pure
    Python
    Py27 / Py34
    support

    View Slide

  10. What do we depend on?
    License
    requirements
    Binary vs Pure
    Python
    Py27 / Py34
    support

    View Slide

  11. requirements >= synced
    Project 1
    Project 2
    Project 3
    Project N

    View Slide

  12. Co-Installable software
    Compute
    Requirements
    Storage
    Requirements
    Network
    Requirements

    View Slide

  13. Co-Installable software
    Compute
    Requirements
    Storage
    Requirements
    Network
    Requirements
    openstack
    libraries
    Third-Party
    libraries
    transitive
    dependencies

    View Slide

  14. Co-Installable software
    Essential for integration tests

    View Slide

  15. OpenStack
    [...] to produce the ubiquitous
    Open Source Cloud Computing
    platform that will meet the
    needs of public and private
    clouds regardless of size, by
    being simple to implement and
    massively scalable. [...]

    View Slide

  16. Compute
    &
    storage
    We’ve been
    adding new
    projects to the
    ecosystem ever
    since OpenStack
    was created

    View Slide

  17. Compute
    &
    storage
    auth
    We’ve been
    adding new
    projects to the
    ecosystem ever
    since OpenStack
    was created

    View Slide

  18. Compute
    &
    storage
    db
    auth
    We’ve been
    adding new
    projects to the
    ecosystem ever
    since OpenStack
    was created

    View Slide

  19. Compute
    &
    storage
    Network
    db
    auth
    We’ve been
    adding new
    projects to the
    ecosystem ever
    since OpenStack
    was created

    View Slide

  20. Compute
    &
    storage
    Network
    Messages
    db
    auth
    We’ve been
    adding new
    projects to the
    ecosystem ever
    since OpenStack
    was created

    View Slide

  21. Compute
    &
    storage
    Network
    Messages
    db
    auth
    Images
    We’ve been
    adding new
    projects to the
    ecosystem ever
    since OpenStack
    was created

    View Slide

  22. Compute
    &
    storage
    Images DB
    net
    auth All these
    projects ought to
    be able to run
    under the same
    environment

    View Slide

  23. Centralized requirements

    View Slide

  24. For every
    requirement
    file
    Main
    Tests
    Extra

    View Slide

  25. For every
    requirement
    file
    Direct
    &
    Transitive

    View Slide

  26. For every
    requirement
    file
    Internal
    &
    Third-Party

    View Slide

  27. Not editable mode (-e)

    View Slide

  28. Not external source (-f)

    View Slide

  29. CI Job forbidding untracked
    requirements

    View Slide

  30. minimum Working version

    View Slide

  31. No Dependency Caps

    View Slide

  32. Requirements Constraints

    View Slide

  33. 1
    2
    3
    4
    Does it have an acceptable license?
    Is it Py3 compatible?
    Is it actively maintained?
    Is it packaged already?
    5 Does something similar exists already?
    Ask yourself these questions

    View Slide

  34. ... Or you can just ignore this ...

    View Slide

  35. 1
    2
    3
    4
    Use the minimum version possible
    Avoid dependencies that don’t do semver
    Capping is not always good
    Favor things on PyPi
    5 Keep track of transitive dependencies
    Summary-ish

    View Slide

  36. Questions?

    View Slide