0
Balancing Sharing
 And Selfishness
The CPAN Way
or
The Used-ocracy
or
Crap Is Gold
Hi




I'm Michael Schwern
I went to CMU
I failed.
Perl
Perl is part of Unix
Perl has to work!
Comprehensive
Perl
Archive
Network
CPAN
CPAN is half of Perl
CPAN breaks, Perl breaks
CPAN has to work!
CPAN is 90% crap




90% of everything is crap
  (present company excluded)
That's ok because ideally you never find it
And...
Only 10% gets used




That 10% is really good
Isn't that inefficient?




Yes...
...but maybe it's the least inefficient in the long run
Oslo QA Hackathon




Lots of arguments and productivity
Lots of things that have been festering for years resolved
Improving CPAN
Improving Perl testing
Why Us?




Why this bunch of people?
Why not somebody else?
Testing experts?




Nope
Fancy degrees?




Nope
Big companies?




Nope
Why Us?




Why this bunch of people?
Why not somebody else?
We do
People use




People use our stuff
Selected by use
Merit-ocracy?




We're not there because we wrote the quot;bestquot; thing
What is the quot;bestquot;?
How do you select ...
Do-ocracy?




We're not there just because we do the work.
90% of CPAN is crap
They did, but they're not selected.
Used-ocracy




We're there because our stuff gets used.
That's it
Even if it's internals are crap, it's useful
Selected by use
Not by poll
Not by vote
Not by asking
Not by what people want
By what people need




Not just what they think or say they need
But by what they actually need
Use illustrates need
Use is measurable




Clearly measurable
Downloads, phone homes, quot;popularity contestquot;
Mailing list activity, robus...
Select By Use




A healthy system selects by use
CPAN is a Used-ocracy




The users select what is important.
Use is evolutionary
Pave the cow paths




We were in Oslo to pave the cow paths
Pave the wagon trails
Descriptive




Describing
More formally
Because the community had grown too large for conventions
Word-of-mouth only goes...
English dictionaries are primarily descriptive
Proscriptive




Every time we proscribed something
Came up with our own best practices
Strayed off the cow paths
It all w...
Proscribe the potentially bad
Proscribe the potentially good




also proscribe the good
Proscribing change




Nobody will ever want to do it this way
Proscription backs you into a corner
Proscription bets ever...
My prediction for the future?
YOU'RE
                      WRONG

I'll win
So many people make so many predictions over so much time
Odds are they're wr...
Be Descriptive



Describe only as much as you need
Leave the rest open as a user playground
Even the bad things
They prov...
Descriptive embraces change




The world will change
Technologies change
People change
Safe bet
Have a system that works ...
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 ...
NCSA Mosaic is 15 years old




(The stable releases)
That was the beginning of the modern web.
The first graphical web bro...
Perl 5 is 15 years old



Developed before the web took off
Perl is 20 years old
CPAN is 12 years old



And for much of that time it wasn't intensely used.
Not like it is now.
Perl predated the web
Perl did not predict the web
Perl became THE web language
Linux is 17 years old
Unix predated it
Unix became THE web server

Who had trouble?
Microsoft w/Win 95 and 98
And Windows 95 came *after* Mosaic
Controlling change is death




or at least really painful in Microsoft's case
Descriptive embraces chaos
90% is crap




Taking a big crap is healthy
One man's crap
Is another man's gold
App::Asciio




For example
App::Asciio - Plain ASCII diagram

                          |   |               |       |
                |         |   |...
default elements in an empty diagram
                 .------------------------.
                 |               |       ...
.---. .---. .---. .---.      .---. .---.
OS API   '---' '---' '---' '---'      '---' '---'
           |      |     |      ...
‫ﻧﺪﱘ ﺍﺑﻦ ﺤﻣﻮﺪﺓ ﺍﳋﻤﻴﺮ‬
                       (Nadim Khemir)



He had no idea if this would be a cool thing
He's written all this other stuff that hasn't gotten a lot of attention
He happened to mention asciio at the hackathon
Eve...
Will this be useful?



People spend a tremendous amount of time worrying if something will be useful to anyone
else.
Shou...
No release
                                ==
                          No information



You can't predict use
Unless you...
Don't worry,
                               Be crappy



Guy Kawaski
Just throw it out there and see what sticks.
Release Early,
                            Release Often



