My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
Plany  
Updated Oct 8, 2009 by torben.w...@gmail.com

#Plany - A google wave gadget for project planning

Purpose

Plany is a simple tool (i.e. a google wave gadget) for collaboratively creating a project plan and to keep track of project progress. Plany can create some diagrams based on the information it has about the project. To add plany to your wave, add http://secowela.googlecode.com/svn/trunk/Web/Gadget2/hello.xml as a gadget.

Technology

Diagrams: Plany uses the Google Chart API. The Gantt diagram is simply an abused bar chart.

Collaborative editing: Plany is built on a small synchronization framework which in turn builds on the wave gadget API. Each action you trigger is first encoded as an action object. Each action object has a unique key which is composed of a session ID and a scalar clock. This key/value pair is then persisted via the wave API. Thus, eventually all participants will receive the same number of actions. However, they may receive these actions in different order. For this purpose I use the scalar clock (lamport clock). It can happen that two actions have the same clock. In this case we can still order them using the session ID. In the end this yields a total ordering of all actions.

The clock algorithm is straigt forward. When the gadget loads, it inspects all stored actions and searches for the highest clock value. This plus one becomes the current clock for this session. With each new action the clock is increased by one. If the session receive an action from another user, it sets its clock to session_clock := max(session_clock, action_clock+1).

Still, different sessions can receive the actions in different order. In the end this means that a session can receive an action from the past. The synchronization framework will then undo all actions up to the point where the received action fits in. Then it applies the received action and redos all actions that have been undone before. It is possible that some action cannot be redone, for example it changed something that is now already deleted. In this case the action is simply skipped. The nice thing about this approach is that you only have to implement the classical undo/redo pattern and that's it. Furthermore, the UI is faster, because it applies incremental changes only. The brute force approach is to re-render the entire UI whenever the wave API signals a state change. The solution presented here is better in this respect.

The framework uses optimistic synchronization, i.e. when a user triggers an action it is immediately applied and then communicated to others. If some other user completed a conflicting action slightly faster then the other sessions will eventually find out. These session have to undo the applied actions, apply the received one, and redo the undone actions. However, this happens only in rare cases of conflicting edits. Thus, as long as there are no conflicts, the session will not have to undo anything. This results in a fast and responsive UI.

So much about the theory. I hope my implementation does the same :-). One problem is unsolved yet. Each new action increases the state size of the gadget. At 100kb there is a cut off in Google Wave currently. I have not yet implemented means to throw away old actions and replace them with a snapshot of the gadget state. However, for plany 100kb should be fair enough in the moment.

Feedback

Keep in mind that plany is an almost non-tested piece of software. If you break it, you own both parts :-)

However, bug reports and suggestions for improvements are always welcome. Contact me at torben.weis at googlewave.com

Screenshots

Table view

Chart view: Allocation of man months and gantt diagram

(c) Torben Weis, 2009; torben.weis at googlewave.com

Comment by rchees...@gmail.com, Oct 21, 2009

Really like this gadget - is it possible to have start and end dates, rather than the blunt measure of start/end months? Is it possible to assign to a google wave user?

Comment by ALEmer...@gmail.com, Oct 24, 2009

In my google wave account, the gadget is severely truncated. i can't see or edit anything below the first row. (i.e. name, start date, etc.) any suggestions?

Comment by ArcAng...@gmail.com, Nov 4, 2009

Same problem here.. I practically have to span the tasks over several gadgets. Not only that.. but I clicked help and I can't get back.

Comment by egidijus...@gmail.com, Nov 6, 2009

Hi, I actually can't put it in my wave :(

Comment by george.s...@gmail.com, Nov 11, 2009

I have the same truncate issue

Comment by thinasar...@gmail.com, Nov 13, 2009

i have found it works in Chrome Dev channel but not Firefox 3.5.5 on ubuntu

Comment by St.Shado...@gmail.com, Nov 17, 2009

Under Fx 3.5.3 x86_64 under Mandriva 2009.1 do not work :(

Comment by vholew...@gmail.com, Nov 21, 2009

Same problem here gadget is to small

Comment by mirko.gr...@gmail.com, Nov 23, 2009

The XML is not working for me... :-|

Comment by iRadug...@gmail.com, Nov 25, 2009

Works in Snow Leopard Safari Does not work in Windows XP Firefox

Comment by coy...@cogeco.ca, Nov 28, 2009

it did not work for ne in ff3.3 but when i loaded it in IE and made changes, it started working in firefox. the truncation may only occur on the default start page

Comment by DanaBa...@gmail.com, Dec 3, 2009

Love the idea, but it's not working on FF3.5.5 w/Mac OSx - oddly enough, if I open the blip as a new tab/window, I can view a full-size version of the Plany interface.

Comment by sac...@gmail.com, Dec 6, 2009

Why months?

Comment by d...@htmlfixit.com, Dec 11, 2009

Okay how to install would be nice ... not able.

I assume I need google gadget installer, adds drop down to the new wave button? Then I try to add the url above and it says something clever the effect of which is no dice.

Comment by dusty.je...@gmail.com, Jan 20, 2010

If you're having tasks that take more than one man month, no planning software is going to help... please change to hours.

(also, it appears that it's severely truncated in FireFox?, but not in Chrome... use Chrome if possible)

Comment by Guycardi...@gmail.com, Mar 15, 2010

J'ai un problème avec cet outil La fenêtre n'est pas complète! Merci A+ Guy Québec

Comment by George.C...@gmail.com, Mar 22, 2010

This would be a VERY useful gadget, except that it shows up as truncated on Windows XP Pro using Firefox. I appreciate the challenges of cross-browser compatibility, but I hope you do get around to fixing it.

This is exactly the kind of thing I am looking for to make Google Wave into the kind of business tool I think it could be.

I'll try it in other browsers, and see how it goes. Thanks for this effort, just the same.

George Charpentier Saskatoon, Canada

Comment by jgoncalo...@gmail.com, Oct 24, 2010

This is just perfect for what I wanted to do. But the truncated windows issue doesn't allow me to use it. Please fix it!


Sign in to add a comment
Powered by Google Project Hosting