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

NSRevolution: How Ruby Hackers Built the New Objective-C Open Source Community

NSRevolution: How Ruby Hackers Built the New Objective-C Open Source Community

Objective-C was everything you’d expect of the official language of Apple. At the intersection of science and liberal arts (Smalltalk), its APIs are well-designed, with (almost) everything you need available out-of-the-box… but with no room for customization. And that’s the way it went: for decades, Apple supplied all of the code. No open source community to speak of.

Last year, that all changed. With the new wave of web programmers coming over to develop for iOS, there was a huge influx of new ideas and energy into Objective-C. This is the story of how new developers with new ideas sparked a new era of collaboration and innovation for Objective-C—how, for the first time, the community was able to come together to start solving their own problems, rather than relying on Apple to do it for them. It will look at how the Ruby community shaped the emerging philosophy of modern Objective-C libraries and tools.

Mattt Thompson

March 29, 2013
Tweet

More Decks by Mattt Thompson

Other Decks in Programming

Transcript

  1. 1 to: 10 do:[ :i | Transcript show:i. Transcript show:'

    '. Transcript show:i sqt. Transcript cr. ].
  2. • Noobs • Iconoclasts • Dillitants • Hipsters • Scavengers

    • Establishmentarians Evolution of Rubyists
  3. @primaryFontName: HelveticaNeue; @secondaryFontName: HelveticaNeue-Light; @primaryFontColor: #333333; @primaryBackgroundColor: #E6E6E6; Button {

    background-color: @primaryBackgroundColor; border-color: #A2A2A2; border-width: @primaryBorderWidth; font-color: @primaryFontColor; font-color-highlighted: #999999; font-name: @primaryFontName; font-size: 18; corner-radius: 7; } NavigationBar { background-tint-color: @primaryBackgroundColor; font-name: @secondaryFontName; font-size: 20; font-color: @primaryFontColor; text-shadow-color: #666666; text-shadow-offset: 1,1; }
  4. + (id)scenarioToLogIn; { KIFTestScenario *scenario = [KIFTestScenario scenarioWithDescription:@"Test that a

    user can successfully log in."]; [scenario addStep:[KIFTestStep stepToReset]]; [scenario addStepsFromArray:[KIFTestStep stepsToGoToLoginPage]]; [scenario addStep:[KIFTestStep stepToEnterText:@"[email protected]" intoViewWithAccessibilityLabel:@"Login User Name"]]; [scenario addStep:[KIFTestStep stepToEnterText:@"thisismypassword" intoViewWithAccessibilityLabel:@"Login Password"]]; [scenario addStep:[KIFTestStep stepToTapViewWithAccessibilityLabel:@"Log In"]]; // Verify that the login succeeded [scenario addStep:[KIFTestStep stepToWaitForTappableViewWithAccessibilityLabel:@"Welcome"]]; return scenario; } @end