Crap is Gold

124
Balancing Sharing And Selfishness The CPAN Way

description

Michael Schwern's presentation at GoOpen 2008.

Transcript of Crap is Gold

Page 1: Crap is Gold

Balancing SharingAnd SelfishnessThe CPAN Way

Page 2: Crap is Gold

or

Page 3: Crap is Gold

The Used-ocracy

Page 4: Crap is Gold

or

Page 5: Crap is Gold

Crap Is Gold

Page 6: Crap is Gold

Hi

I'm Michael SchwernI went to CMUI failed.

Page 7: Crap is Gold

Perl

Page 8: Crap is Gold

Perl is part of Unix

Page 9: Crap is Gold

Perl has to work!

Page 10: Crap is Gold

ComprehensivePerlArchiveNetwork

Page 11: Crap is Gold

CPAN

Page 12: Crap is Gold

CPAN is half of Perl

Page 13: Crap is Gold

CPAN breaks, Perl breaks

Page 14: Crap is Gold

CPAN has to work!

Page 15: Crap is Gold

CPAN is 90% crap

90% of everything is crap (present company excluded)That's ok because ideally you never find itAnd nobody uses it (for long)

Page 16: Crap is Gold

Only 10% gets used

That 10% is really good

Page 17: Crap is Gold

Isn't that inefficient?

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

Page 18: Crap is Gold

Oslo QA Hackathon

Lots of arguments and productivityLots of things that have been festering for years resolved

Page 19: Crap is Gold
Page 20: Crap is Gold

Improving CPANImproving Perl testing

Page 21: Crap is Gold
Page 22: Crap is Gold

Why Us?

Why this bunch of people?Why not somebody else?

Page 23: Crap is Gold

Testing experts?

Nope

Page 24: Crap is Gold

Fancy degrees?

Nope

Page 25: Crap is Gold

Big companies?

Nope

Page 26: Crap is Gold

Why Us?

Why this bunch of people?Why not somebody else?

Page 27: Crap is Gold

We do

Page 28: Crap is Gold

People use

People use our stuff

Page 29: Crap is Gold

Selected by use

Page 30: Crap is Gold

Merit-ocracy?

We're not there because we wrote the "best" thingWhat is the "best"?How do you select what is the "best"?

Page 31: Crap is Gold

Do-ocracy?

We're not there just because we do the work.90% of CPAN is crapThey did, but they're not selected.

Page 32: Crap is Gold

Used-ocracy

We're there because our stuff gets used.That's itEven if it's internals are crap, it's useful

Page 33: Crap is Gold

Selected by use

Page 34: Crap is Gold

Not by poll

Page 35: Crap is Gold

Not by vote

Page 36: Crap is Gold

Not by asking

Page 37: Crap is Gold

Not by what people want

Page 38: Crap is Gold

By what people need

Not just what they think or say they needBut by what they actually need

Page 39: Crap is Gold

Use illustrates need

Page 40: Crap is Gold

Use is measurable

Clearly measurableDownloads, phone homes, "popularity contest"Mailing list activity, robust communitiesForks, patches...

Page 41: Crap is Gold

Select By Use

A healthy system selects by use

Page 42: Crap is Gold

CPAN is a Used-ocracy

The users select what is important.

Page 43: Crap is Gold
Page 44: Crap is Gold

Use is evolutionary

Page 45: Crap is Gold

Pave the cow paths

We were in Oslo to pave the cow paths

Page 46: Crap is Gold

Pave the wagon trails

Page 47: Crap is Gold

Descriptive

DescribingMore formallyBecause the community had grown too large for conventionsWord-of-mouth only goes so farSpread best practice

Page 48: Crap is Gold

English dictionaries are primarily descriptive

Page 49: Crap is Gold

Proscriptive

Every time we proscribed somethingCame up with our own best practicesStrayed off the cow pathsIt all went to hellWe didn't have enough informationCaused implementation problems

Page 50: Crap is Gold

Proscribe the potentially bad

Page 51: Crap is Gold

Proscribe the potentially good

also proscribe the good

Page 52: Crap is Gold

Proscribing change

Nobody will ever want to do it this wayProscription backs you into a cornerProscription bets everything

Page 53: Crap is Gold

My prediction for the future?

Page 54: Crap is Gold

YOU'REWRONG

I'll winSo many people make so many predictions over so much timeOdds are they're wrong

Page 55: Crap is Gold

Be Descriptive

Describe only as much as you needLeave the rest open as a user playgroundEven the bad thingsThey provide wedges to do amazing things years later

Page 56: Crap is Gold

Descriptive embraces change

The world will changeTechnologies changePeople changeSafe betHave a system that works with change

Page 57: Crap is Gold

Can't predict change

In the long termWho could have predicted the web?NCSA Mosaic 15 years ago in 1993So you can't control it

Page 58: Crap is Gold
Page 59: Crap is Gold

NCSA Mosaic is 15 years old

(The stable releases)That was the beginning of the modern web.The first graphical web browser.

Page 60: Crap is Gold

Perl 5 is 15 years old

Developed before the web took off

Page 61: Crap is Gold

Perl is 20 years old

Page 62: Crap is Gold

CPAN is 12 years old

