Page MenuHomePhabricator

Projects v3 Errata
Open, Needs TriagePublic

Assigned To
Authored By
epriestley
Feb 12 2016, 9:28 PM
Tags
Referenced Files
F1125811: iteration-order.png
Feb 23 2016, 4:48 PM
F1123300: Screenshot from 2016-02-22 11:15:56.png
Feb 22 2016, 5:24 PM
F1117526: Screen Shot 2016-02-17 at 6.53.56 PM.png
Feb 18 2016, 2:54 AM
F1116975: pasted_file
Feb 17 2016, 8:40 PM
Tokens
"Burninate" token, awarded by tomekj2ee.

Description

The v3 iteration on Projects is winding down. Here are some remaining issues we're aware of or thinking about.

In many cases, particularly with subprojects, we're interested in collecting more feedback about use cases now that the core of this feature is available, so we can resolve product questions which have arisen during implementation.

Subprojects and Workboards: Subprojects do not currently appear on workboards as columns. If we make them appear, it will mean that cards may appear multiple times on the same workboard. For example, a T123 Tomacco may be tagged with both Produce > Tomatoes and Produce > Tobacco, and would thus appear in both subproject columns on the Produce workboard.

There is a (modest, surmountable) technical barrier to making this work, but if we do we're sort of stuck with the product complexity. We'd like to see more interest in having workboards work like this. It's possible the feature is not necessary and we can avoid the attendant product and technical complexity.

Subproject UI Concerns: Subprojects work, but have some rough edges in the UI. For example, if you have Candy Craze > Android and Flappy Candy > Android, both subprojects will appear as Android in some contexts.

Improving this in the general case is tricky. We don't want to simply render the entire hierarchy everywhere, because projects can nest very deeply and showing A > B > C > ... G on cards on workboards would require a huge amount of space and not be useful. It's not currently clear how to best balance these concerns, or to what degree we need to.

At one extreme, we may not really need to do anything. At least in this project we don't really have any ambiguous project names (i.e., no A > Android and B > Android). It's possible that very few of these projects exist in the wild, and that naming them something like Candy Craze > Candy Craze (Android) is reasonable in the handful of cases where they do exist.

I suspect this is a little too optimistic and we'll need to take at least some steps to decrease ambiguity, but we'd like a better sense of how common this problem is and where it is occurring first. A possible small change we could make is letting projects have a "Full Name", so Candy Craze > Android would have "Candy Craze (Android)" as its full name but still appear as Candy Craze > Android in crumbs and other places where full context is available.

Selecting Exact Projects: Searching for a superproject currently searches for objects tagged with that project or any subproject. We may introduce a function like exact(#superproject) in the future to search only for a superproject, exactly. However, it's not clear if this is really necessary or has any use cases.

Workboard Updates after Edits: Certain updates to workboards (like manually changing which milestone project a task is in) are not properly reflected in the client-side UI. This will work properly after additional work in pursuit of real-time workboard updates (see T4900). This may get fixed before that. In the meantime, a workaround is to reload the page after making these edits. I expect these edits to be rare.

Likewise, if you enable points, the milestone progress bar does not currently update automatically to reflect changes. You can reload the page to redraw it. This will start working automatically at some point.

Searching/Filtering Tasks by Points: This needs use case feedback, see separate discussion in T10339.


Resolved

  • Migration Tools: Some basic migration tools are now available in T10350.
  • Watchers: Watchers now have more sensible behavior, and watching milestones isn't buggy.
  • Column Position for New Tasks: Newly created tasks should once again float to the top of columns.

Pushed Forward

  • Binding Project Membership to External Sources (T3980): This iteration mostly ended up in UI work and this feature didn't really make sense to keep in scope since it wasn't adjacent to anything else. It's still planned, but won't happen until the next time we do an iteration on projects.

Related Objects

Event Timeline

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

@epriestley It would be funny to read that book :)

Thanks for your response! We have priorities depending on final users needs and we all can work in any project, so we still need traditional columns like "todo, doing, review, done" to see tasks status. But the mixed way you said sounds interesting: having a Task project and milestones to see what's next, and then functional columns in the individual projects.

