facebook从10年前开始在技术领域作出了非常大的贡献,在前端领域,出现了react,之后又出现了LLaMA。然而,随着时间的流逝,facebook这家公司正在衰亡,伴随而来的,是以前的一些项目的维护人员逐渐流失,因为无法维护,导致很多问题。今天要指出的,是两个非常有技术深度的,却没人维护的,让我非常后悔采用的两个东西:faiss和rocksdb。
我在几年前采取了这两个工具,但是现在,这两个工具成为我的项目毒瘤。我现在每次在一台新机器上执行yarn,都感到心惊肉跳,这两个东西都需要编译,而现在总是无法正常编译。对了,yarn也是facebook的东西。在用了这么多年之后,我不得不因为这两个没人理会的垃圾寻找出路,rocksdb我使用leveldb替代,要改代码。faiss-node我自己fork了一个,发了一个新包faiss-node-napi8,如果你也在用faiss-node,你可以在package.json中这样写:
... "faiss-node": "npm:faiss-node-napi8@^0.5.1", ...
虽然这是过渡方案,但是起码能跑起来。
这件事让我开始反思,我们在做技术选型的时候,应该要考虑到这种问题。随着nodejs、webpack、vite等基础设施的升级,很多以前的技术实现会出现不兼容的情况,而如果此时项目无人维护,而你的项目又重度依赖,那么就非常非常痛苦。你看,即便是强如facebook这样的大公司,也有很多当时有技术创新,却最后沦落为无人理睬的垃圾的项目。那么,就更无法对个人的项目库更加信任。因此,我们应该挑选那种社区比较大的开源项目作为技术选型,只有当社区足够大,才能支持项目可以持续维护。