And for much of that time it wasn't intensely used.Not like it is now.

Page 63: Crap is Gold

Perl predated the webPerl did not predict the webPerl became THE web language

Page 64: Crap is Gold

Linux is 17 years old

Page 65: Crap is Gold

Unix predated itUnix became THE web server

Who had trouble?

Page 66: Crap is Gold

Microsoft w/Win 95 and 98And Windows 95 came *after* Mosaic

Page 67: Crap is Gold

Controlling change is death

or at least really painful in Microsoft's case

Page 68: Crap is Gold

Descriptive embraces chaos

Page 69: Crap is Gold
Page 70: Crap is Gold

90% is crap

Taking a big crap is healthy

Page 71: Crap is Gold

One man's crapIs another man's gold

Page 72: Crap is Gold

App::Asciio

For example

Page 73: Crap is Gold

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! (> <)

Page 74: Crap is Gold

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

Page 75: Crap is Gold

.---. .---. .---. .---. .---. .---. OS API '---' '---' '---' '---' '---' '---' | | | | | | v v | v | v .------------. | .-----------. | .-----. | Filesystem | | | Scheduler | | | MMU | '------------' | '-----------' | '-----' | | | | v | | v .----. | | .---------. | IO |<----' | | Network | '----' | '---------' | | | v v v .---------------------------------------. | HAL | '---------------------------------------'

Page 76: Crap is Gold

ندمي ابن حمودة اخلمير(Nadim Khemir)

He had no idea if this would be a cool thing

Page 77: Crap is Gold

He's written all this other stuff that hasn't gotten a lot of attentionHe happened to mention asciio at the hackathonEveryone made them show it offIt was cheered, surprise hit of the conference

Page 78: Crap is Gold

Will this be useful?

People spend a tremendous amount of time worrying if something will be useful to anyone else.Should they release it?

Page 79: Crap is Gold

No release==

No information

You can't predict useUnless you release it you'll never know if anyone's going to use it.

Page 80: Crap is Gold

Don't worry,Be crappy

Guy KawaskiJust throw it out there and see what sticks.

Page 81: Crap is Gold

Release Early,Release Often

Because you don't know what's going to be crap and what's goldThrow it out there and find outIf nobody uses it, no worries, work on something elseIf the first release is crap and it gets used, you can always fix it in the next one

Page 82: Crap is Gold

Cheap releases

The release process should be so cheap that the cost of release is not a considerationI automate most of the process

Page 83: Crap is Gold

Low barriers to entry

CPAN only requires your release is...freely re-distributable (not even Open Source)something to do with Perl

Page 84: Crap is Gold

Feedback about use

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

Page 85: Crap is Gold

Feedback Loop

Starts a feedback loopAuthor makes changes based on use

Page 86: Crap is Gold

Evolution

System evolves based on useEvolution is very healthy and very robust

Page 87: Crap is Gold

How do you know what people need?

Nadim came up with this great thing, asciioWhy did it he do it?

Page 88: Crap is Gold

You don't know.

Page 89: Crap is Gold

What do you know?

Page 90: Crap is Gold

You know yourself.

Page 91: Crap is Gold

You know your needs.

Instead of writing what others need...

Page 92: Crap is Gold

Write what you need.

Knowing and doing what you need for your situation is known as...

Page 93: Crap is Gold

Mêtis

Page 94: Crap is Gold

Local

Page 95: Crap is Gold

Practical

Page 96: Crap is Gold

Personal

Page 97: Crap is Gold

Subjective

Page 98: Crap is Gold

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...

Page 99: Crap is Gold

GeneralizedKnowledge

Page 100: Crap is Gold

Global

Page 101: Crap is Gold

Abstract

Page 102: Crap is Gold

Impersonal

Page 103: Crap is Gold

Speculative

Page 104: Crap is Gold

Simplified

Page 105: Crap is Gold

About control

Top down control.Making it easier for the implementers at the expense of the users.

Page 106: Crap is Gold

Finding the holy grailOften never found

Page 107: Crap is Gold

About getting things done

Metis is...

Page 108: Crap is Gold

You know your problem best

Page 109: Crap is Gold

You know best if the solution fits

"Art of muddling through"

Page 110: Crap is Gold

You write what you need.

Then release it and see if anyone else needs it.Astoundingly effective.

Page 111: Crap is Gold

Don't look up for help

Page 112: Crap is Gold

Look side to side

Look to yourself and the people around youThey have a similar problemThey'll accept a similar solution

Page 113: Crap is Gold
Page 114: Crap is Gold

Even the best authors only make a handful of useful modules

Page 115: Crap is Gold

90% is useless to others

Page 116: Crap is Gold

100% is useful to yourself

Page 117: Crap is Gold

Write for yourself

It's ok to be selfishThe primary reason for working on something is because you need itNot because others need itWorking for others for free means burnout.

Page 118: Crap is Gold

(Mêtis)

Page 119: Crap is Gold

Release for others

Page 120: Crap is Gold

(Generalize)

Page 121: Crap is Gold

Adapt for both

Page 122: Crap is Gold

Work for yourselfShare with others

Page 123: Crap is Gold

Thanks

Page 124: Crap is Gold

Questions?

[email protected]