Because you don't know what's going to be crap and what's gold...
Cheap releases




The release process should be so cheap that the cost of release is not a consideration
I automate most ...
Low barriers to entry




CPAN only requires your release is...
freely re-distributable (not even Open Source)
something t...
Feedback about use




The author should get lots of feedback about their release, if it's getting used, if there's bugs,
...
Feedback Loop




Starts a feedback loop
Author makes changes based on use
Evolution




System evolves based on use
Evolution is very healthy and very robust
How do you know what
                 people need?



Nadim came up with this great thing, asciio
Why did it he do it?
You don't know.
What do you know?
You know yourself.
You know your needs.




Instead of writing what others need...
Write what you need.




Knowing and doing what you need for your situation is known as...
Mêtis
Local
Practical
Personal
Subjective
Necessary




It is the knowledge you need.
It solves the problems you have.
It includes all the necessary hacks to make i...
Generalized
Knowledge
Global
Abstract
Impersonal
Speculative
Simplified
About control




Top down control.
Making it easier for the implementers at the expense of the users.
Finding the holy grail
Often never found
About getting things done




Metis is...
You know your problem
best
You know best if the
        solution fits



quot;Art of muddling throughquot;
You write what you need.




Then release it and see if anyone else needs it.
Astoundingly effective.
Don't look up for help
Look side to side




Look to yourself and the people around you
They have a similar problem
They'll accept a similar solu...
Even the best authors only make a handful of useful modules
90% is useless to others
100% is useful to yourself
Write for yourself




It's ok to be selfish
The primary reason for working on something is because you need it
Not because...
(Mêtis)
Release for others
(Generalize)
Adapt for both
Work for yourself
Share with others
Thanks
Questions?
schwern@pobox.com
Crap is Gold
Crap is Gold
Crap is Gold
Crap is Gold
Crap is Gold
Crap is Gold
Upcoming SlideShare
Loading in...5
×

Crap is Gold

389

Published on

