iNaturalist has been having some difficulty interacting with Google photos for a while now, and to be honest, I’m seeing a pretty obvious problem here:
Using the user’s device as a file-transfer intermediary.
When I add an image from Google Photos to iNaturalist, I’m expecting iNaturalist servers to pull the image directly off Google’s servers. In other words, when I export from Google Photos to iNaturalist, I’m expecting iNaturalist to obtain the URL link to my image and communicate directly with Google to obtain a high-res copy of the image.
I’m not expecting iNaturalist to need to:
- download the image from Google’s servers to my phone
- re-upload the image from my phone to iNaturalist’s servers.
After all, I have given iNaturalist permission to interact with Google Photos, so why don’t iNat’s servers talk directly to Google’s servers? Why is iNaturalist using my device as the man-in-the-middle? Surely the Google Photos API allows for this?
The photo-upload process should just be a matter of sharing a bunch of urls for images hosted on Google’s servers with the iNaturalist.
From the user side, this should be an instant event, which doesn’t require any “syncing” from their device. All “syncing” should be done between iNaturalist’s servers and Google’s servers.
Users have taken a photo. They have used their data (and battery) to upload this photo to Google Photos. Currently, iNaturalist wants users to then download this image to their device (additional data and battery), and then re-upload it to iNaturalist’s servers (even more data and battery). iNaturalist requires that the user’s device remains operational during this entire time, otherwise they may end up with an observation with missing photos, etc.
Surely there is a more efficient way for iNaturalist to obtain copies of the images users have stored in Google Photos than to depend on the user’s mobile device to download the image from Google, then reupload the image to iNaturalist. All syncing should be a server-to-server process between iNaturalist’s servers and Google’s servers, eleviating 99% of the burden from my mobile device.
Problem 2: Needing to transfer any files in the first place
The best solution of all would be to have Google photos host all the images and simply offer a frame to present the image hosted on Google’s servers. Use Google photo’s pre-existing infrastructure to perform the image editing functions.
If you fix the basic method of obtaining images from Google Photos, so many other bugs disappear.