Enable multi-user Task Management
Currently, when 2 (or more) users are opening the same file, a change one
made is not seen by the other, until he re-opens the application.
A "push tier" is one possible solution to pass changes to the other users.
Completely forgot :)
dunno if this helps or hinders, but Google has published their tasks API: http://googleappsdeveloper.blogspot.com/2011/05/getting-organized-with-tasks-api.html
AdminJérôme Laheurte (Admin, Task Coach) commented
Except if you're a seasoned Python developer, pretty much no. I have all the "theoretical" preliminaries in mind but I'm just short on time to actually work on it.
is there anything constructive we can do to help this along, aside from voting for it?
I've just posted the suggestion to use CalDAV to synchronize tasks.
Maybe this could help to enable multi-user task management.
AdminJérôme Laheurte (Admin, Task Coach) commented
Actually we have several tracks to enable multi-user; since internally Task Coach stores every change to a task in Command objects (so that they can be individually undone), re-applying those Commands to the stored tasks instead of saving the current ones could work. After I'm finally done refactoring the modification tracking system (originally written for the SyncML sync), we may also consider "saving" as "syncing in-memory tasks with the ones on the disk".
Both approaches have their advantages and drawbacks but they should work.
Juan Luis commented
To convert TaskCoach in a multi-user application may require traumatic changes to the code.
I will propose a solution wich, while not the most elegant, I think it may be technically viable.
The solution requires two additions to the xml file and a change in the locking policy:
1) Only lock the file during the time of writing changes at the same time
2) Create a new tag <version id="1" /> for the global version of the file
3) Create a new attribute <task version="1" ...> for the version of the task
- During the application startup, when reading the xml file, it must read and store the new values: current global version number and tasks versions.
- When you modify a task, before storing it, first acquire a lock and query if the task version number has changed, in which case a warning is issued. If not, it increases the task version number and the global version number, saves the data and unlock the file.
- Periodically check (polling) the global version number for changes. If so, recharge the tasks (all or those looking for which has changed its version number).
We are working in a small company and we would like to use TaskCoach in order to organise tasks among 10 people. We are looking forward to using it in multi-user environment more efficient.
I think that would be very usefull a WEB-INTERFACE with multi-user Task Management.
I think that the Feng Xu's vision is the best.
Any way of merging files would be fanstastic, even for task maintanance made by project managers.
+3 for the subject line, multi-user aware and integrated. How this is accomplished.... I have nothing constructive to add, other than sqlite might be a good lightweight and portable backend to use. Though there are some limitations to having mutliple users/applications writing to the db: http://www.sqlite.org/faq.html#q5
Carl Fischer commented
I'd like to see the ability to use a database backend rather than an XML flat file. SQLAlchemy should make this relatively portable. Not sure how to maintain the XML back-end and the SQL interface at the same time, but I also suspect that a SQL back-end would be much faster after a few years of use.
Jack Rainey commented
We are relatively new to TaskCoach. We are planning to use it to coordinate tasks amongst a group of 5 people, so multi-user aspects are important to us. First observations and suggestions after a very short familiarization are as follows:
-Add 'read-only' choice when attempting to open a locked .tsk file
-Notify a user if lock has been broken (on a timed basis check the lock file)
-Periodically check who (if anyone) has the file locked. Need to add a section
that would allow entering a mapping between computer names and users
-Add a rudimentary (for now) level of security. Who can open read only, who
can edit tasks. This will have to advance more as time goes on, but for now
a relatively simple model will do for the multi-user environment.
Feng Xu commented
The function of merge two .tsk file will be useful. Sometimes, you may forget to synchronize you task on server, then create a separated one on laptop, but you still hope you can merge it to the main tasks on server.
And this function can also be extended to multi-user described on this suggestion. Every use can have temporarily .tsk file when they are working on their own computer, then just click on one button, then his task can be merged to a main task on serve.
Claus Rebler commented
that is a big problem
I think that changing the lock mechanism from a file-oriented mechanism to a item (task, category, note...) mechanism would suffice for achieve the multi-user support.
Leonardo Tancredi commented
David, would you please elaborate? I can see the benefit in having an abstract data model, and one with a stable API, but how would that necessarily solve this "multiuser" requirement?
David Nicol commented
completely abstracting the data model would allow multi-user, also portability, and interoperability with "planner" or other project management software, integration into Trac etc etc etc. So my feature request, which I am filing as a comment to this one, is, abstract the data model, provide a data model API.