Michael Schwern's presentation at GoOpen 2008.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
389
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Crap is Gold"

  1. 1. Balancing Sharing And Selfishness The CPAN Way
  2. 2. or
  3. 3. The Used-ocracy
  4. 4. or
  5. 5. Crap Is Gold
  6. 6. Hi I'm Michael Schwern I went to CMU I failed.
  7. 7. Perl
  8. 8. Perl is part of Unix
  9. 9. Perl has to work!
  10. 10. Comprehensive Perl Archive Network
  11. 11. CPAN
  12. 12. CPAN is half of Perl
  13. 13. CPAN breaks, Perl breaks
  14. 14. CPAN has to work!
  15. 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. 16. Only 10% gets used That 10% is really good
  17. 17. Isn't that inefficient? Yes... ...but maybe it's the least inefficient in the long run
  18. 18. Oslo QA Hackathon Lots of arguments and productivity Lots of things that have been festering for years resolved
  19. 19. Improving CPAN Improving Perl testing
  20. 20. Why Us? Why this bunch of people? Why not somebody else?
  21. 21. Testing experts? Nope
  22. 22. Fancy degrees? Nope
  23. 23. Big companies? Nope
  24. 24. Why Us? Why this bunch of people? Why not somebody else?
  25. 25. We do
  26. 26. People use People use our stuff
  27. 27. Selected by use
  28. 28. Merit-ocracy? We're not there because we wrote the quot;bestquot; thing What is the quot;bestquot;? How do you select what is the quot;bestquot;?
  29. 29. 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. 30. Used-ocracy We're there because our stuff gets used. That's it Even if it's internals are crap, it's useful
  31. 31. Selected by use
  32. 32. Not by poll
  33. 33. Not by vote
  34. 34. Not by asking
  35. 35. Not by what people want
  36. 36. By what people need Not just what they think or say they need But by what they actually need
  37. 37. Use illustrates need
  38. 38. Use is measurable Clearly measurable Downloads, phone homes, quot;popularity contestquot; Mailing list activity, robust communities Forks, patches...
  39. 39. Select By Use A healthy system selects by use
  40. 40. CPAN is a Used-ocracy The users select what is important.
  41. 41. Use is evolutionary
  42. 42. Pave the cow paths We were in Oslo to pave the cow paths
  43. 43. Pave the wagon trails
  44. 44. Descriptive Describing More formally Because the community had grown too large for conventions Word-of-mouth only goes so far Spread best practice
  45. 45. English dictionaries are primarily descriptive
  46. 46. 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. 47. Proscribe the potentially bad
  48. 48. Proscribe the potentially good also proscribe the good
  49. 49. Proscribing change Nobody will ever want to do it this way Proscription backs you into a corner Proscription bets everything
  50. 50. My prediction for the future?
  51. 51. YOU'RE WRONG I'll win So many people make so many predictions over so much time Odds are they're wrong
  52. 52. 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. 53. Descriptive embraces change The world will change Technologies change People change Safe bet Have a system that works with change
  54. 54. 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. 55. NCSA Mosaic is 15 years old (The stable releases) That was the beginning of the modern web. The first graphical web browser.
  56. 56. Perl 5 is 15 years old Developed before the web took off
  57. 57. Perl is 20 years old
  58. 58. CPAN is 12 years old And for much of that time it wasn't intensely used. Not like it is now.
  59. 59. Perl predated the web Perl did not predict the web Perl became THE web language
  60. 60. Linux is 17 years old
  61. 61. Unix predated it Unix became THE web server Who had trouble?
  62. 62. Microsoft w/Win 95 and 98 And Windows 95 came *after* Mosaic
  63. 63. Controlling change is death or at least really painful in Microsoft's case
  64. 64. Descriptive embraces chaos
  65. 65. 90% is crap Taking a big crap is healthy
  66. 66. One man's crap Is another man's gold
  67. 67. App::Asciio For example
  68. 68. 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. 69. 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. 70. .---. .---. .---. .---. .---. .---. OS API '---' '---' '---' '---' '---' '---' | | | | | | v v | v | v .------------. | .-----------. | .-----. | Filesystem | | | Scheduler | | | MMU | '------------' | '-----------' | '-----' | | | | v | | v .----. | | .---------. | IO |<----' | | Network | '----' | '---------' | | | v v v .---------------------------------------. | HAL | '---------------------------------------'
  71. 71. ‫ﻧﺪﱘ ﺍﺑﻦ ﺤﻣﻮﺪﺓ ﺍﳋﻤﻴﺮ‬ (Nadim Khemir) He had no idea if this would be a cool thing
  72. 72. 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. 73. 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. 74. 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. 75. Don't worry, Be crappy Guy Kawaski Just throw it out there and see what sticks.
  76. 76. 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. 77. 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. 78. Low barriers to entry CPAN only requires your release is... freely re-distributable (not even Open Source) something to do with Perl
  79. 79. 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. 80. Feedback Loop Starts a feedback loop Author makes changes based on use
  81. 81. Evolution System evolves based on use Evolution is very healthy and very robust
  82. 82. How do you know what people need? Nadim came up with this great thing, asciio Why did it he do it?
  83. 83. You don't know.
  84. 84. What do you know?
  85. 85. You know yourself.
  86. 86. You know your needs. Instead of writing what others need...
  87. 87. Write what you need. Knowing and doing what you need for your situation is known as...
  88. 88. Mêtis
  89. 89. Local
  90. 90. Practical
  91. 91. Personal
  92. 92. Subjective
  93. 93. 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. 94. Generalized Knowledge
  95. 95. Global
  96. 96. Abstract
  97. 97. Impersonal
  98. 98. Speculative
  99. 99. Simplified
  100. 100. About control Top down control. Making it easier for the implementers at the expense of the users.
  101. 101. Finding the holy grail Often never found
  102. 102. About getting things done Metis is...
  103. 103. You know your problem best
  104. 104. You know best if the solution fits quot;Art of muddling throughquot;
  105. 105. You write what you need. Then release it and see if anyone else needs it. Astoundingly effective.
  106. 106. Don't look up for help
  107. 107. Look side to side Look to yourself and the people around you They have a similar problem They'll accept a similar solution
  108. 108. Even the best authors only make a handful of useful modules
  109. 109. 90% is useless to others
  110. 110. 100% is useful to yourself
  111. 111. 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. 112. (Mêtis)
  113. 113. Release for others
  114. 114. (Generalize)
  115. 115. Adapt for both
  116. 116. Work for yourself Share with others
  117. 117. Thanks
  118. 118. Questions? schwern@pobox.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×