This week's Open Source Application of the Week is Syncthing, a FOSS replacement for non-free synchronization apps like Dropbox. Unlike everything else I've reviewed so far, I've actually used Syncthing extensively before it was nominated. And, let me say, it is awesome.
So, what does it do? Well, it's kind of like Dropbox, in that you can synchronize the files in certain folders between multiple computers. So, if you create a new file in a shared folder, or you change one that already exists, your changes will be sent to the other computers you've shared the folder with. But, it's completely decentralized, and end-to-end encrypted. That means you don't have to trust anyone else with your data, and nobody can ""listen in" on what files you're sending back and forth.
When you start up Syncthing, it creates a web user interface accessible from port 8384. It also generates a 56 character device ID for your computer, which you can share with whatever other computers you want to use Syncthing with. You also can choose which folders you want to share (you can choose more than one). Once you start Syncthing on both computers, and choose which folders to share, Syncthing will then scan the folders for changes every 60 seconds, and synchronize the changes, if possible. You don't have to be on the same LAN for your folders to synchronize; Syncthing utilizes discovery servers, so that you can synchronize anytime both computers are online.
Do note that Syncthing isn't a service, so it won't automatically start when your computer starts. But, this is easily fixed; just open up your DE's settings manager, and find where it lets you autostart applications. Then, make a new entry, and have it run "syncthing -no-browser" at startup. Problem solved. As pointed out in the comments on reddit, it actually does come with a systemd user init. Run "systemctl --user enable syncthing.service", then "systemctl --user start syncthing.service".
That's mostly it - it does exactly what it says, and it does it really well. There are a couple of extra features, though. One is whether or not a folder is "Send Only" - that is, if it is marked as send only, then it will not receive changes to the files made by another computer. I can't see a situation where this would be useful, but maybe it is for someone else. Another is file versioning. Syncthing can be instructed to save older instances of a file whenever it's modified. One was is "Trash Can" versioning, where it stores the old version in a hidden folder. When another new version comes along, the old version in the trash can (the hidden folder, not the user's trash can) is deleted, and the previous version about to be replaced goes to the trash can instead. There's also simple versioning, where syncthing saves the last X versions, and staggered versioning, where versions are saved every X minutes, hours, or days. Seeing this, you might be tempted to use Syncthing as a backup utility - don't. It really isn't designed for it (restoring from a backup would be a giant pain), and there are much better tools out there that do backups.
The only criticism I have of Syncthing is
that it isn't a service, and that it is limited to sharing entire folders - you cannot decide to share only one file in a folder. But other than that, it's great. If you haven't already, uninstall Dropbox, and start using this.
And that's it for this week's Open Source Application of the Week. What should I review next week? Let me know in the voting thread (non-onion link). Thanks for reading, and I'll see you all next Monday!