180

How To (Not) Open Source - Javazone, Oslo 2014

Embed Size (px)

DESCRIPTION

Releasing an open source project while maintaining a shipping product is hard! Different behaviors, attitudes and actions can help or hinder your cause; and they are not always obvious. The Blueflood distributed metrics engine was released as open source software by Rackspace in August 2012. In the succeeding months the team had to strike a manageable balance between the challenges of growing a community, being good open source stewards, and maintaining a shipping product for Rackspace. Find out what worked, what did not work, and the lessons that can be applied as you endeavor to take your project out into the open. In this presentation you will learn about strategies for releasing open source products, pitfalls to avoid, and the potential benefits of moving more of your development out in the open. We have also made a few realizations about the community growing up around metrics. It is still young, and there are problems that come with that youth. I'll talk about some things we can do to make a better software ecosystem.

Citation preview

Page 1: How To (Not) Open Source - Javazone, Oslo 2014
Page 2: How To (Not) Open Source - Javazone, Oslo 2014

Blueflood: A case study in turning a large piece of

infrastructure software into an open source project

Javazone 2014 • Rackspace • @gdusbabek

Page 3: How To (Not) Open Source - Javazone, Oslo 2014

Blueflood:�How I learned the hardest problems are not technical

Javazone 2014 • Rackspace • @gdusbabek

Page 4: How To (Not) Open Source - Javazone, Oslo 2014

About Me

Rackspace

Page 5: How To (Not) Open Source - Javazone, Oslo 2014

About Me

Cassandra

Page 6: How To (Not) Open Source - Javazone, Oslo 2014

About Me

Monitoring

Page 7: How To (Not) Open Source - Javazone, Oslo 2014

About Me

Metrics

Page 8: How To (Not) Open Source - Javazone, Oslo 2014

About Me

Open Source Veteran

Page 9: How To (Not) Open Source - Javazone, Oslo 2014

About Blueflood

Distributed

Page 10: How To (Not) Open Source - Javazone, Oslo 2014

About Blueflood

Ingest

Page 11: How To (Not) Open Source - Javazone, Oslo 2014

About Blueflood

Rollup

Page 12: How To (Not) Open Source - Javazone, Oslo 2014

About Blueflood

Query

Page 13: How To (Not) Open Source - Javazone, Oslo 2014

About Blueflood

Started 2012

Page 14: How To (Not) Open Source - Javazone, Oslo 2014

About Blueflood

Open source 2013

Page 15: How To (Not) Open Source - Javazone, Oslo 2014

About You

Contemplating releasing a project

Page 16: How To (Not) Open Source - Javazone, Oslo 2014

About You

Having trouble with open sores

Page 17: How To (Not) Open Source - Javazone, Oslo 2014

About You

Having trouble with open source

Page 18: How To (Not) Open Source - Javazone, Oslo 2014

YOU ARE IN THE RIGHT

PLACE

Page 19: How To (Not) Open Source - Javazone, Oslo 2014

Objectives

Devote resources?

Page 20: How To (Not) Open Source - Javazone, Oslo 2014

Objectives

Maybe not?

Page 21: How To (Not) Open Source - Javazone, Oslo 2014

Objectives

Measure success

Page 22: How To (Not) Open Source - Javazone, Oslo 2014

Objectives

Measure failure

Page 23: How To (Not) Open Source - Javazone, Oslo 2014

Objectives

History 101 Business 101

Page 24: How To (Not) Open Source - Javazone, Oslo 2014

BORING!

Page 25: How To (Not) Open Source - Javazone, Oslo 2014

We made this thing

Page 26: How To (Not) Open Source - Javazone, Oslo 2014

We did some things right

Page 27: How To (Not) Open Source - Javazone, Oslo 2014

We did some things wrong

Page 28: How To (Not) Open Source - Javazone, Oslo 2014

We Learned

Something

Page 29: How To (Not) Open Source - Javazone, Oslo 2014

We Learned

Some things

Page 30: How To (Not) Open Source - Javazone, Oslo 2014

OK. What things?

Page 31: How To (Not) Open Source - Javazone, Oslo 2014

HISTORY 101

Page 32: How To (Not) Open Source - Javazone, Oslo 2014

Software is relatively new

Page 33: How To (Not) Open Source - Javazone, Oslo 2014

In the beginning it was ALL open

source

Page 34: How To (Not) Open Source - Javazone, Oslo 2014
Page 35: How To (Not) Open Source - Javazone, Oslo 2014
Page 36: How To (Not) Open Source - Javazone, Oslo 2014

