Make Chef Server distributable under a configurable name - wordmarks in outputs
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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