Taking the Long View: How the Oslo Program Reduces Technical Debt

25
Taking the Long View: How the Oslo Program Reduces Technical Debt Doug Hellmann and Mark McLoughlin Kilo Design Summit November, 2014

description

In the fast-paced world of OpenStack development, we often focus on short-term needs like bug fixes and new features. The Oslo Program takes a longer view of the health and sustainability of the project. Our mission is to make OpenStack more maintainable by addressing cross-project code reuse and architectural issues. In this presentation we will cover the origins of Oslo and the processes and tools the team uses to improve OpenStack from the bottom up, making it easier to deploy, more approachable for new contributors, and sustainable for long-term use.

Transcript of Taking the Long View: How the Oslo Program Reduces Technical Debt

Page 1: Taking the Long View: How the Oslo Program Reduces Technical Debt

Taking the Long View: How the Oslo Program

Reduces Technical Debt

Doug Hellmann and Mark McLoughlin Kilo Design Summit

November, 2014

Page 2: Taking the Long View: How the Oslo Program Reduces Technical Debt

Mission

To produce a set of python libraries containing code shared by OpenStack projects. The APIs provided by these libraries should be high quality, stable, consistent, documented and generally applicable.

Page 3: Taking the Long View: How the Oslo Program Reduces Technical Debt

Project Motivation

• Consistency for deployers

• Consistency for developers

• Identify and foster common patterns

Page 4: Taking the Long View: How the Oslo Program Reduces Technical Debt

Our Motivation"I cannot imagine the future, but I care about it. I know I am a part of a story that starts long before I can remember and continues long beyond when anyone will remember me. I sense that I am alive at a time of important change, and I feel a responsibility to make sure that the change comes out well. I plant my acorns knowing that I will never live to harvest the oaks.”

http://longnow.org/clock/

Page 5: Taking the Long View: How the Oslo Program Reduces Technical Debt

Early Days

• Aug 2010 - Jay Pipes registers “openstack-common” on launchpad

• Nov 2010 - Todd Wiley adds plugin handler code to Bexar

• Dec 2010 - Jay Pipes adds early configuration library

• Summer 2011 - Brian Lamar starts database modules

• Oct 2011 - First summit session at Essex summit

Page 6: Taking the Long View: How the Oslo Program Reduces Technical Debt

Essex - Folsom

• Nov 2011 - Jason Koelker creates openstack-common repository; Mark McLoughlin proposes configuration management module

• Essex Release - Common libraries included in release notes

• Folsom Summit - "managed copy and paste" concepts; work on pbr library begins

• Aug 2012 - Project granted PTL for Grizzly

Page 7: Taking the Long View: How the Oslo Program Reduces Technical Debt

Grizzly• Mark McLoughlin elected the team’s first PTL

• Adopt name “Oslo”

• Team grows

• Define our mission statement

• Release oslo.config library

• Rename openstack-common repository to oslo-incubator

Page 8: Taking the Long View: How the Oslo Program Reduces Technical Debt

Havana - Juno

• Havana - Release oslo.messaging; improve incubation tools

• Icehouse - oslo.messaging adoption; evolution of tools and processes; oslo.db team forms

• Juno - Major graduation push results in 7 new libraries; Liaison program started

Page 9: Taking the Long View: How the Oslo Program Reduces Technical Debt

The Oslo Team

• Generalist code reviewers

• Specialist API maintainers

Page 10: Taking the Long View: How the Oslo Program Reduces Technical Debt

From Scratch

• oslosphinx - documentation theme

• pbr - packaging

Page 11: Taking the Long View: How the Oslo Program Reduces Technical Debt

Adopted

• cliff - command line apps

• stevedore - dynamic code loading

• taskflow - job workflow

• pylockfile - inter-process synchronization

Page 12: Taking the Long View: How the Oslo Program Reduces Technical Debt
Page 13: Taking the Long View: How the Oslo Program Reduces Technical Debt
Page 14: Taking the Long View: How the Oslo Program Reduces Technical Debt
Page 15: Taking the Long View: How the Oslo Program Reduces Technical Debt
Page 16: Taking the Long View: How the Oslo Program Reduces Technical Debt

Graduation Changes

• Clean up configuration options

• Provide configuration-free API?

• Plug leaky APIs

• Expand/contract API to meet needs of consumers

• Name the library

Page 17: Taking the Long View: How the Oslo Program Reduces Technical Debt
Page 18: Taking the Long View: How the Oslo Program Reduces Technical Debt

funcutils

importutils

pycadf

oslo.config

oslo.messaging

authutils

cliff

cliutils

audit

middleware/context

cache

lockutils

timeutils memorycache

apiclient

strutils

gettextutils

fileutils

processutils

cfgfilter

config crypto

db

hooksstevedore

imageutils

excutils

local

log

jsonutils

sslutils

network_utils

log_handler

notifier

rpc

context

service

versionutils

zmq

middleware

policy

quota

reports

rootwrap

xmlutils

eventlet_backdoor

loopingcall

periodic_task

requestutils

threadgroup

fixture

test

units

uuidutils

oslo.version

oslo.vmware

pbr

scheduler

taskflow

Page 19: Taking the Long View: How the Oslo Program Reduces Technical Debt

taskflow

oslo.serialization

oslo.i18n

oslo.utils

stevedoreoslo.server

oslo.concurrency

oslo.configoslo.io

oslo.crypto

oslo.reports oslo.policy

oslo.middleware

oslo.messaging

oslo.image

oslo.cache

oslo.quota

oslo.vmware

oslo.client

PyCADF

oslo.log

oslo.db

oslo.versionutils

oslo.hooks

New in Juno

Page 20: Taking the Long View: How the Oslo Program Reduces Technical Debt

Graduated Libraries

• oslo.config

• oslo.db

• oslo.i18n

• oslo.messaging

• oslo.middleware

• oslo.rootwrap

• oslo.serialization

• oslotest

• oslo.utils

Page 21: Taking the Long View: How the Oslo Program Reduces Technical Debt

Beyond OpenStack

• Upstream work: Bug fixes & Requirements

• Outside contributors

• Adoptions

Page 22: Taking the Long View: How the Oslo Program Reduces Technical Debt

Oslo & Python 3

• Python 2.7 is receiving bug fixes, but no new features

• Targeting Python 3.4

• Bottom-up approach

Page 23: Taking the Long View: How the Oslo Program Reduces Technical Debt

oslo.context

taskflow

oslo.serialization

oslo.i18n

oslo.utils

stevedoreoslo.server

oslo.concurrency

oslo.configoslo.io

oslo.crypto

oslo.reportsoslo.policy

oslo.middleware

oslo.messaging

oslo.image

oslo.cache

oslo.log oslo.vmware

oslo.client

PyCADF

oslo.quota oslo.db

oslo.versionutils

oslo.hooks

Plans for Kilo

Page 24: Taking the Long View: How the Oslo Program Reduces Technical Debt

Getting Involved

• Reviews!

• Look for patterns in projects

Page 25: Taking the Long View: How the Oslo Program Reduces Technical Debt

Questions?