In 1953 the A-2

shipped with all

of its source code

Page 37: How To (Not) Open Source - Javazone, Oslo 2014

Patches plz

Page 38: How To (Not) Open Source - Javazone, Oslo 2014

Changed by late 1960s

Page 39: How To (Not) Open Source - Javazone, Oslo 2014

$$$

Page 40: How To (Not) Open Source - Javazone, Oslo 2014

1. More Complex

Page 41: How To (Not) Open Source - Javazone, Oslo 2014

2. Growing Market (Fewer engineers)

Page 42: How To (Not) Open Source - Javazone, Oslo 2014

Natural Scarcity + More Work To Do ______________________________

Expensive

Page 43: How To (Not) Open Source - Javazone, Oslo 2014

Protect intellectual property

Page 44: How To (Not) Open Source - Javazone, Oslo 2014

This trend continues

Page 45: How To (Not) Open Source - Javazone, Oslo 2014

Not much open source

activity

Page 46: How To (Not) Open Source - Javazone, Oslo 2014

1991 �

Linux kernel

Page 47: How To (Not) Open Source - Javazone, Oslo 2014

Modern open source advocacy

Page 48: How To (Not) Open Source - Javazone, Oslo 2014

Attacked in 1990s

Page 49: How To (Not) Open Source - Javazone, Oslo 2014

Continued growth well into

2000s

Page 50: How To (Not) Open Source - Javazone, Oslo 2014

Current State

Page 51: How To (Not) Open Source - Javazone, Oslo 2014

Open source work is appealing

Good for publicity

Trendy

Page 52: How To (Not) Open Source - Javazone, Oslo 2014

Hacker News Cycle

1. ▲ Release Something

2. ▲ Post it on HN

3. ▼ See interest in the project

4. ▲ Secondary interest in your business

Y  

Page 53: How To (Not) Open Source - Javazone, Oslo 2014

Hacker News Cycle

Not conducive to a healthy ecosystem

Y  

Page 54: How To (Not) Open Source - Javazone, Oslo 2014

So Many Ways to Collaborate

Page 55: How To (Not) Open Source - Javazone, Oslo 2014

I �♥ �

PULL REQUESTS

Page 56: How To (Not) Open Source - Javazone, Oslo 2014

I �♥ �

PULL REQUESTS

Page 57: How To (Not) Open Source - Javazone, Oslo 2014

Stimulating Professional

Conversations 140 Characters

at a time

Page 58: How To (Not) Open Source - Javazone, Oslo 2014
Page 59: How To (Not) Open Source - Javazone, Oslo 2014

Mailing Lists IRC

Page 60: How To (Not) Open Source - Javazone, Oslo 2014

Promote Communities

Page 61: How To (Not) Open Source - Javazone, Oslo 2014

Releasing a project is easy

Page 62: How To (Not) Open Source - Javazone, Oslo 2014

Making it successful is very hard

Page 63: How To (Not) Open Source - Javazone, Oslo 2014

What is “successful”

anyway?

Page 64: How To (Not) Open Source - Javazone, Oslo 2014

“We reviewed and merged 10

pull requests in our OS project

this week. It was a lot of work. It

was beautiful and awesome!”

Page 65: How To (Not) Open Source - Javazone, Oslo 2014
Page 66: How To (Not) Open Source - Javazone, Oslo 2014

“You didn't merge any

features we needed to run our

business this week. I’m going

to eat your family!”

Page 67: How To (Not) Open Source - Javazone, Oslo 2014
Page 68: How To (Not) Open Source - Javazone, Oslo 2014

Success is in the eyes of the

beholder

Page 69: How To (Not) Open Source - Javazone, Oslo 2014

Hipster Open Source

Page 70: How To (Not) Open Source - Javazone, Oslo 2014

Different ways of releasing a project

Current State

Page 71: How To (Not) Open Source - Javazone, Oslo 2014

Code Dump (Sea Turtle Approach)

Page 72: How To (Not) Open Source - Javazone, Oslo 2014

Lay a bunch of eggs, then run off.

Page 73: How To (Not) Open Source - Javazone, Oslo 2014

Code Dump (Sea Turtle Approach) What you see: •  code •  Probably no wiki

•  Little to no-code activity

•  "Throw it over the wall"

Page 74: How To (Not) Open Source - Javazone, Oslo 2014

Code Dump (Sea Turtle Approach) What you get: •  Very little community •  Infrequent support

