[openstack-dev] [all] [ptls] The Czar system, or how to scale PTLs

Thierry Carrez thierry at openstack.org
Thu Aug 28 12:40:23 UTC 2014

James Polley wrote:
>>>         Point of clarification:  I've heard PTL=Project Technical Lead
>>>         and PTL=Program Technical Lead. Which is it?  It is kind of
>>>         important as OpenStack grows, because the first is responsible
>>>         for *a* project, and the second is responsible for all projects
>>>         within a program.
>>     Now Program, formerly Project.
> I think this is worthy of more exploration. Our docs seem to be very
> inconsistent about what a PTL is - and more broadly, what the difference
> is between a Project and a Program.
> Just a few examples:
> https://wiki.openstack.org/wiki/PTLguide says "Program Technical
> Lead". https://wiki.openstack.org/wiki/PTL_Elections_March/April_2014
> simply says PTL - but does say that each PTL is elected by/for a
> Program. However, Thierry pointed
> to https://wiki.openstack.org/wiki/Governance/Foundation/Structure which
> still refers to Project Technical Leads and says explicitly that they
> lead individual projects, not programs. I actually have edit access to
> that page, so I could at least update that with a simple
> "s/Project/Program/", if I was sure that was the right thing to do.

Don't underestimate how stale wiki pages can become! Yes, fix it.

> http://www.openstack.org/ has a link in the bottom nav that says
> "Projects"; it points to http://www.openstack.org/projects/ which
> redirects to http://www.openstack.org/software/ which has a list of
> things like "Compute" and "Storage" - which as far as I know are
> Programs, not Projects. I don't know how to update that link in the nav
> panel.

That's because the same word ("compute") is used for two different
things: a program name ("Compute") and an "official OpenStack name" for
a project ("OpenStack Compute a.k.a. Nova"). Basically official
OpenStack names reduce confusion for newcomers ("What is Nova ?"), but
they confuse old-timers at some point ("so the Compute program produces
Nova a.k.a. OpenStack Compute ?").

> I wasn't around when the original Programs/Projects discussion was
> happening - which, I suspect, has a lot to do with why I'm confused
> today - it seems as though people who were around at the time understand
> the difference, but people who have joined since then are relying on
> multiple conflicting verbal definitions. I believe, though,
> that http://lists.openstack.org/pipermail/openstack-dev/2013-June/010821.html
> was one of the earliest starting points of the discussion. That page
> points at https://wiki.openstack.org/wiki/Projects, which today contains
> a list of Programs. That page does have a definition of what a Program
> is, but doesn't explain what a Project is or how they relate to
> Programs. This page seems to be locked down, so I can't edit it.

https://wiki.openstack.org/wiki/Projects was renamed to
https://wiki.openstack.org/wiki/Programs with the wiki helpfully leaving
a redirect behind. So the content you are seeing here is the "Programs"
wiki page, which is why it doesn't define "projects".

We don't really use the word "project" that much anymore, we prefer to
talk about code repositories. Programs are teams working on a set of
code repositories. Some of those code repositories may appear in the
integrated release.

> That page does mention projects, once. The context makes it read, to me,
> as though a program can follow one process to "become part of OpenStack"
> and then another process to "become an Integrated project and part of
> the OpenStack coordinated release" - when my understanding of reality is
> that the second process applies to Projects, not Programs.
> I've tried to find any other page that talks about what a Project is and
> how they relate to Programs, but I haven't been able to find anything.
> Perhaps there's some definition locked up in a mailing list thread or
> some TC minutes, but I haven't been able to find it.
> During the previous megathread, I got the feeling that at least some of
> the differing viewpoints we saw were possibly down to some people
> thinking of a PTL as responsible for just one project, while others
> think of a PTL as being responsible for any projects that might fit
> within a Program's scope. As we approach the next PTL elections, I think
> it would be helpful for us to recap the discussions that led to the
> Program/Project split and make sure our docs are consistent, so that
> people who weren't following the discussion this time last year can
> still be clear what they're voting for.

Programs are just acknowledging that code repositories should be
organized in the way that makes the most sense technically. They should
not be artificially organized to match our governance structure.

Before programs existed, it was difficult for teams to organize their
code the way they wanted, because there was only one code repository
("The Project"), so everything had to be in it. Then we added an
exception for the Python client projects, so the Nova team could work on
the Nova project *and* the Python client for it. But then it made sense
to organize the code differently, so rather than continuing to add
exceptions (which you can see traces of at stale page [1]), the easiest
way to organize that was to just say that a given team could rule a set
of code repositories, and organize them as they preferred.

So teams, organized around a clear mission statement, could decide which
code repositories they wanted to organize their code in. We call those
teams "programs".

[1] https://wiki.openstack.org/wiki/ProjectTypes

Thierry Carrez (ttx)

More information about the OpenStack-dev mailing list