I would also support for this feature, although it is clearly not as simple as just showing the remaining space.
I am using Syncthing to sync multiple local folders to multiple remote devices, each of them syncthing on several of these folders, which means shared space for several synced folders on several devices. Here is an example:
Assuming the space left is shared by the synced devices, each of them has its own. So it makes no sense to say that it remains xxx MB. Either we display the remaining space on each of them, or we assume there is a reduction logics to apply (take the min, max, avg, reference device, min over mobile devices, etc.). If we go the reduction route, one of them is to take the minimal space left. Only in this case, we can display something like “xxx MB remaining on yyy” with yyy being the synced device showing the least space left. Moreover, since it is a remote information, it is subject to obsolescence, which means that all we can do is showing the remaining space that was shared the last time we synced the device. In other words “xxx MB remaining on yyy on the last sync (zzz)” with zzz being the date of the update. Not only it makes the info heavy, but it can be fairly old if the device synces rarely (I have some devices like that, which sync manually, like every several months).
And that is just to display the minimal remaining space among your devices, assuming this is exactly what you want. But in fact, it can quickly come to needing a bit more here, then a bit more there, just to have something yet a bit more helpful.
Briefly, this kind of feature is a domain on its own. I would not expect Synthing to support that directly. Simple application of the single responsibility principle of SOLID softwares (yes you can apply them to a whole application too). But I agree this is useful and to be expected at some point, like many other things. Consequently, I would expect Syncthing to be extensible. Simple application of the Open-closed principle, a SOLID aspect too. Basically, other people should be able to produce plugins to cope with specific needs of specific contexts. Then the users can install the plugins they want for their own context.
A plugin support should allow several things, among which:
- adapt the information sent to other devices, like the remaining space
- know whether the plugin is effective on the remote device, to know whether such adaptation is applicable without disturbing the remote Syncthing (a bit like the Accept HTTP header)
- adapt the processing of the receiving device to deal with this adapted information
- adapt the interface to display the processed information correctly
Yet again, this is a domain on its own. However, the Syncthing team only needs to cope with the effort required by this one. Then any feature asked by the community to deal with specific needs can be answered with a genuine, positive answer: search for the plugin or create it.
I don’t know if there is such a (planned?) plugin support in Syncthing. But that would unlock a lot of things. And if there is current features that the team don’t want to support anymore, they can refactor them as plugins and provide them to the community as-is, before telling that they won’t maintain it anymore, so people actually needing it will have to take the lead. That would be a fair distribution of the work