Page MenuHomePhabricator

Add a secret board view to Projects
ClosedPublic

Authored by epriestley on Oct 21 2013, 1:38 AM.

Details

Summary

Ref T1344. This is very rough. Some UI issues:

  • Empty states for the board and columns are junky.
  • Column widths are crazy. I think we need to set them to fixed-width, since we may have an arbitrarily large number of columns?
  • I don't think we have the header UI elements in M10 yet and that mock is pretty old, so I sort of very roughly approximated it.
  • What should we do when you click a task title? Popping the whole task in a dialog is possible but needs a bunch of work to actually work. Might need to build "sheets" or something.
  • Icons are slightly clipped for some reason.
  • All the backend stuff is totally faked.

Generally, my plan is just to use these to implement all of T390. Specifically:

  • "Kanban" projects will have "Backlog" on the left. You'll drag them toward the right as you make progress.
  • "Milestone" projects will have "No Milestone" on the left, then "Milestone 9", "Milestone 8", etc.
  • "Sprint" projects will have "Backlog" on the left, then "Sprint 31", "Sprint 30", etc.

So all of these things end up being pretty much exactly the same, with some minor text changes and new columns showing up on the left vs the right or whatever.

Test Plan

See screenshot.

Diff Detail

Lint
Lint Skipped
Unit
Unit Tests Skipped

Event Timeline

Definitely needs a touch-up in the CSS. I think we have done like 10 revs of ObjectItem list since workboards were created.

Does secret mean only we'll be able to get to it to polish it up?

Yeah, I just didn't link it anywhere in the UI. You can get to it here:

/project/board/<id>/

(e.g., replace "view" with "board" in a project URI).

The tasks that get pulled in are real, but the columns are hard coded and not editable, and the tasks are just randomly distributed across the columns (and you can't drag them or anything yet). Should be OK for UI touchups but needs a bit more work to get a feel for the interactions.

Some of that stuff I can flesh out for real without much effort, I was just pretty tired last night and am still mulling over some of the behaviors for "sprint" / "milestone" / "kanban".

Generally, this approach is way simpler and more abstract than what I was thinking about for T390 originally, which is a lot better for us since I can basically implement a v1 in a couple of days now, but I'm worried that I'm under-engineering and under-constraining it and we're going to end up with a crappy half-product which tries to do too much and isn't good at any of it. But even if all the server-side stuff I'm doing is bad, the design/client stuff should carry into wherever we end up and we can just throw away the sprint/milestone code and call this the "kanban" product and deal with those when we get there, I think.

I'm not sure how likely it is that this approach is actually good. If project management is fundamentally just the act of rearranging things in different columns without producing meaningful work, this product will be great: it will provide a very flexible, powerful way to rearrange things in different columns, and to call those columns different things and label the whole process. If project management does produce useful work that I simply don't understand, we may be farther off the mark.

I've been making a point of asking users who bring up feature requests in this area (most commonly, an "in progress" flag) what value it provides, or specifically something like "When will a project manager look at this data and make a different decision than they would without it?" -- i.e., what concrete effect does tracking this data have on the world? I haven't found the answers I've gotten very satisfying, which I think increases the chances for this product.

If nothing else, I guess I'll learn something about project management.

There are only some cases where I think we can see the benefit here and that's generally the unbeta/launch type tasks and projects. I think my initial vision was the boards would just trigger rules, so the project leader could organize it any way they like. This columns set the status to in progress. This column closes a task. This column CCs the QA team, etc.

Trello has no real ties. It just lets you name a column and assign stuff anywhere. It's more a virtual marker board with a bunch of stickies. This is helpful when maybe starting a project and getting everything out there.

Overall, I think the only thing I really wanted was to be able to tell completion and priority of a launch type project. The very basic bits of that being if the task is high on the page, it is important. If the task is to the left of the page, it is not far along in completion. In those regards I see this as the web page people pull up at the weekly meeting to go over what is being, or has been accomplist (ie, is this task viable? is it completed enough?) etc.

I think this was my 'barebones' view.

UpForGrabs = No assignee
Assigned = Assigned
In Progress = Revision attached
Completed = Closed

It was a bit arbitrary, but it seemed like it was a quick and easily parallel with our current structure. Basically just visualize a project's tasks.

{F73070}

For dogfooding this, I'm thinking maybe we can run each product project as "Milestones" and then run a Bugs project as "Kanban"? So, e.g. Pholio would look like this:

+--------------+  +-------------+  +--------------+  +-------------+ 
| Future       |  | Release 1   |  | Beta         |  | Alpha       | 
| No Milestone |  | Milestone 3 |  | Milestone 2  |  | Milestone 1 | 
+--------------+  +-------------+  +--------------+  +-------------+ 
| ...          |  | ...         |  | ...          |  | ...         | 
|              |  |             |  |              |  |             | 
|              |  |             |  |              |  |             | 
+--------------+  +-------------+  +--------------+  +-------------+

While "Bugs" would look like this:

+--------------+  +-------------+  +--------------+  +-------------+  +--------------+
| Triage       |  | Confirmed   |  | Assigned     |  | Complete    |  | Fix Verified |
| Backlog      |  |             |  |              |  |             |  |              |
+--------------+  +-------------+  +--------------+  +-------------+  +--------------+
| ...          |  | ...         |  | ...          |  | ...         |  | ...          |
|              |  |             |  |              |  |             |  |              |
|              |  |             |  |              |  |             |  |              |
+--------------+  +-------------+  +--------------+  +-------------+  +--------------+

That doesn't not seem like a non-unviable approach.

php looks good. Since we're going with secret launch - you know, other than talking about it on this public diff and all that :D - maybs its good to commit now and we can design iterate in future diffs?

src/applications/project/controller/PhabricatorProjectBoardController.php
9

maybe falsify while in secret mode?

src/applications/project/controller/PhabricatorProjectBoardController.php
9

oh good point

way more secret this way

oh oops I forgot to unpublic it

not-so-secret board view I guess

i should be sleeping. such tired. so zzzzs.