Nice project you have here. The power and encryption to replace VPN in a more friendly way, is outstanding. I have been playing with many options over the past month, looking for better ways to perform our work.
Syncthing does have shortcomings for my personal use though. Mainly collaboration. Seafile has gone a long way with its seadrive option, but you have to jump through hoops to have a properly encrypted remote system up and running. Syncthing security is pretty much fully configured and functional out of the bag. So the point to this post, is to give syncthing the power to replace seadrive.
As I work with others using shared files, file collisions is not an options as the collisions would be endless. Administration time would be better spent in other areas than fixing collisions. From my point of view it is far easier to have single user file locking for a group shared folder.
- One source folder (server versioning) shares its folders to all others (light clients).
- Only file/folder structure is shared…files are shared on demand if in unlocked status.
- Downloading files create lock state and prevents write access (ie downloaded).
- Saved modified files will change the file version status, upload, release from client and unlock for collaborator use.
- Only changed blocks will be uploaded.
- The source folder reserves the right to break locks to prevent client domination and issue an ownership rejection notification + reversion of any modification.
So what we have is many-to-one encrypted SMB shares with IMAP behaviour. To keep it peer-peer, any client can download(lock)/upload(unlock) any file and possess the lock token. To enable devices with limited storage to function, only essential needed files are ever downloaded (over fast asynchronous), and only modified blocks are uploaded (over slow asynchronous). The server is the folder owner. So the server and client role are bi-directional, but can also be pure client-server if that model is preferred.
I noted a few others have requested similar features in some ways. So perhaps there could be 4 directory modes…
- File Lock + Metadata sync + File sync (manual locking - full/part sync)
- File Lock + Metadata sync (auto locking - load on demand)
- Lock-less + Metadata sync (conflict files - load on demand)
- Lock-less + Metadata sync + File sync (conflict files - full/part sync)
I know this is asking a lot. But if you are going to do something, you may as well do it right and do it well…like the rest of the program. This should fulfil most if not all usage requirements ? Thus file locks becomes write locks and you can make them user/group dependant too. If you want to extend the permissions system.
Anyway, thanks for reading.