Page MenuHomePhabricator

Add an ownership field to cookbooks.
Closed, ResolvedPublic

Description

Add an ownership field to cookbooks to clearly define responsibility. This will help clarify who the decision-maker or point of contact is for any potential changes, as well as facilitate ongoing maintenance and updates. Consider how to handle team renames.

This aims to:

  • Direct people looking for information on how to use a specific cookbook to the right team.
  • Direct people having trouble running a specific cookbook to the right team.
  • Help people sending code reviews to an existing cookbook to know who to add as reviewer.
  • Clarify ownership and expectations on which team is responsible for each cookbook, in particular to:
    • keep the cookbook up to date with code and infrastructure changes
    • be a point of contact for questions about cookbook usage, bug reports and feature requests
    • be responsive to code reviews for that cookbook

As part of the work to set the ownership of existing cookbooks we'll also check if some of them might no longer be required in T379259.

The choice to be able to mark only one team as owner is intentional, as multiple owners will only risk to create more confusion than help.

Event Timeline

Volans triaged this task as Medium priority.

Change #1100773 had a related patch set uploaded (by Volans; author: Volans):

[operations/software/spicerack@master] cookbook: add owner_group property

https://gerrit.wikimedia.org/r/1100773

Change #1102896 had a related patch set uploaded (by Volans; author: Volans):

[operations/cookbooks@master] tests: add test for the ownership field

https://gerrit.wikimedia.org/r/1102896

Change #1100773 merged by jenkins-bot:

[operations/software/spicerack@master] cookbook: add owner_team property

https://gerrit.wikimedia.org/r/1100773

Change #1102896 merged by jenkins-bot:

[operations/cookbooks@master] tests: add test for the ownership field

https://gerrit.wikimedia.org/r/1102896

Change #1104949 had a related patch set uploaded (by Volans; author: Volans):

[operations/cookbooks@master] ownership: Infrastructure Foundations cookbooks

https://gerrit.wikimedia.org/r/1104949

Change #1104950 had a related patch set uploaded (by Volans; author: Volans):

[operations/cookbooks@master] ownership: Data Platform cookbooks

https://gerrit.wikimedia.org/r/1104950

Change #1104951 had a related patch set uploaded (by Volans; author: Volans):

[operations/cookbooks@master] ownership: Data Persistence cookbooks

https://gerrit.wikimedia.org/r/1104951

Change #1104952 had a related patch set uploaded (by Volans; author: Volans):

[operations/cookbooks@master] ownership: Traffic cookbooks

https://gerrit.wikimedia.org/r/1104952

Change #1104953 had a related patch set uploaded (by Volans; author: Volans):

[operations/cookbooks@master] ownership: ServiceOps cookbooks

https://gerrit.wikimedia.org/r/1104953

Change #1104954 had a related patch set uploaded (by Volans; author: Volans):

[operations/cookbooks@master] ownership: Collaboration Services cookbooks

https://gerrit.wikimedia.org/r/1104954

Change #1104955 had a related patch set uploaded (by Volans; author: Volans):

[operations/cookbooks@master] ownership: Observability cookbooks

https://gerrit.wikimedia.org/r/1104955

Change #1104956 had a related patch set uploaded (by Volans; author: Volans):

[operations/cookbooks@master] ownership: WMCS cookbooks

https://gerrit.wikimedia.org/r/1104956

Change #1104949 merged by jenkins-bot:

[operations/cookbooks@master] ownership: Infrastructure Foundations cookbooks

https://gerrit.wikimedia.org/r/1104949

Change #1104983 had a related patch set uploaded (by FNegri; author: FNegri):

[cloud/wmcs-cookbooks@main] Add default owner_team for wmcs-cookbooks

https://gerrit.wikimedia.org/r/1104983

Change #1104956 merged by jenkins-bot:

[operations/cookbooks@master] ownership: WMCS cookbooks

https://gerrit.wikimedia.org/r/1104956

