Slide 1

Slide 1 text

Sunday, 29 September 13

Slide 2

Slide 2 text

CocoaPods Sunday, 29 September 13 CocoaPods state of the Union We’ll throw out some stats We’ll show what’s happened in the last two years and highlight some of the important things you mis have missed CocoaPods Internals We’ll talk about some of the internal details of how cocoapods works CocoaPods Future We’ll discuss what’s happening in the future, where the site, communit yan dproject are heading

Slide 3

Slide 3 text

CocoaPods Sunday, 29 September 13 40 new contributors a week

Slide 4

Slide 4 text

CocoaPods 2 Years 1,400 Contributors 2,300 Libraries 4,000 Pull Requests 6,000 Podspecs 220,000 Gem Downloads Sunday, 29 September 13 40 new contributors a week

Slide 5

Slide 5 text

CocoaPods 2 Years 1,400 Contributors 2,300 Libraries 4,000 Pull Requests 6,000 Podspecs 220,000 Gem Downloads Sunday, 29 September 13 40 new contributors a week

Slide 6

Slide 6 text

CocoaPods 2 Years 1,400 Contributors 2,300 Libraries 4,000 Pull Requests 6,000 Podspecs 220,000 Gem Downloads Sunday, 29 September 13 40 new contributors a week

Slide 7

Slide 7 text

CocoaPods 2 Years 1,400 Contributors 2,300 Libraries 4,000 Pull Requests 6,000 Podspecs 220,000 Gem Downloads Sunday, 29 September 13 40 new contributors a week

Slide 8

Slide 8 text

CocoaPods 2 Years 1,400 Contributors 2,300 Libraries 4,000 Pull Requests 6,000 Podspecs 220,000 Gem Downloads Sunday, 29 September 13 40 new contributors a week

Slide 9

Slide 9 text

CocoaPods 2 Years 1,400 Contributors 2,300 Libraries 4,000 Pull Requests 6,000 Podspecs 220,000 Gem Downloads Sunday, 29 September 13 40 new contributors a week

Slide 10

Slide 10 text

CocoaPods 2 Years 1,400 Contributors 2,300 Libraries 4,000 Pull Requests 6,000 Podspecs 220,000 Gem Downloads Sunday, 29 September 13 40 new contributors a week

Slide 11

Slide 11 text

CocoaPods Sunday, 29 September 13 Countries: The Netherlands, Italy, UK, Switzerland, USA, Australia Projects: Cocoapods.org, CLAide, Cocoapods-core, Cocoapods-downloader, CocoaDocs, xcodeproj, xcproj, Twitter/RSS Feed, Cocoapods Guides, Push Access Server

Slide 12

Slide 12 text

CocoaPods 3-14 Developers 10 Projects Sunday, 29 September 13 Countries: The Netherlands, Italy, UK, Switzerland, USA, Australia Projects: Cocoapods.org, CLAide, Cocoapods-core, Cocoapods-downloader, CocoaDocs, xcodeproj, xcproj, Twitter/RSS Feed, Cocoapods Guides, Push Access Server

Slide 13

Slide 13 text

CocoaPods 3-14 Developers 10 Projects Sunday, 29 September 13 Countries: The Netherlands, Italy, UK, Switzerland, USA, Australia Projects: Cocoapods.org, CLAide, Cocoapods-core, Cocoapods-downloader, CocoaDocs, xcodeproj, xcproj, Twitter/RSS Feed, Cocoapods Guides, Push Access Server

Slide 14

Slide 14 text

All the things that you shouldn't know Sunday, 29 September 13 This presentation is focused on the internal information of CocoaPods necessary to easily overcome any issue of this young tool.

Slide 15

Slide 15 text

What Sunday, 29 September 13

Slide 16

Slide 16 text

CocoaPods takes a set of specifications to generate and setup a series of libraries which include the dependencies of the targets of a given project. Sunday, 29 September 13 Setting the context and explaining the basics with some emphasis on some less know point. - The Podfile is about targets. Don't get confused by the implicit target definition. -The Lockfiles, especially the Podfile.lock is as important as the Podfile and as accessible. -Specifications will be only declarative.

Slide 17

Slide 17 text

Podfile Lockfiles Podspecs Sunday, 29 September 13

Slide 18

Slide 18 text

Podfile Lockfiles Podspecs The Podfile specifies a list of targets which need to be integrated and their dependencies. Sunday, 29 September 13

Slide 19

Slide 19 text

