Slide 1

Slide 1 text

CocoaPods Specs Thursday, 13 June 13

Slide 2

Slide 2 text

The Repo Thursday, 13 June 13 Stats: Number of contributors last month 341 Number Commits 670 10 PRs a day`

Slide 3

Slide 3 text

How I Started Thursday, 13 June 13 Wanted to help, but didn't want to code Figured PRs sucked for cocoapods devs, time could be spent on app instead Wanted to raise profile

Slide 4

Slide 4 text

Stopping commit access Thursday, 13 June 13 Started dealing with PRs in December It was Fabio beforehand One solid PR policy but we stopped that in favour of dealing with the PRs

Slide 5

Slide 5 text

Downsides Thursday, 13 June 13 Commits break originally spec validation was done in all ruby via tracis Git tag checks etc So many commiters meant people would update other people's pods Cocoapods updates New versions broke all specs 0.17 took a long time & Lots of broken specs Travis fails Which is ok, just have to lint manually, which I can get Keith to do Time involved Running PRs took about an hour of my time a day Now it's more like 15 Smiley Keith Fabio vs OSS Stats: Number of contributors last month 341 Number Commits 670 10 PRs a day

Slide 6

Slide 6 text

Downsides Thursday, 13 June 13 Commits break originally spec validation was done in all ruby via tracis Git tag checks etc So many commiters meant people would update other people's pods Cocoapods updates New versions broke all specs 0.17 took a long time & Lots of broken specs Travis fails Which is ok, just have to lint manually, which I can get Keith to do Time involved Running PRs took about an hour of my time a day Now it's more like 15 Smiley Keith Fabio vs OSS Stats: Number of contributors last month 341 Number Commits 670 10 PRs a day

Slide 7

Slide 7 text

function randomMergeMessage() { var message = [ "[name] = [nice_word], [thanks_word].", "Nice PR [name] - [thanks_word].", "[nice_word] [name] - [thanks_word].", "Very [nice_word] [thanks_word] for the PR!", "[nice_word]! [thanks_word] [name].", "[thanks_word] [name].", "Looks [nice_word] [thanks_word] [name]."] return { title: "", comment: message.random(), close: true, merge:true} } // Add the thanks / nice / [name] to a comment function parseMessage(message) { var thanks = ["thanks", "thanks a lot", "cool work", "nice work"].random() var nice = ["awesome", "cool", "brilliant", "beautiful", "great", "good"].random() message = message.replace("[name]", "@" + authorName) message = message.replace("[nice_word]", nice) message = message.replace("[thanks_word]", thanks) return message.sentenceCase() } Thursday, 13 June 13 Commits break originally spec validation was done in all ruby via tracis Git tag checks etc So many commiters meant people would update other people's pods Cocoapods updates New versions broke all specs 0.17 took a long time & Lots of broken specs Travis fails Which is ok, just have to lint manually, which I can get Keith to do Time involved Running PRs took about an hour of my time a day Now it's more like 15 Smiley Keith Fabio vs OSS Stats: Number of contributors last month 341 Number Commits 670 10 PRs a day

Slide 8

Slide 8 text

CocoaDocs Thursday, 13 June 13

Slide 9

Slide 9 text

Why Thursday, 13 June 13 * Documentation is sparse * Appledoc is not installed by default * No ability to view older version documentation * Most searches for framework info hit stack overflow * Difficult to get perspective on usage in real world * Obj-C now has a package manager * Appledoc vs Doxygen

Slide 10

Slide 10 text

What? Thursday, 13 June 13 * Documents ~3000 objc libraries - 1250 seperate libraries * Merges iOS/Mac libraries if seperate * Xcode support * Dash support * Support Apple Documentation ( iOS only ATM ) * WWDC videos * Provide support for past releases * Fast fuzzy-string search * Takes READMEs from github projects * Provides usage context by search with github's code search * Easy to parse URLs, e.g. http://cocoadocs.org?q=wwdc

Slide 11

Slide 11 text

How? Thursday, 13 June 13 * currently a multi-class Ruby app * Barely maintainable * So was cocoapods * Lots of potential to modularize architecture

Slide 12

Slide 12 text

Next? Thursday, 13 June 13 A dash-like site for all objc libraries API Diffs pre version / class CocoaDocs as a gem Allow people to run their own CocoaDocs on a private repo