•  No real ownership

Page 75: How To (Not) Open Source - Javazone, Oslo 2014

worst kind of open source

only adds noise

Page 76: How To (Not) Open Source - Javazone, Oslo 2014

Primary Sponsorship�

Page 77: How To (Not) Open Source - Javazone, Oslo 2014

Let someone else sit on our eggs.

Page 78: How To (Not) Open Source - Javazone, Oslo 2014

One entity does most of the work •  Free for everybody to use •  Good stewards •  Could be a good community and

support •  Not welcoming to outside contributors

Primary Sponsorship (Cuckoo approach)

Page 79: How To (Not) Open Source - Javazone, Oslo 2014

Incubation

(Elephant Approach)

Page 80: How To (Not) Open Source - Javazone, Oslo 2014

Incubation

Recruit committers

Build community

Real Work

Page 81: How To (Not) Open Source - Javazone, Oslo 2014

Incubation

Most difficult Long lasting

Provides for lifecycle Meritocracy

Page 82: How To (Not) Open Source - Javazone, Oslo 2014

Good News:

None of these are wrong

Page 83: How To (Not) Open Source - Javazone, Oslo 2014

Bad News:

None of these are wrong

Page 84: How To (Not) Open Source - Javazone, Oslo 2014
Page 85: How To (Not) Open Source - Javazone, Oslo 2014
Page 86: How To (Not) Open Source - Javazone, Oslo 2014

Why is project X open source?

Page 87: How To (Not) Open Source - Javazone, Oslo 2014

BUSINESS 101

Page 88: How To (Not) Open Source - Javazone, Oslo 2014

Type 1 It makes money • Profit center • AdWords, Github hosting

Page 89: How To (Not) Open Source - Javazone, Oslo 2014

Type 2 It doesn't make money • Cost center • Your database • Your queueing software

Page 90: How To (Not) Open Source - Javazone, Oslo 2014

Reduce the expense of cost centers Increase profitability of profit centers

Page 91: How To (Not) Open Source - Javazone, Oslo 2014

Nobody will release source for profit centers.

Page 92: How To (Not) Open Source - Javazone, Oslo 2014

Everybody wants to release the source of their cost centers.

Page 93: How To (Not) Open Source - Javazone, Oslo 2014

Wrong Mentality

Page 94: How To (Not) Open Source - Javazone, Oslo 2014

Wrong Mentality

Page 95: How To (Not) Open Source - Javazone, Oslo 2014

Free doesn’t make it less expensive.

Page 96: How To (Not) Open Source - Javazone, Oslo 2014

Ok. That was harsh.

(End of business lesson)

Page 97: How To (Not) Open Source - Javazone, Oslo 2014

What kind of future?

Page 98: How To (Not) Open Source - Javazone, Oslo 2014

Think about what you really want.

Page 99: How To (Not) Open Source - Javazone, Oslo 2014
Page 100: How To (Not) Open Source - Javazone, Oslo 2014

Software should be frictionless.

Page 101: How To (Not) Open Source - Javazone, Oslo 2014

Easy

Page 102: How To (Not) Open Source - Javazone, Oslo 2014

CAP Theorem?

Page 103: How To (Not) Open Source - Javazone, Oslo 2014

My Theorem 1. Easy to use 2. Community 3. Quality

Page 104: How To (Not) Open Source - Javazone, Oslo 2014

CEQ? QEC?

It probably will not catch on.

Page 105: How To (Not) Open Source - Javazone, Oslo 2014

10 minute test Too many

projects fail this

Page 106: How To (Not) Open Source - Javazone, Oslo 2014

Proposition We can improve the

experience of using open source software by

improving the process of creating it.

Page 107: How To (Not) Open Source - Javazone, Oslo 2014

Our Humble Goal We can improve the

experience of using open source software by

improving the process of creating it.

Page 108: How To (Not) Open Source - Javazone, Oslo 2014

DO THESE THINGS (7)

Page 109: How To (Not) Open Source - Javazone, Oslo 2014

1. Understand your motivations

Page 110: How To (Not) Open Source - Javazone, Oslo 2014

Why are you releasing this

code?

Page 111: How To (Not) Open Source - Javazone, Oslo 2014

For the recognition?

Don't do it!

Page 112: How To (Not) Open Source - Javazone, Oslo 2014

You want to help others?

Why?

Page 113: How To (Not) Open Source - Javazone, Oslo 2014

I dunno.

Don’t do it!

Page 114: How To (Not) Open Source - Javazone, Oslo 2014

