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]
  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
  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
  4. "

  5. "

  6. "

  7. "

  8. the best way to build and ship software All businesses

    will evolve into software businesses 13 "
  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
  10. 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
  11. 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
  12. 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."
  13. 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.
  14. 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?
  15. 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?
  16. 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?
  17. "

  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?
  19. "

  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.
  21. the best way to build and ship software Why do

    PayPal, Scania and IBM use InnerSource? 29 "
  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
  23. the best way to build and ship software Choose your

    license 33 " • License = business model • Fremium • Embed • Certification • Liability • Support • Ecosystem
  24. # $ % & ' ' ( ) % *

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

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

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

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

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

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

    + ' ' Upstream Origin Pull from Upstream Master
  31. # * $ + $ + + * * $

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

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

    $ $ $ $ Dictator Lieutenants Public contributors
  34. 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