Rather than being a \"meritocracy\", CPAN is a \"used-ocracy\". Not the \"best\" software, but the software that users used.
Citation preview
1. Balancing Sharing And Selshness The CPAN Way
2. or
3. The Used-ocracy
4. or
5. Crap Is Gold
6. Hi I'm Michael Schwern I went to CMU I failed.
7. Perl
8. Perl is part of Unix
9. Perl has to work!
10. Comprehensive Perl Archive Network
11. CPAN
12. CPAN is half of Perl
13. CPAN breaks, Perl breaks
14. CPAN has to work!
15. CPAN is 90% crap 90% of everything is crap (present company
excluded) That's ok because ideally you never nd it And nobody uses
it (for long)
16. Only 10% gets used That 10% is really good
17. Isn't that inefcient? Yes... ...but maybe it's the least
inefficient in the long run
18. Oslo QA Hackathon Lots of arguments and productivity Lots
of things that have been festering for years resolved
19. Improving CPAN Improving Perl testing
20. Why Us? Why this bunch of people? Why not somebody
else?
21. Testing experts? Nope
22. Fancy degrees? Nope
23. Big companies? Nope
24. Why Us? Why this bunch of people? Why not somebody
else?
25. We do
26. People use People use our stuff
27. Selected by use
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. 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. Used-ocracy We're there because our stuff gets used. That's
it Even if it's internals are crap, it's useful
31. Selected by use
32. Not by poll
33. Not by vote
34. Not by asking
35. Not by what people want
36. By what people need Not just what they think or say they
need But by what they actually need
37. Use illustrates need
38. Use is measurable Clearly measurable Downloads, phone
homes, quot;popularity contestquot; Mailing list activity, robust
communities Forks, patches...
39. Select By Use A healthy system selects by use
40. CPAN is a Used-ocracy The users select what is
important.
41. Use is evolutionary
42. Pave the cow paths We were in Oslo to pave the cow
paths
43. Pave the wagon trails
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. English dictionaries are primarily descriptive
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. Proscribe the potentially bad
48. Proscribe the potentially good also proscribe the good
49. Proscribing change Nobody will ever want to do it this way
Proscription backs you into a corner Proscription bets
everything
50. My prediction for the future?
51. YOU'RE WRONG I'll win So many people make so many
predictions over so much time Odds are they're wrong
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. Descriptive embraces change The world will change
Technologies change People change Safe bet Have a system that works
with change
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. NCSA Mosaic is 15 years old (The stable releases) That was
the beginning of the modern web. The rst graphical web
browser.
56. Perl 5 is 15 years old Developed before the web took
off
57. Perl is 20 years old
58. CPAN is 12 years old And for much of that time it wasn't
intensely used. Not like it is now.
59. Perl predated the web Perl did not predict the web Perl
became THE web language
60. Linux is 17 years old
61. Unix predated it Unix became THE web server Who had
trouble?
62. Microsoft w/Win 95 and 98 And Windows 95 came *after*
Mosaic
63. Controlling change is death or at least really painful in
Microsoft's case
64. Descriptive embraces chaos
65. 90% is crap Taking a big crap is healthy
66. One man's crap Is another man's gold
67. App::Asciio For example
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! (> ....................................... |
|
.....'----------'........................................................
| |
.........................................................................
| |
...................----------------..---------------.....................
| | ..................| ASCII > || thin_box
|.................... | | ..................| Rules line > ||
text |.................... | | ..................| Load ||
wirl_arrow |.................... | grid------------->..........|
Save || arrow |.----------......... | | ..................| Export
> || box > || star_box |........ | |
..................'----------------'| Rulers >
|'----------'........ | | ...........................^........|
Misc > |.................... | |
...........................|........| T_star |....................
| |
...........................|........'---------------'....................
| |
...........................|.............................................
| |
...........................|.............................................
| |
...........................|.............................................
| |
...........................|.............................................
| |
...........................|.............................................
| |
...........................|.............................................
|
'----------------------------|----------------------------------------------'
| context menu
70. .---. .---. .---. .---. .---. .---. OS API '---' '---'
'---' '---' '---' '---' | | | | | | v v | v | v .------------. |
.-----------. | .-----. | Filesystem | | | Scheduler | | | MMU |
'------------' | '-----------' | '-----' | | | | v | | v .----. | |
.---------. | IO |