Because it’s good for business

Ok. Do it!

Page 115: How To (Not) Open Source - Javazone, Oslo 2014

You wan to commoditize something?

That’s interesting.

Page 116: How To (Not) Open Source - Javazone, Oslo 2014

Very interesting.

Page 117: How To (Not) Open Source - Javazone, Oslo 2014

STOP!

Page 118: How To (Not) Open Source - Javazone, Oslo 2014

Offload Others will do the work

Commoditize Reduce the cost for everybody

Page 119: How To (Not) Open Source - Javazone, Oslo 2014

Yes, do it, definitely!

Page 120: How To (Not) Open Source - Javazone, Oslo 2014

2. Then focus on execution

Page 121: How To (Not) Open Source - Javazone, Oslo 2014

Code dump == Bad

Page 122: How To (Not) Open Source - Javazone, Oslo 2014

Primary sponsorship: Works, but still expensive

for you.

Page 123: How To (Not) Open Source - Javazone, Oslo 2014

Incubate: Works, but so much

initial effort!

Page 124: How To (Not) Open Source - Javazone, Oslo 2014

Clearly this is where things get Hard™

Page 125: How To (Not) Open Source - Javazone, Oslo 2014

3. Define how you will measure success

Page 126: How To (Not) Open Source - Javazone, Oslo 2014

Can be anything But make it explicit

And write it down Publicly

Page 127: How To (Not) Open Source - Javazone, Oslo 2014

WARNING: The following contains

controversial opinions. Viewer discretion is advised.

Page 128: How To (Not) Open Source - Javazone, Oslo 2014

4. Split Your Team

Team Foo: Production Team Bar: Open Source

Page 129: How To (Not) Open Source - Javazone, Oslo 2014
Page 130: How To (Not) Open Source - Javazone, Oslo 2014

Case α: Bug in Production

All hands on deck Open source work grinds to a halt

Page 131: How To (Not) Open Source - Javazone, Oslo 2014

Case β: Big OS Feature

Focus, Focus, Focus Product work becomes a distraction

Page 132: How To (Not) Open Source - Javazone, Oslo 2014

5. Invest in documentation

Page 133: How To (Not) Open Source - Javazone, Oslo 2014

More than a day

Ok. At least a week.

Maybe more

Page 134: How To (Not) Open Source - Javazone, Oslo 2014

Landing Website

Wiki

10 minute guide

Page 135: How To (Not) Open Source - Javazone, Oslo 2014

And practice the 10 minute guide!

Page 136: How To (Not) Open Source - Javazone, Oslo 2014

6. Set up communication channels

Page 137: How To (Not) Open Source - Javazone, Oslo 2014

Mailing lists

IRC

Twitter

Page 138: How To (Not) Open Source - Javazone, Oslo 2014

RESPOND TO EVERY BIT OF

COMMUNICATION

Page 139: How To (Not) Open Source - Javazone, Oslo 2014

Black Hole == Bad

Nobody is using it

Reflection of quality

Page 140: How To (Not) Open Source - Javazone, Oslo 2014

7. Participate & Advocate

Page 141: How To (Not) Open Source - Javazone, Oslo 2014

Tell your story

Like minds will find you

Page 142: How To (Not) Open Source - Javazone, Oslo 2014

Difficult for some Just keep practicing

You can get good at it even if

you don’t like doing it.

Page 143: How To (Not) Open Source - Javazone, Oslo 2014

Wait, what were all those things? 1.  Understand your motivations 2.  Focus on execution 3.  Measure Measure Measure 4.  Split your team 5.  Document all the things 6.  Communicate with all the things 7.  Participate & Advocate

Page 144: How To (Not) Open Source - Javazone, Oslo 2014

How will we know when we’re there?

Page 145: How To (Not) Open Source - Javazone, Oslo 2014

Our Humble Goal Change the experience

of using software by improving the process of

creating it.

Page 146: How To (Not) Open Source - Javazone, Oslo 2014

Evidence of Success What will our success

look like? How shall we measure it?

Page 147: How To (Not) Open Source - Javazone, Oslo 2014

Evidence of Success

When open source no longer hinders us

Page 148: How To (Not) Open Source - Javazone, Oslo 2014

When you and others are able to leverage open source projects to run your business with: – More speed – Less resources – Greater focus

Evidence of Success

Page 149: How To (Not) Open Source - Javazone, Oslo 2014

Evidence of Success: A Casualty

Fewer open source projects.

