Dear Task Coach developers,
First of all I want to thank you for creating such a wonderful tool with a clean yet flexible interface and efficient task manipulation.
I have been using it for the last two months and I can see that it's the closest to what I need among the applications I have found, as it comes with a unique combination of practical features which I have not found anywhere else and it allows me to focus on the most important tasks to do next.
I was wondering why the latest version was four years old and found in the discussions here that the main showstopper for further development was the pending porting to Python 3 [1-3].
I think it will be a great pity if the project is abandoned for good because of this.
I fully agree with Aaron that Task Coach has a future potential and it's definitely worth getting it back to being a maintained program and upgrading it with a modern framework as Jerome planned.
I also really appreciate Christophers's effort with porting the code base to Python 3 and I think what he started should be finished.
In my attempt to give the development another spark, I did some first preparation steps that I want to share with you.
For your information, Linux Mint is the only desktop OS I am using so I can only help with code writing/testing for Ubuntu-compatible platforms.
Before spending more time on this, I would like to hear from you whether you are willing to give it a shot and make Task Coach the best updated todo list app for desktops. :-)
Cheers,
Vít
Refs.
[1] https://sourceforge.net/p/taskcoach/support-requests/499/
[2] https://sourceforge.net/p/taskcoach/support-requests/540/#f122
[3] https://sourceforge.net/p/taskcoach/support-requests/549/#acca/9792/9c8b
Wow, thanks for this effort. I hope Jerome sees this and speaks up about his views. I know he historically has had a strong preference for Mercurial (and, I'm ignorant about it, but I suspect he's right about Mercurual being better, but it's like VHS vs Betamax videotape — better technology does not always win the market, and it's tragic, but we have to deal with the reality of it).
I hope that at the least, Jerome would be willing to respond to code questions, provide input and guidance to those helping to revive Task Coach.
For my part, I am very busy (see my Task Coach file!) but I would prioritize Task Coach enough to test releases, mention the revival of the project to anyone I encounter who might want to help, and answer any questions I can about anything other than the code (which I've never dealt with). Since first volunteering for Task Coach, I have other additional experience with managing free/libre/open projects and could put in some time toward helping structure the project, bringing it to more contemporary development methods (from my perspective being documentation, recruiting, project managing etc, not code process).
Even still, I think there's more than Python3 in terms of both technical and design debt and legacy in Task Coach. I'm not sure how optimistic to be about revitalizing. But the more it seems feasible, the more I'm in on doing what I can to help.
I think my vote at this point would be toward making this fork (Python3 and Git is already a shift) be free to drop some backwards-compatibility as long as there's a transfer process. It might be cleanest to be willing to cut out features that have messier code and consider other ways to reimplement or just to drop functions that are costly and extraneous in order to get a leaner version of Task Coach that still would have the essential things that make it unique… I'm happy to discuss what this might mean if we get to where actual detailed decisions arise.
Thank you so much for the effort this far, and I guess we'll see. A journey of 1,000 miles begins with a single step…
Bonjour,
J'utilise taskcoach après avoir lâché ThinkingRock aux environs de 2013-2014, cherchant quelque-chose collant plus à la fameuse méthode et de ce que j'avais appris des techniques d'ingénieurs.
Ce projet me plaît tellement que je cherchais le moment pour y contribuer. Depuis septembre, je tente d'apprendre le python sur ce code en tentant de le porter sur Python3.
Je suis resté bloqué aux import de class inexistantes tel que desktop!
Il y a quinze jours, je suis tombé sur cette article: https://docs.python.org/fr/3.11/howto/pyporting.html qui m'a un peu plombé.
Ma question est :
-doit-on tenter de créer un nouveau logiciel en pur python3 , ce qui me parrait être une lourde tâche;
-ou essayons-nous de porter le logiciel qui fonctionne en python 2.7 vers python 3 via futurize ou modernize avant de continuer à le faire évoluer ?
I used translation help to understand, but Jerome speaks French and might possibly reply.
For my view, I will just say that updating Task Coach to Python3 would really be helpful, it would allow it to continue being used by people to use it now, and it could open up the possibility of improving it in the future. I can't say that it is definitely better than starting a new Python3 project, but porting Task Coach would definitely be a helpful thing and would also help you in understanding Python.
Any progress?
Well, After reviewing each taskcoach file (without thirdparty and test) in order to no longer have errors, I am currently fighting with thirdparty (choice between thirdparty to translate, change in the Makefile, or use of Packages with pip). To take my mind off things, I created a config/arguments.py file based on options.py to use argparse instead of optparse (soon to be obsolete).
https://github.com/freedomsha/task-coach/blob/master/taskcoach/taskcoachlib/config/arguments.py
Thanks for the update!
I reached a dead end.
When trying to run python taskcoach.py, here is the error message:
`Traceback (most recent call last):
Reading http://www.phyast.pitt.edu/~micheles/python/metatype.html, I pretty much understand the concept but I don't see how to fix it!
The only path I followed is to look at the result of pyreverse, example:
pyreverse -o pdf -p base-all-names-wlibs -my -A -b -L -S base.py --colorized.
Oddly, I see taskcoachlib.patterns.oberver.Observer as a child class of taskcoachlib.gui.viewer.base.Viewer when it should be the other way around!?
So, to continue learning, I found out about unittest. I am testing tests-py3/tctest.py.
Last edit: SZYDLOWSKI Sylvain 2024-03-20
User
voici ce que j'ai ajouté dans taskcoach.py pour :
Oh, hell, before I found you are discussing here, I had make a workable version from Sylvain's python3 branch these days T_T ....
My Fork at GitHub
My original purpose just want to fix some issues that boring me when using 1.4.6, but seems before doing that I had to port it to python3 & wxPyhton4 first. After jumping in the code like a monkey, and finally I had make a smoking car from that: It run, GUI show up, but exceptions might pump out of nowhere ....
Last edit: Hongshe Liang 2024-05-21
Wow, I try when I can. I still have a lot of bugs!
In the meantime, I haven't changed some things on my fork yet. Notably, NewId changes to NewIdRef and some wx functions.
I'm glad to hear from you, Sylvain! It's feel lonely when doing this interesting thing.
Bugs are same on my fork either, NewId/Deprecated wx stuffs might still hiding somewhere until they bump on my face O.o ... Now the drag & drop function seems already broken, other stuffs are seem ok (but not fully perfect yet). I'm trying to make drag & drop work again now ... (I'm expert of c & c++ & python but not familar with wxWidgets or wxPython framework)
My develop environment is linux mint on x64 intel cpu, I don't know if the fork still works in other system now :P, I think get to the working point is the more important things before compatibility issues.
Correct me if I'm wrong, is this your github repository fork? : https://github.com/freedomsha/task-coach
Yes, absolutely but being alone working on it, it's been a long time since I updated it and I still can't get it to work.
My config on Manjaro is a venv in pycharm with python 3.12 with wxpython 4.2.1. But I know/can't synchronize with github, it's annoying!
So I tried your version and this is what came out:
I have a first problem with make prepare:
make prepare ✔
which I still haven't fixed! (since currently, I no longer work with thirdparties. Only with packages)
Then in taskcoachlib/i18n/init.py
imp is deprecated, replace with 'from importlib.machinery import SourceFileLoader as load_source'
and replace imp.load_source with load_source.
as well as in tools/pygettext.py(which has changed quite a bit!),
I replaced import imp with:
then see with which we can replace imp in _def_visit_pyfile and following...
it is explain there: "https://stackoverflow.com/questions/61622881/transition-from-imp-to-importlib"
Last edit: SZYDLOWSKI Sylvain 2024-05-29
Okay,,, Sorry for that, may be because I jump into the codebase after a success "make prepare" then without look back. Maybe something broken at the preparation stage.
I will now re-checkout from the fresh source codebase and fix those problems, please wait.
I hope I can fix it tonight ...
I have fixed that make prepare problem, you could try after pull the new commits.
Just notice that you are using python 3.12, that make things different, I'm working on python 3.10, seems some function will disappear on 3.12.
I'm trying to create a new environment base on 3.12
Thanks you provide the information about porting "imp" to "importlib", I have fix that deprecated warnings by that. Could you try again and check if it works?
je ne peux pas ce soir mais demain
Une idée me viens vu que tu es sur 3.10.
Je vais bientôt envoyer mes commits sur mon git. je vais tester ta version. dès que ça fonctionne, je l'intègre dans mon git.
tu verras, ma version est pleine d'annotations pensant à la rétrocompatibilité avec 2.7 mais plus j'avance plus je me dis que c'est inutiles. N'est ce pas ?
Thanks for checking:) I think you are right, python2 already obsolated and no reason to keep compatible even with 3.8. There so many libraries already not working on python2 now, and the wxPython4 does not have a python2 version either.
I hope that merge won't boring you, because I have format all sources by formatter "black" and use it's standard with a line length 79 (Original I don't expect there have someone merge it and I want to have a fresh starts:P).
make prepare has a problem in pycharm:
python taskcoach.py
I have in pycharm:
Process finished with exit code 139 (interrupted by signal 11:SIGSEGV)
and in my system:
/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/thirdparty/pubsub/core/kwargs/listenerimpl.py:13: SyntaxWarning: invalid escape sequence '*'
""" Wraps a callable so it can be stored by weak reference and introspected
Traceback (most recent call last):
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoach.py", line 84, in <module>
start()
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoach.py", line 69, in start
from taskcoachlib import config, application
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/config/init.py", line 19, in <module>
from .settings import Settings
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/config/settings.py", line 19, in <module>
from taskcoachlib import meta, patterns, operating_system
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/patterns/init.py", line 20, in <module>
from .observer import *
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/patterns/observer.py", line 21, in <module>
from taskcoachlib.thirdparty.pubsub import pub
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/thirdparty/pubsub/pub.py", line 35, in <module>
from .core import (
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/thirdparty/pubsub/core/init.py", line 45, in <module>
from .publisher import Publisher
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/thirdparty/pubsub/core/kwargs/publisher.py", line 7, in <module>
from .publisherbase import PublisherBase
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/thirdparty/pubsub/core/publisherbase.py", line 6, in <module>
from .topicmgr import (
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/thirdparty/pubsub/core/topicmgr.py", line 29, in <module>
from .topicargspec import (
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/thirdparty/pubsub/core/topicargspec.py", line 10, in <module>
from .listener import getArgs as getListenerArgs
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/thirdparty/pubsub/core/listener.py", line 18, in <module>
from .listenerimpl import (
File "/home/sylvain/Téléchargements/src/task-coach-ex/taskcoach/taskcoachlib/thirdparty/pubsub/core/kwargs/listenerimpl.py", line 8, in <module>
from ..listenerbase import ListenerBase, ValidatorBase
ModuleNotFoundError: No module named 'taskcoachlib.thirdparty.pubsub.listenerbase'</module></module></module></module></module></module></module></module></module></module></module></module></module>
I no longer remember how I managed to resolve these implicit import errors in my other project.
WAWOOH! IT STARTED ! SO HAPPY
Well, there is still a way to go.
Congratulations! Just enjoy yourself:)
I just come back from company, dog tired a day. It's 21:13 here, I have to sleep next day for recover T_T.