Page MenuHomePhabricator

Add a Gantt chart view to the "Reports" section
Open, WishlistPublic

Assigned To
None
Authored By
maxhodak
Dec 30 2014, 9:42 PM
Referenced Files
None
Tokens
"Love" token, awarded by backstageel."Love" token, awarded by tomekj2ee."Like" token, awarded by exp10r3r.

Description

We'd find it very useful to be able to visualize our task trees as a Gantt chart. From our way of seeing things, a Gantt chart is a good way of modeling the underlying truth (there is a set of temporally bound things to do that depend on each other, whether or not you know what it is) and one of our biggest challenges with Phabricator right now is that it doesn't let you see how all of the different tasks fit together into a project. (Workboards, which we use, lose all of the interesting dependency context.) It would go really nicely as an visualization with the burn up graph.

Phabricator allows for an arbitrary graph of blocking tasks, so I'd suggest that this view just refuse to render if there are cycles present, which I imagine would be legitimate in a small percent of installs.

On our install, we have a custom "Estimated Hours" field defined (the suggested example custom field in the custom fields page... maybe just worth making it an official field?) and we use arc start | time | stop to track ourselves against that. In the future, we'd want to connect this information to a Gantt chart and calculate "velocity" information to estimate completion dates ala http://www.joelonsoftware.com/items/2007/10/26.html but if this is something most installs wouldn't find useful we could do this in little scripts on our end using Conduit.

@epriestley @chad I didn't assign this to anyone because I thought that would be presumptuous to just show up with a big feature request and say "here you do this!" so I'm tagging you guys here to ensure this gets noticed and commented on. In general you guys have interesting and thoughtful perspectives on how software engineering "should" be done that I usually end up coming around to, so if you think I'm way off in thinking about something ("this problem is solved by workboards, you're not using them right, and also evidence-based scheduling is a lie") that's interesting feedback.

We're happy to help implement this but haven't contributed much to Phabricator before so wanted to talk first and see where your guys' thinking is; searching the Phabricator Phabricator for "gantt" didn't turn up anything interesting.

Event Timeline

maxhodak raised the priority of this task from to Needs Triage.
maxhodak updated the task description. (Show Details)
maxhodak added a project: Maniphest.
maxhodak added subscribers: maxhodak, chad, epriestley.

Thanks for the feature request. :)

If you haven't seen it yet, here's our little document on feature requests -- https://secure.phabricator.com/book/phabcontrib/article/feature_requests/ We basically read everything sooner or later and at least @chad usually tags stuff properly, etc within hours.

Some thoughts...

  • I don't think "Estimated Hours" will ever be a default field. We generally want the tools to be simple by default and allow customization for more nuanced use cases.
  • I personally think "Estimated Hours" is a hard part of engineering where the value created can be made more easily through other processes. (I think this is so hard that as an engineer or as a manager, I call them "SWAGs" or silly wild ass guesses since they will likely be off.) For example, if the goal is to give people ideas about when things will ship, if you use a sprint model - "we're getting all this stuff done in this sprint" - the need for specific estimates can be greatly reduced, as everyone can know that most things should ship in the sprint. This is obviously a nuanced, debatable, the-best-way-is-different-every-time sort of discussion.
  • I personally think engineers should worry about getting stuff done and managers can worry about scheduling. Ergo, things like engineers filling in scheduling information throughout their assigned tasks is an implicitly subpar process in my world view, though perhaps an unavoidable evil based on circumstances.
  • T4171 is the big task for reporting stuff; definitely check it out for how we're thinking about this generally. I feel like everyone loves a good Gannt chart so that should be coming sooner or later.
  • We don't allow cyclic task dependencies. See T6815 for a small bug with the error dialogue for this case at the moment, but it should block cyclic dependencies still.

Ok: I can rephrase this task in terms of the problem I'm trying to solve and the motivation for solving it rather than "Gantt chart pls". If I do that it will make your comment here look out of context. Should I add the new description in a comment? Go ahead and overwrite the description above? Close this task and open a new one?

Whatever works best for you my friend. :D (I'm not worried about appearing out of context and there'll always be edit history if the out-of-context authorities come for me.)

I can see eventually building something like this, but it's more on the 3-5 year horizon. Agile development will be the priority for a while (and building up Projects in general) then likely Facts (reporting). Gantt to me is more of a Product Management management application and not something we have seen a lot of interest in from other installs.

chad triaged this task as Wishlist priority.Dec 31 2014, 1:17 AM

@btrahan and @chad and team, first of all I would like to congratulate and thank for this amazing tool, simply outstanding result you guys achieved. Made my daily job easier.

Moving on with this conversation, I read and understand the reason to not have a Gantt nor a schedule control application. However, it is a fact that business requires a schedule. Even it is a need when planning a sprint I need to estimate how long it will take and how many tasks I can include in a 2 or 3 weeks sprint considering the available resources. Also, there are many other important outputs, for instance, "how long time was spent in a task" or "when it actually start and finish". This section is called monitor and control in project management and it is crucial in my opinion.

My question: what do you propose to use for this matter?

I appreciate if you could send your comments.

Thanks in advance!

Although businesses need planning and scheduling, the need varies from organization to organization. For some organizations, like consulting companies, this is very important, and they may want to track time spent on individual tasks, and have a greater need for short-term forecasting and precise time accounting. Other companies, like Facebook, do very little of this. Our own company performs very little scheduling or time-based planning, and what scheduling we do is coarse and high-level (see T4778 for some discussion).

Since we developed this software at Facebook originally (where scheduling is very coarse), these features weren't a priority historically. Today, many of our users are startups (where scheduling is also usually coarse), including our own company, so these features aren't a priority today, either. If these features are important for your organization, you may want to look at other tools (like JIRA) which have better support for organizations that rely on higher-granularity time-based scheduling, tracking, and accounting. We will have better support for these kinds of workflows eventually, but that support is likely months or years away.

@epriestley Thanks, that's the answer I was looking for.

There exists a "quick prototype" implementing as an external page using bots and Conduit: https://github.com/kennyeni/phabricatorGantt

Scheduling in general can nowadays also be implemented using milestones. See e.g. Phabricator's documentation or Wikimedia's evaluation.