Page MenuHomePhabricator

Implement Subprojects
Closed, ResolvedPublic

Description

Container task for implementing subprojects, described in T3670.


Errata

  • Milestone icon in the workboard column header has whack spacing.
  • If you edit a task and change which milestone it's in, we don't move it to the proper column.
  • You can reorder subproject and milestone columns, but should not be able to.
  • Renaming subproject and milestone columns probably works but should not.
  • Milestone/subproject column headers should be linked to their workboards.
  • Add "Initial Members" on project create and drop autojoin behavior to reduce the number of "tag" projects with the author as a member.
  • "Subprojects" profile menu item should be hidden for milestones.

Details

Commits
D15206 / rPd9bd062bba72: Fix an issue with viewing an empty board with milestone columns
D15204 / rPa45fe337a12f: Link proxy column headers on workboards to proxied projects
D15200 / rPf097c9c5951a: Disable "Subprojects" menu item for milestone projects
D15195 / rP1db4de7dbc2c: Provide "Initial Members" instead of default joining projects
D15183 / rPc01f23adfb82: Improve some column behaviors for Milestone/Subproject columns
D15181 / rP2bdbd7833d32: Don't show any subproject tags on workboard cards
D15171 / rP90a0459821ea: Roughly implement milestone columns on workboards
D15178 / rP00165424d0d4: Add some test coverage for board moves
D15177 / rP9961de0e809a: Remove old position-on-read board column code
D15176 / rPe25a40236fe2: Nearly complete lifting card-move code out of workboards
D15175 / rPa9e98e42f5ff: Continue lifting column layout logic out of ColumnPositionQuery
D15174 / rP23b835b64731: Begin lifting column layout logic out of ColumnPositionQuery
D15167 / rP268a9ced78da: Implement subproject/milestone conflict resolution rules
D15152 / rPfc9db6e2a2ee: Put subprojects and milestones back into the Project UI
D15054 / rPc51752b4aa79: When publishing project transactions, load ancestor members
D14918 / rP9ab22e21b305: Allow installs to customize project icons
D14912 / rP389e4d1b1fa0: Lock milestone projects to an automatic color/icon
D14910 / rP14ae3c099c2e: Make queries for Project "X" mean "X, or any subproject of X"
D14909 / rP70053beeed60: Smooth out milestone creation workflow
D14904 / rP7c5ad63fd1d6: Add very basic UI for creating milestones and subprojects
D14896 / rP6fe882e50a3e: Convert projects to EditEngine
D14895 / rPe8ddfad6dbd2: Move "Lock Project" to a separate action
D14894 / rP11e53f294827: Add empty subproject/milestone controllers
D14893 / rP373ff7f9d465: Read materialized project members instead of real members
D14892 / rP77897ce86258: Clean up ProjectQuery when viewer is logged-out or omnipotent
D14891 / rP2b5d4bca8a8f: Put some crumbs on some project pages
D14890 / rP5e715c1acac0: Simplify some logic in project controllers
D14889 / rPd1f1d3ec33bb: Implement a basic project.search third-generation API method
D14888 / rP211a6c0d55f3: Move project slug normalization inside project Query
D14863 / rP26ba4e871720: Materialize parent project memberships
D14862 / rP70f6bf306f24: Implement child/descendant query rules in Projects
D14861 / rP3068639ccffc: Implement query and policy rules for subprojects
D14859 / rP16d8e806a0bc: Simplify ProjectQuery handling of viewer membership
D14825 / rPaeae0e702830: Prepare Projects schema for subprojects

Related Objects

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Question: I saw your screenshots at rP7c5ad63fd1d613a62727624ec31436d7933b0bbd

Are you going to implement a way, that you can add existing projects as subproject or milestone, like at tasks? (Where you can add blocking tasks after creation)

No, you can not reorganize existing projects.

I know this is all prototype at this stage, but where's the best place to highlight bugs with the current implementation? Should I just file a bug report in maniphest?

You can just leave a comment here.

When you make a task in a subproject, clicking on the project name in the task detail view will give you a 404 as it tries to access /tag// (as there is no project tag set on sub projects)

Also, adding / removing members from superproject / subproject isn't working.

Otherwise this is all looking very exciting!

