I have been mainly working on FocusGTD2 the last couple of days since google decided that it would no longer accept / distribute apps targeted for < Android Oreo.
At the time I didn’t think about it much so I told myself, „targetting Android Oreo can’t be that hard, eh?“. Man, I was so wrong.
New features of Android Oreo such as Doze mode and notification channels basically required me to rewrite much of the alarm notification system. So the last couple of days were consisting of setting many many alarms, waiting for them to go off and then curse at google when they didnt (which was far too often the case).
If you want to know more details you can head over to http://pguardiola.com/blog/darealfragmentation-alarms/ to see the madness. Basically, I now need to have 3 different code paths when I want to schedule an alarm based on the android version. Fragmentation FTW!
I am now slowly rolling out this release (first to testers and then perform a staged rollout and watch if there are unforeseen problems). After this intermezzo, I will go back to FocusGTD3.
Here is a short status update for how its going with FocusGTD3.
I started working on a new Omnifocus 3 feature which lets you show all tasks of a specific tag on the „today“ view.
Overall I completed the backend for ordering tasks within a tag, but there is no UI to surface this functionality yet. Since FGTD3 implementation is taking longer than anticipated I will probably push some UI updates out to get a first version done sooner.
A short update on how its going. I have finally resolved most of the questions regarding tag ordering and most of it is now implemented.
The only missing piece for tag related backend stuff is being able to move tasks within a tag to a new position. Once this is done, I will move on to one of my last open backend features which is „custom alarms“ support.
I managed to implement basic tagging support in my database backend and was just about to finalize one of my last automatic integration tests (these are programmatic tests that simulate various actions such as various ways to tag / untag / change order of tags, etc.) when I realized that some of my basic assumptions on how tag ordering works was wrong.
I wont bore you to death with the technical details but suffice it to say that I will need to rework portions of my tag ordering logic to accomodate my new findings.
So from an overall status perspective it looks like this
new database: ✅
downward sync: ✅
upward sync (minus task ordering in context): ✅
task tag support: ✅
tag ordering in tasks: ✅
task ordering in tags: in progress
custom alarms: ○
automatic database cleanups: ○
project/folder list: ✅
context list: ✅
Forecast view: ✅
tags popup for task editor: ○
order tasks within tag screen: ○
task reordering within project: ○
complete UI overhaul: ○
dark mode: ○
So as you can see there is still a bunch more work open. I apologize for the long wait but reverse engineering two years of work by Omni is no small task.
I will post updates again once I have finished one of these tasks. So stay tuned.
Since Android 6.0 is out finally it seems that a lot of people are using FocusGTD with it. Unfortunately the HTTP stack that I am using (apache-http-client) seems to have problems with the latest OS update.
Due to this fact and since google is deprecating apache-http-client, I decided to move over to okhttp.
Unfortunately, this means that I have to rewrite most of the networking code including the WEBDAV stack.
As part of this re-write, I have already released a bit of code as open source
After a lot of work and tremendous help from some of the testers the application is shaping up reasonably. The app still looks pretty crappy from a visual perspective but I believe that the synching should be pretty reliable at this point and it should not destroy your data on your Mac.
Therefore, I have added the next set of testers. All persons who got invited will receive an invite to the google community (Focus GTD alpha Testers). Please review the very first posts in this community on how to download the app.
So whats the status?
Synchronization via Webdav (mostly tested with OmniSync-Server)
Creating, Editing, Deleting tasks
Viewing task notes
Browse by project, folder, context
What does not yet work
Editing of projects, contexts, notes
Deleting projects, contexts
Configurable default reminder time (it will always assume that the default reminder time should be tomorrow 9am)
Standalone operation (the app still requires that you have Omnifocus on the Mac which will clean up the sync files now and then)
My synching is very slow. Especially the very first sync.
This could happen in case you have outdated clients (or you have uninstalled Omnifocus or FocusGTD from a few devices and now Omnifocus does not dare to delete older files since it wants to retain them for these clients. Go to Omnifocus Sync preferences and unregister all clients that you are no longer actively using.
This allows Omnifocus to delete all old files and create a new more recent snapshot. In practice this often means that FocusGTD has only to parse 20 files instead of 400.
I would like to participate and make suggestions and/or follow the progress of the project
If you are a registered tester I can give you access to the trello.com project that I am using. There you can get a realtime view of what is happening. This is also very useful if you want to report bugs. Let me know your email address and I can invite you to trello. Otherwise if that is too much involvement for your taste you can also leave a comment here on this post and I will try to incorporate them as soon as I can.
Why the heck is it taking so long?
Synchronization is a very complex topic. Also Omni uses a somewhat unusual approach to synchronization which makes it even more laborious (on the other hand it seems to work pretty ok for their apps except for the fact that its not very fast). Also I do have a day job since the revenue from FocusGTD is still not paying my bills, so my available time is limited. I considered outsourcing some of the development but this would be a bit early (also I think that the group of potential customers is somewhat limited).
I have been working for quite some time on supporting nested tasks and statistics (4 tasks remaining, 2 overdue, …). This turned out to be more complicated than initially anticipated. Basically it opens up a can of worms, but the first version with support for this is out and in the hand of testers. There is still quite some work ahead of me but I will gradually include more testers as the app becomes more robust (and more feature complete).