CARVIEW |
Select Language
HTTP/2 200
date: Fri, 10 Oct 2025 09:23:25 GMT
content-type: text/html; charset=utf-8
cache-control: max-age=0, private, must-revalidate
cf-cache-status: DYNAMIC
link: ; rel=preload; as=style; nopush,; rel=preload; as=script; nopush,; rel=preload; as=style; nopush,; rel=preload; as=script; nopush,; rel=preload; as=script; nopush
nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
referrer-policy: strict-origin-when-cross-origin
report-to: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=sHfr%2Fi1DyYN7E1qUl%2Fm6XzODDJX44tEK45PUDZoYMtI%3D\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\u0026ts=1760088205"}],"max_age":3600}
reporting-endpoints: heroku-nel="https://nel.heroku.com/reports?s=sHfr%2Fi1DyYN7E1qUl%2Fm6XzODDJX44tEK45PUDZoYMtI%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1760088205"
server: cloudflare
strict-transport-security: max-age=0; includeSubDomains
vary: Accept,Accept-Encoding
via: 2.0 heroku-router
x-content-type-options: nosniff
x-permitted-cross-domain-policies: none
x-request-id: 5d4fa037-11bc-4783-5d17-ea5ec0a5b89f
x-runtime: 0.134409
x-xss-protection: 0
content-encoding: gzip
set-cookie: _secure_speakerd_session=fzRO%2BWcWgQRUcHyXx4VAFM1zbebABmjcek6uMfCx3ZFNfG7MlVRrzzEJY7oHyZU41DrKAD46%2BHHnUb3UgwoVjKgqtoJ%2BFiYxVkk%2BNwQcFYwfTiUKshDrDB9T5JKffMwGL1vdxVj%2BlZ05sImw9PrZ3ATxZP5TNUAWZyTjcul%2By%2FhwbBy0Ts7fAULWZ8cmIG%2BLG5GcheWIC%2FR2lOVhNSEkGjm%2BD5YX0kQTw0Tl52Y0ycB9%2Fcj01TAnyRR%2Fyy1b4%2B2gg%2F3Fsz1YzxAoYM4HrW3vu4%2FFB%2BlAyFC4WCAbdKXT2WRLUMLTnkuD%2Fln8%2BeYqwoaWk22lbzsjIzAxbIjv3ujET3qErQJRYSy9pf7njuqOp3kLVxWAb9gnaT%2BXPnJWNg6r%2B8aBoHkwKgAQ3W1Ni7qDizE2--h4tlMwh8in8GM8%2BS--0CcBMCWMk8nXQYWM%2F%2Blafg%3D%3D; HttpOnly; SameSite=Lax; Secure; Path=/; Expires=Fri, 24 Oct 2025 09:23:25 GMT
cf-ray: 98c50f0cbd848087-BLR
The CocoaPods Spec Repo & CocoaDocs - Speaker Deck
The CocoaPods Spec Repo & CocoaDocs
Orta Therox talks about keeping peace in the CocoaPods Specs Repo and about the Documentation Project CocoaDocs
More Decks by Orta
Other Decks in Programming
Featured
Transcript
-
The Repo Thursday, 13 June 13 Stats: Number of contributors
last month 341 Number Commits 670 10 PRs a day` -
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 -
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 -
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 -
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 -
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 -
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 -
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. https://cocoadocs.org?q=wwdc -
How? Thursday, 13 June 13 * currently a multi-class Ruby
app * Barely maintainable * So was cocoapods * Lots of potential to modularize architecture -
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