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).
The first alpha version of Focus GTD, the only android GTD application which is compatible to OmniFocus has been released to some brave testers. There are still a lot of core features missing but once the app has been stabilized enough, I will open it up to a larger group of people.
I know, I know, it has been a LONG time without any updates. However, I have been quite busy implementing the application and making the synching process more robust. Right now I am nearly at a point where some daredevils might be able to try and play around with the application.
What is it?
A GTD application that can sync with OmniFocus for Mac and iOS. It is in no way connected to OmniGroup (although I did ask if they were ok with it).
Editing existing tasks
moving tasks to other contexts, projects
checking off tasks
creating new tasks
synchronizing changes to the server (it should work with any web dav, but only tested on omni-sync Server).
What does not work?
deleting tasks (there is a DEBUG option but this will not get synched to the server, its just a means to correct any misbehaviour of the app)
a lot of the UI doesnt work, there are a bunch of action items which don’t do anything
creating folders, contexts
task detail editing (such as reminders, repeats, ..)
UI is still terrible, its just stitched together really since I have been working on getting the backend of the code to work reasonably, if anyone has graphical skills, I am all ears :), the navigation will most likely change, right now its oriented on the iphone version, but I think on Android it can be made better.
the app cannot be used without omnifocus at the moment (it relies on an initial sync state to exist)
the app wont compact sync files on the server, it relies on desktop omnifocus to do this job
Should I consider becoming an alpha tester?
do you know how to back up a webdav share?
do you mind if your data might get lost?
do you mind having weird elements show up in your omnifocus at unexpected places?
do you mind the app crashing?
If you answered one of these questions with „yes“, then this might not be a good time for you yet.
For the remaining persons (i.e. the daredevils out there) I will probably allow approx 10 testers into an „alpha program“, who can participate in the development of the application and might get their feature requests and improvement suggestions implemented.
If you are really serious about signing up you have to agree to the following
I won’t be responsible for anything bad happening to your phone nor your data
You are doing this on your own free will
You will not get any payment for testing (sorry, but I dont even know whether I can make back my invested time.
I don’t care. Where do I sign?
If you really agree with all the caveats and you swear that you will not sue me for data loss or anything else bad happening to your phone or OmniFocus data, then you can leave your Google Plus Email on this form
I will then invite you to the alpha testers community and add you to the list of testers who will be able to download the app from google play (so I guess your G+ mail also needs to be registered with Google Play to work).
When will I get the build?
That depends, I guess I will still need the remainder of this week to clean up the most pressing issues, but I would expect to launch the very first version by the weekend.
I have now more than 12 registered Testers. So for the first iteration this will be enough, so I wont invite any more testers until the app is further along. However, you can still keep on registering and in case I have the need for more testers I will add the first ones on the list. Note that in order to register you need to provide an Email address that is a valid Google+ account.