From 298604c9d35dedab504b8f77aa1f184a575e7a27 Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 17 Sep 2014 18:25:57 -0700 Subject: [PATCH] Rename "beta" to "prototype" and document support policy Summary: Fixes T6084. Changes: - Rename `phabricator.show-beta-applications` to `phabricator.show-prototypes`, to reinforce that these include early-development applications. - Migrate the config setting. - Add an explicit "no support" banner to the config page. - Rename "Beta" to "Prototype" in the UI. - Use "bomb" icon instead of "half star" icon. - Document prototype applications in more detail. - Explicitly document that we do not support these applications. Test Plan: - Ran migration. - Resolved "obsolete config" issue. - Viewed config setting. - Browsed prototypes in Applications app. - Viewed documentation. Reviewers: chad, btrahan Reviewed By: btrahan Subscribers: epriestley, hach-que Maniphest Tasks: T6084 Differential Revision: https://secure.phabricator.com/D10493 --- conf/default.conf.php | 3 - resources/celerity/map.php | 6 +- .../sql/autopatches/20140914.betaproto.php | 24 +++++++ .../base/PhabricatorApplication.php | 6 +- .../PhabricatorCalendarApplication.php | 2 +- .../PhabricatorChatLogApplication.php | 2 +- .../PhabricatorSetupCheckExtraConfig.php | 4 ++ .../option/PhabricatorCoreConfigOptions.php | 34 ++++++---- .../DiffusionRepositoryNewController.php | 3 +- .../PhabricatorDrydockApplication.php | 2 +- .../PhabricatorFactApplication.php | 2 +- .../PhabricatorFundApplication.php | 2 +- .../PhabricatorHarbormasterApplication.php | 2 +- ...ricatorApplicationDetailViewController.php | 24 +++++-- ...bricatorApplicationUninstallController.php | 12 ++-- .../meta/query/PhabricatorAppSearchEngine.php | 29 +++++---- .../query/PhabricatorApplicationQuery.php | 10 +-- .../view/PhabricatorApplicationLaunchView.php | 10 --- .../PhabricatorNuanceApplication.php | 2 +- .../PhabricatorOAuthServerApplication.php | 2 +- .../PhabricatorPhameApplication.php | 2 +- .../PhabricatorPhluxApplication.php | 2 +- .../PhabricatorPhortuneApplication.php | 2 +- .../PhabricatorPhragmentApplication.php | 2 +- .../PhabricatorPhrequentApplication.php | 2 +- .../PhabricatorPonderApplication.php | 2 +- src/docs/user/userguide/prototypes.diviner | 65 +++++++++++++++++++ .../testing/PhabricatorTestCase.php | 2 +- .../phabricator-application-launch-view.css | 8 --- 29 files changed, 185 insertions(+), 83 deletions(-) create mode 100644 resources/sql/autopatches/20140914.betaproto.php create mode 100644 src/docs/user/userguide/prototypes.diviner diff --git a/conf/default.conf.php b/conf/default.conf.php index f8c9e3e427..663a008b20 100644 --- a/conf/default.conf.php +++ b/conf/default.conf.php @@ -630,9 +630,6 @@ return array( // be enabled in production. 'phabricator.developer-mode' => false, - // Should Phabricator show beta applications on the homepage - 'phabricator.show-beta-applications' => false, - // Contains a list of uninstalled applications 'phabricator.uninstalled-applications' => array(), diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 3ec7241b5a..db9d161802 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -7,7 +7,7 @@ */ return array( 'names' => array( - 'core.pkg.css' => 'f4235a32', + 'core.pkg.css' => '3317a3ad', 'core.pkg.js' => 'cbdbd552', 'darkconsole.pkg.js' => 'df001cab', 'differential.pkg.css' => '36884139', @@ -38,7 +38,7 @@ return array( 'rsrc/css/application/auth/auth.css' => '1e655982', 'rsrc/css/application/base/main-menu-view.css' => 'aceca0e9', 'rsrc/css/application/base/notification-menu.css' => '6aa0a74b', - 'rsrc/css/application/base/phabricator-application-launch-view.css' => '8b7e271d', + 'rsrc/css/application/base/phabricator-application-launch-view.css' => '5d71008f', 'rsrc/css/application/base/standard-page-view.css' => 'dd860661', 'rsrc/css/application/chatlog/chatlog.css' => '852140ff', 'rsrc/css/application/config/config-options.css' => '7fedf08b', @@ -705,7 +705,7 @@ return array( 'path-typeahead' => 'f7fc67ec', 'people-profile-css' => '5402f7a5', 'phabricator-action-list-view-css' => '9ee9910a', - 'phabricator-application-launch-view-css' => '8b7e271d', + 'phabricator-application-launch-view-css' => '5d71008f', 'phabricator-busy' => '6453c869', 'phabricator-chatlog-css' => '852140ff', 'phabricator-content-source-view-css' => '4b8b05d4', diff --git a/resources/sql/autopatches/20140914.betaproto.php b/resources/sql/autopatches/20140914.betaproto.php new file mode 100644 index 0000000000..4471d47fee --- /dev/null +++ b/resources/sql/autopatches/20140914.betaproto.php @@ -0,0 +1,24 @@ +setIsDeleted(0) + ->setValue($old) + ->save(); + +echo "Done.\n"; diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php index 9786ce1de4..c58ad98560 100644 --- a/src/applications/base/PhabricatorApplication.php +++ b/src/applications/base/PhabricatorApplication.php @@ -53,8 +53,8 @@ abstract class PhabricatorApplication implements PhabricatorPolicyInterface { return true; } - $beta = PhabricatorEnv::getEnvConfig('phabricator.show-beta-applications'); - if (!$beta && $this->isBeta()) { + $prototypes = PhabricatorEnv::getEnvConfig('phabricator.show-prototypes'); + if (!$prototypes && $this->isPrototype()) { return false; } @@ -65,7 +65,7 @@ abstract class PhabricatorApplication implements PhabricatorPolicyInterface { } - public function isBeta() { + public function isPrototype() { return false; } diff --git a/src/applications/calendar/application/PhabricatorCalendarApplication.php b/src/applications/calendar/application/PhabricatorCalendarApplication.php index 7ed82d841e..20d1106a06 100644 --- a/src/applications/calendar/application/PhabricatorCalendarApplication.php +++ b/src/applications/calendar/application/PhabricatorCalendarApplication.php @@ -28,7 +28,7 @@ final class PhabricatorCalendarApplication extends PhabricatorApplication { return "\xE2\x8C\xA8"; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/chatlog/application/PhabricatorChatLogApplication.php b/src/applications/chatlog/application/PhabricatorChatLogApplication.php index 85122ebf7a..f7329565c3 100644 --- a/src/applications/chatlog/application/PhabricatorChatLogApplication.php +++ b/src/applications/chatlog/application/PhabricatorChatLogApplication.php @@ -18,7 +18,7 @@ final class PhabricatorChatLogApplication extends PhabricatorApplication { return 'chatlog'; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/config/check/PhabricatorSetupCheckExtraConfig.php b/src/applications/config/check/PhabricatorSetupCheckExtraConfig.php index e7d295c9c2..fc67499f44 100644 --- a/src/applications/config/check/PhabricatorSetupCheckExtraConfig.php +++ b/src/applications/config/check/PhabricatorSetupCheckExtraConfig.php @@ -190,6 +190,10 @@ final class PhabricatorSetupCheckExtraConfig extends PhabricatorSetupCheck { 'differential.show-host-field' => $differential_field_reason, 'differential.show-test-plan-field' => $differential_field_reason, 'differential.field-selector' => $differential_field_reason, + 'phabricator.show-beta-applications' => pht( + 'This option has been renamed to `phabricator.show-prototypes` '. + 'to emphasize the unfinished nature of many prototype applications. '. + 'Your existing setting has been migrated.'), ); return $ancient_config; diff --git a/src/applications/config/option/PhabricatorCoreConfigOptions.php b/src/applications/config/option/PhabricatorCoreConfigOptions.php index 6d7a66b146..2d365c506d 100644 --- a/src/applications/config/option/PhabricatorCoreConfigOptions.php +++ b/src/applications/config/option/PhabricatorCoreConfigOptions.php @@ -24,6 +24,10 @@ final class PhabricatorCoreConfigOptions $path = getenv('PATH'); + $proto_doc_href = PhabricatorEnv::getDoclink( + 'User Guide: Prototype Applications'); + $proto_doc_name = pht('User Guide: Prototype Applications'); + return array( $this->newOption('phabricator.base-uri', 'string', null) ->setLocked(true) @@ -86,25 +90,33 @@ final class PhabricatorCoreConfigOptions 'Phabricator instances are running on both domains, this will '. 'create a collision preventing you from logging in.')) ->addExample('dev', pht('Prefix cookie with "dev"')), - $this->newOption('phabricator.show-beta-applications', 'bool', false) + $this->newOption('phabricator.show-prototypes', 'bool', false) ->setBoolOptions( array( - pht('Install Beta Applications'), - pht('Uninstall Beta Applications') + pht('Enable Prototypes'), + pht('Disable Prototypes') )) ->setSummary( pht( 'Install applications which are still under development.')) ->setDescription( pht( - "Phabricator includes 'Beta' applications which are in an early ". - "stage of development. They range from very rough prototypes to ". - "relatively complete (but unpolished) applications.\n\n". - "By default, Beta applications are not installed. You can enable ". - "this option to install them if you're interested in previewing ". - "upcoming features.\n\n". - "After enabling Beta applications, you can selectively uninstall ". - "them (like normal applications).")), + "IMPORTANT: The upstream does not provide support for prototype ". + "applications.". + "\n\n". + "Phabricator includes prototype applications which are in an ". + "**early stage of development**. By default, prototype ". + "applications are not installed, because are often not yet ". + "developed enough to be generally usable. You can enable ". + "this option to install them if you're developing Phabricator ". + "or are interested in previewing upcoming features.". + "\n\n". + "To learn more about prototypes, see [[ %s | %s ]].". + "\n\n". + "After enabling prototypes, you can selectively uninstall them ". + "(like normal applications).", + $proto_doc_href, + $proto_doc_name)), $this->newOption('phabricator.serious-business', 'bool', false) ->setBoolOptions( array( diff --git a/src/applications/diffusion/controller/DiffusionRepositoryNewController.php b/src/applications/diffusion/controller/DiffusionRepositoryNewController.php index f1f0cd95e1..65d35fd4ae 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryNewController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryNewController.php @@ -47,8 +47,7 @@ final class DiffusionRepositoryNewController extends DiffusionController { array( pht( 'Create a new, empty repository which Phabricator will host. '. - 'For instructions on configuring repository hosting, see %s. '. - 'This feature is new and in beta!', + 'For instructions on configuring repository hosting, see %s.', $doc_link), )) ->addButton( diff --git a/src/applications/drydock/application/PhabricatorDrydockApplication.php b/src/applications/drydock/application/PhabricatorDrydockApplication.php index eee22fff32..fa8b695216 100644 --- a/src/applications/drydock/application/PhabricatorDrydockApplication.php +++ b/src/applications/drydock/application/PhabricatorDrydockApplication.php @@ -30,7 +30,7 @@ final class PhabricatorDrydockApplication extends PhabricatorApplication { return self::GROUP_UTILITIES; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/fact/application/PhabricatorFactApplication.php b/src/applications/fact/application/PhabricatorFactApplication.php index 0cf6c1bc92..f4dd131e58 100644 --- a/src/applications/fact/application/PhabricatorFactApplication.php +++ b/src/applications/fact/application/PhabricatorFactApplication.php @@ -22,7 +22,7 @@ final class PhabricatorFactApplication extends PhabricatorApplication { return self::GROUP_UTILITIES; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/fund/application/PhabricatorFundApplication.php b/src/applications/fund/application/PhabricatorFundApplication.php index e1a04520b8..87524d692e 100644 --- a/src/applications/fund/application/PhabricatorFundApplication.php +++ b/src/applications/fund/application/PhabricatorFundApplication.php @@ -26,7 +26,7 @@ final class PhabricatorFundApplication extends PhabricatorApplication { return self::GROUP_UTILITIES; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/harbormaster/application/PhabricatorHarbormasterApplication.php b/src/applications/harbormaster/application/PhabricatorHarbormasterApplication.php index 38a47f6b60..bc17610852 100644 --- a/src/applications/harbormaster/application/PhabricatorHarbormasterApplication.php +++ b/src/applications/harbormaster/application/PhabricatorHarbormasterApplication.php @@ -36,7 +36,7 @@ final class PhabricatorHarbormasterApplication extends PhabricatorApplication { ); } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php b/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php index 7db750bbc9..264071b615 100644 --- a/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php +++ b/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php @@ -77,10 +77,22 @@ final class PhabricatorApplicationDetailViewController phutil_tag('em', array(), $application->getFlavorText())); } - if ($application->isBeta()) { + if ($application->isPrototype()) { + $proto_href = PhabricatorEnv::getDoclink( + 'User Guide: Prototype Applications'); + $learn_more = phutil_tag( + 'a', + array( + 'href' => $proto_href, + 'target' => '_blank', + ), + pht('Learn More')); + $properties->addProperty( - pht('Release'), - pht('Beta')); + pht('Prototype'), + pht( + 'This application is a prototype. %s', + $learn_more)); } $overview = $application->getOverview(); @@ -160,9 +172,9 @@ final class PhabricatorApplicationDetailViewController ->setHref( $this->getApplicationURI(get_class($selected).'/install/')); - $beta_enabled = PhabricatorEnv::getEnvConfig( - 'phabricator.show-beta-applications'); - if ($selected->isBeta() && !$beta_enabled) { + $prototypes_enabled = PhabricatorEnv::getEnvConfig( + 'phabricator.show-prototypes'); + if ($selected->isPrototype() && !$prototypes_enabled) { $action->setDisabled(true); } diff --git a/src/applications/meta/controller/PhabricatorApplicationUninstallController.php b/src/applications/meta/controller/PhabricatorApplicationUninstallController.php index 80b0151cfa..b8f9ce413c 100644 --- a/src/applications/meta/controller/PhabricatorApplicationUninstallController.php +++ b/src/applications/meta/controller/PhabricatorApplicationUninstallController.php @@ -27,21 +27,21 @@ final class PhabricatorApplicationUninstallController $view_uri = $this->getApplicationURI('view/'.$this->application); - $beta_enabled = PhabricatorEnv::getEnvConfig( - 'phabricator.show-beta-applications'); + $prototypes_enabled = PhabricatorEnv::getEnvConfig( + 'phabricator.show-prototypes'); $dialog = id(new AphrontDialogView()) ->setUser($user) ->addCancelButton($view_uri); - if ($selected->isBeta() && !$beta_enabled) { + if ($selected->isPrototype() && !$prototypes_enabled) { $dialog - ->setTitle(pht('Beta Applications Not Enabled')) + ->setTitle(pht('Prototypes Not Enabled')) ->appendChild( pht( - 'To manage beta applications, enable them by setting %s in your '. + 'To manage prototypes, enable them by setting %s in your '. 'Phabricator configuration.', - phutil_tag('tt', array(), 'phabricator.show-beta-applications'))); + phutil_tag('tt', array(), 'phabricator.show-prototypes'))); return id(new AphrontDialogResponse())->setDialog($dialog); } diff --git a/src/applications/meta/query/PhabricatorAppSearchEngine.php b/src/applications/meta/query/PhabricatorAppSearchEngine.php index 09cbce2044..a91531220d 100644 --- a/src/applications/meta/query/PhabricatorAppSearchEngine.php +++ b/src/applications/meta/query/PhabricatorAppSearchEngine.php @@ -24,8 +24,8 @@ final class PhabricatorAppSearchEngine 'installed', $this->readBoolFromRequest($request, 'installed')); $saved->setParameter( - 'beta', - $this->readBoolFromRequest($request, 'beta')); + 'prototypes', + $this->readBoolFromRequest($request, 'prototypes')); $saved->setParameter( 'firstParty', $this->readBoolFromRequest($request, 'firstParty')); @@ -51,9 +51,16 @@ final class PhabricatorAppSearchEngine $query->withInstalled($installed); } - $beta = $saved->getParameter('beta'); - if ($beta !== null) { - $query->withBeta($beta); + $prototypes = $saved->getParameter('prototypes'); + + if ($prototypes === null) { + // NOTE: This is the old name of the 'prototypes' option, see T6084. + $prototypes = $saved->getParameter('beta'); + $saved->setParameter('prototypes', $prototypes); + } + + if ($prototypes !== null) { + $query->withPrototypes($prototypes); } $first_party = $saved->getParameter('firstParty'); @@ -92,13 +99,13 @@ final class PhabricatorAppSearchEngine ))) ->appendChild( id(new AphrontFormSelectControl()) - ->setLabel(pht('Beta')) - ->setName('beta') - ->setValue($this->getBoolFromQuery($saved, 'beta')) + ->setLabel(pht('Prototypes')) + ->setName('prototypes') + ->setValue($this->getBoolFromQuery($saved, 'prototypes')) ->setOptions( array( '' => pht('Show All Applications'), - 'true' => pht('Show Beta Applications'), + 'true' => pht('Show Prototype Applications'), 'false' => pht('Show Released Applications'), ))) ->appendChild( @@ -229,8 +236,8 @@ final class PhabricatorAppSearchEngine $item->addIcon('fa-times', pht('Uninstalled')); } - if ($application->isBeta()) { - $item->addIcon('fa-star-half-o grey', pht('Beta')); + if ($application->isPrototype()) { + $item->addIcon('fa-bomb grey', pht('Prototype')); } if (!$application->isFirstParty()) { diff --git a/src/applications/meta/query/PhabricatorApplicationQuery.php b/src/applications/meta/query/PhabricatorApplicationQuery.php index ebbdd8bb30..45a6f2f158 100644 --- a/src/applications/meta/query/PhabricatorApplicationQuery.php +++ b/src/applications/meta/query/PhabricatorApplicationQuery.php @@ -4,7 +4,7 @@ final class PhabricatorApplicationQuery extends PhabricatorCursorPagedPolicyAwareQuery { private $installed; - private $beta; + private $prototypes; private $firstParty; private $nameContains; private $unlisted; @@ -27,8 +27,8 @@ final class PhabricatorApplicationQuery return $this; } - public function withBeta($beta) { - $this->beta = $beta; + public function withPrototypes($prototypes) { + $this->prototypes = $prototypes; return $this; } @@ -99,9 +99,9 @@ final class PhabricatorApplicationQuery } } - if ($this->beta !== null) { + if ($this->prototypes !== null) { foreach ($apps as $key => $app) { - if ($app->isBeta() != $this->beta) { + if ($app->isPrototype() != $this->prototypes) { unset($apps[$key]); } } diff --git a/src/applications/meta/view/PhabricatorApplicationLaunchView.php b/src/applications/meta/view/PhabricatorApplicationLaunchView.php index 512221eb00..0e951b0dcd 100644 --- a/src/applications/meta/view/PhabricatorApplicationLaunchView.php +++ b/src/applications/meta/view/PhabricatorApplicationLaunchView.php @@ -43,16 +43,6 @@ final class PhabricatorApplicationLaunchView extends AphrontTagView { ), $application->getName()); - if ($application->isBeta()) { - $content[] = javelin_tag( - 'span', - array( - 'aural' => false, - 'class' => 'phabricator-application-beta', - ), - "\xCE\xB2"); - } - $content[] = phutil_tag( 'span', array( diff --git a/src/applications/nuance/application/PhabricatorNuanceApplication.php b/src/applications/nuance/application/PhabricatorNuanceApplication.php index 2ff6d3b02b..cbd5110959 100644 --- a/src/applications/nuance/application/PhabricatorNuanceApplication.php +++ b/src/applications/nuance/application/PhabricatorNuanceApplication.php @@ -14,7 +14,7 @@ final class PhabricatorNuanceApplication extends PhabricatorApplication { return "\xE2\x98\x8E"; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/oauthserver/application/PhabricatorOAuthServerApplication.php b/src/applications/oauthserver/application/PhabricatorOAuthServerApplication.php index d962f30351..0c9151b415 100644 --- a/src/applications/oauthserver/application/PhabricatorOAuthServerApplication.php +++ b/src/applications/oauthserver/application/PhabricatorOAuthServerApplication.php @@ -30,7 +30,7 @@ final class PhabricatorOAuthServerApplication extends PhabricatorApplication { return self::GROUP_ADMIN; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/phame/application/PhabricatorPhameApplication.php b/src/applications/phame/application/PhabricatorPhameApplication.php index e22545d01e..326c45e54e 100644 --- a/src/applications/phame/application/PhabricatorPhameApplication.php +++ b/src/applications/phame/application/PhabricatorPhameApplication.php @@ -26,7 +26,7 @@ final class PhabricatorPhameApplication extends PhabricatorApplication { return PhabricatorEnv::getDoclink('Phame User Guide'); } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/phlux/application/PhabricatorPhluxApplication.php b/src/applications/phlux/application/PhabricatorPhluxApplication.php index f4e745f645..1fc5ffe5d8 100644 --- a/src/applications/phlux/application/PhabricatorPhluxApplication.php +++ b/src/applications/phlux/application/PhabricatorPhluxApplication.php @@ -26,7 +26,7 @@ final class PhabricatorPhluxApplication extends PhabricatorApplication { return self::GROUP_UTILITIES; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/phortune/application/PhabricatorPhortuneApplication.php b/src/applications/phortune/application/PhabricatorPhortuneApplication.php index 605f8fe156..44bd31a871 100644 --- a/src/applications/phortune/application/PhabricatorPhortuneApplication.php +++ b/src/applications/phortune/application/PhabricatorPhortuneApplication.php @@ -26,7 +26,7 @@ final class PhabricatorPhortuneApplication extends PhabricatorApplication { return self::GROUP_UTILITIES; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/phragment/application/PhabricatorPhragmentApplication.php b/src/applications/phragment/application/PhabricatorPhragmentApplication.php index 823a603897..2a34573c5c 100644 --- a/src/applications/phragment/application/PhabricatorPhragmentApplication.php +++ b/src/applications/phragment/application/PhabricatorPhragmentApplication.php @@ -26,7 +26,7 @@ final class PhabricatorPhragmentApplication extends PhabricatorApplication { return self::GROUP_UTILITIES; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/phrequent/application/PhabricatorPhrequentApplication.php b/src/applications/phrequent/application/PhabricatorPhrequentApplication.php index aea25a4e3f..ba82157ff3 100644 --- a/src/applications/phrequent/application/PhabricatorPhrequentApplication.php +++ b/src/applications/phrequent/application/PhabricatorPhrequentApplication.php @@ -14,7 +14,7 @@ final class PhabricatorPhrequentApplication extends PhabricatorApplication { return '/phrequent/'; } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/applications/ponder/application/PhabricatorPonderApplication.php b/src/applications/ponder/application/PhabricatorPonderApplication.php index 336fa953f8..694fa86316 100644 --- a/src/applications/ponder/application/PhabricatorPonderApplication.php +++ b/src/applications/ponder/application/PhabricatorPonderApplication.php @@ -41,7 +41,7 @@ final class PhabricatorPonderApplication extends PhabricatorApplication { ); } - public function isBeta() { + public function isPrototype() { return true; } diff --git a/src/docs/user/userguide/prototypes.diviner b/src/docs/user/userguide/prototypes.diviner new file mode 100644 index 0000000000..0f9e2c292b --- /dev/null +++ b/src/docs/user/userguide/prototypes.diviner @@ -0,0 +1,65 @@ +@title User Guide: Prototype Applications +@group userguide + +Information about prototypes. + +Overview +======== + +Phabricator includes //prototype applications//, which are applications in an +early stage of development. + +IMPORTANT: The upstream does not offer support for these applications. + +When we begin working on a new application, we usually implement it as a +prototype first. This allows us to get a better sense of how the application +might work and integrate with other applications, and what technical and product +challenges it might face. + +Prototypes are often not generally usable. They usually aren't documented, +don't have safety and correctness checks in place, very rarely have full +integrations or APIs, and may be missing major pieces of critical functionality +or even not work at all. The parts of an application we prototype first +may not be the useful parts. + +Some applications leave the prototype phase quickly, but other applications may +not. We build some prototypes just to make sure a specific technical barrier is +surmountable, and may not finish the application for a very long time. In other +cases, the prototype seems less interesting or useful once it starts working +than we might have imagined it would be, or be far more challenging than we +thought. We may lower the priority of a project or put it on hold indefinitely +if we're less excited about it after we begin building it. + +If you're interested in previewing upcoming applications, you can use the +`phabricator.show-prototypes` configuration setting to enable prototypes. + +Feedback on Prototypes +====================== + +We're usually interested in this sort of feedback on prototypes: + + - {icon check, color=green} **Use Cases**: If we're building something that + you think you'd use, we'd love to hear about your use cases for it. This can + help us figure out what features to add and how users may think about, use, + and integrate the application. + - {icon check, color=green} **General Interest**: Is an application something + you're looking forward to? Knowing which applications users are interested + in can help us set priorities. + +We're usually **not** interested in this sort of feedback on prototypes: + + - {icon times, color=red} **Support Requests**: We do not support these + applications. Use them at your own risk, or wait for them to leave the + prototype phase. + - {icon times, color=red} **Bug Reports**: We know these applications don't + work well yet, and usually know about most of the open bugs. Even if we + don't, whatever isn't working yet may change completely before the + application leaves the prototype phase. + - {icon times, color=red} **Contributions / Pull Requests**: These + applications are usually in too early a state to accept contributions. Let + us know about your use case, but wait for release to send code. + +Overall, using prototypes makes it easier for us to explore and develop +application ideas, and to share a preview of what's coming in the future with +users, but prototypes are not yet full applications and we do not provide +support until applications leave the prototype phase. diff --git a/src/infrastructure/testing/PhabricatorTestCase.php b/src/infrastructure/testing/PhabricatorTestCase.php index ea03645fcf..14e2a30142 100644 --- a/src/infrastructure/testing/PhabricatorTestCase.php +++ b/src/infrastructure/testing/PhabricatorTestCase.php @@ -102,7 +102,7 @@ abstract class PhabricatorTestCase extends ArcanistPhutilTestCase { 'phabricator.uninstalled-applications', array()); $this->env->overrideEnvConfig( - 'phabricator.show-beta-applications', + 'phabricator.show-prototypes', true); // Reset application settings to defaults, particularly policies. diff --git a/webroot/rsrc/css/application/base/phabricator-application-launch-view.css b/webroot/rsrc/css/application/base/phabricator-application-launch-view.css index c412384df0..81117daa22 100644 --- a/webroot/rsrc/css/application/base/phabricator-application-launch-view.css +++ b/webroot/rsrc/css/application/base/phabricator-application-launch-view.css @@ -72,14 +72,6 @@ div.phabricator-application-launch-container { display: inline-block; } -.phabricator-application-beta { - position: absolute; - top: 4px; - left: 4px; - color: {$bluetext}; - font-size: 11px; -} - .phabricator-application-launch-attention { position: absolute; top: 8px;