FTP Sync for Android app

459 views
Skip to first unread message

Hugo González Castro

unread,
Jul 26, 2024, 3:14:59 AM7/26/24
to MyLifeOrganized

Hello,

I've noticed that the Windows app offers the option to sync files through a personal FTP site, which is a really impressive feature. However, it appears that this option is not available on the Android app. It would be fantastic to see FTP sync support implemented in the mobile apps as well.

I'm currently subscribed to the MLO Cloud, but I've been experiencing some synchronization issues recently. Having the ability to use an alternative service like FTP sync would be extremely beneficial, especially during times when the primary service is facing challenges.

Thank you for considering this suggestion!


Alex

unread,
Jul 26, 2024, 2:23:58 PM7/26/24
to MyLifeOrganized
Hi Hugo,

Unless I misunderstood what your trying to do, based on my understanding FTP sync for desktop to Android would not work. MLO desktop database file is different format from Android database file. I believe when you sync to MLO cloud there is most likely some sort of conversation service running which converts data received from desktop database into proper format necessary for Android database file. If MLO android used same database file as the desktop version than we wouldn't need FTP sync as there are various sync type apps which are much better than FTP, enable direct push sync from desktop to mobile, but unfortunately the database files are different.

Personally I  would love to see MLO release a sync app that advanced users can install/run as a sync service on their local network that does not depend on AWS MLO Cloud while offering same capabilities and benefits that MLO Cloud sync does. I wouldn't mind paying yearly subscription for support of sync app just like you would need for MLO Cloud sync. The value I see in this is for those that are more privacy security conscious and do not wish to depend on 3rd party cloud service. Last few weeks we saw significant amount of tech systems go down which affected many organizations relying on cloud type services including situation that impacted major dealership groups as well as the recent event with Crowdstrike. Of course I realize that resources are needed for alternative options and I assume MLO team has other priorities in mind. Staying hopeful.

Regards,
Alex

Hugo González Castro

unread,
Jul 26, 2024, 5:23:36 PM7/26/24
to MyLifeOrganized
Hello Alex,

Thank you for your explanations! Actually, I am not trying to use the FTP to sync with Android, mainly because the Android app doesn't have that feature. It was more like a feature suggestion...
I understand the formatting issue, but they do not need to upload the native binary file from each platform...  I was thinking in a standard file format they could have in common (the desktop and mobile apps), like the XML export.

