After reading Thierry's blog post on what he expects from the Nova PTL, I 
started to consider what I think the PTL's job should be.  As I see it, a 
Project Technical Lead has three main responsibilities:

* Internal Project Communication
  - minimize duplication of work
  - facilitate collaboration between diverse teams
  - ensure resources are evenly allocated to meet release requirements
* OpenStack Project Integration
  - improve integration with other OpenStack components
  - ensure the project is contributing to and using openstack-common
  - help break out components into separate projects when needed
* Long-Term Project Vision
  - verify development meets basic design tenets
  - make sure that project is actually deployable and usable
  - maintain alignment between release requirements and long term goals

I'd like to explain my position on these responsibilities, why they are 
important, and how I see that they can be best fulfilled by a Project Technical 
Lead in Nova.  Obviously, the many specifics will be influenced by the design 
summit, but this should paint a picture of what I think is a good starting 
point for the future of Nova.  This isn't meant to be an exhaustive list, but 
rather a beginning.  Hopefully, my ideas can spark a bit of discussion to give 
the elected PTL a clear idea of what to expect.


Internal Project Communication

One of the most important jobs of the Nova PTL is to facilitate communication 
between the various teams that are working on the Nova code base.  The amount 
of different work going into Nova is already hard to track, and this will only 
become more difficult as more organizations and groups join.  The PTL needs to 
keep track of which teams are working in which areas, to ensure that the teams 
are able to communicate with each other, and to verify that the teams are 
keeping their specs and blueprints up to date.

To facilitate this, it seems vital to know who is on which team and their main 
development focus for the current release. Because it will be virtually 
impossible to track everyone individually, it will help for him or her to have 
a point of contact on each team.  He should also attempt to facilitate 
different teams working together if their development goals align.

A good example of a place that could benefit from attention by the PTL, is the 
oft-mentioned network refactor.  It has been progressing slowly because there 
are diverse teams working on it without sufficient coordination.  The PTL could 
help to organize a combined network team and help to select a team lead to 
drive the refactor.


OpenStack Project Integration

Another responsibility of the PTL is to make sure that Nova is well-integrated 
with the other openstack components.  The PTL needs to have a clear picture of 
new and needed features in glance and swift, as well as any new projects that 
are added to OpenStack.

It is also vital that we focus on common components over the next couple 
releases.  If we don't do this the projects will gradually grow apart, and it 
will be very difficult to present a coherent OpenStack deployment involving all 
of the projects.  The most important first-step in my mind is Authn/Authz.  A 
common authentication system will do wonders for keeping the projects aligned.

We have discussed beginning to break out components in the Diablo time frame.  
We need to focus very early on the changes necessary to make this painless.  
This includes minimizing the communication between compute, network, and 
volume, and ensuring that the components are using clear interfaces.


Long Term Project Vision

Finally, the PTL needs to maintain a holistic vision of the project and the 
long term vision.  This has less to with the technical implementation details, 
and more to do with making sure the project is successful and of high quality.  
The PTL needs to constantly be asking two quesions:

  1) Is it deployable?
  2) Is it usable?

For the project to succeed, we need a vehement yes to both of these. With the 
various groups working on features that are important to them, it is easy to 
forget that the it is the quality of the project that will determine the 
success or failure of OpenStack as a whole.  We must put extra focus in the 
following four areas:

Automated Testing

Automated Testing is the only way we can verify that we have a working system.  
There should be multiple configurations that are being automatically tested and 
a set of instructions for creating test clusters and new configurations.

Code Consistency

We must spend time cleaning up pylint scores and vetting the unit tests and 
various parts of the code for common style.  We need a clear developer guide 
and toolset configuration examples for new developers.  These will allow new 
developers become productive more quickly.

Deployability

We need more focus on documentation, tools, and recommended (tested) 
configurations of hardware and software.  This absolutely needs to include 
integrated deployments that incorporate other OpenStack components.

User Experience

Testing of actual use cases is very important to make sure that the 
user-experience doesn't suffer.  It is also important that we understand and 
synthesize customer needs as organizations continue to deploy OpenStack.  There 
are a number of features that are very valuable to users that aren't 
completeley obvious to developers (snapshotting is a good example of this).
_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to