developing oss leadership (linuxcon na - 2014)

57
1 Open Source Group – Samsung Research America (Silicon Valley) 1 Open Source Group – Samsung Research America (Silicon Valley) Guy Martin Senior Strategist Samsung Open Source Group [email protected] @guyma, @SamsungOSG Developing Open Source Leadership

Upload: samsung-open-source-group

Post on 14-Jan-2015

327 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Developing OSS Leadership (LinuxCon NA - 2014)

1Open Source Group – Samsung Research America (Silicon Valley) 1Open Source Group – Samsung Research America (Silicon Valley)

Guy MartinSenior Strategist

Samsung Open Source [email protected]

@guyma, @SamsungOSG

Developing Open Source Leadership

Page 2: Developing OSS Leadership (LinuxCon NA - 2014)

2Open Source Group – Samsung Research America (Silicon Valley)

Content

• Open Source Development Model• Best Practices• Communication & Community

Skills

Page 3: Developing OSS Leadership (LinuxCon NA - 2014)

3Open Source Group – Samsung Research America (Silicon Valley) 3Open Source Group – Samsung Research America (Silicon Valley)

Open Source Leadership:Why and How?

Page 4: Developing OSS Leadership (LinuxCon NA - 2014)

4Open Source Group – Samsung Research America (Silicon Valley)

Product Dependency on Open Source Technologies

Page 5: Developing OSS Leadership (LinuxCon NA - 2014)

5Open Source Group – Samsung Research America (Silicon Valley)

New Open Source Skillsets

Page 6: Developing OSS Leadership (LinuxCon NA - 2014)

6Open Source Group – Samsung Research America (Silicon Valley)

Open Source Strategy

Con-sumer

Partici-pant

Contrib-utor

Leader

Involvement with

Open Source

Start here!

Decide on the desired position based on company’s OSS strategy

Page 7: Developing OSS Leadership (LinuxCon NA - 2014)

7Open Source Group – Samsung Research America (Silicon Valley)

Leader Scenario

• Leadership roles in open source communities are earned by establishing trust with the project members, and by maintaining a high level of continuous contribution to the project

• Requires significant investment in targeted open source communities and consortia to establish leadership agenda

• Requires incremental investment primarily in engineering, product management and legal organizations

• Empower employees to seek contributor and maintainer status

Page 8: Developing OSS Leadership (LinuxCon NA - 2014)

8Open Source Group – Samsung Research America (Silicon Valley) 8Open Source Group – Samsung Research America (Silicon Valley)

Open Source Development Model

Page 9: Developing OSS Leadership (LinuxCon NA - 2014)

9Open Source Group – Samsung Research America (Silicon Valley)

Open Source Model Characteristics

1.Distributed development

2. Development community

3. Community organization

4. Scalable development

5. Decision process6.“Release early,

release often”

7. Submitting code 8.Taking

responsibility 9. Giving credit to

others10.Peer review11.Continuous testing12.Gaining

influence13.Modular designs

Page 10: Developing OSS Leadership (LinuxCon NA - 2014)

10Open Source Group – Samsung Research America (Silicon Valley)

Development Community

• Accessible to newcomers– Open development generally strives for

inclusiveness

• Focused on visibility– Strong emphasis on open decision making

processes and communication

• Self-organizing– Most projects take guidance from internal

sources (i.e., the people doing the work)

Page 11: Developing OSS Leadership (LinuxCon NA - 2014)

11Open Source Group – Samsung Research America (Silicon Valley)

Decision Process• Decisions are decentralized

by appointing trusted delegates– In Linux, called “subsystem

maintainers”– Trust built by past record

of good participation and wise decisions on smaller issues

• Not all decisions need pass through delegates– Trivial fixes may go directly

to any maintainer

• Decentralized nature requires extra focus on transparency– Discussions must

happen in the open: Mailing lists, IRC

• Often the discussion itself is the documented record of the outcome

Page 12: Developing OSS Leadership (LinuxCon NA - 2014)

12Open Source Group – Samsung Research America (Silicon Valley)

Influence Within Open Source Communities