The only 'problem' is that I can see project columns opening the task, but I can't see them in Milestone board. There's no space to show that columns in cards, but would it be possible to show them in a tooltip? There's a tooltip in the project board when you point a card title, showing the same title. We could have the same tooltip over a card's tag showing project and column names, the same way we have opening the task. Or if you want to show more information in the board, we could add a tooltip like the one in project's tags when you open a task. It shows project icon, status and so. We could put project and column names, priority in text mode, author, story points, or whatever you would want to see about a task without opening it.

After observing the feature on this install I feel like the email messages are misleading, or I'm confused about how sub-projects work.

epriestley moved this task to v2 on the Dashboards workboard.
epriestley edited projects, added Dashboards (v2); removed Dashboards.

A task tagged with a sub-project, is still in the parent project, right? So it hasn't been "removed" from Dashboards

Also while typing this I thought I could demonstrate that I am an Badge Worthy Expert Phabricator User and show off #dashboards_v2 or something like that, but did not meet with success. It would probably be bad if the type-ahead showed5000 sprints, but it felt a little odd to not be able to make it pretty with remarkup.

There's no space to show that columns in cards, but would it be possible to show them in a tooltip?

The "title" attribute on the task titles is because they're sometimes truncated, so it may be showing the full title while the page shows only part of the title. Of course, in most cases the two are the same, provided your task titles are not exceptionally gigantic.

Some browsers (Safari, at least) also take several seconds (well, two seconds?) to render title attributes after a hover, which reduces their value as a way to quickly get more information -- I can click the "Edit" icon and find the information more quickly than Safari pops up the title text.

We could pop full hovercards (and plan to improve them to show columns, see T5100) but I'm hesitant about this because I worry it will interact negatively with the numerous other implemented and planned mouse/cursor interactions on workboards. Currently, even in less-mouse-heavily UIs, I'm sometimes frustrated by hovercards popping up all over the place, and I'd guess this would be more frustrating on workboards (for example, as you drag your cursor left-to-right, you hit a card and pop its tip, and it displays over the thing you were actually trying to click). That said, it's something we could consider.

One possibility is that we could show hovercards but lock them to the bottom of the screen on the left (or something) so they'd function more as a "quick look" and usually just overlap the menu. But this is somewhat complex, won't work well in fullscreen, and creates a large visual distance between the interaction point and the result.

I think Chad is also experimenting with some design ideas for making comments and other task information more accessible from workboards, but I'm not sure if that's yielded anything promising yet.

A possible workaround is to use milestones instead of columns, so they show up on the cards. You're free to name milestones things like "UI" and "Backend", so they appear as "iPhone (UI)" and "iPhone (Backend)", although it's possible we'll make changes in the future which make these off-lable use cases of milestones less reasonable as workarounds.

A task tagged with a sub-project, is still in the parent project, right? So it hasn't been "removed" from Dashboards

Yes. A clearer description of this edit might be something like:

epriestley made the "Dashboards" tag more specific, replacing it with "Dashboards (v2)". It is still part of "Dashboards", broadly.

However, rendering this cleanly in the general case is somewhat involved because it may be coupled with other edits which are removals (or generalizations, going the other way), and we can't figure out which are which from the object handles alone without loading more data (at a performance cost) or writing additional metadata onto the transactions (at a complexity cost).

We may end up being more tailored here. There are likely some design and technical changes coming to timelines anyway, there's just a task adjacent to this stuff that requires me to go write out ~300 custom translatable strings and I want to put that off forever if I can.

My faint hope for not having to touch this is that the root interactions which cause these edits (dragging cards on a board) may be natural enough that the raw transactions are easy to interpret. I think the behavior makes fairly good sense when you drag a card between columns to cause it, it's just less clear in isolation.

Still, I'd imagine that these will eventually get a more tailored rendering.

Also while typing this I thought I could demonstrate that I am an Badge Worthy Expert Phabricator User and show off #dashboards_v2 or something like that, but did not meet with success. It would probably be bad if the type-ahead showed5000 sprints, but it felt a little odd to not be able to make it pretty with remarkup.

