With Phacility [[ https://admin.phacility.com/phame/post/view/11/phacility_is_winding_down_operations/ | winding down operations ]], maintenance of Phabricator no longer receiving regular updates, and Phabricator being an open source project, there are a number of discussions around creating forks.
The Phabricator application contains a large number of references to the product and organization names which are both trademarked. To make rebranding easier I've been investigating what these changes might look like and would like to discuss the approach with Phacility, and if agreeable submit these changes for upstream. These findings are based only on where "Phabricator" or "Phacility" appears in the user interface, and not changing the 20,000 files/classes/variables under the sea.
In reviewing where "Phabricator" appears in code the set of changes I believe would need to be made are
1. Create something like `src/infrastructure/Platform.php with `getProjectName()` to return "Phabricator" and `getOrgName()` to return "Phacility".
2. Update the the ~500 "Phabricator" and "Phacility" references used in translated text (appearing in `pht()`) to swap out for `%s` and the appropriate new function to be called
- Invalidates ~500 * 6 translations, update these
3. Create `Platform::getProjectRepo()` to return "phabricator", or instead detect the repository name. There are a number of places which assume the project is checked out under `phabricator`, both functionally as well as when displayed to the user, e.g. "Run this command to change configuration, `phabricator/ $ ./bin/config ...`.
- There are a number of places which invoke `phutil_get_library_root('phabricator')` which would be updated to use this new function.
- There are an assortment of examples displayed to the user in the style of `http://phabricator.company.com` which could be updated to use this instead.
4. Update Diviner document sources to remove "Phabricator" and "Phacility" naming. I'm not yet clear with Diviner on whether these would be able to make use of dynamic naming based on `getProjectName()`.
- In the application code there are a number of places which retrieve the location of diviner docs to link to using `PhabricatorEnv::getDoclink()` which reference documents that currently use "Phabricator" in the document name.
5. There are an assortment of references or links to `phurl.io` and `Tnnnn` for further information on things. My best guess for this is producing new Diviner documents on these topics and linking to them via `getDocLink()`.
6. `PHUIBadgeExample.php` indicates Lead Developer badge was awarded by `epriestley` - this could be updated to George Washington or similar if it's preferred to not have this. Although in the UI this text does not appear to show (possible bug?).
There are a number of preferences with `phabricator` in the name. This current approach would leave these alone for now.