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

Why Open Source Works (Alex Gaynor)

Why Open Source Works (Alex Gaynor)

PyCon Canada

August 13, 2013
Tweet

More Decks by PyCon Canada

Other Decks in Education

Transcript

  1. Why Open Source
    Works
    Alex Gaynor
    PyCon Canada
    Sunday, August 11, 13
    Hi everyone. Thanks for coming out. I’m super thrilled to be here, this now makes 4 PyCons,
    in 4 countries, on 3 continents in the last year for me. So that’s really cool, thanks for having
    me. A huge round of applause for the organizers, this has been a phenomenal conference
    thus far.

    View Slide

  2. Why this talk?
    Sunday, August 11, 13
    So first things first, why give this talk? A lot of people would say “isn’t it enough that it
    works?” Why do we care why it works?

    View Slide

  3. 3 years ago...
    Sunday, August 11, 13
    3 years ago, almost to the day, August 15th, 2010, I gave a talk at an education conference
    titled “Open Source and Education”. I talked to a group of educators and researchers about
    the practices we were using in open source. Specifically about the overlaps between
    techniques from pedagogy, from teaching, and practices we’ve organically developed in the
    open source community.

    View Slide

  4. The cobblers children
    have no shoes
    Sunday, August 11, 13
    And a few months ago I get approached about speaking here, and I start thinking “what are
    the things I know about that people might want to hear”. And I realized through
    conversations I’ve had, a lot of people actively working in open source don’t really know
    these things. So I figured it was something worth sharing.

    View Slide

  5. What do I know about
    Open Source?
    Sunday, August 11, 13
    Before I really dive in, I figure you might want to know how I know stuff about open source. . I
    write a lot of it; I’m a core dev for Django, CPython, PyPy; my day job is now working on open
    source, from libcloud to openstack, and many other projects at Rackspace. I help shepherd it:
    I serve as a director of the Python Software Foundation, and before that of the Django
    Software Foundation. And of course, I use it all the time, so I’m approaching this from a lot of
    angles. Anything I say about psychology, pedagogy, or sociology is something I read in a
    paper somewhere. I’m not an expert in those fields, please call me out if I get something
    wrong. The conference organizers seem to be messing with my head a little, they put me
    between two individuals who are actually qualified to speak on this stuff.

    View Slide

  6. What practices are we
    concerned with?
    Sunday, August 11, 13
    Before we dive into the “why”, we should spend a few minutes discussing the “what” of open
    source, because open source describes a pretty wide range of behaviors

    View Slide

  7. • Code dumps
    • Public development
    •Open development
    Sunday, August 11, 13
    So the way I see it there are about three types of software that match the definition of open
    source. The first is code dumps, here’s some software, look it’s open! This is basically the
    same as closed source development, except there’s some code you and I can look at at the
    end. The next is public development, this is something like Android, theres a public VCS
    repo, you can see people working on it, but the progress isn’t driven by a process open to the
    public. And finally there’s open development, this is what we’re going to talk about today,
    and this is probably what most of the OSS projects you know are: this is Django, this is
    Python, this is OpenStack, this is Linux, etc.

    View Slide

  8. • Pull requests / contributing patches
    • Code review
    • Bug reports
    • IRC / mailing lists
    Open development
    practices
    Sunday, August 11, 13
    These are some of the practices exhibited by open development projects, certainly not an
    exhaustive list.

    View Slide

  9. • Writing code
    • Reviewing Code
    • Providing support
    Sunday, August 11, 13
    Many many many developer hours. Often from either our free time, or our employers time.
    Why do we volunteer our time like this, why do our employers let us spend *their* time on
    this stuff? Those are the questions I want to try to answer for us. Because intuitively it’s
    bonkers, who lets their employees give away their code, what person goes home and does
    the same type of stuff as they do at the job.

    View Slide

  10. What do we believe?
    Sunday, August 11, 13
    So to begin unpacking this, first I wanted to take a look at what people believe themselves. So
    I put out a survey, 3 questions, “Do you contribute to Open Source?”, “Why do you contribute
    to Open Source?”, “Why don't you contribute to open source any more (or as much as you'd
    like to)?”. 150 responses. ~50% contribute regularly, 28% have contributed in the past, 15%
    have not contributed before, 5% other. Decent sample size, population is biased, it’s all
    people within one or two degrees of me socially, and I have weird social circles. So those are
    the opinions I collected.

    View Slide

  11. Why do we contribute
    to open source?
    Sunday, August 11, 13
    There were some really varied answers to “Why do you contribute to open source?”, I’ve tried
    to coalesce ones that were the same, and I’m only going to talk about some of the more
    common answers.

    View Slide

  12. Because I gained /
    To give back
    Sunday, August 11, 13
    This was, by a decent margin, the most common answer. A lot of people feel their
    professional lives have benefited hugely from their usage of open source, so they want to pay
    it forward, so to speak.

    View Slide

  13. Improve a thing I use
    Sunday, August 11, 13
    “Scratch your own itch” is another strong motivator, people who use software hit bugs or
    need more features and then they want to fix them and share that with the world. If you hang
    around the development lists for Django or Python you’ve probably heart someone say
    something like, “Well, I don’t have this need, but maybe if you do and you write the code, it’s
    worth having”, so people’s intuition has some merit, we write the software we need.

    View Slide

  14. For fun
    Sunday, August 11, 13
    A lot of us apparently like writing software enough that we’ll do it in our spare time, as well
    as for a job.

    View Slide

  15. Develop skills /
    Career advancement
    Sunday, August 11, 13
    I’ve bunched these together, but they’re actually pretty different. People who wrote about
    developing skills tended to talk about working with talented programmers, getting really
    good code reviews, or learning new code bases. In contract, career advancement was about
    the professional visibility that comes from contributing to open source. That’s not to say it’s
    a bad thing, just a different thing.

    View Slide

  16. Be a part of a
    community
    Sunday, August 11, 13
    People want to be a part of something. In particular people wrote about being a part of
    something that they didn’t have access to where they lived.

    View Slide

  17. Keep the world running
    Sunday, August 11, 13
    Open source powers nearly everything, to one degree or another, a lot of people want to keep
    that up. This is in some senses a variation on “To give back”, it also encompass things like “I
    love knowing that tons of companies use my work”.

    View Slide

  18. It’s my job
    Sunday, August 11, 13
    Some people get paid to write open source all day. I’m really lucky to be one of them. There
    are companies literally paying people to give away software. That’s awesome.

    View Slide

  19. But doesn’t this make
    no sense?
    Sunday, August 11, 13
    This is a question I get a lot from friends and family members. Why are you writing all this
    software and giving it away, couldn’t you sell it and make some money? I’d characterize this
    as the naive economists point of view. Yeah, I could sell some of the stuff I write (some of it
    really has no commercial value of course), but I value a lot of other things as well. The master
    economist knows that there are things besides money which incentivize.

    View Slide

  20. The motivation of
    individuals
    Sunday, August 11, 13
    Thus far we’ve talked a lot about what people believe about what they do. Now I want to dive
    into some of what the academic literature says. This isn’t specifically research on open source
    contribution, but more general research on what motivates us to work and to learn.

    View Slide

  21. Mastery
    Sunday, August 11, 13
    The first thing is we want to obtain a skill. We all want to be able to say “I’m good at this”, we
    want to understand in greater depth our craft. Open source rewards and encourages this. We
    get to work with experts who’ll review our code, we get to take time with no deadlines to
    perfect our patch, and to try to learn something new. I want to learn more about unit testing,
    I can find a project that needs some tests and contribute. Why do the “experts” want to take
    their time to code review? Because they care about the health of their projects, and new
    contributors are the lifeblood of that, by helping someone level up their skills you’re
    grooming a future maintainer, and you never know who’s going to outpace you and make the
    project better than you imagined.

    View Slide

  22. Autonomy and
    creativity
    Sunday, August 11, 13
    People want to be in control of what they do. And no one tells you what to do in open source.
    Some days I work on a compiler, some days I do cryptography (PS: this is scary), some days I
    work on an ORM or a web framework. I direct myself to projects I’m interested in, to things I
    care about. I also get to choose how I work on these things, in terms of the aesthetics of
    code, architectural decisions. I work with others because I value their knowledge and
    opinions, but I ultimately have direction over how I work on them.

    View Slide

  23. Community
    Sunday, August 11, 13
    We want to be a part of something. To work with and learn from others. To help bring new
    people into the fold. To see a little piece of software grow up and change the world.

    View Slide

  24. Things we don’t have
    Sunday, August 11, 13
    There are also some features we don’t have, that a lot of people think help motivate us, but
    in fact don’t.

    View Slide

  25. Rewards
    Sunday, August 11, 13
    There’s almost no extrinsic rewards for working on Django. The biggest reward I can give
    another developer, is to make them also a core developer, to enable them to contribute more.
    There’s a ton of research on this subject, simply put, for intellectual, creative tasks, rewards
    don’t motivate you. In fact they de-motivate you, they replace your intrinsic motivation with
    extrinsic. Instead of contributing because you want to help the community, you contribute for
    the reward, and when the reward goes away, so does your motivation. The funny bit, and
    there’s research that shows this: even when you give people these facts, they still want to
    believe that rewards work.

    View Slide

  26. Coercion
    Sunday, August 11, 13
    I can’t force you to work on something. We sat down to write documentation about security
    policy for Django, and this is something important right, particularly we wanted to give
    people a hard timeline, if you report a security issue, we WILL respond within 48 hours. How
    do you make that guarantee when it’s everyone’s free time? What can you say, oh do this or
    we’ll fire you from this thing you donate in your free time? Ethical issues aside, when you’re
    coerced you perform worse, and you care about the quality of your work less. We can make
    statements like “response in 48 hours” precisely because everyone participates voluntarily,
    we understand this is important so we make it a priority for ourselves, and that gives way
    better results.

    View Slide

  27. Evaluation
    Sunday, August 11, 13
    We don’t try to rank contributors, we don’t try to give you a score, no “You get a B+ on
    Django this month”. It turns out there are 3 primary effects of evaluating in this way, a) You
    become motivated by the evaluation, the grade becomes a reward, b) you care less about the
    underlying work, and c) you seek the easiest task that gets you good evaluations, you don’t
    try to challenge yourself, because that might get you a worse grade at contributing to
    Django. In contrast, open source gives feedback. Here’s how you can improve this patch,
    here’s how you’re doing a great job helping out on the mailing lists, if you focus on this
    aspect of your code reviews, you’ll be more effective.

    View Slide

  28. The motivations of
    companies
    Sunday, August 11, 13
    That’s individuals, but what about companies? Surely they could make more money, and have
    fewer competitors, why give away the secret sauce? But instead companies are some of the
    biggest drivers of open source, the majority of the work on the Linux kernel is by people paid
    to work on it, for example.

    View Slide

  29. Giving back
    Sunday, August 11, 13
    No seriously. Companies want to give back to. They recognize that when they choose an
    open source technology, it’s not a static thing, that they need to help promote and grow the
    community of developers, and that they can help by improving it.

    View Slide

  30. Improvements from the
    community and
    accelerating growth
    Sunday, August 11, 13
    An open community can improve software beyond what an individual company can do.
    OpenStack is a really fantastic example of this, the project moves at a lightning pace, they do
    hundreds of CI runs a day (often hundreds an hour!), with many companies and individuals
    contributing.

    View Slide

  31. Grow a community
    Sunday, August 11, 13
    Companies want to be a part of a community too. Specifically it means things like, you can
    hire people with existing skill sets, you don’t have to train someone on your custom
    framework, it’s the hot new thing that everyone knows already.

    View Slide

  32. Competition
    +
    Cooperation
    Sunday, August 11, 13
    I think the key to recognizing why corporate involvement in open source is that competition
    and cooperation are not mutually exclusive, and neither is a static mode of behavior. There
    are things that it’s important we cooperate on, and there are things where competition helps
    produce better results.

    View Slide

  33. Challenges
    Sunday, August 11, 13
    I’ve been super positive so far, but I want to share some of the challenges as well, like Jacob
    said yesterday, challenge is just another word for opportunity, it’s places we can get better.
    These are challenges that individuals face in contributing to open source, and challenges that
    communities face.

    View Slide

  34. Time and money
    Sunday, August 11, 13
    This is a big one for people who want to contribute, or want to contribute more than they do.
    When their work comes out of their free time, it’s pretty strictly bounded by how much real
    life interferes. Money clashes a bit with what I said about rewards right, does paying people
    to work on open source change it’s nature? This is a longer conversation, and I don’t have the
    research to fully back this up, but my experience says there’s a fundamental difference
    between paying someone for their freetime, and allowing them to make it their full time.

    View Slide

  35. Building welcoming
    communities
    Sunday, August 11, 13
    This is a huge challenge for open source communities. I think in the Python community in
    particular has done great work here over the past few years. But there’s always room for
    improvement. We can do an even better job, being welcoming to people of diverse
    backgrounds, different levels of ability, and different perspectives. Unfortunately one of the
    most common reasons people identified for not participating in open source was because of
    jerky maintainers. We need to strive to be a community where that isn’t ok.

    View Slide

  36. Feeling of inability
    Sunday, August 11, 13
    Another common reason not to contribute is feeling like you don’t have the skills or the
    knowledge or the background needed. I’m not totally sure how we solve this, but we need to,
    because everyone can help. I have over 120 repositories on github. It’s no exaggeration to
    say half of those are forks I created to fix a single typo. And wearing my maintainer hat I have
    to say, I love when someone sends me a typo fix patch, every little bit helps.

    View Slide

  37. Cliff Gardner
    Sunday, August 11, 13
    Anyone here heard of Philo Farnsworth? He invented television, in Provo, Utah, and then did
    the first TV broadcast from San Francisco. He was a visionary, and he died broke. But I really
    want to tell you about his brother in law, Cliff Gardner. Cliff saw Philo’s drawings, and
    recognized that this was something that was going to be important, so he said, “I don’t really
    understand the science behind all of this, but it looks like you’re going to need glass tubes,
    how would it be if I learned to blow glass and made them for you?”, Philo was inventing the
    cathode receptor, and glass tubes weren’t really a thing you could buy, “This looks important,
    and I want to help” is what Cliff said. That’s open source.

    View Slide

  38. With apologies to
    Aaron Sorkin
    Sunday, August 11, 13
    Before I continue the metaphor, I want to point out that the majority of that is taken from a
    TV show written by Aaron Sorkin called Sports Night, and I highly recommend you all watch.
    Aaron, if you read or hear this, please don’t sue me.

    View Slide

  39. Open source
    =
    glass tubes
    Sunday, August 11, 13
    Open source is glass tubes. Almost none of us will start the next linux kernel, but we can all
    learn to contribute. The majority of open source is not creating the next great new project,
    it’s contributing a missing paragraph to the docs, it’s writing a great bug report with a test
    case, it’s adding the small missing feature. We contribute because we’ve built our hobbies or
    our careers on this stuff, and we know it’s important, because it’s fun, because it helps us
    learn, because it lets us be a part of something. And we can all learn to blow glass tubes.

    View Slide

  40. Sprints
    Sunday, August 11, 13
    If I’ve convinced you there’s any merit at all to this whacky open source thing, I’d like to
    encourage you to join the sprints. There’ll be people from a lot of projects, who want nothing
    more than to help you get started contributing.

    View Slide

  41. Thank you.
    [email protected] / @alex_gaynor
    https://speakerdeck.com/alex
    Sunday, August 11, 13
    Before we finish, I want to apologize quickly, original versions of this talk came with citations
    and more statistics to back up some of the studies I mentioned. Unfortunately those are all in
    a pad of paper back at my apartment in San Francisco, whoops. If there’s any interest at all,
    reach out to me, on twitter or email, and I’ll get those online. Thank you all for coming and
    listening, thanks you all for your past contributions to open source, thank you for your future
    contributions. We’ve got some time for questions now.

    View Slide