• Influence in a project is based on reputation in that project/community– Reputation is gained through code contributions and participation– Reputation in one community doesn't necessarily carry to others– Reputation in own company doesn't carry to open source community– Must prove oneself on each project to gain influence

• The writer of the best code has the most influence– It doesn’t matter who you are, who you work for, how it was

done before, or how smart you are

• Behavior is important– Willingness to take and provide feedback (politely)– Ability to explain motivations behind decisions

Page 13: Developing OSS Leadership (LinuxCon NA - 2014)

13Open Source Group – Samsung Research America (Silicon Valley) 13Open Source Group – Samsung Research America (Silicon Valley)

Working with Up-stream

Page 14: Developing OSS Leadership (LinuxCon NA - 2014)

14Open Source Group – Samsung Research America (Silicon Valley)

What is Upstream?

upstream (noun)– The originating open source software project upon

which a derivative is built– This term comes from the idea that water and the

goods it carries float downstream and benefit those who are there to receive it.

to upstream (verb)– A short-hand way of saying "push changes to the

upstream project“, i.e. contribute the changes you made to the source code program back to the original project dedicated for that program.

Page 15: Developing OSS Leadership (LinuxCon NA - 2014)

15Open Source Group – Samsung Research America (Silicon Valley)

When is it Time to Start Contributing Upstream?

• When the costs of keeping your code in sync with the mainline project exceed the convenience of working alone

• When you want your code to be used by others (including customers)

• When you want to drive your implementation to become a defacto standard, or drive adoption of the mainline project

• If you anticipate relying on a certain codebase repeatedly in upcoming products that complements the mainline project

Page 16: Developing OSS Leadership (LinuxCon NA - 2014)

16Open Source Group – Samsung Research America (Silicon Valley)

Motivations for Contributing Upstream

• Private code is never considered in public development– Integrating changes upstream means others are aware of them,

and can plan for and around them– Reduces the risk of accidental breakage

• Integrating changes into the mainline project reduces the amount of effort to build a finished product

• Contributed code is reviewed and may attract external developers

• Contributions strengthen and influence direction of project

Page 17: Developing OSS Leadership (LinuxCon NA - 2014)

17Open Source Group – Samsung Research America (Silicon Valley)

What Should Go Upstream?

• The decision of what source code to push to upstream is guided by your open source strategy

• Generally, you should drive to upstream:– Technology enablers contributions – (non-strategic) code that

will make your differentiating offering run better/faster/etc.– Source code that is useful to all platform users – that they

don’t want to maintain themselves – Source code that will help them influence the direction of the project

• A good guide is to determine what parts of your product are sources of strategic advantage, and what supports those parts– The supporting parts are generally good candidates for upstream

Page 18: Developing OSS Leadership (LinuxCon NA - 2014)

18Open Source Group – Samsung Research America (Silicon Valley) 18Open Source Group – Samsung Research America (Silicon Valley)

Best Practices: Requirements

Page 19: Developing OSS Leadership (LinuxCon NA - 2014)

19Open Source Group – Samsung Research America (Silicon Valley)

Propose New Features & Signal Intent

• Public discussion is a prerequisite– Ensures maintainers are aware of the need and the

problems you are working to solve– Recruit others to help do the work– Gather feedback on the usefulness and design

considerations before doing a lot of work (and being rejected)

– Some projects have active mailing lists, multiple tries may be needed

• Over-communicate– Assume you have one chance to convince others

Page 20: Developing OSS Leadership (LinuxCon NA - 2014)

20Open Source Group – Samsung Research America (Silicon Valley)

Getting Buy-in for a Feature Request

• Contributed features should be:– Useful to others and not just to your specific usage

models• Features that benefit only a few users will tend to be rejected if

there is no benefit to the majority

– Implemented in small parts, and delivered in a way that provides immediate benefit

– Strong on security• Open Source developers tend to be more security conscientious

than closed source developers

– Backed by resources ready to implement and maintain• Don’t ‘dump code and run’

Page 21: Developing OSS Leadership (LinuxCon NA - 2014)

21Open Source Group – Samsung Research America (Silicon Valley) 21Open Source Group – Samsung Research America (Silicon Valley)

