Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Marin Usalj supermar.in

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

iOS @ Yammer

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

D3p3nd3ncy M4n4g3m3n7 CocoaPods Showtime

Slide 7

Slide 7 text

D3p3nd3ncy M4n4g3m3n7

Slide 8

Slide 8 text

I can do this myself

Slide 9

Slide 9 text

Your computer does it better and faster

Slide 10

Slide 10 text

More work for 1 developer, less work for 19238421 users

Slide 11

Slide 11 text

D3p3nd3ncy M4n4g3m3n7 resolution fetching integration discoverability

Slide 12

Slide 12 text

resolution AFNetworking -> Rechability (> 2.0.0) ShareKit -> Rechability (3.1.0)

Slide 13

Slide 13 text

resolution AFNetworking -> Rechability (> 2.0.0) ShareKit -> Rechability (3.1.0) SocketRocket -> Reachability (2.0.0)

Slide 14

Slide 14 text

duplicate symbols

Slide 15

Slide 15 text

Fetching [=========> ] 25%

Slide 16

Slide 16 text

Fetching [===================> ] 50%

Slide 17

Slide 17 text

Fetching [=============================> ] 75%

Slide 18

Slide 18 text

Fetching [======================================> ] 99%

Slide 19

Slide 19 text

Integration Let's integrate a complex dependency

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

VS

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

CocoaPods

Slide 24

Slide 24 text

Ecosystem

Slide 25

Slide 25 text

Discovery machine

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Deals with deps and code sync

Slide 29

Slide 29 text

Resolves dependencies

Slide 30

Slide 30 text

Resolves dependencies Downloads dependencies

Slide 31

Slide 31 text

Resolves dependencies Downloads dependencies Integrates dependencies

Slide 32

Slide 32 text

Resolves dependencies Downloads dependencies Integrates dependencies Synchronizes dependencies

Slide 33

Slide 33 text

Bonus

Slide 34

Slide 34 text

Removes deps easy and fast

Slide 35

Slide 35 text

Core Team

Slide 36

Slide 36 text

Eloy Durán @alloy

Slide 37

Slide 37 text

Fabio Pelosin @irrationalfab

Slide 38

Slide 38 text

Orta Therox @orta

Slide 39

Slide 39 text

Keith Smiley (machine) @Keithbsmiley

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

Hanging out on Slack (Thanks Slack!)

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

Showtime

Slide 45

Slide 45 text

Using pods

Slide 46

Slide 46 text

Podfile pod 'AFNetworking' pod 'Kiwi', :head

Slide 47

Slide 47 text

Podfile pod 'AFNetworking' pod 'Kiwi', :head pod 'SSKeychain', '~> 2.1.2'

Slide 48

Slide 48 text

Podfile pod 'AFNetworking' pod 'Kiwi', :head pod 'SSKeychain', '~> 2.1.2' pod 'SSKeychain', '~> 2.1.3' # .... pod 'SSKeychain', '~> 2.1.999'

Slide 49

Slide 49 text

$ pod install

Slide 50

Slide 50 text

$ pod install def install! resolve_dependencies download_dependencies generate_pods_project integrate_user_project if config.integrate_targets? perform_post_install_actions end

Slide 51

Slide 51 text

NSMeetup.xcodeproj

Slide 52

Slide 52 text

NSMeetup.xcodeproj NSMeetup.xcworkspace

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

Where did pods come from?

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

Where did Specs come from?

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

Hosted on Github

Slide 59

Slide 59 text

On your computer ~/.cocoapods/repos/master

Slide 60

Slide 60 text

Private pods / specs

Slide 61

Slide 61 text

Private pods / specs ~/.cocoapods/repos/master ~/.cocoapods/repos/Yammer

Slide 62

Slide 62 text

Your internal libraries

Slide 63

Slide 63 text

Private shared code between apps

Slide 64

Slide 64 text

pod command

Slide 65

Slide 65 text

$ pod Commands: + help Show help for the given command. + init Generate a Podfile for the current directory. + install Install project dependencies + lib Develop pods + list List pods + outdated Show outdated project dependencies + plugins Show available CocoaPods plugins + repo Manage spec-repositories + search Searches for pods + spec Manage pod specs + trunk Interact with the CocoaPods API (e.g. publishing new specs) + try Try a Pod! + update Update outdated project dependencies

Slide 66

Slide 66 text

Don't be afraid :) Try out plugins Try out pods

Slide 67

Slide 67 text

Creating your pod

Slide 68

Slide 68 text

pod lib create To create

Slide 69

Slide 69 text

. ├── Example │ ├── AwesomeLib │ ├── AwesomeLib.xcodeproj │ ├── AwesomeLib.xcworkspace │ ├── Pods │ └── Tests └── Pod ├── Assets └── Classes 9 directories

Slide 70

Slide 70 text

pod lib lint When ready to publish

Slide 71

Slide 71 text

pod trunk push Shipit!

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

Trunk Robot version of Keith. Lives in Herokuland

Slide 74

Slide 74 text

Installing [sudo] gem install cocoapods

Slide 75

Slide 75 text

Never do sudo pod install

Slide 76

Slide 76 text

Contributing <3

Slide 77

Slide 77 text

Bunch of Ruby Ask for help!

Slide 78

Slide 78 text

Clone Rainforest github.com/cocoapods/rainforest

Slide 79

Slide 79 text

Swift? Bridging header

Slide 80

Slide 80 text

Thanks Steve Derico, CocoaPods team, Yammer

Slide 81

Slide 81 text

QA @supermarin supermar.in