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

Leverage Open Source with GitHub

Leverage Open Source with GitHub

Various aspects of the opensource eco-system. Talk prepared for LION @ TheFamily

Alain Hélaïli

November 18, 2016
Tweet

More Decks by Alain Hélaïli

Other Decks in Programming

Transcript

  1. the best way to build and ship software
    Leverage Open Source with GitHub
    a @helaili - @AlainHelaili - ! [email protected]

    View full-size slide

  2. the best way to build and ship software
    Git
    3
    "
    • Started by Linus Torvalds 2005 (search “torvalds git” on youtube)
    • Easy branching and merging - content oriented, remembers origin
    • Small and fast - local operations, smaller repos
    • Distributed - VCS on my laptop, full copy incl. history
    • Data assurance - sha1, gpg
    • Staging area - crafted, meaningful commits
    • Free and open source

    View full-size slide

  3. the best way to build and ship software
    GitHub key facts
    4
    "
    FOUNDED
    2008
    EMPLOYEES
    600
    UNIVERSITIES
    USING GITHUB
    1,000+
    TOTAL 

    REGISTERED
    USERS
    15M
    TOTAL
    REPOSITORIES
    40M
    PAYING
    ORGANIZATIONS
    >75,000

    View full-size slide

  4. the best way to build and ship software
    The cathedral and the bazaar
    7
    "

    View full-size slide

  5. the best way to build and ship software
    State of the open source
    8
    "

    View full-size slide

  6. the best way to build and ship software
    Community
    12
    "

    View full-size slide

  7. the best way to build and ship software
    All businesses will evolve into software businesses
    13
    "

    View full-size slide

  8. the best way to build and ship software
    Opensourcing is for everyone
    14
    "

    View full-size slide

  9. the best way to build and ship software
    Why open sourcing code
    15
    "
    • Great advertising for you and your company… translat[ing] into goodwill for
    [your company] and more superfans than ever before
    • Attract outside contributions : create a force multiplier that helps you get
    more work done faster and cheaper. More users means more use cases being
    explored which means more robust code
    • Attract talent : Smart people like to hang out with other smart people. Smart
    developers like to hang out with smart code.
    • Best technical interview possible, the one you don’t have to do because the
    candidate is already kicking
    • Retain talents

    View full-size slide

  10. the best way to build and ship software
    Why YOU should open source
    16
    "

    View full-size slide

  11. How people build software
    "
    a framework for assessing the effectiveness
    of behaviors, practices and processes, and
    identifying what capabilities to acquire next
    in order to produce the desired outcomes
    M A T U R I T Y M O D E L F O R A D O P T I N G O P E N S O U R C E

    View full-size slide

  12. How people build software
    "
    MATURE
    UNDEVELOPED
    Evaluate Improve
    + "
    M A T U R I T Y M O D E L F O R A D O P T I N G O P E N S O U R C E

    View full-size slide

  13. the best way to build and ship software 19
    "
    a lot of work that wasn't truly open source
    — i.e. out-of-the-box useful to the
    community at-large
    The enthusiasm our team showed for open
    source led the Guild to next develop a set of
    Open Source First principles to
    institutionalize this openness. These
    principles encourage our engineers to share
    their code instead of hide it inside private
    repos, as well as "take ownership," "be safe,"
    "provide documentation," and "ask for help."

    View full-size slide

  14. How people build software
    "
    Maturity Model for Adopting Open Source
    CONSUMING
    CONTRIBUTING
    RELEASING
    EMBRACING
    Using open source software.
    Contributing back to the projects you use.
    Creating new open source projects.
    Strategically participating in open source.

    View full-size slide

  15. How people build software
    "
    Maturity Model for Adopting Open Source
    CONSUMING
    CONTRIBUTING
    RELEASING
    EMBRACING
    Using open source software.
    What are the basics of open source?
    How do I find projects?
    How do I evaluate the quality and health of projects?
    How do I stay on top of security vulnerabilities?
    What are the basics of licensing?
    What do I need to do to comply with the license?

    View full-size slide

  16. How people build software
    "
    Maturity Model for Adopting Open Source
    CONSUMING
    CONTRIBUTING
    RELEASING
    EMBRACING
    Contributing back to the projects you use.
    How do I report issues?
    How do I use GitHub?
    What do I need to know about IP?

    View full-size slide

  17. How people build software
    "
    Maturity Model for Adopting Open Source
    CONSUMING
    CONTRIBUTING
    RELEASING
    EMBRACING
    Creating new open source projects.
    How do I get my source code ready for release?
    How do I choose a license?
    What else do I need to know about IP?
    How do I build a community?
    What other tools do I need for my community?

    View full-size slide

  18. How people build software
    "
    Maturity Model for Adopting Open Source
    CONSUMING
    CONTRIBUTING
    RELEASING
    EMBRACING
    Strategically participating in open source.
    How can we get a competitive advantage?
    What open source releases show leadership?
    How effective is our open source involvement?
    What communities do we want to hire from?
    How do we work like an open source project internally?

    View full-size slide

  19. "
    Innersource

    View full-size slide

  20. the best way to build and ship software
    How will software be built in the future?
    28
    "
    InnerSource: The power of open source within the walls of the enterprise.

    View full-size slide

  21. the best way to build and ship software
    Why do PayPal, Scania and IBM use InnerSource?
    29
    "

    View full-size slide

  22. the best way to build and ship software
    What are the core tenets of InnerSource?
    30
    "
    • Everyone is expected to contribute and participate in reviews and
    mentoring
    • Contributions are judged based on their merits
    • All decisions are discussed publicly, stored indefinitely, and can be
    searched
    • Code and commentary are widely available
    • Autonomous organization of teams, self organizing and alignment

    View full-size slide

  23. "
    Commercial
    Open Source

    View full-size slide

  24. the best way to build and ship software
    Commercial Opensource
    32
    "

    View full-size slide

  25. the best way to build and ship software
    Choose your license
    33
    "
    • License = business model
    • Fremium
    • Embed
    • Certification
    • Liability
    • Support
    • Ecosystem

    View full-size slide

  26. "
    Social Coding

    View full-size slide

  27. the best way to build and ship software
    GitHub Community Guidelines
    35
    "

    View full-size slide

  28. the best way to build and ship software
    GitHub Community Guidelines
    36
    "

    View full-size slide

  29. the best way to build and ship software
    Fork & Pull
    37
    "

    View full-size slide

  30. the best way to build and ship software
    Fork & Pull
    38
    "

    View full-size slide

  31. "
    GitHub Flow

    View full-size slide

  32. Create a Feature Branch

    View full-size slide

  33. Open a Pull Request

    View full-size slide

  34. Discuss and Review Code

    View full-size slide

  35. Merge with master

    View full-size slide

  36. "
    Fork & Pull
    Flow

    View full-size slide

  37. #
    $
    %
    &
    '
    '
    (
    )
    %
    *
    +
    '
    '
    Upstream
    Origin
    Fork

    View full-size slide

  38. #
    $
    %
    &
    '
    '
    (
    )
    %
    *
    +
    '
    '
    Upstream
    Origin
    Create a Feature Branch

    View full-size slide

  39. #
    $
    %
    &
    '
    '
    (
    )
    %
    *
    +
    '
    '
    Upstream
    Origin
    Add commits

    View full-size slide

  40. #
    $
    %
    &
    '
    '
    (
    )
    %
    *
    +
    '
    '
    Upstream
    Origin
    Open a Pull Request

    View full-size slide

  41. #
    $
    %
    &
    '
    '
    (
    )
    %
    *
    +
    '
    '
    Upstream
    Origin
    Discuss and Review Code

    View full-size slide

  42. the best way to build and ship software
    Get CI status back in PR
    53
    "

    View full-size slide

  43. the best way to build and ship software
    Pull Requests
    54
    "

    View full-size slide

  44. #
    $
    %
    &
    '
    '
    )
    %
    *
    +
    '
    '
    Upstream
    Origin
    Merge
    (

    View full-size slide

  45. #
    $
    %
    &
    '
    '
    (
    )
    %
    *
    +
    '
    '
    Upstream
    Origin
    Pull from Upstream Master

    View full-size slide

  46. "
    Dictator
    &
    Lieutenant
    Flow

    View full-size slide

  47. #
    *
    $
    +
    $
    +
    +
    *
    * $ $
    $
    $ $
    Dictator
    Lieutenants
    Public
    contributors

    View full-size slide

  48. #
    *
    $
    +
    $
    +
    +
    *
    * $ $
    $
    $ $
    Dictator
    Lieutenants
    Public
    contributors
    & & & &
    &
    &
    (

    View full-size slide

  49. #
    *
    $
    +
    $
    +
    +
    *
    * $ $
    $
    $ $
    Dictator
    Lieutenants
    Public
    contributors

    View full-size slide

  50. http://nvie.com/posts/a-successful-git-branching-model/

    View full-size slide

  51. the best way to build and ship software
    Gerrit
    63
    "
    • Body Level One
    • Body Level Two
    • Body Level Three
    • Body Level Four
    • Body Level Five

    View full-size slide