We don't currently give milestones hashtags by default (you can set them explicitly if you're using milestones for some sort-of-off-label use case, or you have milestones that are long-lived enough to merit being completable). If there's some set of real use cases for this I tentatively plan to give them "virtual" hashtags like #dashboards/2, but I'd like to see those use cases first. I don't expect users to need to put Reviewers: #dashboards/2 in Differential revisions from the CLI, for example.

(This meta-use-case of completing a milestone to discuss completing milestones doesn't strike me as a tremendously compelling argument for adding this behavior, beyond the obvious issues of the current behavior being a bit inconsistent/surprising, which is generally bad.)

Some browsers (Safari, at least) also take several seconds (well, two seconds?) to render title attributes after a hover, which reduces their value as a way to quickly get more information -- I can click the "Edit" icon and find the information more quickly than Safari pops up the title text.

You're right. I think it's the best alternative while there's no pop-up. We'll go with this option, because using milestones that way can become a problem in the future.

Anyway, if you have a drag'n drop and some tooltips I'm not sure if tooltips arise while dragging a card. It's a fast (more or less) movement, so maybe there's no time to show pop-ups. And if you use javascript pop-ups you can always set a small delay (let's say 2 secs) before rendering the pop-up.

One possibility is that we could show hovercards but lock them to the bottom of the screen on the left (or something) so they'd function more as a "quick look" and usually just overlap the menu. But this is somewhat complex, won't work well in fullscreen, and creates a large visual distance between the interaction point and the result.

In small screens maybe there's no much difference, but in big screens that could be annoying if you have the cursor in the left and a tooltip showing in the right.

When searching for a subproject you don't see the parent project in the typeahead results:

Screenshot from 2016-02-22 11:15:56.png (151×330 px, 9 KB)

"Bugs" in the screenshot above is a subproject. I'm thinking that it should probably show "parent project -> subproject" in the search results?

This is covered in the conversations above, but the short answer is: There are 16 possible levels of subprojects, so there isn't any clear path forward to us guessing what you want displayed, and thus it is up to you to name Projects accordingly.

Maybe a config option to make your own regex for display? Or just a select of a handful of options like

  • No Custom Display
  • Direct parent (subproject)
  • First parent (subproject)
  • First parent (subproject - subproject - subproject)

I sort of feel that most installs will just use one level, so at least a option for consistency would be useful?

@20after4 It would be helpful to get a sense of what your ideal tree looks like -- would adding the immediate parent project always be sufficient to disambiguate things? Or would it produce 30 different projects named iPhone > Bugs because the full hierarchy is CrazyFlaps > iPhone > Bugs, FlappyFish > iPhone > Bugs, etc? Or do you have a mixture of hierarchy depths?

I think we're likely to make some sort of refinements here, but we'd really like to get a better sense of what issues are arising before choosing a refinement, since the sort of default refinement ("show every ancestor all the way to the root") would create a huge mess all over the UI with projects a few levels deep, and it seems plausible that real world use cases may not actually need anything at all like this for usage to be unambiguous.

We just played around with projects, subprojects, and milestones as we wanted to figure out a nice way of organizing work. We fell over a few inconsistencies/issues/bugs:

  • When creating the first subproject there is a note that all members of the project will be moved to the subproject. In fact, members were copied to the subproject
  • We were able to drag and drop local image files onto workboard cards but we didn't find a possibility to specify an already uploaded image as cover image
  • We were surprised that column colors of milestone columns didn't match their workboard background color
  • Subprojects do not have a column on the project workboard, however, they do appear in Manage BoardColumns
    • In Manage BoardReorder Columns neither subprojects nor milestones are present
    • Clicking on Manage BoardEdit Columns for a subproject and entering a Point Limit leads to an exception: Undefined variable type_name
  • Milestones of subprojects do not appear as columns on the parent project workboard
  • We set phabricator.silent to true but I received an email when I created a project
  • We missed the possibility to create Herald rules for workboard columns

Can you please drop a few lines on these points whether they are issues/bugs or we just misused/misunderstood projects/subprojects/workboards, thank you!

When creating the first subproject there is a note that all members of the project will be moved to the subproject. In fact, members were copied to the subproject

Internally, we track "explicit members" and "implicit members".

Parent projects can not have explicit members. The explicit members are moved.

However, all members of subprojects are implicitly members of ancestors, so they're still present as implicit members of the parent.

I'm hoping to navigate this without adding more concepts to the UI like "explicit members" and "implicit members". One thing I'd like to do is show which subproject(s) a user is a member of in the "Members" panel for parent projects, which might help. We could also add a line of explanatory text, and/or rename the panel to "Members of Subprojects", although both clutter the UI to explain a one-time facet of the model.

We were able to drag and drop local image files onto workboard cards but we didn't find a possibility to specify an already uploaded image as cover image

See T10293, but I don't think we currently plan to add a "use an already-uploaded file" selector for this (or macros, or profile images, or remarkup areas). The workaround in all these cases is to drag the file to your desktop, then upload it again. At least on my machine, this workaround seems approximately as fast and perhaps slightly faster than a "use an existing file" workflow could plausibly be, so I feel like I'm misunderstanding some part of the underlying use case. I've repurposed T10374 for this if you want to make the case for this feature in more detail.

We were surprised that column colors of milestone columns didn't match their workboard background color

On workboards, column color currently communicates column type (milestone/hidden). I don't expect we'll change this.

Subprojects do not have a column on the project workboard, however, they do appear in Manage Board → Columns

This is partially discussed above and partially a bug. I'll fix the bug.

In Manage Board → Reorder Columns neither subprojects nor milestones are present

This is the expected behavior.

Clicking on Manage Board → Edit Columns for a subproject and entering a Point Limit leads to an exception: Undefined variable type_name

This is a bug, I'll fix it.

Milestones of subprojects do not appear as columns on the parent project workboard

This is expected. You only get immediate children as columns (and, currently, only immediate children which are milestones). If we showed all descendants, root projects could have hundreds of columns, with numerous similar columns (e.g., many "Sprint 6" columns from descendant subprojects' milestones).

We set phabricator.silent to true but I received an email when I created a project

Did you explicitly restart the daemons after setting phabricator.silent? They should now restart automatically, but may take a few minutes to do so, so actions immediately after the change could use the old configuration.

The phabricator.silent mechanism is very low-level and the type of message should not impact it, so it should be impossible for the flag to deliver certain types of mail and not other types of mail.

If you're sure this wasn't a temporary/old config issue, I can look at reproducing it.

We missed the possibility to create Herald rules for workboard columns

See T5474.

Internally, we track "explicit members" and "implicit members".

Parent projects can not have explicit members. The explicit members are moved.

However, all members of subprojects are implicitly members of ancestors, so they're still present as implicit members of the parent.

I'm hoping to navigate this without adding more concepts to the UI like "explicit members" and "implicit members". One thing I'd like to do is show which subproject(s) a user is a member of in the "Members" panel for parent projects, which might help. We could also add a line of explanatory text, and/or rename the panel to "Members of Subprojects", although both clutter the UI to explain a one-time facet of the model.

I understand. Makes perfect sense from a technical perspective. The current message in the UI is a bit confusing (same for the message when one adds a subproject tag to a task which already has the parent project tag, but this was already discussed above in this task). I agree that users shouldn't need to know anything about implicit and explicit members, though.

See T10293, but I don't think we currently plan to add a "use an already-uploaded file" selector for this (or macros, or profile images, or remarkup areas). The workaround in all these cases is to drag the file to your desktop, then upload it again. At least on my machine, this workaround seems approximately as fast and perhaps slightly faster than a "use an existing file" workflow could plausibly be, so I feel like I'm misunderstanding some part of the underlying use case. I've repurposed T10374 for this if you want to make the case for this feature in more detail.

Thank you. We were thinking about established standard images for a certain type of task for example and that would require to upload the same image again and again and again... A menu entry for images in tasks like shown in T10293 would address this issue.

Subprojects do not have a column on the project workboard, however, they do appear in Manage Board → Columns

This is partially discussed above and partially a bug. I'll fix the bug.

Thanks!

In Manage Board → Reorder Columns neither subprojects nor milestones are present

This is the expected behavior.

Okay, I have to look into the rules for column/milestone ordering.

Clicking on Manage Board → Edit Columns for a subproject and entering a Point Limit leads to an exception: Undefined variable type_name

This is a bug, I'll fix it.

Thanks again.

Milestones of subprojects do not appear as columns on the parent project workboard

This is expected. You only get immediate children as columns (and, currently, only immediate children which are milestones). If we showed all descendants, root projects could have hundreds of columns, with numerous similar columns (e.g., many "Sprint 6" columns from descendant subprojects' milestones).

Makes sense.

We set phabricator.silent to true but I received an email when I created a project

Did you explicitly restart the daemons after setting phabricator.silent? They should now restart automatically, but may take a few minutes to do so, so actions immediately after the change could use the old configuration.

The phabricator.silent mechanism is very low-level and the type of message should not impact it, so it should be impossible for the flag to deliver certain types of mail and not other types of mail.

If you're sure this wasn't a temporary/old config issue, I can look at reproducing it.

I could not reproduce it, thank you.

We missed the possibility to create Herald rules for workboard columns

See T5474.

Awesome!

Initially, I've found myself digging iterations for the magic workboard columns even for "evergreen" things that are not really iterations. I wanted to reorder them, but I'm confused what the UI is trying to tell me. Can I not re-order iterations, only control how they appear relative to "normal" columns, or is this busted?

iteration-order.png (874×1 px, 77 KB)

Initially, I've found myself digging iterations for the magic workboard columns even for "evergreen" things that are not really iterations. I wanted to reorder them, but I'm confused what the UI is trying to tell me. Can I not re-order iterations, only control how they appear relative to "normal" columns, or is this busted?

I think this is T10412.

When creating the first subproject there is a note that all members of the project will be moved to the subproject.

FWIW, I found the wording/warning on this message to be scary and confusing.

Can you fix the issue with arcanist in near time, that arcanist does not accept milestones at differential diffs? This is very annoying.

Error parsing field "Projects": The objects you have listed include objects which do not exist (AdTBot, (v0.5, (beta))).
(Run with `--trace` for a full exception trace.)

It would be handy if subprojects and milestones would inherit some of their parent's settings (like icon, color, policies, and picture) by default.

We had a user that was confused and frustrated because on the task view page projects are under a "Projects" field but on the edit page are under a "Tags" field.

(And under the stacked action menu it is "Change Project Tags" which I think gets across the "you tag things with projects" like of thinking best.)

Is there any way to take an existing project and make it into a subproject? I don't see any discussion of that in here

One additional usecase for subprojects: it would be very nice to be able to move subprojects between different parents. In particular lets say we have
team1 > productA
team1> productB
team2> productC
and as a result of a re-org or some other influence productA moved to team2. To do the move now we'd have to create a new project, reconfigure it (cloning the workboard), and mass change the labels (remembering where in the workboard every task is).

@epriestley Maybe one to consider: you must have a default workboard column for a project; the default workboard column cannot be hidden; milestone workboard columns strictly sort after project workboard columns. The combination of these three means that I have a project which is strictly split into four milestones, but its overall workboard view always includes an empty column before each milestone column. Is it worth filing a task for this?

From T10891:
When you have the side project profile panels collapsed, then go to create a new milestone, it will have no tasks. The profile panel then shows 'This milestone has no tasks yet', but brutally cut off to 'This mileston-' in the collapsed view.

Perhaps it should show 'no tasks' or similar?

The language is that no tasks have points, 'no tasks' might solve a small edge case, but as soon as the first task appears with no points, the longer text is more correct. We tend to lean towards over explaining cases as to limit upstream support time.

@chad If the verbosity is essential, perhaps it should be word-wrapped in the collapsed case, rather than truncated?

I believe less information when the user has chosen to collapse the nav is aligned with expectations.

@chad 'No points' or simply showing nothing is less information. An incomplete word isn't a deliberate choice to show less information, it's how it happened to land. Anyway, seems like you consider it a feature, so I'll leave it alo

'No points' or simply showing nothing is less information

Showing 'No points' when it doesn't mean 'no points' is misleading. Showing nothing is literally showing nothing, it's not less information, it's no information. Showing truncation indicates to the users there is more information available if they need it.

An incomplete word isn't a deliberate choice to show less information

We absolutely make a choice here to truncate rather than wrap for information density reasons. That is, it's better to respect the user's desire to show less information because they are using Phabricator is a more "clutter-free" manner to be more productive. The expectation with any productivity "tool" design is that some tradeoffs exist between extreme clarity and UI productivity. It's a similar design tension we use in all Object Lists in Phabricator. We truncate for responsive design/ui density because feedback overwhelmingly points to this being preferred. We do occasionally hear people want more information, but in the example you state and in Object Lists, overall this feedback is fairly sparse and uncommon. It's understandable, but it's not our current design intent.

Now, I do agree with you this interaction is imperfect and could be improved, and your feedback is duly noted, but we're a team of 2 here with 1500 tasks open, so some things are just be imperfect until next time we're in the product. (Overall, that's why we have this task, so we can revisit every piece of feedback in one place).

Now, I do agree with you this interaction is imperfect and could be improved, and your feedback is duly noted, but we're a team of 2 here with 1500 tasks open, so some things are just be imperfect until next time we're in the product.

I fully understand that tension, it's just that the response came across as 'this is how it should be and we like it like this', is all. Thanks for the consideration.

haha, no, i don't like it either, but it is at least intentional. I just didn't have any better ideas (and I think we took two passes on it).

Selecting Exact Projects: Searching for a superproject currently searches for objects tagged with that project or any subproject. We may introduce a function like exact(#superproject) in the future to search only for a superproject, exactly. However, it's not clear if this is really necessary or has any use cases.

I am trying to make Herald assign project tags to task, if the task has not yet been tagged with the project or any of its super-projects. However, "projects: do not include: #foo" does not seem to match sub-projects of #foo. Thus the rule "add projects: #foo" is always being executed, often overriding more specific sub-projects being set.

Create a milestone subproject for each project. That way we have all tasks in the project that depends of, and milestones to organize timing. But when I start my daily work, I have to check 4 milestones subprojects to see what task I have to work in. If I work in more projects, more workboards to look at.

A reverse lookup workboard would be great. So I could see for some user which tasks are assigned to them on which project, and to how much story-points this accumulates. For us, sprints follow a strict naming scheme, so "group milestones by name" would work well. The result could again be shown as a "virtual" workboard with each column being such a "milestones with the same name" group.

Would it be possible to prioritize part of this ticket? Specifically, the use case mentioned in T10627? We are also interested in the ability for members of a project being able to create subprojects without requiring global "Can Create" permissions for Projects (I thought that there was already a ticket for this somewhere, but maybe not?)

Sure, let me split the subproject/workboard piece out and we can walk through it. (I may not get to this tonight because I have had a long day of Business Things.)

I thought that there was already a ticket for this somewhere, but maybe not?)

T10536

In T10349#160861, @chad wrote:

Maybe a config option to make your own regex for display?

I would like to opt for this approach! Since it seems, that there is no simple solution that would work in all cases, an option to customize this might be the logical conclusion to solve it once for all.

Users are somewhat surprised that adding a project removes another project (Due to being sub/parent-project); Partly that's because there's no hint in the editor that this is about to happen, or that the 2 projects are related.

eadler added a project: Restricted Project.Aug 5 2016, 5:05 PM

I just wanted to pop in and comment on the UI for projects.

I think the best way to handle all the possible cases is to make it customizable with just a simple config option like the previous commenter mentioned, however add a little more by letting the "depth" be chosen in some cases (initial parent depth + direct parent depth).

Further to that, it would be nice if you had the option to not display child projects directly on the projects page (you have to go through the projects to get to the child).

One thing I am running up against, is the hashtag generation. If I have two projects (A and B) and then name the child projects (Test) the same, I can only create one child project. This seems like unintended behaviour according to some comments, but if it is intended, one further enhancement might be to include a the parent in the hashtag. Right now, I get around it by doing a name of "A > Test" and "B > Test". This gives a hashtag of "a_test" and "b_test"

Subprojects do not currently appear on workboards as columns.

And keep this such way. Please take a look Comment with improvements to "Ability to reorder milestones on a project's workboard".