A. I think that sometimes, every task in a project has been completed, and some of them are completed on Android awaiting sync to Windows while others are completed on Windows awaiting sync to Android. When the sync is completed in both directions I would like to see everyone agree that all tasks are completed and that therefore the project is completed for this cycle and needs to be rolled to the next cycle. I do not think that happens, at least I do not think it always happens. The results may vary depending on whether the Windows side or the Android side was the first to see the project with all tasks in completed state.
B. I think that at least sometimes, completing a task causes the parent to sync. If I change the parent on Android and a minute later (before any sync) change a subtask on Windows in a way that causes the parent to sync, the (unchanged) windows parent will overwrite the changed Android parent and the change from the Android side will be lost.
C. In these circumstances it can be devilishly hard to ensure that items (especially project/parent items) are changed only on one side. If they get changed on both sides and the version you want to keep is on Android, the "both sides changed" setting to server guarantees that the desired change on Android will be lost. (note, changing "both sides changed" to use the local copy makes the problems worse, believe me).
D. Lisa noted that in the event of a sync conflict, on the Windows side you always get notified and can choose which version to keep. I think most users with an opinion would agree, but it's not always true. Start with the case described in (C) above. When Sync overwrites the good version on Android with a bad version from Windows, the next sync sends the bad update back to Windows. Since the update exactly matches the Windows version no conflict is detected and the bad version is retained, with no notice or choice on the Windows side.
E. Along the lines suggested by ctenorman I believe that frequent background syncs on both Windows and Android would reduce (but not eliminate) the window in which an error could occur.
Ideally, either side would sync whenever a change is saved to the profile, or whenever unsynched cloud changes are detected. I had asked for this in one of these forums long ago and was challenged by other readers who felt that the storage and processing costs would be exorbitant, and that windows/android performance would suffer.
Meanwhile there have been several successful implementations, such as Google Drive and Evernote. I understand that Google can afford unlimited storage and processing for a product with little if any revenue, but Evernote needs revenue the same way MLO does and yet Evernote gets this right.
X
X
Thanks for your comments, see my replies inline
On Wed, Jul 25, 2012 at 10:30 AM, Lisa Stroyan wrote:
Thanks for the detailed explanation. I'm going to jump to the issues as you've gone above and beyond in your setup to get it the best it can be...no issues there. I'll put my replies inline:
On Tue, Jul 24, 2012 at 1:57 PM, Dwight Arthur <m...@grantsmiths.org> wrote:
A. I think that sometimes, every task in a project has been completed, and some of them are completed on Android awaiting sync to Windows while others are completed on Windows awaiting sync to Android. When the sync is completed in both directions I would like to see everyone agree that all tasks are completed and that therefore the project is completed for this cycle and needs to be rolled to the next cycle. I do not think that happens, at least I do not think it always happens. The results may vary depending on whether the Windows side or the Android side was the first to see the project with all tasks in completed state.
I have found at least one fully reproducible defect here which I submitted to the beta forum [I just saw your reply]. You are correct, not only does completing part of the tasks on one and part on another FAIL to cause a recurrence in the parent, it's even worse because completing yesterday's tasks on Android can cause today's versions of the tasks to be completed erroneously on the PC.
I agree that you have defined and reproduced this, that it’s a defect and that it plays a role in my issue.
B. I think that at least sometimes, completing a task causes the parent to sync. If I change the parent on Android and a minute later (before any sync) change a subtask on Windows in a way that causes the parent to sync, the (unchanged) windows parent will overwrite the changed Android parent and the change from the Android side will be lost.
By "sync" do you mean "marked as modified"?
If a single subtask is changed, I don't get the parent marked as modified. But if I change the note of "Testparent" on Android, then complete and auto-recur Testparent on the PC, sync PC, and sync Android, the changed note will be lost on Android. Is that what you mean? But you see it sometimes *without* the recurrence happening?
I have not been paying attention to date/time of modification. Are you certain that a task is subject to synch if AND ONLY IF date/time of modification is sufficiently recent? Without thinking too much about it I had assumed that date/time of modification was a sufficient but not necessary condition, and that other factors could also trigger a task to be candidate for sync.
I have not been able to reproduce this and am not 100% certain that it happens as I describe it, but I have a sense that completing a subtask of a recurring task that recurs based on subtask completion, would cause the parent to sync even if its modification date was unchanged.
Here’s a scenario that DOES NOT work to illustrate my point, but I think it’s close to the situation I’m chasing:
-define a repeating task that recurs when all subtasks are completed. Set daily repeat with start and due date = today.
-fully synch between windows and android
-complete one task on windows and sync to cloud. Sync cloud to phone
-complete second task on phone and set the phone aside overnight without synching. Leave MLO running as foreground program. Phone will not synch overnight while Windows will synch hourly.
-In the morning, Windows phone and cloud all show the repeating task set for yesterday. Windows and cloud show one subtask complete, phone shows two subtasks complete.
-On the phone, complete the repeating task. It will reset to today with all subtasks incomplete. Do not sync.
-On windows, manually complete the second task, the same one that was marked complete on the phone yesterday.
-Sync windows to phone to cloud.
I believe but cannot reproduce that sometimes the phone will show the repeating task uncompleted with yesterday’s date, matching what’s currently on Windows, with the second task completed and the first and third uncompleted.
My conclusion is that marking the second task complete on Windows caused the parent status (incomplete, due yesterday) to be updated to Cloud.
C. In these circumstances it can be devilishly hard to ensure that items (especially project/parent items) are changed only on one side. If they get changed on both sides and the version you want to keep is on Android, the "both sides changed" setting to server guarantees that the desired change on Android will be lost. (note, changing "both sides changed" to use the local copy makes the problems worse, believe me).
What I do in this case is I always sync Android first. It seems to me that if there is a case where syncing Android first does not give a request for a sync conflict resolution, there is an obvious/reportable bug -- if we can find it.
But if you are syncing "wi-fi only" then you can't always sync android first, and automatic desktop sync complicates it even more.
I agree that if it were possible to force Android to always sync first the problem would be corrected or at a minimum massively reduced in impact.
Scheduled sync on desktop, as you say, makes that difficult. The other thing that in my opinion makes it difficult is that changed tasks on Android can remain unsynched for hours, provided that MLO remains in the foreground on the phone for all of that time.
In my case I don’t think that wifi only is significant because I almost never use my computer outside of wifi range and my phone is generally there with me, so if my fingers are on the computer the phone has almost certainly been in wifi range for a few minutes.
D. Lisa noted that in the event of a sync conflict, on the Windows side you always get notified and can choose which version to keep. I think most users with an opinion would agree, but it's not always true. Start with the case described in (C) above. When Sync overwrites the good version on Android with a bad version from Windows, the next sync sends the bad update back to Windows. Since the update exactly matches the Windows version no conflict is detected and the bad version is retained, with no notice or choice on the Windows side.
Yes, I have replicated this just now. It happens when Android is not synced. The reason I don't see this is that for me Android syncs as soon as I go do something else on my phone, pretty much always since I'm almost always on a network, and if I'm not, my PC is at home and I'm not changing anything.
In my test case that I reported a defect, I was also not asked, if I did the steps in the order I listed.
E. Along the lines suggested by ctenorman I believe that frequent background syncs on both Windows and Android would reduce (but not eliminate) the window in which an error could occur.
But if Android is always synced first, and the obvious bugs fixed, is this true? Of course Android cannot always be synced first, if the scheduler happens to slip in right at that moment.
If Android always synched first, and the other obvious bugs were fixed, I would be pretty happy. I don’t know how either Windows or Android could know whether the other side has synched until it finds out by synching. I kind of feel like Heisenberg and Einstein discussing whether anything anywhere can ever be simultaneous, and how we could know.
I suppose that Windows could refuse to synch if the last Android synch was more than ___ minutes ago? But that would mean that if you lost your phone and then sent tasks to the MLO/cloud’s email address the new tasks would not show up on Windows until you find your phone.
Ideally, either side would sync whenever a change is saved to the profile, or whenever unsynched cloud changes are detected. I had asked for this in one of these forums long ago and was challenged by other readers who felt that the storage and processing costs would be exorbitant, and that windows/android performance would suffer.
But wait...aren't you being inconsistent here? If you only sync when on Wi-fi, you wouldn't use the "sync on every change" anyway, and you would still see this issue, correct?
I would synch on every change. If a wifi connection were available I would expect the synch to occur within a minute or so of the completion of the change. If a wifi connection were unavailable I would expect the synch to occur within a minute or so of the re-establishment of a wifi connection. There would be no problem unless I am using my laptop with an Ethernet connection somewhere without wifi, or if I left my phone in the car (outside wifi range from my house) and went inside to immediately start managing my tasks. I could live with all of that.
Meanwhile there have been several successful implementations, such as Google Drive and Evernote. I understand that Google can afford unlimited storage and processing for a product with little if any revenue, but Evernote needs revenue the same way MLO does and yet Evernote gets this right.
Not always. I've had data loss with Evernote too though I have not tracked it down.
I suppose that any architecture with data stores on synchronized but disconnected platforms will show data loss if pushed hard enough. My point was that Evernote synchs changes more-or-less as they occur without destroying the performance of either Windows or Android and without requiring such massive cloud servers as to bankrupt the Evernote developers.
I have to run!
Me too. Thanks. –Dwight.
--
You received this message because you are subscribed to the Google Groups "MyLifeOrganized" group.
To post to this group, send email to mylifeo...@googlegroups.com.
To unsubscribe from this group, send email to mylifeorganiz...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/mylifeorganized?hl=en.
If a single subtask is changed, I don't get the parent marked as modified. But if I change the note of "Testparent" on Android, then complete and auto-recur Testparent on the PC, sync PC, and sync Android, the changed note will be lost on Android. Is that what you mean? But you see it sometimes *without* the recurrence happening?
I have not been paying attention to date/time of modification. Are you certain that a task is subject to synch if AND ONLY IF date/time of modification is sufficiently recent? Without thinking too much about it I had assumed that date/time of modification was a sufficient but not necessary condition, and that other factors could also trigger a task to be candidate for sync.
I have not been able to reproduce this and am not 100% certain that it happens as I describe it, but I have a sense that completing a subtask of a recurring task that recurs based on subtask completion, would cause the parent to sync even if its modification date was unchanged.
For what it’s worth, the discussion below mentioned so many times that there should be fewer problems if Android synched first, so I decided to try to force it. I have adopted the following routine: whenever I sit down at my computer after a while away from it, before touching the computer I take out my phone and synch MLO to cloud. Then I go on about my business. It’s annoying and time consuming but problems with my daily routine are way down. I still experienced one incident where I had started a new cycle of the monthly routine and clicked off a few tasks and the next morning I found computer and phone both back to a fresh cycle with nothing checked off. I may have missed once at synching the phone before touching the computer. But generally, this seems to be a workaround.
--
While I have experienced sync conflicts in the past I have not seen any lately
Daniel: here is the case that Lisa documented in the Beta forum:
Android sync should be set to "use server version".
Create a tree that looks like this (I created it from the PC)
Testparent
test1
test2
test3
Set [ start/due yesterday ] [ recur daily ] [ automatically recur when all subtasks are completed ] [ set all tasks to uncompleted ] on Testparent.
Sync both ways, to Android and back to PC. (It helps to set view mode to full and turn off hiding of completed tasks in the Outline).
On Android, complete but do NOT sync (you are completing *yesterdays* occurrence - they are now due today)
test1
test3
On PC complete Testparent (catch up on yesterday)
On PC complete test2 (now it's done for today).
Sync PC.
Sync Android.
Sync PC.
Result:
Parent is uncompleted, set to today, with all tasks completed -- a state that should never happen due to the automatic recurrence. Additionally, I NEVER COMPLETED test1 OR test3 *today*. They should be set to yesterday -- I consider this to be (mild) data loss because a task was marked complete for today without my knowledge.
In addition I know of another case involving the same testparent and three children, starting out dated for yesterday. On Android, complete the parent (regenerating the parent for today) and then complete a couple (but not all three) of the subtasks. Do not synch. On Windows, select the parent (still pointing to yesterday) and open the recurrence popup. Do not make any changes. Close it. Sync windows to cloud then phone to cloud then windows to cloud. The two tasks you completed for today on the phone are now shown as completed for yesterday.
-Dwight