Engaging the Xen Developer Comminity

28
Sponsored by: & & & Engaging the Xen Developer Community George Dunlap [email protected]. com Citrix Systems UK

description

The Xen community can be a great resource for people wishing both to use and to improve Xen, and contributing to it can be rewarding both to individuals and to corporations. But they have a culture all their own, and like any foreign culture, it's a minefiled of potential misunderstandings and miscommunications. This talk will talk about the cultural values and norms of the Xen community, and how you can most effectively interact with them.

Transcript of Engaging the Xen Developer Comminity

Page 1: Engaging the Xen Developer Comminity

Sponsored by:

& &

&

Engaging the Xen Developer Community

George Dunlap

[email protected]

Citrix Systems UK

Page 2: Engaging the Xen Developer Comminity

Introduction

Hardware Vendors

Software vendors

Academic

Public cloud providers

Private cloud providers

Page 3: Engaging the Xen Developer Comminity

Why might people not be involved?

Don’t know what there is to do

Don’t know the benefits of engaging the community

Don’t know how to engage community effectively

Page 4: Engaging the Xen Developer Comminity

Goal:Enable you to engage developer

community

Page 5: Engaging the Xen Developer Comminity

Outline

Ways that you can contribute to Xen development

Benefits and costs

Practical steps

Good bug reports

Good questions

Good patches

Running an open development project

Page 6: Engaging the Xen Developer Comminity

How can you contribute?

Page 7: Engaging the Xen Developer Comminity

How you can contribute

Testing on your hardware / software

Submitting bug fixes

Suggesting interfaces / features

Submitting patches for interface changes

Development

Running an out-of-tree incubator project

Page 8: Engaging the Xen Developer Comminity

Testing

Need testing on a wide array of hardware / software

Test the functionality you use

Performance testing as well

What to test

Xen release candidates

Linux pvops release candidates

xen-unstable (occasionally)

Page 9: Engaging the Xen Developer Comminity

Reporting

Good bug report is good

Better yet: Patches!

Page 10: Engaging the Xen Developer Comminity

Features

Developers don’t see the learning curve

Suggest changes / clarifications to interface

Suggest new features which might be useful to you

Better yet: Patches!

Page 11: Engaging the Xen Developer Comminity

Upstreaming your changes

Standard practice: Freeze and fork

Main xen branch moves forward

What to do with a fork?

Stay forked

Forward-port patches

Back-port new features / fixes

Submit upstream

Page 12: Engaging the Xen Developer Comminity

Why not upstream?

A lot of extra work

Time constraints

Product deadlines

Academic deadlines

Required changes not acceptable upstream

Page 13: Engaging the Xen Developer Comminity

Good bug reports

What to include

Detailed hardware, software, steps to reproduce

As much error as you can

Serial console

Wiki page: ReportingBugs

Page 14: Engaging the Xen Developer Comminity

Asking a question is asking someone else to work for you

Page 15: Engaging the Xen Developer Comminity

Asking good questionsDo as much work as you can yourself first

Search GoogleRead the code

ContextWho are you?What are you trying to accomplish

Make it specificShow how you’ve tried to solve it yourselfWiki page: AskingXenDevelQuestions

Page 16: Engaging the Xen Developer Comminity

Sending code upstream

Wiki page: SubmittingXenPatches

Page 17: Engaging the Xen Developer Comminity

Three people to think aboutPerson reviewing the patch

Does it do the right thing?Are there any mistakes?

Person scanning through changesetsDo I need to look at this patch?

Archaeologist6 months, 1 year, 2 years, 5 yearsWhy is the code the way it is now?

Page 18: Engaging the Xen Developer Comminity

GuidelinesBreak your change into a series of patches

One logical change per patchNo regressions

Don’t fix a bug in one patch in a later patch!Separate clean-up from functional changes

Even if it’s just a one-line changeOne-line summary easy to scanDescription says what the patch does and why

Page 19: Engaging the Xen Developer Comminity

Requirements

Patch must apply

Beware of mailer mangling

Mercurial PatchBomb extension

Signed-off-by

Coding style

Page 20: Engaging the Xen Developer Comminity

Interpreting responses

American Culture: “Praise sandwich”

Hacker culture: Direct and to the point

“I don’t think this is the right way to do this”

“This is ugly”

“This is unmaintainable”

Detailed criticism means “I want this patch accepted”

Ignoring is much worse than criticism

Page 21: Engaging the Xen Developer Comminity

Open development

Page 22: Engaging the Xen Developer Comminity

Project lifecycleInitial code dump

Basic functionality and frameworkIncubation

Active development towards maturityGrowing community development

Project maturityReady to be used by othersActively maintained

Retired / Archived

Page 23: Engaging the Xen Developer Comminity

Types of projects

In-tree

“Tech preview”

Fairly self-contained

Example: Paging, page sharing, Remus

Out-of-tree

Major changes

Example: xen-arm

Page 24: Engaging the Xen Developer Comminity

Open development: Theory

Criteria

Movement towards upstreaming

Encouragement of a development community

Principles

Anyone should be able to influence

Influence should correlate to contribution

Page 25: Engaging the Xen Developer Comminity

Open development: Practice

One public shared repository

Handful of committers

One to begin with

Committers added based on contribution

All patches posted and discussed publicly

Technical decisions made in public

Private discussions must end with public proposal

Page 26: Engaging the Xen Developer Comminity

Outline

Ways that you can contribute to Xen development

Benefits and costs

Practical steps

Good bug reports

Good questions

Good patches

Running an open development project

Page 27: Engaging the Xen Developer Comminity

Goal:Enable you to engage developer

community

Page 28: Engaging the Xen Developer Comminity

Questions?