Git Product home page Git Product logo

carthage-talk's Introduction

Ruthlessly Simple Dependency Management with Carthage

Presented and recorded at the Swift Language User Group, using Deckset theme “Sketchnote.”

Carthage is a new dependency manager for Objective-C and Swift projects, intended to be the simplest way to add frameworks to a Cocoa application. Carthage works by delegating tasks to Xcode and Git, minimizing new concepts as much as possible, so you can continue to use the tools you’re already familiar with.

This talk will explain what Carthage is and how to use it, then dive into the philosophy of ruthless simplicity that inspired the project. We’ll also compare and contrast Carthage with CocoaPods, the original dependency manager for Cocoa. Finally, we’ll explore how Carthage is architected under-the-hood, and the benefits we’ve seen from writing it completely in Swift.

carthage-talk's People

Contributors

jspahrsummers avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

tedpark mttcrsp

carthage-talk's Issues

Consider adding more background on the why & how of dependency management

Maybe you cover this outside the slides and inside your speech — a general caveat you can apply to all of the issues I open 😄

Maybe you could use spending a bit more time early on, on why dependency managers are needed, and how they usually function (maybe even historically before/outside Cocoa)?

I’d recommend this in part because I’ve found audiences are never uniformly on the same page as you at the start of a talk, even if they are roughly at the same proficiency level; for example they may not know your context, mindset, taste & historical outlook on the topic.
I also think this might be useful in particular because the Swift meetups can attract a lot of new Cocoa developers (or even new developers period) that may not already know much about these “obvious” topics.

Review/rehearse length

At the time of writing, there are 55 slides. That's probably a good number, but I do tend to talk fast, so I'll need to make sure that there's enough content.

There might also be slides that can be 🔪ed, if they're too boring to the audience or too tangential to the main talk.

Remove Ruby slide when discussing CocoaPods?

I think the points you make earlier about necessity of a podspec and less control over the setup of the Xcode project are pretty strong. Ruby vs. Swift as the programming language for implementing the dependency manager doesn't seem nearly as important to me.

The audience will know that you, and most iOS library developers, are able to pick up new programming languages easily, so I assume that this point won't come across as strong as the earlier ones.

Maybe you could elaborate more on the Xcode project setup that is generated when using CocoaPods (I'm sure not everyone will be familiar) and how this can cause issues instead?

Talk about vendor lock-in

Complex tools lock you in more. By contrast, if Carthage fails, so what? You still have Xcode and Git.

Discuss frameworks / dynamic libraries vs. static libraries?

This might be outside the scope of the talk, but it could be interesting to briefly discuss these two different types of libraries.

One of the reasons a simpler dependency management is possible now is that dynamic libraries are available on iOS, so there's might a way of putting this into the introduction?

Consider speaking more about negative aspects or limitations of Carthage?

I see the slide about your roadmap to 1.0, and I guess that implicitly covers some of your current missing features, but it may be helpful to also highlight who this may not work for today, or in the future. I always try to do this otherwise talks can come across as a bit of a pitch. That said if you genuinely are building Carthage as the dependency manager for everyone, it would similarly be good to explicitly state that.

Considering showing more code?

I have no scientific or even reasonable explanation for this, but I’ve found that the optimal number of code slides to have in a technical presentation is between 2 & 5. Anything less and people feel they got a marketing talk, anything more and they start dozing off 😅

As there are genuinely interesting implementation details in Carthage, you may consider illustrating a few of the points you already make with code instead of text. Just a completely unscientific/unreasonable thought ;)

Contextualize briefly with Swift?

In the intro, consider quickly explaining how this is relevant to Swift, in both directions? How did Swift drive the creation/design/implementation of Carthage, and how is Carthage relevant to Swift development today? Not a requirement at all, but it might help the audience contextualize your entire talk a bit better.

Consider bookending the talk

This is pure style 😎 and something you may not want or need to do here, but I’m a sucker for symmetry, and I think ending your talk where you begin is usually a good audience-pleaser.

This could be as stylistic as beginning & ending on the same anecdote, starting with a brain teaser & solving it at the end, or simply stating the outline of your talk at the beginning and recapping your talk at the end.

Style aside, it can also really help with:

  1. solidifying your main point(s) and
  2. leaving the audience with a clear sense that you explained or demonstrated something.

Just a minor thing to consider

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.