"Phabricator" and "Phacility" are trademarked names, and the logo is copyrighted. To start an initial fork we need update the source code and remove references which identify the product as Phabricator in order to abide by trademark/copyright laws and expectations. This particularly needs to be done so that changes to the product are clearly reflected as being work done by Phorge community/organization and not Phabricator/Phacility.
EvanP has communicated that he would be willing to accept an upstream patch that makes the branding of the site configurable/convenient. The primary diffs which pull out mentions of "Phabricator" and "Phacility" should be done in a means that it would be accepted upstream.
The ideal strategy for this looks roughly like:
1. Extract out the words "Phabricator" and "Phacility" from user-visible strings, in both rP and rARC , to instead pull the project name and organization from a single static method (one method in rP which pulls the hard-coded value defined in rARC).
2. Leave the hard-coded values as "Phabricator" and "Phacility"
3. Submit the change upstream to Phabricator
4. Everything goes perfectly and the changes are adopted
5. Pull in the accepted changes from upstream
6. Replace the project name, organization name, and the logo/favicon with Phorge-branded assets
7. Complete.
---
Various places identified as indicating "Phabricator"
- [ ] Various places in the settings
- [ ] Auth app
- [x] Diviner mentions Phabricator in the command line example for building docs and additionally calls it Phabricator documentation
- Marking as completed because this is being addressed by {T15012}
- [ ] Emails mention Phabricator in various subjects, bodies and sender names
- [ ] Logo, Phorge-branded assets to be created via {T15005}
- [ ] `./NOTICE` has some legal text we might need help with.
- [ ] Emails have a bunch of `X-Phabricator-*` headers, for configuring rules in mail clients.
- We may want to allow installs to keep it as `Phabricator` for compatibility
- [ ] `PhabricatorAphlictManagementWorkflow.php` has several hard-coded paths assuming the project is checked out under the directory name of `phabricator`, which will need changed to checking `phorge` first and then `phabricator` if it doesn't exist, otherwise installing Aphlict will fail to locate the default configuration file for anyone starting from a fresh install vs. updating their existing checkout.
- [ ] `PhabricatorDaemonsSetupCheck.php` creates several setup issues with `.addCommand('phabricator/ $ ./bin/phd ...')`. I believe this is just text that is displayed to the admins of a site however the `phabricator/` here represents the repository of the project. This along with the above issue related to Alphict assuming `phabricator` as a directory name we may need to extract out a similar "project repo name" to be used in these places.
- [ ] `PhabricatorPHPPreflightSetupCheck.php` creates a setup issue which includes a link using `https://phurl.io` -- these Phurl links will direct to content hosted on `secure.phabricator.com`. I'm not sure what to do about these. In this case the content being linked to is https://secure.phabricator.com/T12101. We probably need to extract the content into a Diviner doc and link to that instead? Looking at some of the other setup issues linking to docs/content it looks like there's a way to do this via `PhabricatorEnv::getDoclink('Managing Daemons with phd')` which I'm assuming links to https://secure.phabricator.com/book/phabricator/article/managing_daemons/.
- [ ] `PhabricatorConfigConsoleController.php` the `loadVersions()` method has hardcoded references to `phabricator` and `arcanist` repository names which are used to inspect the version. It also inspects the git repository looking for remotes that are hosted on either `github.com` or `secure.phabricator.com`. We will need to update the repository name checking and the remote locations to swap `secure.phabricator.com` to `we.phorge.it`.
- [ ] `PHUIBadgeExample.php` creates an example "Lead Developer" badge with the title of "Lead Developer of Phabricator" which we can change to "Phorge" but has a "source" of "Direct Award (epriestley)". This page is all example usage of UI mostly for Phabricator developers. I'm fine with keeping these types of tributes to `epriestley` but we should check with Evan if he'd like to have his name removed as well. Checking on https://secure.phabricator.com/uiexample/view/PHUIBadgeExample/ it doesn't look like this actually appears in the UI but this might be a bug -- in the resulting HTML this information does appear and is supposed to show on the "back" of the badge when it's flipped over by clicking it.
- [ ] `PhabricatorEnv.php` in the `initializeCommonEnvironment()` and `getEmptyCWD()` functions there are hardcoded calls to `phutil_get_library_root('phabricator')`. When we extract the repository name we will need to search for other uses of `phutil_get_library_root()` as there are likely other `phabricator` we need to extract.
- [ ] `PhabricatorEnv.php` in the `getDocLink()` function it hardcodes the project URI to `https://secure.phabricator.com`.
- [ ] `scripts/sql/manage_storage.php` script sets a multi-line synopsis using `<<<EOHELP` block which is not translated using `pht()`. We might just need to address this in a separate diff to hardcode "Phorge" after the other changes. Although in other PHP scripts it looks like this can be sent through `pht()` (see `PhabricatorClusterConfigOptions.php` use of `<<<EOTEXT`)
- [ ] `scripts/sql/manage_storage.php` will spit out an error during an exception which references `phabricator/ $ ./bin/config ...`, there are likely numerous of these throughout the `scripts/` files.
- [ ] `resources/sql/patches/20130820.file-mailkey-populate.php` prints out translated text with "Phabricator. We could change this but this is probably fine to leave as-is.
- [ ] `PhabricatorCoreConfigOptions.php` an example for `phabricator.base-uri` is given as `http://phabricator.example.com/`. This should be changed to `https://phorge.example.com` in a separate diff after everything else is merged. Same with `phabricator.production-uri`, `phabricator.allowed-uris`. This also shows up in the `didValidateOption()` function when an exception is thrown with an error message.
- [ ] `PhabricatorMetaMTAConfigOptions.php` defines `$single_description` to be text that includes example email addresses using `phabricator@example.com` which should be updated after the changes are merged.
- [ ] `PhabricatorMySQLConfigOptions.php` defines options which default the `storage.default-namespace` to `phabricator` as well as mention that value in the description.
- [ ] `PhabricatorSetupIssueView.php` uses `hsprintf()` to print out `phabricator/ $ ./bin/config ...` text, another hard-coded repo reference
- [ ] `PhabricatorSetupIssueView.php` has a function `renderRestartLink()` which looks up a Diviner book by title, "Restarting Phabricator" which will need to be updated to match our Diviner book.
- [ ] `PhabricatorOAuthServerApplication.php` has a function `getHelpDocumentationArticles()` which retrieves a Diviner doc by title, "Using the Phabricator OAuth Server". This will need to be updated to match our Diviner book title.
- [ ] `PhabricatorSpacesNamespaceEditor.php` the `getEditorApplicationClass()` function is returning a translated version of a class name. This looks wrong and the call to `pht()` should probably be removed?
- [ ] `PhabricatorProjectBuiltinsExample.php` has a function `renderExample()` which calls `phutil_get_library_root('phabricator')` which will need updated to use the project repo name instead.