Podfile Lockfiles Podspecs The Lockfiles store the information about the previous installation. There is one for the installation and one for your local sanbox. Sunday, 29 September 13

Slide 20

Slide 20 text

Podfile Lockfiles Podspecs Provide the declarative information necessary to build a single library. Sunday, 29 September 13

Slide 21

Slide 21 text

However the real questions are? How CocoaPods does this and why you should care? Sunday, 29 September 13

Slide 22

Slide 22 text

How Sunday, 29 September 13

Slide 23

Slide 23 text

Analysis Downloads Pods project generation User projects integration Sunday, 29 September 13

Slide 24

Slide 24 text

Analysis Downloads Pods project generation User projects integration Sunday, 29 September 13

Slide 25

Slide 25 text

Analysis Downloads Pods project generation User projects integration • Podfile is compared to the Podfile.lock • Version which should not change are detected • The user project is inspected • Dependencies are resolved • The information for each target of Sunday, 29 September 13

Slide 26

Slide 26 text

Analysis Downloads Pods project generation User projects integration • The resolved version of the Pods not available in the sandbox are downloaded • Unused files are removed Sunday, 29 September 13

Slide 27

Slide 27 text

Analysis Downloads Pods project generation User projects integration • The pods project is generated • The file references are added • One target per pod-target definition combination • One target to aggregate the pods of a target definition • Support files are generated • Xcconfigs are king! Sunday, 29 September 13 What is special about the Pods project? Nothing

Slide 28

Slide 28 text

Analysis Downloads Pods project generation User projects integration • The workspace is created • References to the aggregate libs and to the xcconfigs are created • The target is setup to use the aggregate lib as a dependency and the xcconfig file for configuration • copy resources script and the Lockfile check build phases are ad Sunday, 29 September 13

Slide 29

Slide 29 text

0.3 Multiple Targets & Generated Xcodeproj Sunday, 29 September 13

Slide 30

Slide 30 text

0.5 No More MacRuby Sunday, 29 September 13

Slide 31

Slide 31 text

0.6 Acknowledgements File & Documentation Sunday, 29 September 13

Slide 32

Slide 32 text

0.8 DSL change: from ‘dependency’ to 'pod' Podfile Sunday, 29 September 13

Slide 33

Slide 33 text

0.9 Weak Frameworks & :head flag Sunday, 29 September 13

Slide 34

Slide 34 text

0.11 Public headers for podspecs Sunday, 29 September 13

Slide 35

Slide 35 text

0.12 Specifying ARC in subspecs & inhibit_all_warnings! Sunday, 29 September 13

Slide 36

Slide 36 text

0.14 Local Pods for dev, pod update & pod outdated Sunday, 29 September 13

Slide 37

Slide 37 text

0.15 Pre-install hooks Sunday, 29 September 13

Slide 38

Slide 38 text

0.17 Spec Linter, pod search index, YAML, Podfile.lock ordered Sunday, 29 September 13

Slide 39

Slide 39 text

0.17 Per Pod warning inhibiting, Xcode build phase for Podfile.lock Sunday, 29 September 13

Slide 40

Slide 40 text

0.19 Pod specific macros Sunday, 29 September 13

Slide 41

Slide 41 text

0.20 Docs removed, Sandboxing work Sunday, 29 September 13

Slide 42

Slide 42 text

0.21 Pods are separate targets Sunday, 29 September 13

Slide 43

Slide 43 text

0.22 Pod lib create Sunday, 29 September 13

Slide 44

Slide 44 text

0.23 Removed post_install and pre_install hooks Sunday, 29 September 13

Slide 45

Slide 45 text

0.24 Pod init command, uses xcproj Sunday, 29 September 13

Slide 46

Slide 46 text

Sunday, 29 September 13

Slide 47

Slide 47 text

EXPERIENCE DRIVEN Sunday, 29 September 13 USER 89% Uses CocoaPods, wants to browse / search for specific code, hits pod install and then forget. Likes features, should ideally keep up to date but doesn’t, might follow twitter PODSPEC AUTHOR 10% Wants Docs on Podspec, wants easy ways to update libraries, wants to know why something broke, keeps up to date to see if we’re deprecating yet another feature they used. COCOAPODS DEV 1% Wants to understand internals of system in order to contribute

Slide 48

Slide 48 text

