Drupal Installation Profile for Project Management

Events happening in the community are now at Drupal community events on www.drupal.org.
sevi's picture

Overview: Provide an Installation Profile (or a similar system) for helping people so that they can easily build a Project Management tool with typical groupware features as a Drupal website.
Key Points: Modular Architecture, High Usability, High Flexibility.

Description: We are heavily using a Drupal Project Management Website that has been built with this idea in mind (high usability and flexibility). Associated modules have been published on drupal.org (draggableviews, project_forecast, timebudget, duration, ...). At the moment there is not much documentation available and in certain aspects it's difficult to find the right settings in order to get everything running as expected.
An Installation Profile would solve this by providing default configurations and would help in getting these modules more widely used.

Last but not least we are all developing Drupal or build sites with it, so why not managing our projects with Drupal too? This Installation Profile would offer most of basecamphq's features out of the box and would be highly extendible and customizable, simply because it's Drupal.
I think that there'd be a demand for this.

Tasks:

Based on the already existing prototype (http://projectweb.at) we've a list of tasks:

  1. Improvement of the current system:
    1. Intelligible labeling: Make a check on all labels, field names, descriptions and terms, so that everything is intelligible.
    2. Refactoring site architecture: Finding a way to create addons in an usable way (Spaces?). Make views and content types dependent on added features (e.g. add estimated completion rate field to some views if project forecast addon is activated).
  2. Adding missing features
    1. Advanced reports: Adding currently missing feature “advanced reports as graphs”. Would be ideal to use views for this, so that reports can be easily adopted. Adding some viewsfields if necessary (for calculating some data).
    2. Version Control API: Adding currently missing feature Version Control API integration.
    3. simpletests: Writing simpletests for the most important features
  3. Installation Profile
    1. General Concept: Research about possible helper modules for creating installation profiles. Thinking about alternatives like the pattern module or packaging content types, views and co in modules that can be maintained separately.
    2. Templates: Create templates and basic css.
    3. Icons: Creating some nice looking icons.
    4. Documentation: Providing documentation and help book (advanced help?).
    5. Installation Profile: Last but not least create the installation profile and publish it on drupal.org

Detailed Description: Important to mention is that the basic setup should be very slick and only provide a few key features.
The main goal is to satisfy most of the common interests. There are many projects where special features like time tracking or code version control won't be needed. So these features are planned to be available as addons.

Basic Setup Features:

  • User Roles: Admin, Projectmanager, Projectmember, Client
  • Projectmanager can add various projects with different project members
  • Access control: Project content (tasks, milestones, documentation, files, …) is only accessible for members of the project the content is published in.
  • Issue Tracking (tasks, milestones with typical fields like Assignee, Status, Description, ...)
  • Available options for task status, task type and task priority can be customized in every project
  • More for every project customizable task fields can be added (cck field)
  • Project calendar and project events
  • Project files that can be shared
  • Discussion in form of blog entries
  • WIKI-like documentation section with version control
  • Tagging project content and project tag cloud
  • Managing project members and adding users directly to projects
  • Basic reports like project, task or milestone completion rates as graphs
  • Project overview page with all relevant information
  • Personal dashboard with list of your open tasks, project activities, project history
  • Project member user profiles with contact information
  • Projectplanner: Page with all milestones and tasks, where the project manager can order, prioritize and arrange tasks and milestones through drag and drop.

Addon Features:

  • Time tracking: Keeping track of hours worked on different projects. Displays time reports for users and projects and exports them as csv.
  • Project forecast: Adds time-need field in tasks. Project members can enter their future time budget for every project. Based on this budget and the task/milestone ordering feature an estimated completion date for tasks, milestones and projects can be calculated. Includes advanced reports like time need, and time budget comparisons, deadline and estimates comparisons, ...
  • Code Version Control Integration: Lists project commits and associates them with tasks.

We have come up with a basic site architecture using cck, views, organic groups for defining some default content like projects, tasks, milestones, blog entries, documentation pages and events. We don't need much more, though some other contrib modules are used:

Modules:

  • Book, Comment, Contact, Local, Menu, Path, Taxonomy, Update Status, ... (Core)
  • CCK
  • Views
  • Organic Groups (access control, projects are private groups)
  • Rules (adding users to projects, notifications, ...)
  • Notification Framework / Messaging (notifications and messaging)
  • Comment_CCK (changing status of tasks per comments)
  • Draggabbleviews (ordering and assigning tasks to milestones per drag and drop)
  • Date
  • Calendar
  • Filefield
  • Imagefield, ImageAPI, ImageCache
  • Content Profile
  • Duration
  • Automatic Nodetitles
  • Diff
  • Real-Time-Edit
  • Token
  • Project admin category
  • Project Forecast
  • Timebudget
  • Tagadelic
  • Popups API
  • Value Providers
  • Views Bonuspack
  • Tagadelic Views
  • Context/Spaces
  • Version Control API
  • Wysiwyg

Introducing myself:

My name is Severin Unger (sevi), I’m 21 years old and I'm living in Austria, Vienna. Although I'm studying Electrical Engineering I always loved to program and develop interactive websites. When I've been 14 years old my computer has just been just magic to me. I wanted to look behind all this magic and started to learn programming languages. I trained myself in HTML and Javascript by understanding source codes of other websites.
I even remember my first contact with PHP: A friend of mine used .php extensions on his website and I asked him about them. I was only fond of .html-extensions. He just knew about the include function and told me that PHP is a tool to merge different .htm files into the http output.
At this point I became interested in PHP and ended up reading countless tutorials. I started to program guestbooks, forums and even browser-games for my classmates. I kept on developing based on the feedback of my classmates. I added new features, simple access restrictions and gained experience. After programming my 100th forum I thought about reusing code of previous projects. This led me to develope a basic cms and to troubles with very tricky situations.
Since I started participating in a certain drupal project called "projectweb" I became familiar with the drupal system. I was just stunned at this awesome cms because of its complexity.
In the beginning I've been "hacking" around for some personal goals, but it didn't take too long until I aimed for writing understandable and re-usable Drupal-code.
You can find some of my projects on my webpage (german): http://yop.at.

I’m now the maintainer of the rising module DraggableViews - and it's making lots of fun. My module provides a style plugin for views to make rows of a table “draggable”. Within this project I’ve learned very much about the views module and the drupal core itself. I observe the coding standards and I know how to use my CVS account, how to create patches and how to keep records of all my changes.
Within the last months Drupal became a part of my life. As I benefit from the drupal community I'm willing to give something back - today and in the future.

Timetable:

Date Task completed
2009/05/23: Start
2009/06/07:
  • Research (3.1)
2009/06/27:
  • Intelligible labeling (1.1)
  • Refactoring (1.2)
2009/07/17:
  • Version Control API (2.2)
  • Advanced Reports (2.1)
2009/08/15:
  • Templates (3.2)
  • Icons (3.3)
  • Documentation (3.4)
  • Simpletests (2.3)
2009/08/24:
  • Installation Profile (3.5)
  • Ready!

Mentors:

Is anybody interested to be mentor?

Possible co-mentors are

  • fago (author of rules)
  • jpetso (author of version contral api, project_forecast, duration, ...)
  • and criz (built prototype)

Difficulty: Medium

Comments

wow!

emmajane's picture

Now I'm not a module developer, and I don't even pretend to play one on TV, but it seems like this project might be either WAY TOO HUGE, or too hard to define "finished." I love your enthusiasm, but I'm worried you won't have time to eat or sleep or step away from your computer! Someone with more experience with these topics will be able to give better feedback on the scope though.

I noticed you have a lot of "improve" objectives in your tasks, but "improve" is virtually impossible to measure. I'm also aware that documenting a whole project management install profile will be incredibly time consuming! So I'd like to see a narrower set of tasks with clearer objectives.

A quick search of existing install profiles turns up a few related projects. I know you said that you're already working on this code base, so can you give a bit of a summary on why it makes sense to create another another project management install profile instead of working from existing code?
http://drupal.org/project/installation%20profiles?text=management

Granted, too many

sevi's picture

Granted, too many improvements within this project. I won't be able to change the world this summer :)
Actually the modules simply have to be ready to be combined. Let's call it "slight adjustment".
I'll change this proposal to scale down its scope.

..so can you give a bit of a summary on why it makes sense to create another another project management install profile instead of working from existing code?

This project is based on VIEWS and CCK for all intents and purposes. Two modules with infinite possibilities to be easily extended. I haven't found any active projects so far where we can work from.

I also thought about making DraggableViews itself a GSOC project. Here the main focus would be on improvement and I could measure it by defining some well-defined targets. This may be raised for discussion at this point.

greetings,
sevi

Please help me with spam filter O_o

sevi's picture

O_o I can't change my post:
"Your submission has triggered the installed spam filter and will not be accepted."
PLEASE HELP

You can find my changed proposal at http://web.student.tuwien.ac.at/~e0728168/?q=node/15 until I find out how to make it not be treated as spam. There aren't so many "improves" any more :)

Finally I managed it to edit

sevi's picture

Finally I managed it to edit my post :) It was treated as spam because of some <a href="link">Link<a> Tags. O_o

Success?

summit's picture

Hi, did you succeed in this?
Greetings, Martijn

SoC 2009

Group categories

Admin Tags

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week