chef / chef/chef-server

Make Chef Server distributable under a configurable name - wordmarks in outputs

Open
#1,949 4 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Aspect: Packaging Status: To be prioritized Triage: Confirmed
Dominant language
Erlang
Stars
303
Forks
211
Avg merge
1d 8h
Merged PRs (30d)
5

Description

Motivation

As a Chef Infra redistributor, I would like to be able to redistribute Chef Infra server under a configurable name in order to make 3rd party distributions easier to produce and maintain in compliance with Chef Software's policy on trademarks https://www.chef.io/trademark-policy/

Specification

In other Chef Software repositories, we've adopted an approach wherein we create a file with constants in it (dist.rb in chef/chef) that correspond to Chef's wordmarks. We then replace all user-facing references to the wordmarks in the codebase with the constants. This allows 3rd party distros like Cinc.sh to build the code under new branding by swapping out the dist file and performing minor tweaks to the Omnibus conf.

Another approach also exists for Golang projects. Salim Afiune cooked up a a go code generator that's being implemented in Chef's go projects (see chef/go-libs for a full implementation + the code generator proper). When building, 3rd party distros simply feed a URL to a JSON file with their distro's wordmark replacements into go generate and then run plain old go build.

Original design proposal in chef/chef, which was re-used in multiple projects: https://github.com/chef/chef/issues/8376

Initial PR implementing dist.rb in chef/chef: https://github.com/chef/chef/pull/8368

The go code generator: https://github.com/chef/go-libs/tree/master/distgen

Let me know if I can provide any additional info about existing implementations of dist stuff, or if you want to explore an altogether different approach.

Downstream Impact

Somewhere between "none" and "everything" o.O For example, in chef/chef, we had a few situations that required changes beyond log messages and CLI outputs, such as having to rename the configuration directories. In the client repo, we addressed such concerns as we went, and ultimately managed to avoid breaking changes (altho a few deprecations resulted from the distro work). The bulk of the work should have no impact however, as it consists mostly of string replacements happening outside of logic and flow-control.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the linked chef/chef design proposal and initial dist.rb implementation, then compare the go-libs distgen implementation. Inventory Chef Server's user-facing wordmarks and determine the required build and distribution changes; done means the server can be built with configurable branding without breaking existing behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
erlang
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.