Page 150: How To (Not) Open Source - Javazone, Oslo 2014

Evidence of Success: A Casualty

What about the bazaar?

Page 151: How To (Not) Open Source - Javazone, Oslo 2014

Healthier Ecosystems

Evidence of Success

Page 152: How To (Not) Open Source - Javazone, Oslo 2014

Easily identified lifecycle

Young: growing & changing

Mature: less risk

Evidence of Success

Page 153: How To (Not) Open Source - Javazone, Oslo 2014

You know how to engage the community and support channels

Evidence of Success

Page 154: How To (Not) Open Source - Javazone, Oslo 2014

Evidence of Success Your split team does not feel compromised or stretched They aren't riding two horses Your leadership is comfortable with this.

Page 155: How To (Not) Open Source - Javazone, Oslo 2014

This all sounds really good, but…

Page 156: How To (Not) Open Source - Javazone, Oslo 2014

Return on investment Staffing engineers who work on

100% on open source

Perception: expensive cost centers

Page 157: How To (Not) Open Source - Javazone, Oslo 2014

One Approach: Change that perception

Dubious proposition

Page 158: How To (Not) Open Source - Javazone, Oslo 2014

The Problem: This will probably not last

long.

Not a good approach.

Page 159: How To (Not) Open Source - Javazone, Oslo 2014

Another Approach: Skunkworks

Page 160: How To (Not) Open Source - Javazone, Oslo 2014

Split your team, but don’t tell

anybody.

Page 161: How To (Not) Open Source - Javazone, Oslo 2014

Sneaky, but that doesn’t prove ROI.

Page 162: How To (Not) Open Source - Javazone, Oslo 2014

Measure Everything

Prove that that things are better Use science!

Page 163: How To (Not) Open Source - Javazone, Oslo 2014

Support tickets

Monitoring alerts

Days spent fixing bugs

Page 164: How To (Not) Open Source - Javazone, Oslo 2014

Prepare for unexpected results Measurements may indicate that

you’re wasting time or other resources.

Page 165: How To (Not) Open Source - Javazone, Oslo 2014

Be honest with yourself

Page 166: How To (Not) Open Source - Javazone, Oslo 2014

Measure, Measure, Measure.

Page 167: How To (Not) Open Source - Javazone, Oslo 2014

History 101 + Business 101 _______________ Undeniable Insight

Page 168: How To (Not) Open Source - Javazone, Oslo 2014

• Things are changing like they never have • Commoditization of software + hardware • Accelerating pace

Page 169: How To (Not) Open Source - Javazone, Oslo 2014

• Become adept • Less friction

• More time

• Time is money

• Solid return on investment

Page 170: How To (Not) Open Source - Javazone, Oslo 2014

Observed Trend! The Open Source Startup Model

Venture Backed

Great supporters of open source

ROI easily justified

Page 171: How To (Not) Open Source - Javazone, Oslo 2014

Good thing right?

Page 172: How To (Not) Open Source - Javazone, Oslo 2014

It’s the least bad thing.

Page 173: How To (Not) Open Source - Javazone, Oslo 2014

Product of prevailing attitudes in non VC companies

1.  Contributing to open source is a drain on

resources 2. Companies are being short sighted

Page 174: How To (Not) Open Source - Javazone, Oslo 2014
Page 175: How To (Not) Open Source - Javazone, Oslo 2014

The Choice Is Ours

Page 176: How To (Not) Open Source - Javazone, Oslo 2014

Small Steps

Page 177: How To (Not) Open Source - Javazone, Oslo 2014

Consider carefully your choice to release

a project.

Page 178: How To (Not) Open Source - Javazone, Oslo 2014

Hold yourself accountable

Page 179: How To (Not) Open Source - Javazone, Oslo 2014

THANKS!

@gdusbabek

Page 180: How To (Not) Open Source - Javazone, Oslo 2014

Some images required attribution

boring https://www.flickr.com/photos/phoenixdailyphoto/1467681879 professor https://www.flickr.com/photos/judy-van-der-velden/4468986943 tank https://www.flickr.com/photos/defenceimages/14465175042 tools https://www.flickr.com/photos/75905404@N00/7126147125 businessmen https://www.flickr.com/photos/sgis/6532363 rainbow https://www.flickr.com/photos/liesforaliar/6057583336 trash https://www.flickr.com/photos/en321/14611573210 skunk https://www.flickr.com/photos/i_am_just_a_cloud/1079804050 inspire https://www.flickr.com/photos/mikeyphillips/14654963066