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