Also, adding / removing members from superproject

That's expected.

subproject isn't working.

I can't reproduce that.

That's expected.

Ah, I was probably getting confused by that: so as I now understand, the superproject membership inherits from the subprojects it contains?

If a subproject has a subproject does that now work as both a subproject and a superproject (inherited memberships that bubble up to it's parent)?

Ah, I was probably getting confused by that: so as I now understand, the superproject membership inherits from the subprojects it contains?

Yep.

If a subproject has a subproject does that now work as both a subproject and a superproject (inherited memberships that bubble up to it's parent)?

Yeah, they go all the way up.

The "Members" page will get more clear about these things in the future (for example, it will probably show which subproject(s) each member belongs to, so you can see why they're part of the superproject, and likely have some way to get an explicit textual explanation).

Excellent, thanks for explaining!

HAL2008 added a subscriber: HAL2008.Jan 2 2016, 3:26 PM
spawnlt added a subscriber: spawnlt.Jan 4 2016, 2:52 PM
anda added a subscriber: anda.Jan 5 2016, 9:21 AM
ePirat added a subscriber: ePirat.Jan 25 2016, 11:55 PM
rbalik added a subscriber: rbalik.Feb 3 2016, 8:00 PM
epriestley updated the task description. (Show Details)Feb 4 2016, 2:27 AM
epriestley updated the task description. (Show Details)
epriestley updated the task description. (Show Details)Feb 4 2016, 3:59 PM
chad moved this task from Projects v3 to v3 on the Projects board.Feb 5 2016, 7:39 PM
chad edited projects, added Projects (v3); removed Projects.
chad moved this task from Backlog to Evan on the Projects (v3) board.
epriestley updated the task description. (Show Details)Feb 6 2016, 8:55 PM
epriestley updated the task description. (Show Details)Feb 7 2016, 12:33 AM

I just hit this exception when I had:

  • A parent project
  • A subproject underneath it that had no tasks in it
  • After immediately creating a new milestone inside the subproject

Once I added a single task to the subproject, it started working again.

chad added a comment.Feb 7 2016, 5:39 AM

T10294 talks about showing subprojects on a board, which may be confusing. One path we could take is allowing people to toggle on/off various columns (milestones, subprojects, hidden, backlog) like we do hidden columns today.

With the new column design, there's no more "View All Tasks" button as far as I can see, which is slowing down my work today quite a bit. I keep having to go to the advanced Maniphest search and query different things there instead of just clicking a tag on a task and then going "View All Tasks" to find tasks like it.

Ah, I'm using it in conjunction with the bulk editor. The "View All Tasks" button used to take you to the Maniphest query page where you could then use the bulk editor to manipulate tasks.

That button applies to the whole workboard, but then you can only bulk edit per column.

chad added a comment.Feb 7 2016, 6:02 AM

I'm not sure what you mean by "View all tasks" button. Are you referring to the link in the sidenav?

Yeah, there used to be a button on the project page somewhere which linked you to the Maniphest query page with that project prefilled in the "Projects" query field. I used it for doing bulk edits on tasks a lot when cleaning up projects that were no longer active or on the backburner (like bulk removing assignees or bulk changing statuses from whatever they were to Wishlist).

chad added a comment.Feb 7 2016, 6:05 AM

Oh I guess it was just an icon when it was on the workboard. Those have been removed, you can add it back via "Manage Project" -> "Edit Menu", then build a link menu to the URL. We'll have more tools likely for managing those down the road. Our long term goal is to let you put links, dashboards, milestones, nearly anything on that side menu, configurable per project.

chad added a comment.Feb 7 2016, 6:07 AM

If you haven't played with the new nav, it's pretty configurable. Build buttons to new tasks, phriction pages, harbormaster queries, whatever. It's a bit manual at the moment, but otherwise powerful.

Yeah, it's just a bit tedious to go back through like 40+ projects in the system and add a link which is probably hard-coded and might break in the future (if the project gets renamed or something?)

epriestley closed this task as Resolved.Feb 12 2016, 9:51 PM

This is now substantially complete.

  • See T10349 for followups / errata.
  • Guidance on the new features will be forthcoming in the Changelog this evening or tomorrow.