* "Security" changes in recent versions of Android seem designed to kill use cases like syncthing. See links below.
* There is no iOS version, as near as I can tell because iOS is already where Android is headed.
The crux of the problem is syncthing is a single golang binary, but the only way to manage filesystem permissions on iOS (and now Android) is through tightly controlled OS dialogs, and there is no way to do this from golang. There aren't even NDK APIs for it. The closest thing Android is providing to an escape hatch is "all files access" [5], for which your app has to go through an approval process in order to be put on the play store. If you watch [2], GOOG makes it very clear that they want to minimize the number of apps that obtain this permission. It's unclear to me whether apps installed through FDroid or side-loaded will be able to use that permission at all, or if the APKs must be signed.
I'm all for improved security, but never at the cost of controlling what I am ABLE to do with my computer.
It's sad that our operating systems are turning into gatekeepers between developers/users and the hardware they "own".
This is my main issue with using something like Syncthing. I have several computers that I use daily - a Windows machine for some work and most of my music, a Linux box as my daily driver, and my Andriod phone/tablets for watching videos and interacting with the physical world.
All of these are synced through Dropbox, and I have the confidence that 1) my files are backed up on a server that I don't own 2) the software will be updated and continue to work across all the disparate machines I currently own and will own in the future.
I don't doubt that Syncthing will work on Linux super-well, but Windows, Android, and IOS can be picky and not play well with open source. It scares me off a bit from using it.
For phones, unfortunately there's not much of an option. I went the Maemo route, and then it became a dead end; I went the Openmoko route, and then it became a dead end too; Windows was obviously going to become a dead end (and unsurprisingly it did). There's now Pine64 and Purism, but given how many failed before, I'm not too hopeful they'll last. So the only real options are Android and Apple, and of these Android is the least closed (and also the one which doesn't require buying a whole new laptop, plus a paid registration, just to develop for it).
Pine64 and Purism don't need to last. As long as the phone can run without proprietary software and there are enough geeks to maintain a port, I can probably run Debian on it.
Short version is - I both automatically back up a lot of data and manually export items from Android, and also use the app to grab files (i.e. PDFs or audio) that I don't necessarily want persisted.
My understanding from the parent is that if the Android ecosystem becomes toxic to Syncthing, its functionality becomes restricted, and some of the base cases I use it for won't be available.
---
To answer your question, yes you can access files from your Dropbox in other applications. For example, I make a lot of video doodles for my Instagram, and the Inshot app lets you import audio and music directly into the app from Dropbox. This means I can render some audio on my computer,sync it to dropbox, make a silly video doodle on my phone, combine them and then upload to Instagram.
It's fairly seamless, something I actively use and definitely something I would want in a file-syncing tool.
> My understanding from the parent is that if the Android ecosystem becomes toxic to Syncthing, its functionality becomes restricted, and some of the base cases I use it for won't be available.
My best guess at this point is that this will hinge on whether syncthing is able to get "All files access" approval for the play store. Otherwise they'll need to basically re-write syncthing-android from scratch in Java/Kotlin, so it can integrate with the system. They've discussed doing that but frankly it's ridiculous that should even be required.
> To answer your question, yes you can access files from your Dropbox in other applications.
Based on your description, I'm pretty sure this works because you're specifically dealing with media files, as there is special support for sharing those. Does it also work if you try to share a PDF from Dropbox with a generic PDF reader app?
If I'm in the Dropbox app, I can export the PDF to say, my printer, I can open it with a reader (I have Adobe Reader installed) from the Dropbox App, or if I'm in Adobe Reader, I can open the file from Dropbox.
I haven't tried any non-Adobe readers, but my experience is that there's a pretty good interop between applications and I haven't yet really run into a pain point where I need to get something from or export something to Dropbox and needed to create or download a shim.
That sounds like you're sharing a single file at a time, which has decent OS integration. If you had a directory of PDFs that you wanted to sync with Dropbox and open with a reader on your Android, I'd wager that's impossible these days.
> There is no iOS version, as near as I can tell because iOS is already where Android is headed.
I don't see why there couldn't be an iOS or Android version. It could work the same way Google Drive and Dropbox work. I also use Qfile on my iPad with my QNAP NAS and it works just fine.
There is an Android version, but Android is becoming a toxic environment for it. The reason is because of the way syncthing works. It expects broad access to the filesystem, to add and remove files/directories according to its algorithm. This is perfectly reasonable, but GOOG is killing the ability to do so.
EDIT: Re Google Drive on Android: it works by not downloading most files, ie you have to be connected. You can pin files locally, but they go into a special directory controlled by the app. You can't access the files from other apps. For things like syncing a music library this is useless. They have workarounds specific for sharing media files between apps, but why all the complexity? Give me control over where I want to store my files.
Well I don't use it so I'm not sure what functionality it currently has. It depends on if it stores any files outside its app directory, and if it needs files to be accessible from other apps.
I would suspect though that apps like Dropbox won't have much trouble getting "All files access" approval, so they should be fine in any case.
GOOG agrees with you, and so do I for the most part. That's the way Android worked until recently. Any app (with storage permissions) could store anything in shared locations (except SD cards; those have always had these issues), and could mess with other apps' data in these locations. I'm not saying this isn't a security concern. I'm saying they've thrown the user control baby out with the security concern bath water.
Why not have a designated area where apps can share whatever they want, and warn the user that information there can be seen by any app?
> Why not have a designated area where apps can share whatever they want, and warn the user that information there can be seen by any app?
That would rather defeat the point of something like SyncThing wouldn't it?
If someone wants to sync their files in MusicAppX which MusicAppX itself doesn't put in the designated shared area, the person needs their sync software to be able to look into MusicAppX's private files area.
This reminds me of a friend who used CAD software on their iPad.
Eventually they ran out of cash to keep paying the licence for the CAD. And then discovered there was no way to access their own design files they had created themselves. Because they exist inside a private folder, and the iPad does not (maybe did not, I'm not sure if it's changed) allow people to freely browse and read their own files with a generic file browser or other apps.
Apps would be designed to use the shared space, or provide the option to the user whether to or not. Not all apps would have to provide this options but I suspect most open source apps would.
> I guess we will have to wait for a decent Linux on phones.
That's basically my conclusion as well. Though if we can come up with enough killer apps that aren't supported by Android/iOS, it might also open up an opportunity for someone like Microsoft to fork Android and open it back up for developers (feels weird even saying that).
It should be noted that:
* "Security" changes in recent versions of Android seem designed to kill use cases like syncthing. See links below.
* There is no iOS version, as near as I can tell because iOS is already where Android is headed.
The crux of the problem is syncthing is a single golang binary, but the only way to manage filesystem permissions on iOS (and now Android) is through tightly controlled OS dialogs, and there is no way to do this from golang. There aren't even NDK APIs for it. The closest thing Android is providing to an escape hatch is "all files access" [5], for which your app has to go through an approval process in order to be put on the play store. If you watch [2], GOOG makes it very clear that they want to minimize the number of apps that obtain this permission. It's unclear to me whether apps installed through FDroid or side-loaded will be able to use that permission at all, or if the APKs must be signed.
I'm all for improved security, but never at the cost of controlling what I am ABLE to do with my computer.
It's sad that our operating systems are turning into gatekeepers between developers/users and the hardware they "own".
[0]: https://github.com/syncthing/syncthing-android/issues/29
[1]: https://www.xda-developers.com/android-q-storage-access-fram...
[2]: https://www.youtube.com/watch?v=UnJ3amzJM94&
[3]: https://news.ycombinator.com/item?id=19506544
[4]: https://commonsware.com/blog/2019/03/25/death-external-stora...
[5]: https://developer.android.com/preview/privacy/storage#all-fi...