I personaly have a batch file in desktop to export my tasks to XML and keep those in a version system, where I can check and compare individual changes on the files and so on.I personally migrated my data from AbstractSpoon ToDoList to  MyLifeOrganize, via XML ( https://www.youtube.com/watch?v=iPk2ZN5e27Q ), so I always keep everything in XML just in case MLO goes out of business, in order to be able to migrate back my data to TDL...  Sorry but my data is the most valuable asset for me, I cannot put all eggs in one basket...

Of course, if they implement something like that, I'd better use Dropbox or similar, but FTP still have the advantage of privacy, as you said.But it would be enough for me that the Android app just where able to select a different local file to open in XML format, one that I can take from Dropbox for example. That way I could at least read with the mobile app the changes I made with the desktop app...  Do you know any way to import data from a file in Android, without using the MLO Cloud?

Regards,

Hugo

imajeff

unread,
Jul 28, 2024, 11:34:06 AM7/28/24
to MyLifeOrganized
Hi, I hope that I can help clarify something I think is missing in the discussion. There is a big reason to say the FTP "would not work" and we are not at all saying "oh the feature just hasn't been written yet".

The FTP feature on desktop, or should we say the feature that can sync with any external ml file, is not doing what you think it is doing (I suspect). Yes if you synchronize tasks instead of a file, say in the form of exchanging XML elements then I think that's a good idea. You don't need MLO to do that for you as you already have the .ml file which is XML. In fact years ago they were encouraging us to do whatever we want by processing and editing the XML so even the company won't complain.
But as I was saying, the FTP is not doing anything whatsoever like that. The feature has no clue what is inside of the ml file, no need for knowlege of XML elements for it to just say basically this:
Connect via FTP and look at two files by name.
Which file has a newer timestamp?
OK transfer that via FTP and overwrite the other file.
This is the only reason it is not possible to use any of that feature, what-so-ever, in any implementation to sync with Android version.

So, why not just use the WiFi Sync feature? It really has nothing to do with wifi but to use the TCP or UDP instead of FTP and actually sync tasks instead of just whole ml file. Should have been called LAN Sync instead. LAN stands for Local Area Network, and people just think of it as the internet in their home or work but of course only local.
That is actually what you are looking for, and I used it regularly to avoid the cloud.
There still is a limitation being local, that the Android IP address has to be on the same local subnet as the desktop, but hey you can fix that using your own VPN, which I think is the most useful thing VPN has ever done. This is all about security, so either this is what you want, or you are really fine just using somebody else's cloud for synchronizing MLO.

I would be happy to help point others in the right direction to learn all these details, but to be secure you really need to do the work yourself. Here it is, the most important thing you need to protect yourself, but why do so many avoid the responsibility by saying some other company should be securing them... so we can blame them instead when it goes wrong? heh, it's a funny thing in human nature.

Hugo González Castro

unread,
Jul 28, 2024, 8:00:14 PM7/28/24
to MyLifeOrganized
Hello imajeff,

The FTP sync you describe, is exactly what I want and what would solve all my issues. That's why I suggested it. I personaly only use one device at a time, but need to sync several devices at different locations, that sometimes are not turned on at the same time. The easiest solution for me is having a centrallized place to have the latest version of my file. Each time I use any version of the app, it would be enough for me just to check the date and keep the latest version. I have no need of complex individual task sync. Just a place to keep my latest file. The FTP sync currently works fine for Windows devices, but it is not implemented for Android devices. That is just what I would love to have, and it is as simple as I described: the full file in a common XML format (for Windows and Android devices) in a centralized place.

I totally understand the issues that may happen with that kind of sync, they already have them under Windows devices...  I just suggested including the Android devices to that. The reason why the WiFi sync is not valid for me is because that requires both devices to be turned on at the same time. As I said, some of mine are at different locations and would be a huge inconvenience to keep them turned on just for syncing...  it is more convenient just having a centralized place for the latest version on the cloud. Of course, I can use my own NAS to have my own cloud and my own FTP server, no need to use a VPN nor somebody else's cloud.

About doing the stuff myself and taking responsability, I think that fixing the source code of an open-sourced project myself to be able to export my data to MLO is somehow good enough. I would be glad to fix the source code of MLO myself to implement this stuff, as I work as a senior developer...  but it is not reasonable to expect the MLO team could give me access to their source code...  I don't blame anyone, I just suggested a feature that would make a lot of sense for me. Of course, they can reject the suggestion, no problem with that.

Human nature is funny indeed, especially when assuming things about other people...

imajeff

unread,
Jul 29, 2024, 1:24:59 PM7/29/24
to MyLifeOrganized
Sorry, if I'm understanding but you still mean for syncing with the Android device? No, as we said there is not even any file to do that with. It's in a little database which cannot be used the same way. This makes it efficient for the limited Android system. This is why it's not what you want, and I'm not convinced that you totally understand. Sure if you're a developer you could try writing an app (not from this codebase) that handles it as the same xml as windows, try to make it compatible with MLO, and then use the file-sync method (assuming you can with limited resources), but it is not possible for them to do with the current MLO for Android. BTW there is a different team, "the Android team" apparently who created that app, not the team who works on Windows version so it's even more complicated.

I recommend solving the WiFi sync instead.

I forgot to mention an important limit to this FTP sync I described is not anything like the cloud sync or wifi: It is only entire data of one device or the other. There can be NO two-way sync of individual tasks this way, in case something even unrelated was changed on both. You would lose everything you did on the device that didn't have the latest change. Can only use one at a time, save it, sync, then use the other. Tedious and the WiFi sync is similar, not automatic nor seamless.

Yes I would like to see them build an entirely different thing so we can solve our sync limitations as well as the scripting support I keep mentioning for years, but I doubt they can find a way to profit from it, so why spend the millions? We would profit by no need paying them for the other stuff (I keep forgetting I could not use free MLO for Android in order to wifi-sync). I guess that's why it's up to us. It's just not easy to do, I don't think it's worth building our own thing "like MLO" but I think you agree just something to interface but that's where the need for scripting or API comes in, which is what they haven't designed MLO to work with. We're not talking "add a feature" in any case here.
I wish I had the protocol specs for the WiFi Sync so I could communicate my own sync with Android MLO.

I actually started MyLifeOrganized at the very first release (was no version number) before smartphones existed (dumb phone was just called my phone) and it was cool using a Windows-based PDA (I used iPAQ) because we did have a file to sync (and did more than just copy the file) but if I recall, it was a mini-version of data file, stripped down to smaller size so couldn't have everything in it. Of course that's because the PDA also had very limited resources.

So, about taking responsibility to solve these, I agree with you. That open-source thing is what I am suggesting at least as something that works with MLO hopefully not need to replace it. That's why the WiFi Sync protocol seems important to understand.

Hugo González Castro

unread,
Jul 31, 2024, 6:22:29 AM7/31/24
to MyLifeOrganized
Actually the MLO Wi-Fi Sync doesn't work between Android devices, even with the pro version (I have the pro versions for Android and Windows). It doesn't work for my usage case because I need to sync my two Android devices while traveling without access to any of my desktop PCs. The best solution for now to me is just using the MLO Cloud, which is what I'm doing.

About development options. The AbstractSpoon ToDoList for Windows is a great alternative for MLO for Windows, with even more features, FTP sync and way more. I have been using it for many years. The only problem is there is no official mobile app. I talked with its developer, but creating a good mobile app is way too much work, even teaming up. Such an opensourced app for ToDoList might put MLO and other competitors out of business...  About any possibility of extending the functionality or compatibility of MLO, would require at least the documentation for other developers...  and the MLO team doesn't seem to be interested in that possibility. That's the inconvenience of close-sourced software...  that's why I keep open the possibility of migrating my data back to ToDoList. I already made the code of ToDoList compatible with the XML for MLO for Windows, to migrate my data. But I don't know the format of the Android app...  that would be great to make a compatibility tool...

I understand now your suggestion of understanding the wifi sync protocol. Basically, you are talking about reverse engineering the protocol...  that cloud be a possibility, if it is not encrypted. It is indeed possible to spy the network traffic and see the transmitted data. If the protocol is easy, we could use that for our convenience...  not a bad idea...  it could be easier than reverser engineering the file format and creating a tool for the FTP sync by replacing files. I have still to try to fix my MLO Cloud sync in Windows, because the reverser engineering options look like a lot of work...

imajeff

unread,
Jul 31, 2024, 10:22:35 AM7/31/24
to MyLifeOrganized
On Wednesday, July 31, 2024 at 4:22:29 AM UTC-6 Hugo González Castro wrote:
Actually the MLO Wi-Fi Sync doesn't work between Android devices, even with the pro version (I have the pro versions for Android and Windows). It doesn't work for my usage case because I need to sync my two Android devices while traveling without access to any of my desktop PCs. The best solution for now to me is just using the MLO Cloud, which is what I'm doing.

Right, sorry but I knew Cloud Sync was the only solution for now and I'm glad it is there. I didn't realize you need multiple Android also, which has been another limitation. Some have mentioned they don't trust cloud, which is why I talk about my own intermediate service which each Android Wi-Fi Sync can communicate with to keep whichever one you're using at the time updated (it would remember multiple pairing), and when your home computer is on, the service will sync with that so they all stay in sync but the desktop and Android don't need to be always connected. For my own security, I would need my own VPN tunnel. That's for accessing my home network LAN but still isolated from outside Internet. Nothing of this nature can be 100% secure, keep in mind, but my own VPN beats trusting cloud services in theory.
 

About development options. The AbstractSpoon ToDoList for Windows is a great alternative for MLO for Windows, with even more features, FTP sync and way more. I have been using it for many years. The only problem is there is no official mobile app. I talked with its developer, but creating a good mobile app is way too much work, even teaming up. Such an opensourced app for ToDoList might put MLO and other competitors out of business...  About any possibility of extending the functionality or compatibility of MLO, would require at least the documentation for other developers...  and the MLO team doesn't seem to be interested in that possibility. That's the inconvenience of close-sourced software...  that's why I keep open the possibility of migrating my data back to ToDoList. I already made the code of ToDoList compatible with the XML for MLO for Windows, to migrate my data. But I don't know the format of the Android app...  that would be great to make a compatibility tool...

Yes, everyone says these things about every application, don't they? "Why can't you have feature [X] and [Y] because system [Z] has those and many more..."
This is how reality works, endless branches. Keyword is 'branch'; means a different direction. It reminds me of the movie, "Everything Everywhere All at Once". The truth is of course that one application would have to be designed to do all those things earlier on. This isn't that.
Did you know this (original MLO for Windows) was what I would call the one man's dream application [usually most efficient not bloated nor fragmented], while many that compete with each other are just Enterprise business throwing around $$$ to check off as many features as they can to gain the largest customer base. It's not his dream, this is more of the "Engineer's project" which makes it good for an engineer to fully use. I quickly noticed the layman struggles to imagine the best way to use this in their case. Of course it is a challenge for us engineers to use it the way we want but hey, that's the fun!
 

I understand now your suggestion of understanding the wifi sync protocol. Basically, you are talking about reverse engineering the protocol...  that cloud be a possibility, if it is not encrypted.
Yeah surely not encrypted because why else to work only in your LAN, ya know...
 
It is indeed possible to spy the network traffic and see the transmitted data. If the protocol is easy, we could use that for our convenience...  not a bad idea...  it could be easier than reverser engineering the file format and creating a tool for the FTP sync by replacing files. I have still to try to fix my MLO Cloud sync in Windows, because the reverser engineering options look like a lot of work...

You brought up another problem with something like MLO Cloud Sync... simpler to use, uless it doesn't work then nothing you can do if the problem is from one of the third parties. I suspect maybe it has to do with MLO 6 version trying to update authentication, but then all I could think of is what both of you did: erase the sync configuration and try authenticating again. Could be a lot of different problems that don't even have to do with MLO or your network and installation yet would be difficult if not impossible for us to trace. I am currently running niether MLO 6 nor Cloud Sync or manybe I could think of something else to try.

You gave a great report of problems and troubleshooting, so I hope they can figure it out.
--jeff
 

Alex

unread,
Aug 1, 2024, 7:15:26 AM8/1/24
to MyLifeOrganized
Hugo,

In regards to syncing of files between various platforms, devices etc... I highly recommend you checkout open source: https://syncthing.net/

This is what I use to sync files between various platforms, devices phone (Android), desktop (Windows), tablet etc... Very customizable and reliable.

Jeff,

I agree with you 100% that it would be very nice for MLO team to add API feature, essentially means for advanced users to integrate with other commonly used apps. In my case I would love to have ability to have more advanced integration between MS Outlook desktop and MLO. Can easily be done through API/DLL. Would love to have means to use keyboard hotkeys/shortcuts (not mouse drag and drop) to instantly turn emails into MLO tasks (with subject/message contents) copied just as currently able to do with drag and drop. Would love to have improved means to also have better integration between MS Outlook desktop calendar and MLO. Final cherry on top a sync service that can be run on local machine just like MLO cloud sync that would properly sync between Windows and Android (phone/tablet} without having to pass data to AWS MLO cloud. But having had a chance to read some of your posts it sounds like these are all wishful thinking and chances of getting these features added are slim. Regardless even without these the app is phenomenal.

Regards,
Alex

Hugo González Castro

unread,
Aug 2, 2024, 8:56:27 PM8/2/24
to MyLifeOrganized
Hello imajeff and Alex,

Thank you for your comments and ideas. The MLO support team solved my issue with the MLO Cloud on Windows 7, which is the current best solution available for my usage case right now...  I am happy for that and glad to pay and use for it.

About the branches issue and the movie "Everything Everywhere All at Once, which is a cool one ha ha ha, I think this kind of feedback between the company and its customers could be extremely valuable. As a developer myself, I personaly give support to customers and get feedback. It is not always possible to implement all the customer's ideas, but sometimes it was done indeed, and their feedback is unvaluable. It depends a lot on the company's policies and other issues...  but I think it is worth trying, as it could be a win-win scenario. About the Syncthing project, thanks for the recommendation, although it seems the Android app was removed...  also, there is no centrallized storage, so the devices need to be online to sync, which is not useful for my usage case right now, but thanks anyway.

Nevertheless, as a dev myself, I was extremelly curious about the possibility to get more access to the MLO sync or files...  so I made a couple of tests. I am sharing here what I found: the WiFi Sync is done with a separate library called ""MLOWiFiSync.dll" which is dynamically loaded from the main executable "mlo.exe". That libary implements some functions that could be called from a different utility, which names are:

GetActiveSessionCount
GetLastSynchronizationError
GetLastSynchronizationErrorCode
SetLogFileName
SetOnDataNeeded
SetOnDataReceived
SetOnPairRequested
SetOnServerError
StartListening
StopListening


The problem is the library is not specifying the arguments to those functions, which is a problem without the source headers or API documentation, which is unavailable. But, it is possible to create a fake library to replace it and debug the process, and having a possibility to get the arguments when the fake library is called by the MLO executable. One that is done, then it would be possible to directly call the library from a different app or utility. For example, it would be possible to create a WiFi Sync of the AbstractSpoon ToDoList with the MLO for Android app, which would be really cool. The user would still need to buy the MLO for Android Pro version to be able to use that feature. Of course that would be a kind of reverse engineering that would require a lot of work, but seems feasible...  MLO might not approve that kind of development anyway...

Apart from that, I have checked the file formats:

MLO for Windows has a ".ML" file format, which is actually zip-compressed. If you rename it to ".zip" you can extract a file called "ZIPDATA", which has a bunch of binary data. That would be extremelly difficult to use. But hte Windows app has the possibility to export the data to different text file formats that can be usable...  although none of them can be opened from the Android app.

MLO for Android can export the user profile to a file, than can be sent to a computer to see...  it is a ".mlobak" file format, which is also zip-compressed. If you rename it to ".zip" you can extract two files with the data in plain text: "views.xml" and "tasks.csv". You can actually see and read the tasks names on that CSV file, but it is a completely different file format from anyone from the Windows app. MLO for Windows cannot read anything from that. Although there might be a possibility there to create an utility to convert from the Windows XML to the Android CSV, it would be a lot of work and not practical to sync.

The ""MLOWiFiSync.dll" looks way more promising. For now, I am happy enough with my MLO Cloud, ha ha ha...

Alex

unread,
Aug 3, 2024, 7:28:04 AM8/3/24
to MyLifeOrganized
Hugo, thanks for sharing.

Just to clarify on Syncthing Android client it has not been pulled, I use it daily.

I use OPEN SOURCE community maintained version:

It can sync over regular WIFI Lan not just WAN. It's very customizable in relation to how data is synced between devices etc. In my opinion much better than relying on FTP to access data, nor Google Drive/Drop Box etc... if you prefer to have control over your data and not rely on 3rd party service. Certainly if you have no need, than you have no need.

Alex

unread,
Aug 3, 2024, 7:28:04 AM8/3/24
to MyLifeOrganized
Sorry here is the correct link for most up to date Syncthing Android community fork that I use:

Hugo González Castro

unread,
Aug 3, 2024, 2:12:36 PM8/3/24
to MyLifeOrganized
Thank you for the new info!
Reply all
Reply to author
Forward
0 new messages