Taking the Long View: How the Oslo Program
Reduces Technical DebtDoug Hellmann
Atlanta OpenStack Meetup September, 2014
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.
Project Motivation
• Consistency for deployers
• Consistency for developers
• Identify and foster common patterns
My 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/
The Oslo Team
• Generalist code reviewers
• Specialist API maintainers
From Scratch
• oslosphinx - documentation theme
• pbr - packaging
Adopted
• cliff - command line apps
• stevedore - dynamic code loading
• taskflow - job workflow
• pylockfile - inter-process synchronization
Graduation Changes• Clean up configuration options
• Provide configuration-free API?
• Plug leaky APIs
• Expand/contract API to meet needs of consumers
• Name the library
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
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
Graduated Libraries• oslo.config
• oslo.db
• oslo.i18n
• oslo.messaging
• oslo.middleware
• oslo.rootwrap
• oslo.serialization
• oslotest
• oslo.utils
Primarily for!OpenStack Use
Useful to!Other Projects
Runtime oslo.config taskflow
Non-Runtime oslotest pbr
Naming Considerations
Beyond OpenStack
• Upstream work: Bug fixes & Requirements
• Outside contributors
• Adoptions
Oslo & Python 3
• Python 2.7 is receiving bug fixes, but no new features
• Targeting Python 3.4
• Bottom-up approach
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
Plans for Kilo
Questions?