Best Practices: Design

Page 22: Developing OSS Leadership (LinuxCon NA - 2014)

22Open Source Group – Samsung Research America (Silicon Valley)

Design In the Open

• Communicate early and often on mailing lists

• Provide examples and possibly reference implementations

• Anticipate feedback– Acknowledge good feedback and re-work your contribution

• Respond promptly to questions, particularly from potential contributors– Signal willingness to adapt your design if someone else will do

the work

• Plan for modularity, even if the first designs are not

Page 23: Developing OSS Leadership (LinuxCon NA - 2014)

23Open Source Group – Samsung Research America (Silicon Valley)

Recruit Others

• Scratch your own itch, nobody else will scratch it for you… unless they have the same itch

• If you are wanting to decrease your development burden, write code that will attract others for the same reason– Make sure your contribution is scoped broadly enough to attract

other contributors– Be responsive and proactive if someone indicates interest in your

email to the mailing list

• Don’t be surprised if it’s a competitor– Often the companies with the most to gain from a feature in an

open source project are in the same line of business– There is a rich history of collaboration between

competitors

Page 24: Developing OSS Leadership (LinuxCon NA - 2014)

24Open Source Group – Samsung Research America (Silicon Valley)

Design for Acceptance

• Design your contribution to be written and integrated in the smallest parts possible– Smaller patches are easier for maintainers to integrate– Many open source projects favor a modular approach, because it

promotes extensibility

• Scope the design, and subdivide your plans if necessary– Larger changes are more likely to be adopted if a series of smaller

changes with concrete milestones– Communicate the overall plan to provide context, but don’t expect

universal buy-in

• Be as non-intrusive as possible to other subsystems– If you believe you need to change a core system component,

communicate far in advance and solicit input from their maintainers before getting started

Page 25: Developing OSS Leadership (LinuxCon NA - 2014)

25Open Source Group – Samsung Research America (Silicon Valley) 25Open Source Group – Samsung Research America (Silicon Valley)

Best Practices: Implementation

Page 26: Developing OSS Leadership (LinuxCon NA - 2014)

26Open Source Group – Samsung Research America (Silicon Valley)

Be Agile

• The line between design and implementation is very blurry in open source development– Multiple iterations are expected and encouraged

• Don’t expect perfection the first time– Code stabilization is part of the community

process– Allow the developer community to help guide

and shape the code

Page 27: Developing OSS Leadership (LinuxCon NA - 2014)

27Open Source Group – Samsung Research America (Silicon Valley)

Implement Functionality in Smallest Reasonable Chunks

• Will result in more constructive feedback– Easier to understand small patches

• Simplified testing– A small change is less like to have unintended

consequences– Very important because of lack of traditional test

phase

• You will be expected to submit in small parts

Page 28: Developing OSS Leadership (LinuxCon NA - 2014)

28Open Source Group – Samsung Research America (Silicon Valley)

Reuse Existing, Accepted Code Wherever Possible

• It makes your contribution smaller

• It reduces the code you must personally debug and maintain

• It increases your chance of acceptance– Maintainer already familiar with accepted code– Most maintainers are very averse to duplicating existing

functionality

• If existing code has most of the functionality you need, submit a patch to extend it– Always try this before building your own– If this is for a key dependency, get your patch accepted before

beginning work in earnest on the main feature

Page 29: Developing OSS Leadership (LinuxCon NA - 2014)

29Open Source Group – Samsung Research America (Silicon Valley)

Creating a Patch

• The patch should be created against the most recent version of the mainline source code

• The patch should be offset from the root of the tree

• The patch must apply cleanly• A freshly-patched version of the code

should build without errors• A patch should do one thing, and do it

wellhttp://lwn.net/Articles/139918/

Page 30: Developing OSS Leadership (LinuxCon NA - 2014)

30Open Source Group – Samsung Research America (Silicon Valley)

Be Patient and Persistent

• Send patches and responses in public, never in private

• Accept criticism, and rework the code

• Make incremental changes that are well communicated

• Resubmit the patch• Be persistent and polite

