I've been evaluating solutions for Project management (for the duration of this post, that includes what i describe as project, issue, ticketing, case tracking, and pretty much anything that falls in that category) solutions with Drupal, over a year actually. I keep being enticed by the features of each individual solution, and new promises that are announced for each module(s) and trying them out and coming to the same conclusion with each of them. And yes, all of them seem to have the same problems that I'm hitting repeatedly.
They are designed with too specific a project system in mind, and are not ultimately extensible.
- Project module and it's family are designed mainly to run drupal.org, and it does an amazing job at it. However project attributes are not easily modified or extended. I know that dww has taken on what is no doubtly the most crucial element to the entire Drupal project with this module, and he has made amazing progress with it. However, one constraint to this awesome capability is that new and advanced features...no that's not right, dww and crew and getting tons of new features and such into project, the issue I'm noticing, is that features that wouldn't be used on d.o, are less likely to be committed. This is no fault against the project maintainers as they are already plenty busy, keeping up with the necessary features for d.o. Don't get me wrong here, Project* is amazing, and I'm grateful to the maintainers, however its very requirements but some limitations on it. (of course I know that I am welcome to submit patches to project*, but I fear that would just place added burden on the maintainers to review and commit them)
- Enter Casetracker. It's newer and seems shiny and featured packed at first glance, but once again it ultimately fails in terms of extensibility and features. As in most cases of Drupal modules, it begins with a fairly specific task in mind, becomes more configurable, but ultimately doesn't give the user all the options they desire.
- Taslklist and Tasklist advanced are another option, designed for more personal level. There's some good stuff in these, but they just aren't designed for the same type of collaborative uses, and extensibility that casetracker and project* are. And they suffer the same problems that project* and casetracker do as well.
My solution to this problem as I keep trying to write new glue-modules to tie functionality between all these, is that I need to just stop and rewrite the whole module from scratch to do what I need. This will solve all of these problems once and for all. At least as far as I'm concerned anyway. But surely, I've realized, someone must have had the same conclusions I did? And their module to solve all these problems would be different from mine wouldn't it? What do we do in Drupal when we start having several projects covering similar and duplicate functionality?
An API you say?
Enter the idea of what I have termed the TaskAPI (could just as easily be Project API, but that seemed to close to existing project*). Why not write a module that handles helper modules to assign project attributes to a node, and their display and then a module to display all that content different ways? Finally, extensible project/task management!
For the uninformed, I've just summed up CCK/Views rather well. They already do this. There is already an issue to convert Project* module to CCK and it's being written to use Views as we speak. So is that it? Can we already to everything we need with other Drupal modules? Pretty much. I'd even say for probably 80% of sites out there (maybe more) CCK/Views can do almost all of their custom content needs. So is that the end of the TaskAPI? I don't think so.
Actually I think it is still needed now, more than ever, as the glue between all these modules, and to provide the ability to hook, non-data, non-display task behavior to tasks through various means. I can't explain that very well at the moment, but I already have several use cases, that would not work well, with just CCK/Views. Also, some new field types/formatters may be needed, maybe not. I'm not even sure of all the functionality that the TaskAPI would provide, other than to be widely extensible.
So now that the idea is out there, I'd like thoughts and ideas on it. Specifically, what behavior would you add to CCK/Views to have your dream task manager? Is there interest in this type of project? Would anyone like to contribute? Finally, if this model proves to be successful, what would have to be done, in order to make it a central API to extending Drupal? Would project* or casetracker ever require the Task API?
Please note, that while currently no code exists in the repository, or my sandbox on this, that doesn't mean that it hasn't ever been attempted. This article is the summary of 3 attempts to provide the basic functionality described. Once, I tried hacking casetracker and organic groups to get the functionality I required, another time I built a site specific module to combine functionality which didn't really work. The last attempt, was a generic Casetracker/Organic Groups integration module, which I intended to release, but the features just weren't workable, without hacking Casetracker or Organic Groups. This time around, I'm trying to get input, and advice from the community, and I am trying to assess which current codebases could be workable to modify as well.
So let me know what you think!
 Without Project module and it's family of helpers, drupal.org wouldn't have an issue queue, and all development on Drupal itself would grind to a sudden halt.