The Invisible Traceback
Upcoming SlideShare
Loading in...5
×
 

The Invisible Traceback

on

  • 1,947 views

The Invisible Traceback: blockers that make potential contributors drop out (and how to fix them) - originally presented at the 2009 Ontario Linux Festival. ...

The Invisible Traceback: blockers that make potential contributors drop out (and how to fix them) - originally presented at the 2009 Ontario Linux Festival.

Abstract:

Unix Philosophy #12, Rule of Repair: "When you must fail, fail noisily and as soon as possible." This applies to both code and culture; when someone gets stuck and hollers for help, they are helping their community find and fix a participation process bug. However, the new contributor on-ramp pipeline is particularly tricky to debug; potential participants often struggle in silence, giving you no indication of their presence, let alone why they were unable to begin working with your project community. We'll go over some common blockers that quietly prevent students (and other new contributors) from beginning to participate in open source, and how to fix them no matter who you are.

Beginners enthusiastically welcomed - this talk is for everyone who's ever wanted to contribute to open source as well as everyone who's ever wanted to help someone else get started. It took me over 6 years of banging my head against a solitary wall to figure out how to contribute back to open source (and it's been worth it); here's how to figure out (or help someone figure out) the same thing in 99.999% less time.

Statistics

Views

Total Views
1,947
Views on SlideShare
1,605
Embed Views
342

Actions

Likes
0
Downloads
6
Comments
0

6 Embeds 342

http://brandonhays.com 290
http://blog.melchua.com 44
http://tehviking.tumblr.com 4
url_unknown 2
http://twitter.com 1
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    The Invisible Traceback The Invisible Traceback Presentation Transcript

    • The invisible traceback
        Blockers that make potential contributors drop out (And how to fix them) Mel Chua [email_address]
    • Two requests:
    • Two requests:
        1. please ignore me
    • Two requests:
        1. please ignore me 2. please keep track of what you do when you ignore me
    • Who am I?
    • Who am I?
        hacker
    • Who am I?
        Hacker of systems
    • Who am I?
        Hacker of systems for people
    • Who am I?
        Hacker of systems of people
    • Who am I?
        Hacker of systems of people making systems for people
    • Where are the people?
    • here.
    • Or really, here.
    • Unix philosophy #12: rule of repair “ When you must fail, fail noisily and as soon as possible.”
    • These people know it. These people don't.
    • Listen underwater. The important thing is what you don't hear.
    • traceback web.Server Traceback (most recent call last): exceptions.ValueError?: invalid literal for int(): /usr/local/lib/python2.4/site-packages/twisted/web/server.py, line 152 in process 150 self.postpath = map(unquote, string.split(self.path[1:], '/')) 151 try: 152 resrc = self.site.getResourceFor(self) 153 self.render(resrc) Self site twisted.web.server.Site instance @ 0x4086f32c <twisted.web.server.Site instance at 0x4086f32c> path '/amd-full/builds/' postpath List instance @ 0x40d2f2ec Locals self twisted.web.server.Request instance @ 0x40d2448c <GET /amd-full/builds/ HTTP/1.1> Globals unquote <built-in function unquote> string <module 'string' from '/usr/lib/python2.4/string.pyc'> /usr/local/lib/python2.4/site-packages/twisted/web/server.py, line 507 in getResourceFor 505 # servers and disconnected sites. 506 request.sitepath = copy.copy(request.prepath) 507 return resource.getChildForRequest(self.resource, request) 508 Self resource buildbot.status.html.StatusResource? instance @ 0x4086512c <buildbot.status.html.StatusResource? instance at 0x4086512c> Locals self twisted.web.server.Site instance @ 0x4086f32c <twisted.web.server.Site instance at 0x4086f32c> request twisted.web.server.Request instance @ 0x40d2448c <GET /amd-full/builds/ HTTP/1.1> Globals copy <module 'copy' from '/usr/lib/python2.4/copy.pyc'> resource <module 'twisted.web.resource' from '/usr/local/lib/python2.4/site-packages/twisted/web/resource.pyc'> /usr/local/lib/python2.4/site-packages/twisted/web/resource.py, line 50 in getChildForRequest 48 pathElement = request.postpath.pop(0) 49 request.prepath.append(pathElement) 50 resource = resource.getChildWithDefault(pathElement, request) 51 return resource Locals pathElement 'builds' request twisted.web.server.Request instance @ 0x40d2448c <GET /amd-full/builds/ HTTP/1.1> resource buildbot.status.html.StatusResourceBuilder? instance @ 0x40c48c6c <buildbot.status.html.StatusResourceBuilder? instance at 0x40c48c6c> /usr/local/lib/python2.4/site-packages/twisted/web/resource.py, line 150 in getChildWithDefault 148 return self.children[path] 149 150 return self.getChild(path, request) 151 Self children Dictionary instance @ 0x40ca1e84 Locals path 'builds' self buildbot.status.html.StatusResourceBuilder? instance @ 0x40c48c6c <buildbot.status.html.StatusResourceBuilder? instance at 0x40c48c6c> request twisted.web.server.Request instance @ 0x40d2448c <GET /amd-full/builds/ HTTP/1.1> /usr/local/lib/python2.4/site-packages/buildbot/status/html.py, line 615 in getChild 613 num = request.postpath.pop(0) 614 request.prepath.append(num) 615 num = int(num) 616 if path == &quot;events&quot;: Locals path 'builds' num request twisted.web.server.Request instance @ 0x40d2448c <GET /amd-full/builds/ HTTP/1.1> exceptions.ValueError?: invalid literal for int():
    • traceback
    • Okay. Let's move around a bit.
    • blockers 1. I don't have it. 2. I'm not allowed to use it. 3. I'm not allowed to play with it. 4. I don't know I can tweak it. 5. I don't know how to tweak it. 6. I don't see why I'd tweak it. 7. I don't know anyone would care about my tweaks. 8. I don't know who would care about my tweaks. 9. I don't know how to approach the people who would care about my tweaks. 10. I don't know that this is a bug.
    • More blockers 11. The people on the mailing list are mean, 12. I'm afraid to break it. 13. I don't want to maintain my tweak forever. 14. No Volunteer Triage. Or: volunteer triage, but no volunteer exclusion 15. I'm too new to fit in with the old hats 16. Site is not well known 17. Need a BETTER ELEVATOR PITCH 18. Need a better project to start with gradually.
    • Yet More blockers 19. Need to clarify appropriateness of project for particular situations. 20. I don't know if this will suit my needs 21. i don't know if this will scale 22. I don't understand the scope of the project 23. I don't know English 24. I'm trying to be polite, and people are ignoring me 25. I've signed an NDA 26. i can't find the correct place to contribute (too many mailing lists, etc)
    • Learning about vs learning to be
        It's not what you know,
      It's what you want to learn.
    • How to get a job 1. study hard 2. Get good grades 3. Make a resume 4. Do research 5. Apply to jobs 6. Get interviewed 7. Get an offer 8. Accept the offer 9. Go to orientation 10. Work on something
    • How to work on open source 10. Work on something
    • What do these steps do? 2. Get good grades 3. Make a resume 4. Do research 5. Apply to jobs 6. Get interviewed 7. Get an offer 8. Accept the offer 9. Go to orientation
    • filters Hiring depends on the approval of one. participation depends on a rapport with many.
    • scaffolding
    • Dreyfus Model 1. novice 2. advanced beginner 3. Competent 4. proficient 5. expert
    • Radical transparency
        Teaches students you didn't know were there
    • (like these folks)
    • Fancy words 1. accidental learning 2. Zone of proximal development 3. legitimate peripheral participation
    • Learning to bike 1. watching 2. somebody pushes you 3. riding on the driveway
    • Pay it forward To pay for a lesson, document it.
    • Legitimate peripheral participation 1. mission-critical, 3. nobody really cares
    • Legitimate peripheral participation 1. mission-critical, 2. we have no time 3. nobody really cares
    • “hard to contribute” is a bug 1. mission-critical 2. we have no time 3. nobody really cares
    • Dreyfus Model 1. novice 2. advanced beginner 3. Competent 4. proficient 5. expert
    • Rule of thumb Everything is hackable.
    • Dreyfus Model 1. novice 2. advanced beginner 3. Competent 4. proficient 5. expert
    • algorithm 1. think of something you already care about 2. run (while thinking out loud)
    • Unix philosophy #12: rule of repair “ When you must fail, fail noisily and as soon as possible.”
    • traceback 1. older sibling uses linux 2. discover the gimp 3. offer to help 4. “no, go away”
    • traceback 1. Introduce self on mailing list 2. “I'm in charge”
    • traceback 1. offer to help 2. wait for instructions 3. loop runs forever
    • traceback How about yours?
    • [email_address] Thank you