Page 31: Developing OSS Leadership (LinuxCon NA - 2014)

31Open Source Group – Samsung Research America (Silicon Valley)

What if My Patch is Rejected?

• Code may be rejected for any reason– Poor quality, inconsistent formatting– Too much function in one submission– Inconsistent with broader subsystem strategy

• This doesn’t make you a bad coder– Revise and try again

• When replying, filter unnecessary feedback and focus just on the technical aspects

Page 32: Developing OSS Leadership (LinuxCon NA - 2014)

32Open Source Group – Samsung Research America (Silicon Valley) 32Open Source Group – Samsung Research America (Silicon Valley)

Best Practices: Maintenance

Page 33: Developing OSS Leadership (LinuxCon NA - 2014)

33Open Source Group – Samsung Research America (Silicon Valley)

Maintaining Your Code

• Don’t “dump and run”– Abandoned code will be worked around and

eventually removed

• Disclose problems quickly, and provide workarounds and fixes– Pretending nothing is wrong will only buy you

trouble

• If you can’t maintain it, pass responsibility along to a successor, or arrange to have it removed– If your code is important, someone else will step up

Page 34: Developing OSS Leadership (LinuxCon NA - 2014)

34Open Source Group – Samsung Research America (Silicon Valley)

Accepting Patches to Your Code

• If your code is useful, others may want to enhance it– Be open to the community process– Be available to the maintainer if asked for

your input on a patch– Consider the technical comments

people make on the code, and justify any disagreements that you have with them

Page 35: Developing OSS Leadership (LinuxCon NA - 2014)

35Open Source Group – Samsung Research America (Silicon Valley) 35Open Source Group – Samsung Research America (Silicon Valley)

Open Source Community/Communication Skills

Page 36: Developing OSS Leadership (LinuxCon NA - 2014)

36Open Source Group – Samsung Research America (Silicon Valley)

What are Communities?

Page 37: Developing OSS Leadership (LinuxCon NA - 2014)

37Open Source Group – Samsung Research America (Silicon Valley)

Rule #1

No two communities are exactly the same!

Page 38: Developing OSS Leadership (LinuxCon NA - 2014)

38Open Source Group – Samsung Research America (Silicon Valley)

Rule #2

Communities don’t work for individual companies

Page 39: Developing OSS Leadership (LinuxCon NA - 2014)

39Open Source Group – Samsung Research America (Silicon Valley) 39Open Source Group – Samsung Research America (Silicon Valley)

Preparing to Engage with Community

Page 40: Developing OSS Leadership (LinuxCon NA - 2014)

40Open Source Group – Samsung Research America (Silicon Valley)

Determine your Strengths

There are many skills required in open source projects, and many roles to fill:• Software Developers• Testers/Quality Assurance• Documentation Writers• User Experience/GUI Designers• Evangelists/Communications Experts

You can have more than one role if you have the time and necessary skills.

Page 41: Developing OSS Leadership (LinuxCon NA - 2014)

41Open Source Group – Samsung Research America (Silicon Valley)

Determine your Time Commitment

• Commit to what you can realistically deliver

• Communities respect completed work more than hollow offers of help

• Your commitment reflects not only on you, but on your company

Page 42: Developing OSS Leadership (LinuxCon NA - 2014)

42Open Source Group – Samsung Research America (Silicon Valley) 42Open Source Group – Samsung Research America (Silicon Valley)

Get to Know the Community

Page 43: Developing OSS Leadership (LinuxCon NA - 2014)

43Open Source Group – Samsung Research America (Silicon Valley)

Understand How the Community Communicates

• Learn which methods are accepted & preferred:– Email lists– IRC– Web forums– Bug trackers

• Observe and learn how questions are asked/answered– http://catb.org/~esr/faqs/smart-questions.html

Page 44: Developing OSS Leadership (LinuxCon NA - 2014)

44Open Source Group – Samsung Research America (Silicon Valley)

Understand How the Community Communicates

• Before asking a question of the community– Search any message archives/logs for the answer– Read any user documentation– Search the web for the answer– Read any Frequently Asked Questions (FAQ) documents– Read the source code!– Experiment and document your experiments

