早上突然从某个技术群里看到分享Local-First Conf中 Maggie Appleton 的演讲《家酿软件与赤脚程序员》。 很喜欢这个演讲者,用了许多巧妙的比喻!让概念变得非常通俗易懂。 例如,她提到,”homecooked software” (本地自制软件?),指代一些为个人或者小群体“定制”的应用程序,而非面相大规模用户的软件。

什么是Local-First?

首先,local的概念对应着,离“家”不远、熟悉的,令人感到有亲切感、可以信赖的。 而Local-First,这一开发概念强调的是,构建贴近用户、能够满足个人、或者小范围群体用户(例如家人,朋友,领居们)需求的软件。

感觉里面有几个重要的概念,梳理一下的话:

  1. 从需要被满足的用户需求上来看,所谓的local(当地)软件的用户,可以小到个人,家庭,甚至展开来说,也可以是某个小群体。它们需要服务的对象,少,但是需要满足的需求却可以更加精确。与之对立的事实上是一些专业的大型软件,它们则是为了满足大多数用户最基本/重要/常见的需求。正因为开发软件(曾经或者仍然)是一件需要花费大量时间和金钱的事情,在追求经济回报的时候,很难满足所有用户的所有需求,此时一些小众的需求很有可能就会被忽视或者牺牲、优化掉。local-first 软件则可以填上这个缺口。

  2. 从而就引出了第二点,从软件的开发和维护成本上来看,local的app应该是相对来说简单、轻量,维护起来也更加轻松(时间和花费)的小软件。

  3. 第三点,从软件的数据传输方式上来看,local的app应该是以本地的方式使用,而不是依赖于云端。这样一来,有些私人的数据就不必被上传到云端,而是可以被本地保存,数据的安全性和隐私性会得到保障(不用再在使用某些软件前担心隐私泄露又不得不勾选同意所有条款)

简而言之,为local(我周围小范围)的人,解决了local(小范围)的问题。

于是,它们就如同家里烤的小饼干,小点心一样,或许它们不是最华丽、最精致的,但却是最符合你的特定(口味)需求,并且可以完全在你的掌控之中。举一个简单的例子,一些身体健康指标检测的app,或许这些检测数据对于其他人来说并不是那么重要,甚至于其实除了你和你的家人,这个世界上没有其他人会再去使用这个数据。这些个人的数据就完全可以停留在自己家里,而不用上传到云端。并且,观测页面也可以由个人进行定制,只显示自己需要的指标。而不是像大型软件一样,所有用户都看到同样的页面,并且数据也被上传到云端,以某种未知的方式存储在世界的某个角落。

这个概念非常吸引人(至少我),因为如果我们做最极端的假设,每个人用的程序都由自己开发(当有一天软件开发可以如同每个人可以为自己做饭一样简单)。那么,这个概念实际上是赋予用户对其数据和软件全部的主导权和所有权。即,每个人都能够真正掌控自己的数字生活。这包括决定如何使用个人数据、选择或直接定制适合自己需求的软件工具。用户不仅是数据和软件的使用者,更是其合法的拥有者和管理者。在这样的环境中,个人和小型社区的创造力将得到更多自由度,将现在的软件开发进程中被(主动或者被动)忽视的需求填补上。

如何实现Local-First?

Maggie 在演讲中提到了Barefoot developers(光脚开发者),这类人并不以成为专业程序员/开发者为职业,但是拥有足够的开发技术、且热衷于动手。最重要的是,他们切实地身处在问题的语境当中,能够深入地理解所需要解决的问题,为自己和社区提供解决方案。

如果需要使得这些”光脚开发者“能够快速开发,实现他们的想法。那么,Local-First的实现,需要能够实现以下几点的基础开发工具:

  1. 构建本地数据中心:将数据存储在本地,而不是上传到云端。确保数据留存在本地,还能提供更高级别的保护。在数据驱动的未来,这一点首先有许多战略意义,并且也是能够实现真正意义上的local-first软件的的基础。
  2. 本地计算和网络:除了数据存储,也应该尽量使用本地的计算资源和网络,而不是依赖于云端的计算资源。
  3. 简单易用的,有AI协同合作的开发环境:事实上,LLM的工具已经能够实现很大一部分开发任务。开发者只需要提供需求描述,一些开发工具已经可以直接生成UI或者底层后台代码。例如,vercel的V0,或者 tldraw。但是,我们仍然需要继续开发这一类型的工具来辅助光脚开发者完成工作,来提升自动生成代码、检查代码质量、生成文档的效率等。

最后

这个视频来自于第一届Local-First Conf,前几个月在柏林举行了。local-first这个概念对于传统软件开发而言,就如同web3对于web2一样,能够使得软件开发的方式更加开放、丰富、且具有包容性。

有机会可以试着做一个Protocol看看。

参考资料

https://localfirstweb.dev