EXPERIENCE DRIVEN USER Sunday, 29 September 13 USER 89% Uses CocoaPods, wants to browse / search for specific code, hits pod install and then forget. Likes features, should ideally keep up to date but doesn’t, might follow twitter PODSPEC AUTHOR 10% Wants Docs on Podspec, wants easy ways to update libraries, wants to know why something broke, keeps up to date to see if we’re deprecating yet another feature they used. COCOAPODS DEV 1% Wants to understand internals of system in order to contribute

Slide 49

Slide 49 text

EXPERIENCE DRIVEN USER PODSPEC AUTHOR Sunday, 29 September 13 USER 89% Uses CocoaPods, wants to browse / search for specific code, hits pod install and then forget. Likes features, should ideally keep up to date but doesn’t, might follow twitter PODSPEC AUTHOR 10% Wants Docs on Podspec, wants easy ways to update libraries, wants to know why something broke, keeps up to date to see if we’re deprecating yet another feature they used. COCOAPODS DEV 1% Wants to understand internals of system in order to contribute

Slide 50

Slide 50 text

EXPERIENCE DRIVEN USER PODSPEC AUTHOR COCOAPODS DEV Sunday, 29 September 13 USER 89% Uses CocoaPods, wants to browse / search for specific code, hits pod install and then forget. Likes features, should ideally keep up to date but doesn’t, might follow twitter PODSPEC AUTHOR 10% Wants Docs on Podspec, wants easy ways to update libraries, wants to know why something broke, keeps up to date to see if we’re deprecating yet another feature they used. COCOAPODS DEV 1% Wants to understand internals of system in order to contribute

Slide 51

Slide 51 text

Sunday, 29 September 13 - Site - 07 Nov 2011 by Florien Hanke - v1.0 - 07 Nov 2011 by Florien Hanke - Came with a great search - Rudimentary Documentation for CP - v1.2 - Jan 2013 - docs.cocoapods.org - guides - v1.5 - July 2013 - CocoaDocs as a first class citizen - Private CocoaPods API - Search - Pod info - V2.0 August 2013 - Revised Branding - Revised Homepage - Revised Search - Revised Documentation - Separated Guides

Slide 52

Slide 52 text

Sunday, 29 September 13 Noticed that we weren’t seeing the kind of mobile stats I’d like

Slide 53

Slide 53 text

Sunday, 29 September 13 We’ve looked at the analytics, and our iOS usage isn’t where we’d like it to be. So there’s been lots of work on making the website mobile friendly

Slide 54

Slide 54 text

Sunday, 29 September 13

Slide 55

Slide 55 text

Sunday, 29 September 13 Focus on Search

Slide 56

Slide 56 text

Sunday, 29 September 13 Showing Stars, Forks, Project Maturity, % of documentented public methods/classes, README length Allowing inline previewing of the README similar to CocoaDocs Inline screenshots This should be enough to choose between all the UIAlertView+Blocks

Slide 57

Slide 57 text

Sunday, 29 September 13

Slide 58

Slide 58 text

Sunday, 29 September 13

Slide 59

Slide 59 text

Sunday, 29 September 13 Not just been looking at search, we’ve been thinking about ways to communicate with the users of cocoapods. Our README & Twitter are our current ways of getting new info out, but one is too technical and the other too temporary

Slide 60

Slide 60 text

Sunday, 29 September 13

Slide 61

Slide 61 text

Sunday, 29 September 13

Slide 62

Slide 62 text

Sunday, 29 September 13 Core Dev team

Slide 63

Slide 63 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 64

Slide 64 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 65

Slide 65 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 66

Slide 66 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 67

Slide 67 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 68

Slide 68 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 69

Slide 69 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 70

Slide 70 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 71

Slide 71 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 72

Slide 72 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 73

Slide 73 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 74

Slide 74 text

Sunday, 29 September 13 and here’s 1200 of our 1400 if your face was cropped, you can bring it up with me later

Slide 75

Slide 75 text

Why? Sunday, 29 September 13 - [Joke] You might want to use this dependency automation thing unless you prefer your to use punch cards for that (apparently some still do). - Even if you're not a fan you might learn some tips and best practices for your workflows. - Abstractions are leaky - CocoaPods is still very immature - Life is good until CocoaPods breaks your project and suddenly all those little ponies reveal o be nothing else than overgrown rabid zombie rabbits - Adapt CocoaPods to your needs - Better tickets - Less blaming on maintainers ;-)

Slide 76

Slide 76 text

CocoaPods is an asset of the community and it can be only as good as we are. Sunday, 29 September 13

Slide 77

Slide 77 text

@orta & @fabiopelosin Sunday, 29 September 13