• Find the correct forum– Don’t post technical questions to a user list, for example– Show how you’ve tried to find the answer on your own

Page 45: Developing OSS Leadership (LinuxCon NA - 2014)

45Open Source Group – Samsung Research America (Silicon Valley)

Understand How the Community is Governed

• Some communities (such as Linux Kernel) are hierarchies with clear chains of command

• Some communities (such as the Debian project) are flat democracies

• Understanding community governance helps you address your questions to the right audience

Page 46: Developing OSS Leadership (LinuxCon NA - 2014)

46Open Source Group – Samsung Research America (Silicon Valley)

Get to Know the People

• Relationships (even virtual ones) matter in communities

• Understanding how people work helps get your ideas accepted in the community

• Participate in conferences/meetups as much as possible to help build ‘human networks’

Page 47: Developing OSS Leadership (LinuxCon NA - 2014)

47Open Source Group – Samsung Research America (Silicon Valley) 47Open Source Group – Samsung Research America (Silicon Valley)

Engage with the Community

Page 48: Developing OSS Leadership (LinuxCon NA - 2014)

48Open Source Group – Samsung Research America (Silicon Valley)

Communicate What You’re Working On

• Don’t work on something for the community ‘in private’– Someone else will probably have duplicated your effort– Other changes in the project may obsolete/conflict with your

work

• Project maintainers can help plan for future releases if they know what’s coming

• Community participants don’t like last minute feature ‘surprises’

Page 49: Developing OSS Leadership (LinuxCon NA - 2014)

49Open Source Group – Samsung Research America (Silicon Valley)

Give Back to the Community

• Code contributions

• Answer questions from other members

• Facilitate hardware gifts if possible

• Help arrange conferences/meetups

• Offer to speak at conferences/events

• Your contributions reflect on you and your company!

Page 50: Developing OSS Leadership (LinuxCon NA - 2014)

50Open Source Group – Samsung Research America (Silicon Valley)

Plan an Exit Strategy

• Train your potential successor

• Introduce your successor to the community

• Insure that your code contributions will be maintained by someone from your company

• Inform the community as soon as possible so that they have time to plan for the transition

Page 51: Developing OSS Leadership (LinuxCon NA - 2014)

51Open Source Group – Samsung Research America (Silicon Valley) 51Open Source Group – Samsung Research America (Silicon Valley)

Top 5 Things to Remember

Page 52: Developing OSS Leadership (LinuxCon NA - 2014)

52Open Source Group – Samsung Research America (Silicon Valley)

#5 – Understand Community Governance

• Each community is different• Contributions need to ‘fit’ with other code/patches

Page 53: Developing OSS Leadership (LinuxCon NA - 2014)

53Open Source Group – Samsung Research America (Silicon Valley)

#4 – Understand Community Motivators

• Successful communities are powered by motivated people• Motivation can be: status, money, peer recognition

Page 54: Developing OSS Leadership (LinuxCon NA - 2014)

54Open Source Group – Samsung Research America (Silicon Valley)

#3 – Be Careful of ‘Custom’ Licenses

• Communities do not work well with ‘custom licenses’• Gaining contributors/momentum requires low barriers to

entry

http://opensource.org/licenses/index.html

Page 55: Developing OSS Leadership (LinuxCon NA - 2014)

55Open Source Group – Samsung Research America (Silicon Valley)

#2 – Communities Need Nurturing

• Posting code to public sites is not collaboration• Community participation is a cycle – expect change

Page 56: Developing OSS Leadership (LinuxCon NA - 2014)

56Open Source Group – Samsung Research America (Silicon Valley)

#1 - Be Humble, But Bold

• Community leadership is earned, not granted– Accept community feedback and rework code

• Bring technical expertise to the table– Contributions need to be ongoing to maintain leadership status

Humble Bold

Leadership != Control

Page 57: Developing OSS Leadership (LinuxCon NA - 2014)

57Open Source Group – Samsung Research America (Silicon Valley) 57Open Source Group – Samsung Research America (Silicon Valley)

Thank you.