Another DrProject Design Question

June 25, 2008 – 6:56 pm

We’ve hit another “what should it do?” question in DrProject, and I’d welcome opinions from readers. As I’ve mentioned previously, the new ticketing system for DrProject is going to be extensible. Each project’s tickets will initially contain just four fields: sequence number, date created, creator ID, and one line of text. The first three will be filled in automatically; the user will only have to type the fourth. From experience, a simple “to do list” like this is all student teams really want or need.

However, almost everyone wants to add “just one more field” to this design. Sometimes it’s a person responsible; other times it’s priority, due date, a larger text area for a detailed description of the problem, or attachments. The new ticketing system will therefore allow the developers in a project to change the ticket schema for that project using a drag-and-drop form editor.

(Not that it matters right now, but we’re not just building this to support teams’ chosen workflows. It will also give us a way to find out what those workflows actually are—if we deploy DrProject, wait a few months, then look at what people have chosen to record, it should give us some insight into how they’re thinking about their work.)

Now here’s the problem. DrProject currently offers two “personal” views called “All Projects” and “All Tickets”. The first shows a merge of the event logs from all the projects the user belongs to; the second shows all the tickets assigned to the user from across all the same projects. The question is, what should we show for “All Tickets” if every project’s ticketing schema can be different? To make this more concrete, imagine that project Telepathy’s schema has grown to:

(id INTEGER, created DATE, creator USER_ID, title TEXT, duedate DATE, priority ENUM(”hi”, “med”, “low”))

while project Antigravity’s schema has grown to:

(id INTEGER, created DATE, creator USER_ID, title TEXT, priority(”urgent”, “optional”), owner USER_ID)

Options we can see are:

  1. Only show the common fields. (Unlike user-added fields, the four basic fields can never be deleted from a project’s ticket schema, so we know they’ll always be there.)
  2. Show the union of all the columns. This is awkward for all the obvious reasons: it’ll be very wide, many tickets will have blanks in many columns, enumerations with the same name but different values will be a pain, etc.
  3. Have one table for each project, but put all the tables on the same HTML page. A basic version is easy to implement, but sorting and filtering would be difficult.

Anyone have strong preferences? Can anyone see anything better? The ticket for this problem is #1506, and as I said, input would be welcome.

  1. 5 Responses to “Another DrProject Design Question”

  2. Attune to option 1, I suppose we could take the intersection of the fields across a user’s projects and display those in the column view.

    In order to see the project-specific fields, the user will click on the “details” (currently called “show full description under each result”). This will show (certain) fields under each ticket specific to the project to which the given ticket belongs.

    By Nick Jamil on Jun 26, 2008

  3. My random thoughts:

    Option 1: Intersection of fields. Create a new set for each list of columns and do an intersection of them.

    Option 2: Union of fields. Just add all list of columns to a set. People may request a show/don’t show column option to avoid seeing all those extra blank columns.

    Option 3: Each project would be a group. Needs logic to ignore sort and filter on column if the column is not part of that group. You will have 2 nested for loops instead of just 1. In the outer loop you decide what sorting and filtering is applicable for each group and in the inner you process each group with those options.

    First two are probably easier to implement. Three is the one that makes more sense to me from a user perspective. It gives you all the information (unlike 1) without cluttering the screen with junk (option 2). In the end any of the choices sounds doable without much problem.

    By nes on Jun 26, 2008

  4. What I think would be a good option would be to show the union but make any individual column collapsable on a per-user basis.

    So basically letting the user choose which fields he wants to see there. When he collapses a column it collapses into a thin sliver with a + or something to expand it again if necessary. Or maybe collapse it completely and somewhere on the page have a list of collapsed columns to expand or something.

    If you have user objects you can store these preferences permanently pretty easily by just dropping an ajax request to do the preference update behind the scenes.

    By Guillaume Theoret on Jun 26, 2008

  5. I followed the link to the ticket and I retract my previous comment. I now prefer the solution proposed by anonymous. (Adding the extra fields in bold to the description)

    By Guillaume Theoret on Jun 27, 2008

  6. Some problems require multiple solutions. A few different views, pivoting at various thresholds, would work well here. If there are no extra fields, display is easy and plain. If the extra fields wouldn’t require horizontal scrolling, add them in. If multiple projects have the same extra fields, combine those columns.

    Tall rows, with multiple visible rows for each ticket, could also come in handy here. A standard base row with amended data in indented rows below could work interestingly.

    By Calvin Spealman on Jun 29, 2008

Post a Comment