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

Effective Use of Open Source Software

0ebf471a3ae8df42a84f93a7efbbdbd0?s=47 Ash Furrow
September 10, 2013

Effective Use of Open Source Software

0ebf471a3ae8df42a84f93a7efbbdbd0?s=128

Ash Furrow

September 10, 2013
Tweet

Transcript

  1. Effective Use of Open Source Software Ash Furrow, Teehan+Lax @ashfurrow

  2. None
  3. Agenda 1. How to Choose a Library 2. Traditional library

    management sucks 3. CocoaPods is the new hotness 4. Getting started is easy 3
  4. Premise: using open source is good (more like “promise” amirite)

  5. Why?

  6. Why? • Build applications faster • Write less code •

    Build better applications • Expose yourself to other devs’ code 6
  7. “Library”?

  8. None
  9. None
  10. None
  11. File Management

  12. None
  13. This is a bad idea.

  14. A Bad Idea • Dependency management Hell • Lack of

    separation of code • No versioning of libraries • Per-file compiler flags 14
  15. Git Submodules

  16. Git Submodules • A submodule is like a pointer to

    another repo • Another repo at a specific point in its history • Checks out code into your directory • Submodule interface is not mature • Still have to specify per-file flags • Requires command-line interface 16
  17. None
  18. None
  19. Git Subtree I don’t even.

  20. Git Subtree

  21. CocoaPods

  22. CocoaPods • Manages versions and dependencies • Solves a lot

    of problems with file-management • Easy to use 22
  23. CocoaPods is to Objective-C as RubyGems is to Ruby

  24. What is a CocoaPod

  25. CocoaPods • A CocoaPod is a file that specifies a

    library • Name, dependencies, version, etc • CocoaPods is a tool to manage these specs 25
  26. How does this work?

  27. GitHub

  28. None
  29. Getting Started

  30. None
  31. None
  32. None
  33. None
  34. None
  35. None
  36. None
  37. None
  38. None
  39. None
  40. Best Practices • Don’t check in your Pods directory •

    Use .gitignore • Specify explicit version numbers • Inhibit pod warnings 40
  41. Demo

  42. Creating a Library

  43. Creating a Library • Specify a license • Write a

    good README • Include screenshots • Include sample library usage • Keep files organized 43
  44. None
  45. None
  46. None
  47. Agenda 1. How to Choose a Library 2. Traditional library

    management sucks 3. CocoaPods is the new hotness, submodules are OK too 4. Getting started is easy 47
  48. Ash Furrow @ashfurrow Thanks!