Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14056139
D10493.id25221.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
23 KB
Referenced Files
None
Subscribers
None
D10493.id25221.diff
View Options
diff --git a/conf/default.conf.php b/conf/default.conf.php
--- a/conf/default.conf.php
+++ b/conf/default.conf.php
@@ -630,9 +630,6 @@
// 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/sql/autopatches/20140914.betaproto.php b/resources/sql/autopatches/20140914.betaproto.php
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20140914.betaproto.php
@@ -0,0 +1,24 @@
+<?php
+
+$old_key = 'phabricator.show-beta-applications';
+$new_key = 'phabricator.show-prototypes';
+
+echo "Migrating '{$old_key}' to '{$new_key}'...\n";
+
+if (PhabricatorEnv::getEnvConfig($new_key)) {
+ echo "Skipping migration, new data is already set.\n";
+ return;
+}
+
+$old = PhabricatorEnv::getEnvConfigIfExists($old_key);
+if (!$old) {
+ echo "Skipping migration, old data does not exist.\n";
+ return;
+}
+
+PhabricatorConfigEntry::loadConfigEntry($new_key)
+ ->setIsDeleted(0)
+ ->setValue($old)
+ ->save();
+
+echo "Done.\n";
diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php
--- a/src/applications/base/PhabricatorApplication.php
+++ b/src/applications/base/PhabricatorApplication.php
@@ -53,8 +53,8 @@
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 @@
}
- public function isBeta() {
+ public function isPrototype() {
return false;
}
diff --git a/src/applications/calendar/application/PhabricatorCalendarApplication.php b/src/applications/calendar/application/PhabricatorCalendarApplication.php
--- a/src/applications/calendar/application/PhabricatorCalendarApplication.php
+++ b/src/applications/calendar/application/PhabricatorCalendarApplication.php
@@ -28,7 +28,7 @@
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
--- a/src/applications/chatlog/application/PhabricatorChatLogApplication.php
+++ b/src/applications/chatlog/application/PhabricatorChatLogApplication.php
@@ -18,7 +18,7 @@
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
--- a/src/applications/config/check/PhabricatorSetupCheckExtraConfig.php
+++ b/src/applications/config/check/PhabricatorSetupCheckExtraConfig.php
@@ -190,6 +190,10 @@
'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
--- a/src/applications/config/option/PhabricatorCoreConfigOptions.php
+++ b/src/applications/config/option/PhabricatorCoreConfigOptions.php
@@ -24,6 +24,17 @@
$path = getenv('PATH');
+ $proto_doc_href = PhabricatorEnv::getDoclink(
+ 'User Guide: Prototype Applications');
+
+ $proto_doc_link = phutil_tag(
+ 'a',
+ array(
+ 'href' => $proto_doc_href,
+ 'target' => '_blank',
+ ),
+ pht('User Guide: Prototype Applications'));
+
return array(
$this->newOption('phabricator.base-uri', 'string', null)
->setLocked(true)
@@ -86,25 +97,32 @@
'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('Install Prototypes'),
+ pht('Uninstall 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.".
+ "\n\n".
+ "After enabling prototypes, you can selectively uninstall them ".
+ "(like normal applications).",
+ $proto_doc_link)),
$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
--- a/src/applications/diffusion/controller/DiffusionRepositoryNewController.php
+++ b/src/applications/diffusion/controller/DiffusionRepositoryNewController.php
@@ -47,8 +47,7 @@
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
--- a/src/applications/drydock/application/PhabricatorDrydockApplication.php
+++ b/src/applications/drydock/application/PhabricatorDrydockApplication.php
@@ -30,7 +30,7 @@
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
--- a/src/applications/fact/application/PhabricatorFactApplication.php
+++ b/src/applications/fact/application/PhabricatorFactApplication.php
@@ -22,7 +22,7 @@
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
--- a/src/applications/fund/application/PhabricatorFundApplication.php
+++ b/src/applications/fund/application/PhabricatorFundApplication.php
@@ -26,7 +26,7 @@
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
--- a/src/applications/harbormaster/application/PhabricatorHarbormasterApplication.php
+++ b/src/applications/harbormaster/application/PhabricatorHarbormasterApplication.php
@@ -36,7 +36,7 @@
);
}
- public function isBeta() {
+ public function isPrototype() {
return true;
}
diff --git a/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php b/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php
--- a/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php
+++ b/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php
@@ -77,10 +77,22 @@
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 @@
->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
--- a/src/applications/meta/controller/PhabricatorApplicationUninstallController.php
+++ b/src/applications/meta/controller/PhabricatorApplicationUninstallController.php
@@ -27,21 +27,21 @@
$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
--- a/src/applications/meta/query/PhabricatorAppSearchEngine.php
+++ b/src/applications/meta/query/PhabricatorAppSearchEngine.php
@@ -24,8 +24,8 @@
'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 @@
$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 @@
)))
->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 @@
$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
--- a/src/applications/meta/query/PhabricatorApplicationQuery.php
+++ b/src/applications/meta/query/PhabricatorApplicationQuery.php
@@ -4,7 +4,7 @@
extends PhabricatorCursorPagedPolicyAwareQuery {
private $installed;
- private $beta;
+ private $prototypes;
private $firstParty;
private $nameContains;
private $unlisted;
@@ -27,8 +27,8 @@
return $this;
}
- public function withBeta($beta) {
- $this->beta = $beta;
+ public function withPrototypes($prototypes) {
+ $this->prototypes = $prototypes;
return $this;
}
@@ -99,9 +99,9 @@
}
}
- 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
--- a/src/applications/meta/view/PhabricatorApplicationLaunchView.php
+++ b/src/applications/meta/view/PhabricatorApplicationLaunchView.php
@@ -43,16 +43,6 @@
),
$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
--- a/src/applications/nuance/application/PhabricatorNuanceApplication.php
+++ b/src/applications/nuance/application/PhabricatorNuanceApplication.php
@@ -14,7 +14,7 @@
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
--- a/src/applications/oauthserver/application/PhabricatorOAuthServerApplication.php
+++ b/src/applications/oauthserver/application/PhabricatorOAuthServerApplication.php
@@ -30,7 +30,7 @@
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
--- a/src/applications/phame/application/PhabricatorPhameApplication.php
+++ b/src/applications/phame/application/PhabricatorPhameApplication.php
@@ -26,7 +26,7 @@
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
--- a/src/applications/phlux/application/PhabricatorPhluxApplication.php
+++ b/src/applications/phlux/application/PhabricatorPhluxApplication.php
@@ -26,7 +26,7 @@
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
--- a/src/applications/phortune/application/PhabricatorPhortuneApplication.php
+++ b/src/applications/phortune/application/PhabricatorPhortuneApplication.php
@@ -26,7 +26,7 @@
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
--- a/src/applications/phragment/application/PhabricatorPhragmentApplication.php
+++ b/src/applications/phragment/application/PhabricatorPhragmentApplication.php
@@ -26,7 +26,7 @@
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
--- a/src/applications/phrequent/application/PhabricatorPhrequentApplication.php
+++ b/src/applications/phrequent/application/PhabricatorPhrequentApplication.php
@@ -14,7 +14,7 @@
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
--- a/src/applications/ponder/application/PhabricatorPonderApplication.php
+++ b/src/applications/ponder/application/PhabricatorPonderApplication.php
@@ -41,7 +41,7 @@
);
}
- 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
--- /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
--- a/src/infrastructure/testing/PhabricatorTestCase.php
+++ b/src/infrastructure/testing/PhabricatorTestCase.php
@@ -102,7 +102,7 @@
'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
--- 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 @@
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;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Nov 17, 6:26 PM (21 h, 56 m ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6728595
Default Alt Text
D10493.id25221.diff (23 KB)
Attached To
Mode
D10493: Rename "beta" to "prototype" and document support policy
Attached
Detach File
Event Timeline
Log In to Comment