计算机,我曾经喜欢的样子
Computers as I used to love them
作者:Nikita (@tonsky)
I’ve been struggling with file sync solutions for years. In the beginning, Dropbox was great, but in the last few years, they started to bloat up. I moved to iCloud, but it was even worse. Finally, a few days ago, after iCloud cryptically broke again, I decided it’s time to try something different.
多年来,我一直苦于文件同步解决方案。起初,Dropbox 很棒,但在过去的几年中,他们开始膨胀。我转向了 iCloud,但它甚至更糟。终于,在几天前 iCloud 再度神秘崩溃后,我觉得是时候该尝试一些不一样的东西了。
I tried Syncthing, a free and open-source alternative. And you know what? It’s been liberating. The sanity, the simplicity, the reliability, the features. It brings the joy of use and makes you believe the collapse of civilization can be slowed down a bit.
我试了 Syncthing,一个免费的开源替代品。你知道吗?这是一种解放。它的理智、简洁、可靠性和功能都让人愉悦。它带来了使用的乐趣,让你相信文明的崩溃可以减缓一点。
Syncthing is everything I used to love about computers.
Syncthing 是我过去喜欢的计算机的一切。
It’s amazing how great computer products can be when they don’t need to deal with corporate bullshit, don’t have to promote a brand or to sell its users. Frankly, I almost ceased to believe it’s still possible. But it is.
真是令人惊讶——计算机产品在不需要处理公司的废话、不需要推广品牌或出售用户时,它们可以有多好。坦率地说,我几乎不再相信这仍然是可能的。但是它确实是这样。
安装
You download a single binary executable. You run it. There’s no step three.
下载一个二进制可执行文件。然后运行。没有第三步。
No, seriously. It’s so simple I thought I missed something. But no. After you run that binary, you have a fully operational node of Syncthing. It’s ready to sync with any other Syncthing node, no other setup necessary. There’s no installers, no package management (but there are packages if you want to), no registration, no email, no logins, no password creation, no 2FA, no consents, no user agreements. Just download and run. Heck, setting up autostart on Linux server was more complex than just running the app itself!
不,认真地。它简单到我以为我错过了什么,但没有。在运行该二进制文件之后,你就有了一个全面运作的 Syncthing 节点。它已准备好与任何其他 Syncthing 节点同步,无需其他设置。没有安装程序,无需包管理(但如果你想的话有包),无需注册,无需电子邮件,无需登录,无需密码创建,无需两步验证,不用同意条款,没有用户协议。只用下载和运行。见鬼,设置在 Linux 服务器上的自动启动比运行应用程序本身更复杂!
Homebrew makes it even simpler:
Homebrew 让这件事甚至更简单:
Just to give you the perspective, these are all the steps that Dropbox puts you through when you install it on a new computer:
只是为了让你有个对比,这些是当你在一台新电脑上安装 Dropbox 时会经历的所有步骤:
Aaaaand… that’s not all! You also get this annoying notification to deal with:
还还还还有……这还不是全部!你还会收到这个烦人的通知:
Only at this point can you start using Dropbox. Luckily, I already had an account, otherwise, it would be 5 more steps. Ridiculous!
只有在这个时候你才能开始使用 Dropbox。要是我没有注册过账户的话,还会有另外的五个步骤。荒谬!
(It goes without saying, that all of these are different windows. It does not happen in a single predictable area, mind you. You have to chase every one of them. And the “Set Up Dropbox” window is always-on-top, so it hides other required steps, which also adds to the fun.)
(不消说,这些都是不同的窗口。提醒你一下,它们不会出现在同一个可预测的区域。你必须追着它们的每一个。而且「设置 Dropbox」窗口总是在最上面,所以它会隐藏其他必需的步骤,这也增添了个中乐趣。)
没有人为的限制
Because Synthing is free and doesn’t depend on server-side storage, they don’t need to put weird or unnatural restrictions on you. You can use as much space as you have on disk. You can sync as many folders as you want. You can sync any folder, no matter where it’s located. You can sync with anyone in the world. In fact, you can sync any folder with any number of people. At no point have you to wonder “but will it work with my plan”? If your hardware allows it, it will work. As simple as that.
因为 Syncthing 是免费的,而且不依赖于服务端存储,所以他们不需要对你施加奇怪或不自然的限制。你可以使用磁盘上的任意空间。你可以同步任意数量的文件夹。你可以同步任何文件夹,无论它们位于何处。你可以与世界上的任何人同步。事实上,你可以将任何文件夹与任何数量的人同步。你不必担心「但它能与我的套餐一起工作吗」?如果你的硬件允许,那它就会工作。就这么简单。
Folders are the most vivid example of how other cloud storages constantly fuck up the simplest things. Syncthing can sync any folder on your drive, located anywhere. You can sync existing folders. You can sync multiple different folders. Folders are just folders, nothing special about them. Here I’m syncing “system” folders: ~/Desktop
and ~/Library/Fonts
, and three custom ones. No sweat:
文件夹是其他云存储如何不断搞砸最简单的事情的最生动的例子。Syncthing 可以同步任何你设备上的文件夹,不论它们的位置在哪。你可以同步已有的文件夹。你可以同步多个不同的文件夹。文件夹就是文件夹,没有什么特别的。这里我在同步「系统」文件夹:~/Desktop
和 ~/Library/Fonts
,以及三个自定义的文件夹。毫不费力:
This simplicity lets you use it as a tool you can apply, sometimes creatively, to your task, not as a service you have to put up with. For example, by syncing ~/Library/Fonts
, if I install a font on one machine, it automatically installs everywhere.
这种简洁让你能将它作为一个有时可以创造性地应用到任务上的工具来为你所用,而非一个不得不忍受的服务。例如,如果同步了 ~/Library/Fonts
,那么我在一台电脑上安装了一个字体,每台电脑上都会自动安装这个字体。
Contrast this with Dropbox, which requires you to put everything inside ~/Dropbox
folder. If you keep your projects under ~/work
and want to sync it, well, tough luck. You can’t sync multiple folders either. Well, technically Dropbox can sync anything, of course. Files are files. But branding dictates there MUST be a Dropbox folder somewhere, even if it’s inconvenient for the user.
Dropbox 与之相比,要求你将所有东西都放在 ~/Dropbox
文件夹中。如果你将你的项目放在 ~/work
下并想要同步它,呃,那可就运气不好了。你也不能同步多个文件夹。当然,从技术上讲 Dropbox 可以同步任何东西。文件就是文件。但品牌营销决定了必须有一个 Dropbox 文件夹,即使对用户来说这是不方便的。
But the worst offender is the iCloud. Same as Dropbox, it also requires you to put all your stuff into a folder. But that folder is called ~/Library/Mobile Documents/com~apple~CloudDocs
!!!
但最糟糕的是 iCloud。和 Dropbox 一样,它也要求你把所有的东西都放在一个文件夹里。但是这个文件夹叫做 ~/Library/Mobile Documents/com~apple~CloudDocs
!!!
If you are a programmer, it’s unusable. First, you can’t in your right mind type THAT every time you need to cd
. Second, it contains spaces! Which breaks all sorts of things, believe me or not, even in 2020. I can’t keep Fira Code in iCloud because of python scripts, I can’t keep Jekyll blog like this one there because of Ruby, I can’t run bazel, etc. Useless.
这对于程序员来说是用不了的。首先,你不可能在正常的心智状态下每次需要 cd
时都输入那个玩意儿。第二,它包含空格!爱信不信,即使是在 2020 年,这也会破坏各种东西。因为里面有 Python 脚本,所以我不能在 iCloud 中保留 Fira Code;因为 Ruby 我不能在那里保留像这个博客一样的 Jekyll 博客。我还不能运行 bazel……。一无是处。
And if you think symlinking it to ~/icloud
helps, believe me, it does not.
并且,如果你觉得将它软链接到 ~/icloud
会有所帮助,相信我,它不会。
不用注册
How do you connect two devices, if there’s no registration, accounts, email, etc? Simple! Each device has a unique id, generated automatically when you first run the program. Share this id with another device, let them share their, and you are good to go.
如果没有注册、账户、电子邮件这些方式,你会如何连接两个设备?很简单!每个设备都有一个唯一的 id,在你第一次运行程序时自动生成。与另一个设备共享这个 id,让另一个设备共享它的 id,然后你就可以开始了。
Best news? Those ids are not even secret. They are more like public keys, so you can exchange them freely. But the scheme only works if both devices know ids of each other.
最好的消息?这些 id 甚至不是密钥。它们更像是公钥,所以你可以自由地交换它们。但是,只有当两个设备都知道对方的 id 时,这个方案才能起作用。
What I like about this scheme is how beautifully simple and down-to-absolute-essentials it is. This is pure mathematics. But it’s also very convenient to use. There’re no emails, no forms, no unresponsive web pages, no invites, no expiring tokens, no failing/outdated/overloaded APIs, no password management, nothing to hold onto or “manage”.
我喜欢这个方案的地方在于它是如此地简单和绝对地基础。这是纯数学,但也很便于使用。没有电子邮件,没有表格,没有无响应的网页,没有邀请,没有过期的令牌,没有失败/过时/过载的 API,没有密码管理,没有什么需要守着不放或「管理」的地方。
高级模式
There’s power user mode! If you don’t care, there’s always a UI, and most of the things you can configure there. But if you’re a programmer and need more, you can:
还有有高级用户模式!如果你不需要的话,Syncthing 也总是有图形界面,大多数事情你可以在那里配置。但是如果你是一个程序员,需要更多的功能,你可以:
- Install Synthing on a headless Linux server,
- 在无头 Linux 服务器上安装 Synthing;
- Control it by editing XML config,
- 通过编辑 XML 配置来控制它;
- Control it via REST API,
- 通过 REST API 来控制它;
- Configure folder ignores via regular expressions.
- 通过正则表达式来配置要忽略的文件。
All APIs and configs are well-documented:
所有的 API 和配置都有详细的文档:
For example, this is my .stignore
for workspace folder:
例如,这是我工作区文件夹的 .stignore
:
Configure it once and forget about generated classes, vendor dependencies and other caches syncing unnecessary forever.
配置一次,然后就可以忘记生成的类、vendor 的依赖和其他缓存,它们永远不会同步。
In contrast, iCloud has a feature to exclude *.nosync
files from syncing, but you know what? I usually don’t have files called *.nosync
, that’s the problem:
相比之下,iCloud 有一个功能可以排除 *.nosync
文件的同步,但你知道吗,我通常没有叫做 *.nosync
的文件,这就是问题所在:
And Dropbox? Well… I still have nightmares about this Dropbox UI:
那 Dropbox 呢?唔……我仍然对这个 Dropbox UI 梦魇般地记忆犹新:
It’s kind of funny, how commercial apps have feature bloat but don’t have power mode. You can do more different things, but can’t configure them to your liking.
滑稽的是,商业应用程序有膨胀的功能,却没有高级模式。你可以做更多不同的事情,但不能按照你的喜好来配置它们。
没有追加销售
Commercial solutions are interested in keeping users locked in and constantly upselling more features to them. As a result of that, you get notifications, features, popups. For example, on this screenshot, after I just installed Dropbox on a fresh machine:
商业解决方案只对让用户锁定并不断向他们推销更多功能感兴趣。因此,你会收到通知、特性和弹窗。例如,在这个截图中,我刚刚在一台新机器上安装了 Dropbox 后:
Top to bottom:
从上到下:
- I already have an annoying red dot in the menubar,
- 菜单栏上已经有一个烦人的红点;
- Link to another product (Paper), even though it has nothing to do with file synchronization,
- 另一个产品(Paper)的链接,即使它与文件同步无关;
- A firm suggestion I should enable notifications,
- 一个坚定地认为我应该启用通知的建议;
- A notification that says my Desktop app is ready for use?! I mean, I’m looking at it from the desktop app!
- 一个通知,说我的桌面应用已经准备好使用了?!我的意思是,我正在从桌面应用上看着它!
- Dropbox advertising some sort of trial,
- Dropbox 宣传某种试用期;
- Dropbox selling me more space (even though it was 2 years ago and I have>50% free),
- Dropbox 向我出售更多空间(即使是两年前,我有 >50% 的空闲空间);
- Large “Upgrade” button,
- 大大的「升级」按钮;
In the mystic “For you” tab:
在神秘的「For you」标签中:
we see:
我们看到:
- Starred items? What is it, a high-school notepad? If I really wanted, I could tag files in the OS, but thank you.
- 星标项目?这是什么,高中的笔记本?如果我真的想要,我可以在操作系统中标记文件,但谢谢你。
- Calendar sync? Why on Earth would FILE SYNCHRONIZATION application wants to access my calendar?
- 日历同步?到底为什么一个文件同步应用程序想要访问我的日历?
Wait, there’s more:
等等,还有更多:
More “features”:
更多的「特性」:
- Desktop sync,
- 桌面同步;
- Photos sync,
- 照片同步;
- Screenshots sync.
- 截图同步。
These are at least file-like? I don’t understand why they have to be “special features”, though, if you already have an app whose primary task is to sync files. It already does that. Why are some files more special than others?
这些至少是文件了?我不明白为什么它们必须是「专门的特性」。如果你已经有一个主要任务是同步文件的应用程序的话,它已经做到了。为什么有些文件比其他文件更特别呢?
The answer is simple: the only way Dropbox can survive is by building and selling more features. You’ll never have peace of mind with them.
答案很简单:Dropbox 生存的唯一方法是建立和销售更多的功能。你永远不会和他们一起安心。
iCloud is much younger and doesn’t have feature bloat yet, but they are still interested in selling more Macs and iPhones. So they will always try to isolate you from the rest of the world. Expect weird restrictions and great inconveniences, like iCloud folder location or moving Desktop folder when you enable/disable sync for it.
iCloud 还很年轻,还没有膨胀的功能,但他们仍然想销售更多的 Mac 和 iPhone。所以他们总是试图将你与世界其他地方隔离开来。准备好遇到奇怪的限制和巨大的不便,比如 iCloud 文件夹位置,或在启用/禁用它的同步时移动桌面文件夹。
Syncthing survival, on the other hand, does not depend on making more features. They do one thing, but they do it well. Look, their menu looks exactly how Dropbox used to look when it still was good in 2012:
另一方面,Syncthing 的生存并不依赖于制作更多的功能。他们只做一件事,但他们做得很好。看,他们的菜单1看起来就像 Dropbox 在 2012 年还很好的时候一样:
不会绑架用户
Another ugly thing both iCloud and Dropbox routinely do is trying to scare you from walking away. Those appear every time you move more than one file outside of iCloud folder:
另一个 iCloud 和 Dropbox 经常做的丑陋的事情是试图吓唬你来阻止你离开。每当你将多个文件移出 iCloud 文件夹时,它们就会出现:
And those are Dropbox versions:
而这些是 Dropbox 的版本:
It might seem like they try to explain something, but they do not. They are scared you might be leaving and try to scare you back. The tactic is simple: question your every action, even trivial operations like moving or deleting files, display huge warning signs even for safe operations, long puzzling wording (“documents stored in iCloud will be removed from Mac”) so that you never sure what will happen. That’s some shady shit.
看上去它们在尝试解释什么,但实际上没有。它们害怕你可能会离开,所以试图通过让你害怕而使你回头。他们的战术很简单:质疑你的每一个行动,甚至是像移动或删除文件这样的琐碎操作;对于安全的操作也展示巨大的警告标志;使用长篇累牍且令人困惑的文字(「存储在 iCloud 中的文档将从 Mac 中删除」)——进而使你永远不确定会发生什么。简直猥琐。
Syncthing, on the other hand, simply doesn’t care. They don’t get any money from you, so they are not interested in creating a need or constantly reminding about themselves. If you are looking for peace of mind, you can’t have it with commercial offerings.
另一方面,Syncthing 根本不关心这些。它们不从你身上获得任何金钱,所以对于创造需求或者不断提醒你它们自身并不感兴趣。如果你正在寻求内心的宁静,商业产品无法提供这种体验。
结论
Syncthing has reminded me how great computers can be if they are not made by corporations. It’s simple, predictable, sane, acts no-nonsense. You can configure it however you like and it always keeps you in control. It’s a pure function and it’s good at that. It’s free and open-source, but I’m much more happy to donate them €10/month than e.g. Dropbox. I would be a much happier person if at least half of the programs on my Mac/iPhone were like that.
Syncthing 让我想起,如果电脑不是由大公司制造的,它们能有多棒。它简单、可预见、理智,不拖泥带水。你可以按照自己的喜好来配置它,而且始终由你控制。它是一个纯粹的程序,而且做得非常好。它开源免费,但比起 Dropbox 这种货色,我更愿意向他们捐赠 €10/月。如果我 Mac/iPhone 上的程序至少有一半是这样的,那么我会是一个更快乐的人。
黑色铁锈体