Loading...
Flash Player 9 (or above) is needed to view slideshows. We have detected that you do not have it on your computer.To install it, go here
 
Post to Twitter Post to Twitter
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons
SlideShare is now available on LinkedIn. Add it to your LinkedIn profile.

Crap Is Gold

From schwern, 1 month ago Add as contact

Rather than being a \"meritocracy\", CPAN is a \"used-ocracy\". Not the \"best\" software, but the software that users used.

832 views | 0 comments | 2 favorites | 4 downloads | 0 embeds (Stats)

Categories

Technology

Groups/Events

Embed in your blog options close
Embed (wordpress.com) Exclude related slideshows Embed in your blog

More Info

This slideshow is Public
Total Views: 832 on Slideshare: 832 from embeds: 0
Flagged as inappropriate Flag as inappropriate

Flag as inappropriate

Select your reason for flagging this slideshow as inappropriate.

If needed, use the feedback form to let us know more details.

Slideshow Transcript

  1. Slide 1: Balancing Sharing And Selfishness The CPAN Way
  2. Slide 2: or
  3. Slide 3: The Used-ocracy
  4. Slide 4: or
  5. Slide 5: Crap Is Gold
  6. Slide 6: Hi I'm Michael Schwern I went to CMU I failed.
  7. Slide 7: Perl
  8. Slide 8: Perl is part of Unix
  9. Slide 9: Perl has to work!
  10. Slide 10: Comprehensive Perl Archive Network
  11. Slide 11: CPAN
  12. Slide 12: CPAN is half of Perl
  13. Slide 13: CPAN breaks, Perl breaks
  14. Slide 14: CPAN has to work!
  15. Slide 15: CPAN is 90% crap 90% of everything is crap (present company excluded) That's ok because ideally you never find it And nobody uses it (for long)
  16. Slide 16: Only 10% gets used That 10% is really good
  17. Slide 17: Isn't that inefficient? Yes... ...but maybe it's the least inefficient in the long run
  18. Slide 18: Oslo QA Hackathon Lots of arguments and productivity Lots of things that have been festering for years resolved
  19. Slide 20: Improving CPAN Improving Perl testing
  20. Slide 22: Why Us? Why this bunch of people? Why not somebody else?
  21. Slide 23: Testing experts? Nope
  22. Slide 24: Fancy degrees? Nope
  23. Slide 25: Big companies? Nope
  24. Slide 26: Why Us? Why this bunch of people? Why not somebody else?
  25. Slide 27: We do
  26. Slide 28: People use People use our stuff
  27. Slide 29: Selected by use
  28. Slide 30: Merit-ocracy? We're not there because we wrote the \"best\" thing What is the \"best\"? How do you select what is the \"best\"?
  29. Slide 31: Do-ocracy? We're not there just because we do the work. 90% of CPAN is crap They did, but they're not selected.
  30. Slide 32: Used-ocracy We're there because our stuff gets used. That's it Even if it's internals are crap, it's useful
  31. Slide 33: Selected by use
  32. Slide 34: Not by poll
  33. Slide 35: Not by vote
  34. Slide 36: Not by asking
  35. Slide 37: Not by what people want
  36. Slide 38: By what people need Not just what they think or say they need But by what they actually need
  37. Slide 39: Use illustrates need
  38. Slide 40: Use is measurable Clearly measurable Downloads, phone homes, \"popularity contest\" Mailing list activity, robust communities Forks, patches...
  39. Slide 41: Select By Use A healthy system selects by use
  40. Slide 42: CPAN is a Used-ocracy The users select what is important.
  41. Slide 44: Use is evolutionary
  42. Slide 45: Pave the cow paths We were in Oslo to pave the cow paths
  43. Slide 46: Pave the wagon trails
  44. Slide 47: Descriptive Describing More formally Because the community had grown too large for conventions Word-of-mouth only goes so far Spread best practice
  45. Slide 48: English dictionaries are primarily descriptive
  46. Slide 49: Proscriptive Every time we proscribed something Came up with our own best practices Strayed off the cow paths It all went to hell We didn't have enough information Caused implementation problems
  47. Slide 50: Proscribe the potentially bad
  48. Slide 51: Proscribe the potentially good also proscribe the good
  49. Slide 52: Proscribing change Nobody will ever want to do it this way Proscription backs you into a corner Proscription bets everything
  50. Slide 53: My prediction for the future?
  51. Slide 54: YOU'RE WRONG I'll win So many people make so many predictions over so much time Odds are they're wrong
  52. Slide 55: Be Descriptive Describe only as much as you need Leave the rest open as a user playground Even the bad things They provide wedges to do amazing things years later
  53. Slide 56: Descriptive embraces change The world will change Technologies change People change Safe bet Have a system that works with change
  54. Slide 57: Can't predict change In the long term Who could have predicted the web? NCSA Mosaic 15 years ago in 1993 So you can't control it
  55. Slide 59: NCSA Mosaic is 15 years old (The stable releases) That was the beginning of the modern web. The first graphical web browser.
  56. Slide 60: Perl 5 is 15 years old Developed before the web took off
  57. Slide 61: Perl is 20 years old
  58. Slide 62: CPAN is 12 years old And for much of that time it wasn't intensely used. Not like it is now.
  59. Slide 63: Perl predated the web Perl did not predict the web Perl became THE web language
  60. Slide 64: Linux is 17 years old
  61. Slide 65: Unix predated it Unix became THE web server Who had trouble?
  62. Slide 66: Microsoft w/Win 95 and 98 And Windows 95 came *after* Mosaic
  63. Slide 67: Controlling change is death or at least really painful in Microsoft's case
  64. Slide 68: Descriptive embraces chaos
  65. Slide 70: 90% is crap Taking a big crap is healthy
  66. Slide 71: One man's crap Is another man's gold
  67. Slide 72: App::Asciio For example
  68. Slide 73: App::Asciio - Plain ASCII diagram | | | | | | | | | | | | | | | | v | v | v | v v v ______ _____ /\\ _ \\ __ __/\\ __`\\ \\ \\ \\L\\ \\ ____ ___ /\\_\\/\\_\\ \\ \\/\\ \\ -----> \\ \\ __ \\ /',__\\ /'___\\/\\ \\/\\ \\ \\ \\ \\ \\ -----> \\ \\ \\/\\ \\/\\__, `\\/\\ \\__/\\ \\ \\ \\ \\ \\ \\_\\ \\ \\ \\_\\ \\_\\/\\____/\\ \\____\\\\ \\_\\ \\_\\ \\_____\\ \\/_/\\/_/\\/___/ \\/____/ \\/_/\\/_/\\/_____/ | | | | | | | | | | | v | | | v | | | v | | | v | | v v v (\\_/) (O.o) ASCII world domination is near! (> <)
  69. Slide 74: default elements in an empty diagram .------------------------. | | | | | | .-------|---------------|--------|------------------------------------------. | | | | asciio | |-------|---------------|--------|------------------------------------------| | ......v---------......v........v......................................... | | .....| |..edit_me....--->....................................... | | .....'----------'........................................................ | | ......................................................................... | | ...................----------------..---------------..................... | | ..................| ASCII > || thin_box |.................... | | ..................| Rules line > || text |.................... | | ..................| Load || wirl_arrow |.................... | grid------------->..........| Save || arrow |.----------......... | | ..................| Export > || box > || star_box |........ | | ..................'----------------'| Rulers > |'----------'........ | | ...........................^........| Misc > |.................... | | ...........................|........| T_star |.................... | | ...........................|........'---------------'.................... | | ...........................|............................................. | | ...........................|............................................. | | ...........................|............................................. | | ...........................|............................................. | | ...........................|............................................. | | ...........................|............................................. | '----------------------------|----------------------------------------------' | context menu
  70. Slide 75: .---. .---. .---. .---. .---. .---. OS API '---' '---' '---' '---' '---' '---' | | | | | | v v | v | v .------------. | .-----------. | .-----. | Filesystem | | | Scheduler | | | MMU | '------------' | '-----------' | '-----' | | | | v | | v .----. | | .---------. | IO |<----' | | Network | '----' | '---------' | | | v v v .---------------------------------------. | HAL | '---------------------------------------'
  71. Slide 76: ‫ﻧﺪﱘ ﺍﺑﻦ ﺤﻣﻮﺪﺓ ﺍﳋﻤﻴﺮ‬ (Nadim Khemir) He had no idea if this would be a cool thing
  72. Slide 77: He's written all this other stuff that hasn't gotten a lot of attention He happened to mention asciio at the hackathon Everyone made them show it off It was cheered, surprise hit of the conference
  73. Slide 78: Will this be useful? People spend a tremendous amount of time worrying if something will be useful to anyone else. Should they release it?
  74. Slide 79: No release == No information You can't predict use Unless you release it you'll never know if anyone's going to use it.
  75. Slide 80: Don't worry, Be crappy Guy Kawaski Just throw it out there and see what sticks.
  76. Slide 81: Release Early, Release Often Because you don't know what's going to be crap and what's gold Throw it out there and find out If nobody uses it, no worries, work on something else If the first release is crap and it gets used, you can always fix it in the next one
  77. Slide 82: Cheap releases The release process should be so cheap that the cost of release is not a consideration I automate most of the process
  78. Slide 83: Low barriers to entry CPAN only requires your release is... freely re-distributable (not even Open Source) something to do with Perl
  79. Slide 84: Feedback about use The author should get lots of feedback about their release, if it's getting used, if there's bugs, patches, critiques...
  80. Slide 85: Feedback Loop Starts a feedback loop Author makes changes based on use
  81. Slide 86: Evolution System evolves based on use Evolution is very healthy and very robust
  82. Slide 87: How do you know what people need? Nadim came up with this great thing, asciio Why did it he do it?
  83. Slide 88: You don't know.
  84. Slide 89: What do you know?
  85. Slide 90: You know yourself.
  86. Slide 91: You know your needs. Instead of writing what others need...
  87. Slide 92: Write what you need. Knowing and doing what you need for your situation is known as...
  88. Slide 93: Mêtis
  89. Slide 94: Local
  90. Slide 95: Practical
  91. Slide 96: Personal
  92. Slide 97: Subjective
  93. Slide 98: Necessary It is the knowledge you need. It solves the problems you have. It includes all the necessary hacks to make it work in the real world. As opposed to...
  94. Slide 99: Generalized Knowledge
  95. Slide 100: Global
  96. Slide 101: Abstract
  97. Slide 102: Impersonal
  98. Slide 103: Speculative
  99. Slide 104: Simplified
  100. Slide 105: About control Top down control. Making it easier for the implementers at the expense of the users.
  101. Slide 106: Finding the holy grail Often never found
  102. Slide 107: About getting things done Metis is...
  103. Slide 108: You know your problem best
  104. Slide 109: You know best if the solution fits \"Art of muddling through\"
  105. Slide 110: You write what you need. Then release it and see if anyone else needs it. Astoundingly effective.
  106. Slide 111: Don't look up for help
  107. Slide 112: Look side to side Look to yourself and the people around you They have a similar problem They'll accept a similar solution
  108. Slide 114: Even the best authors only make a handful of useful modules
  109. Slide 115: 90% is useless to others
  110. Slide 116: 100% is useful to yourself
  111. Slide 117: Write for yourself It's ok to be selfish The primary reason for working on something is because you need it Not because others need it Working for others for free means burnout.
  112. Slide 118: (Mêtis)
  113. Slide 119: Release for others
  114. Slide 120: (Generalize)
  115. Slide 121: Adapt for both
  116. Slide 122: Work for yourself Share with others
  117. Slide 123: Thanks
  118. Slide 124: Questions? schwern@pobox.com