Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

single responsability, split it in modules #12

Open
1000i100 opened this issue Oct 2, 2015 · 3 comments
Open

single responsability, split it in modules #12

1000i100 opened this issue Oct 2, 2015 · 3 comments

Comments

@1000i100
Copy link

1000i100 commented Oct 2, 2015

Hi, you look to have done a good work for the community !

For optimal usage, i think your program could be split like this :

  • a tracker, it collect usage change (active window title change, inactivity start/end...), associate them with timestamps and active user, then expose theses events to any recorded listener. (multiplatform is important for this one)
  • a logger, it listen the tracker and write to disk. (multiplatform is important for this one)
  • a streamer (or more than one), it listen the tracker and send the data online (self hosted network recorder or any external tools) (multiplatform still important for this one)
  • a local UI parsing log and displaying them as you need.
  • some community UI or webUI parsing log or network record to fit there need
  • a more complex UI with feature like grouping log entry by keywork (regexp or more user friendly way) feature like adding or replacing idle log entry with afk stuff (call, conference...)

and anything else that look usefull.

This way, each open-source module can be used, separately, for various project with different need or philosophy, or together to be your ideal time tracker.
With the modularity, it's easier to contribute (smaller project), and each part can be improved by community without beeing disturbed by the not used part in a specific use case.
As an example, in open-source software, there is many manual tracker with great work in the UI, but none have auto track feature. A tracker and a streamer connected to there database could fill them with data and extend there usability.

@frans-fuerst
Copy link
Owner

Hi again GammaNu, maybe you're pleased to hear that I'm currently working towards that direction. On the branch server_client_separation I'm splitting the server (which does the tracking) from the UI. There's also a minimalistic command line interface which I use to quickly query the data base and do some checks. There will be a TCP/ZMQ/JSON based API which allows querying all important data.
Since I'm only spending my free time on this project I have to focus on what's realistic and what's needed most but I too think that modularization is a key to success for any open source project.
Let me know if you have a certain use case which would imply one or more of the separation steps you mentioned and I'll consider it in the road map!

@1000i100
Copy link
Author

hi,
what's up here ?
I see track_base and track-qt folder so it look nice to me.
can you confirm the base can work without ui and the ui can process the data without the base running ?

@1000i100
Copy link
Author

Oh, and reading again your 2015 answer, here is my ideal usecase :

  • time/activity tracker on my computers store trace of active app, background app, active title with begin and end time of activity.
  • a android tracker reporting call time spending linked to call number.
  • each of my computer send theses data to my server for central time track.
  • an input ui allow me to add manual time spent for business travel time or similar
  • then, a web ui on my server allow me, when data are allready collected :
    • to categorize them (by project, by client, by activity, by efficience, by source...)
    • to build reports after removing time superposition if there is some. Exemple : time spent on project A during week 3 : 15h auto calc + 3h added manually. Details : 1h20min working on file index.js, 2h on stackoverflow...

And that's all in FSF compatible license !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants