Phabricator/Creating and renaming projects

New projects
Any member of the Project-Creators group can create new projects. To document creation of a new project (see criteria below), add a comment to T103700. To request creation of a new project (see criteria below), [ create a new task] under Project-Creators including these details:


 * Name
 * Description
 * Type of project
 * Policy (only if different from the default)

See Phabricator/Projects for a list of existing projects.

Phabricator is a public place. In order to keep some sanity and consistency, new tags and private projects must [ be proposed and discussed before being created]. Any other project types (except for sprints and releases) must be documented by adding a comment to T103700. This is true for everybody, project creators included. There is no formal decision process; common sense prevails. After someone has created the project, the person changes the status of the dedicated task to "resolved".

If a project is missing quality requirements or found problematic, a task can be created assigned to the creator of the project, describing what is missing. The project could be archived until its situation is clarified.

Name

 * Think of the shortest name that users can find easily typing ahead.
 * Ideally one word, otherwise multiple words must be connected with dashes in order to allow linking project names in the context of Phabricator's markup (cf. T43).
 * Unnecessary use of frequent words like "Wikimedia" or "MediaWiki" should be avoided, except for differentiation to help avoiding misunderstandings (e.g. WMF-Design for a Wikimedia Foundation team project, in contrast to general design issues)
 * Sentence case or CamelCase by default.

Good: Phabricator, MediaViewer, MediaWiki-Special-pages...

Bad: Wikimedia Phabricator, MediaViewer-for-MediaWiki, Code Review for Phabricator...

Description

 * Describe the project in a way a newcomer would understand it.
 * Add links to the relevant project pages.
 * Subprojects should link to their Phabricator parent project.

Type of project
This section was moved to Phabricator/Project management.

Additional hashtags
Hashtags are used to link to projects in descriptions and comments, as well as to call them in searches typing ahead.


 * Optional field, you can leave it empty.
 * Or you can add shorter / alternative tags that clearly identify with your project.

Good:  for Affiliations-Committee.

Bad: acronyms nobody will guess, misleading tags...

Policy
IMPORTANT: this policy applies to the project page itself, not to the tasks assigned to a project!

Default policy
The default access policies for Wikimedia Phabricator projects should be set to:
 * Visible To Public (no login required)
 * Editable By All Users
 * Joinable By All Users

This corresponds to the policies of wiki pages of teams, projects, extensions, etc, in mediawiki.org. Just like there is no reason to protect project wiki pages by default, there is no reason to protect Phabricator project pages by default.

Restricting Visible To
There should be no reason to restrict the visibility of a project page. All Wikimedia Phabricator projects should be Visible To Public (no login required).

Restricting Editable By
Similarly to wiki pages, protecting project pages from being edited by All Users should be an exceptional measure to prevent or respond to abuse.

Restricting Joinable By
This is an option to be used mainly for Team projects where membership provides special access to features. If you want to restrict this option you need to justify this decision in your request.

Note that Phabricator allows to subscribe and watch projects only to their members. If you want more users following your activity, you should let them join the projects. If you want to define who is an official member of your team, you can do so editing the project description.

Restricting access via Space policies
Spaces (upstream documentation) allow configuring groups of objects (like tasks) with the same view policies. Some teams might have certain types of tasks in their projects which they would like to make accessible to team members only. In this case, a space for that team can be set up.

Spaces apply their "Visible To" policy to all objects (like tasks) inside the space. A Space's policy is absolute and stronger than any other policy rules. If a user cannot see a space, the user can never see objects inside the space either, even if they are author, assignee or subscriber of the task in that space. (To allow users which are not member of the space to view or edit an object in the Space, a Custom Policy needs to be applied on the object instead of a Space.) In addition to a Space's policy, the view policy on the specific object/task is still applied.

By default, objects are in the public Space (S1). Any other Spaces have a more restrictive "Visible To" policy applied to their objects.

Requesting a Space
Phabricator Administrators can create Spaces. To request a space, create a task against the Project-Creators project and explain your needs and why a "normal" project is not sufficient. Please also describe which specific Phabricator users should be able to access objects in that space.

Afterwards, a Phabricator administrator will
 * create an ACL project ("acl*teamname_policy_admins"; replace "teamname" accordingly). The "Joinable By" policy is restricted to Phabricator Administrators. The "Editable by" policy is restricted to administrators and the team lead. Project members are set to those user names (team members) who will be able to access tasks in the Space.
 * Note: The team lead is co-responsible for keeping the project's members list updated.
 * create the actual Space. Both "Visible To" and "Editable By" is set to.
 * Note: The "Visible To" setting controls both who can see the space and who can see objects inside the space. The "Editable By" policy only affects the space itself, not objects inside the space.
 * add "Allow members of acl*teamname_policy_admins" to Phabricator's global custom "Can Edit Task Policies" setting. This is required to display the "Visible To" and "Editable By" fields (and hence the Spaces dropdown for members of that Space) in the task creation form.

Displaying and using a Space
If you can access at least two spaces, you see an additional Spaces dropdown under "Visible To" when creating and editing an object. Users with access to only one space will not see this control.

In Maniphest's task view, the Space will also be displayed in front of the task summary. You can batch-edit tasks to move them to a different Space.

Note that you will still have to associate the corresponding "public" project (if existing) to a task to make a task in a restricted Space (which you have access to) to show up in search queries and the workboard of the project. The "public" project could be automatically added via requesting a global Herald rule.

Renaming projects
By default, all users can rename a project. The requirements are project consensus (obviously, and the Phabricator maintainers will not check that you got it) and compliance with the guidelines listed below on this page.

Renaming a project is similar to renaming a wiki page. You need to make sure that you are not leaving broken links after the change of name.


 * Make sure the current hashtag is kept as an additional hashtag. Otherwise, the references to your project that people added in comments and descriptions will break.
 * Phabricator will not allow you to rename the project and add the current hashtag in a single step. You must first rename and then add the hashtag.
 * Remember to update the links in your project pages and templates. For instance, extension projects need to update their infobox.

Something to consider if you project has a volatile name: use URLs with the project number in wiki pages and other external resources. This saves you problems when the project is renamed, since the project number stays the same.

https://phabricator.wikimedia.org/project/board/5/ vs https://phabricator.wikimedia.org/tag/phabricator/ https://phabricator.wikimedia.org/project/profile/5/ for the project description page of the Phabricator project