SlideShare ist ein Scribd-Unternehmen logo
1 von 124
Downloaden Sie, um offline zu lesen
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 nobody uses it (for long)
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 what is the quot;bestquot;?
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, robust communities
Forks, patches...
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 so far
Spread best practice
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 went to hell
We didn't have enough information
Caused implementation problems
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 everything
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 wrong
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
Descriptive embraces change




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




(The stable releases)
That was the beginning of the modern web.
The first graphical web browser.
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

                          |   |               |       |
                |         |   |      |        |       |
                |         |   |      |        |       |
                v         |   v      |        v       |
                          v          v                v
                ______                          _____
               / _                     __ __/ __`
                 L     ____    ___ /_/_  / 
      ----->      __  /',__ /'___/ /      ----->
                   / /__, `/ __/      _ 
                   _ _/____/ ____ _ _ _____
                   /_//_//___/ /____/ /_//_//_____/

                |             |               |   |
                |     |       |     |         |   |       |
                v     |       |     |         v   |       |
                      |       v     |             |       |
                      v             |             |       v
                                    v             v
      (_/)
      (O.o) ASCII world domination is near!
      (> <)
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
.---. .---. .---. .---.      .---. .---.
OS API   '---' '---' '---' '---'      '---' '---'
           |      |     |       |       |       |
           v      v     |       v       |       v
         .------------. | .-----------. | .-----.
         | Filesystem | | | Scheduler | | | MMU |
         '------------' | '-----------' | '-----'
                |       |       |       |
                v       |       |       v
             .----.     |       |   .---------.
             | IO |<----'       |   | Network |
             '----'             |   '---------'
                |               |         |
                v               v         v
         .---------------------------------------.
         |                  HAL                   |
         '---------------------------------------'
‫ﻧﺪﱘ ﺍﺑﻦ ﺤﻣﻮﺪﺓ ﺍﳋﻤﻴﺮ‬
                       (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
Everyone made them show it off
It was cheered, surprise hit of the conference
Will this be useful?



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



You can't predict use
Unless you release it you'll never know if anyone's going to use it.
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
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
Cheap releases




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




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




The author should get lots of feedback about their release, if it's getting used, if there's bugs,
patches, critiques...
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 it work in the real world.

As opposed to...
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 solution
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 others need it
Working for others for free means burnout.
(Mêtis)
Release for others
(Generalize)
Adapt for both
Work for yourself
Share with others
Thanks
Questions?
schwern@pobox.com

Weitere ähnliche Inhalte

Ähnlich wie Crap Is Gold

Smart fuel theft detector
Smart fuel theft detectorSmart fuel theft detector
Smart fuel theft detector
slmnsvn
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnish
schoefmax
 
Anwar_Shahed_MSc_2015
Anwar_Shahed_MSc_2015Anwar_Shahed_MSc_2015
Anwar_Shahed_MSc_2015
Shahed Anwar
 

Ähnlich wie Crap Is Gold (20)

ESRI Routing
ESRI RoutingESRI Routing
ESRI Routing
 
Interface Fundamentals
Interface FundamentalsInterface Fundamentals
Interface Fundamentals
 
The History of AskTOM
The History of AskTOMThe History of AskTOM
The History of AskTOM
 
Smart fuel theft detector
Smart fuel theft detectorSmart fuel theft detector
Smart fuel theft detector
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnish
 
Scala / Technology evolution
Scala  / Technology evolutionScala  / Technology evolution
Scala / Technology evolution
 
WebAssembly for the rest of us - Jan-Erik Rediger - Codemotion Amsterdam 2017
WebAssembly for the rest of us - Jan-Erik Rediger - Codemotion Amsterdam 2017WebAssembly for the rest of us - Jan-Erik Rediger - Codemotion Amsterdam 2017
WebAssembly for the rest of us - Jan-Erik Rediger - Codemotion Amsterdam 2017
 
Pavel Veller - JavaScript overload - SUGCON
Pavel Veller - JavaScript overload - SUGCONPavel Veller - JavaScript overload - SUGCON
Pavel Veller - JavaScript overload - SUGCON
 
Odoo Studio as a Prototyping Tool
Odoo Studio as a Prototyping ToolOdoo Studio as a Prototyping Tool
Odoo Studio as a Prototyping Tool
 
Windows Vista Customization Manual
Windows Vista Customization ManualWindows Vista Customization Manual
Windows Vista Customization Manual
 
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmxMoved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
 
User Experience Design, Navigation, and Interaction Flows
User Experience Design, Navigation, and Interaction FlowsUser Experience Design, Navigation, and Interaction Flows
User Experience Design, Navigation, and Interaction Flows
 
Rails Conf Talk Slides
Rails Conf Talk SlidesRails Conf Talk Slides
Rails Conf Talk Slides
 
Let's Get to the Rapids
Let's Get to the RapidsLet's Get to the Rapids
Let's Get to the Rapids
 
Tomaszewski, Mark - Thesis: Application of Consumer-Off-The-Shelf (COTS) Devi...
Tomaszewski, Mark - Thesis: Application of Consumer-Off-The-Shelf (COTS) Devi...Tomaszewski, Mark - Thesis: Application of Consumer-Off-The-Shelf (COTS) Devi...
Tomaszewski, Mark - Thesis: Application of Consumer-Off-The-Shelf (COTS) Devi...
 
Anwar_Shahed_MSc_2015
Anwar_Shahed_MSc_2015Anwar_Shahed_MSc_2015
Anwar_Shahed_MSc_2015
 
Outfittery hiring at TechStartupJobs Fair Berlin Spring 2015
Outfittery hiring at TechStartupJobs Fair Berlin Spring 2015Outfittery hiring at TechStartupJobs Fair Berlin Spring 2015
Outfittery hiring at TechStartupJobs Fair Berlin Spring 2015
 
20190417 畳み込みニューラル ネットワークの基礎と応用
20190417 畳み込みニューラル ネットワークの基礎と応用20190417 畳み込みニューラル ネットワークの基礎と応用
20190417 畳み込みニューラル ネットワークの基礎と応用
 
Crab: A Python Framework for Building Recommender Systems
Crab: A Python Framework for Building Recommender Systems Crab: A Python Framework for Building Recommender Systems
Crab: A Python Framework for Building Recommender Systems
 
955202006
955202006955202006
955202006
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

Crap Is Gold