Forking to Sous Chefs


Hard Fork

Where it is not possible to contact the existing owner and transfer ownership to the sous-chefs, we can take over maintenance of a codebase by creating a hard fork.

Adoption Note

If adopting an existing cookbook you must use the current name to carry on support for the existing user base. In this case please see cookbook transferring

Before you begin

A hard fork is not the friendliest approach, so we should make no other options are available. Typically, a hard fork decision will be made only after:

  • sous-chefs receives a request to fork from someone willing to be primary maintainer
  • verify that the cookbook is not adequately maintained
  • notify the original maintainers that we’ve received a request to fork, request that they 1) resume active maintenance or 2) transfer to sous-chefs. Include a deadline to respond (the Friday after 1 week)
  • create a soft fork so people have a place to test and merge PRs immediately
  • if the original maintainers don’t respond by the deadline, vote to fork on the day of the deadline

Sous Chefs should not make a release until we know whether we get a transfer (and keep the name) or have to do a hard fork (and affix sc-)

Procedure

You should rename using the following naming schema:

  • Cookbook: mongodbsc-mongodb as per RFC-78
  • Repository: sc-mongodb

Use of provides to maintain resource compatibility

When forking a cookbook you can use Provides to force backwards compatible resource names. As an example this would allow you to fork a cookbook foo with a resource bar and maintain foo_bar even though the cookbook is now named sc_foo. This would be accomplished by adding this code to the bar resource:

1provides :foo_bar

See https://docs.chef.io/custom_resources.html#provides for additional examples.