Change #1104955 merged by jenkins-bot:

[operations/cookbooks@master] ownership: Observability cookbooks

https://gerrit.wikimedia.org/r/1104955

Change #1104983 merged by jenkins-bot:

[cloud/wmcs-cookbooks@main] Add default owner_team for wmcs-cookbooks

https://gerrit.wikimedia.org/r/1104983

Thanks @Volans for your work on this. I think that it will be very helpful. With reference your point here...

The choice to be able to mark only one team as owner is intentional, as multiple owners will only risk to create more confusion than help.

I think there are at least a few cases where multiple teams, or at least a cross-team grouping might be more helpful and, ultimately, safer.
For example, you have submitted a CR for sre.ceph.roll-restart-reboot-server and allocated this cookbook to the Data-Platform team.

It's true that we have a production Ceph cluster and we use this cookbook, but so does cloud-services-team and also the Data-Persistence team.

The same goes for things like the sre.kafka cookbooks. Data-Platform looks after the kafka-jumbo-eqiad cluster, but not the kafka-logging-* nor kafka-main-* servers.

Similarly, the elasticsearch and k8s cookbooks are used by multiple teams. Is assigning one specific team in each case the fairest and most helpful solution?

In the cases of Ceph and Kubernetes, there are established special interest groups that might work as a contact group. What do you think to this suggestion?
I know that Kafka SIG has also been proposed, but we don't have one yet and I don't think anything similar exists for Elasticsearch/Opensearch at the moment.

Is there a technical reason why we couldn't have more than one team or contact group assigned to a cookbook? I can understand the idea that this would be the ideal solution, but it strikes me that there are these few exceptional cases where it would be a difficult fit at the moment.

Thanks @BTullis for your feedback.

I'm aware of those use cases and the related SIGs or other form of working groups. The problem with working groups though is the accountability. Working groups participation is voluntary and groups level of activity randomly depends on the participants involvement and availability at every given time. The groups can stop all activities without any handover process.
Hence usually working groups don't "own" anything.

In an early draft I had thought of adding working groups to the list of possible groups but talking with @joanna_borun we decided they wouldn't fulfill the accountability part of the requirements.

As for limiting to one team there is no specific technical reason to it. The problem with multiple teams is confusion and again accountability. If you pick the use cases in the task description it will easily confuse people that will not know which of the multiple teams listed contact and there is a concrete risk that neither team will be responsible for it.
Ideally for those particular cases that you mentioned there should be one team owning it and being a point of contact for it and then it can collaborate with all the others main users of the cookbook when making changes. For example the postgresql existing cookbook has been used by different teams in different circumstances. I/F has decided to take it and will collaborate with others when making changes.

Change #1104951 merged by jenkins-bot:

[operations/cookbooks@master] ownership: Data Persistence cookbooks

https://gerrit.wikimedia.org/r/1104951

Change #1104953 merged by jenkins-bot:

[operations/cookbooks@master] ownership: ServiceOps cookbooks

https://gerrit.wikimedia.org/r/1104953

In an early draft I had thought of adding working groups to the list of possible groups but talking with @joanna_borun we decided they wouldn't fulfill the accountability part of the requirements.

Got it! Makes sense.

Thanks. With that explanation, I'm happy with the changes proposed.

Change #1104952 merged by jenkins-bot:

[operations/cookbooks@master] ownership: Traffic cookbooks

https://gerrit.wikimedia.org/r/1104952

Change #1104954 merged by jenkins-bot:

[operations/cookbooks@master] ownership: Collaboration Services cookbooks

https://gerrit.wikimedia.org/r/1104954

Change #1104950 merged by jenkins-bot:

[operations/cookbooks@master] ownership: Data Platform cookbooks

https://gerrit.wikimedia.org/r/1104950

This feature is now live and cookbook ownership can be clearly seen when listing cookbooks (cookbook -l or cookbook -lv) and at the bottom of any cookbook's help message.