开源等于开放?
“讽刺的是,互联网是一个去中心化的通信网络,而它却催生了一些史上最中心化的服务”——网络缘何一步步走向封闭,各大巨头割据垄断的今天,打破困局的钥匙又在谁的手中?本文讨论的...
“讽刺的是,互联网是一个去中心化的通信网络,而它却催生了一些史上最中心化的服务”——网络缘何一步步走向封闭,各大巨头割据垄断的今天,打破困局的钥匙又在谁的手中?
本文讨论的内容包括:软件工具与服务之间的区别;软件服务有状态的本质如何导致其自身走向封闭;加密网络会如何催生一个开放服务的新时代,并重新引爆组合式创新。
作者 | Denis Nazarovs
译者 | 弯月
责编 | 仲培艺
出品 | CSDN(ID:CSDNNews)
在无处不在的互联网服务(搜索、地图、社交、电子商务等)出现之前,软件的本质更像是工具(文字处理、电子表格、图像编辑等)。
由于开源代码本质上不需要许可,因此软件工具借以达成组合式的创新,并迅速发展起来。
互联网服务将软件工具(如数据库)当作自己的组成部分使用,但同时也提供了这些工具所不能提供的新功能和高级功能。这些功能更动态、更加社会化、更有协作性,这是传统软件工具无法企及的。服务依赖于状态(state),这是它们与工具的本质区别。提供服务的软件在实例化时会创建一个持久状态的容器,这个容器起初是空的,只有随着数据和用户的加入,才会变得越来越有用。
互联网服务的商业模型为状态变现。状态是竞争上的优势,要保证这个优势,就要保持服务私有并且封闭。这导致了进一步的组合式创新受阻,因为外界的开发者无法再从现有的服务和数据中获益。
“互联网的电话簿”——DNS,尽管功能有限,但却是早期开放互联网服务的少数成功例子之一,这种服务带来了大量下游创新。由于激励机制上的不相容,现在没有任何开放互联网服务在复杂性和实用性上能与占主导地位的封闭服务相比。
于是轮到加密出场了——加密网络依赖于开源代码,同时也能实例化依赖于开放状态的全局服务。开放式状态是加密验证的关键需求,也为区块链提供了必不可少的信任机制。此外,令牌建立了一种新的激励模型,维持了加密网络的运转,其自身属性也与开放本质一致。
创新的条件
组合式创新是创造性的文化过程,它将现有的想法用各种方式组合到一起,来创建新的想法。其结果会反馈给创新过程本身,从而产生更多新的想法,并无限持续下去。出现的想法越多,可能性就越多。
用花园来举个例子:健康的花园需要植物生长的空间、足够的光照、定期浇水,以及一名负责的园丁。健壮的组合式创新也需要同样的条件:健康的环境,确保各种产品和服务能够“生长”。
首先,创新者社区必须通过某种沟通方式(语言、文字等)互相联系,这样想法才能有效地流动并广泛传播。共享文化的出现使想法得以受到挑战及精炼(科学方法、同行审查等),只有最强的想法才能突出重围,获得成功。
而参与全球性的创意市场(即资本市场)则为创新者提供了竞争激烈,从而推动创新。
但这一切都是极其复杂的系统。复杂的技术必然会导致模块化,专家们将这个复杂度分而治之,改进各个组成部分,形成了分形竞争。
软件是组合创新的终极环境,在所有维度上,它都达到了前所未有的高度:互联网是终极的互联网络。开源文化不断细化代码模块,数十亿拥有互联设备的用户构成了一个前所未有的潜在市场。
软件工具:用户被控制
从某种意义上,软件工具跟工业时代的工具没什么区别。像制造业的工具一样,软件工具也有特定的功能和用途。
实际上,早期的软件主要是传统的工业信息和媒体处理工具的数字化版本:
软件工具 | 工业工具 |
文字处理软件(WordPerfect) | 打字机 |
电子表格软件(Excel) | 会计账簿 |
图像编辑器(Photoshop) | 暗室 |
后来,随着计算机越来越大众化、普及化,并通过互联网相互连接,一种新型的服务式软件出现了,从而产生了新的沟通、协作和交互模式,颠覆了媒体行业从上至下的生产和分发模型,还给权力和控制带来了新的可能性。
所有类似于工具的软件都有下列关键特性:
可以自我控制。只要运行代码,就能完成其承诺的功能,没有任何外部依赖,比如文字处理软件,它本身就极其有用,甚至有的公司专门出售只能用于文字处理的单一用途的计算机。
它是一种单人工具。就像你手中的锤子,你不需要任何人帮助就能使用。
用户即操作者。工具有强烈的归属性,所有者和控制权都属于用户。它是用户的个人工具,而不是从别人那里雇佣的服务。
软件副本是可以互换的。如果你忘带电脑了,你可以借朋友的电脑,并用他们的 Photoshop 继续编辑你的照片。
意料之中的是,类似于工具的软件其最初的商业模型就是销售许可证。于是,盗版自然而然地出现了,因为工具非常有用,但代码的复制和分享却十分容易且廉价。从某种意义上来说,盗版也是组合式创新过程的本质导致的,因为知识产权是创意流动的障碍。
开源社区迅速创建了大多数专有软件的开源替代品,这些替代品都可以免费使用和修改。由于工具软件的创意等同于工具本身,任何人都可以尝试从零开始建立一个开源版本的替代品(尽管开源软件替代品的质量通常比不过私有软件)。
后来,随着互联网变得越来越普及并逐渐成为主流,软件创新的焦点也从数字生产力工具转移到了计算机之间的沟通和互联上。软件开始提供新功能,变得更有协作性、多人性、动态性、社会化,从而为下一代软件(即互联网服务)的产生奠定了基础。
代码 vs 状态
如果想理解演化的过程,重要的是要区分程序逻辑(代码)和它的记忆能力(状态)间的区别。
早期的工具本质上是函数性的——一个输入得出一个输出。你大脑中的故事经由文字处理软件的帮助变成一篇数字文档。在图像编辑软件的帮助下,裁剪扫描后的照片,然后添加一行文字。
而存储之前的事情或用户交互的能力(状态)非常原始且微不足道。状态输入也只有一个来源,即软件的单一用户本身。
互联网使用了复杂的状态管理,使得它们能提供前所未有的新功能。
互联网服务:用户失去对状态的控制
个人计算的概念是,用户在自己的计算机上运行自己的程序实例。而互联网由一种新的软件构成,它们的概念是在远程服务器上运行的共享服务。
与“一台电脑,一个程序”(即每个人运行的都是独立的软件实例)不同,这种模式下,服务器的操作者(或者公司)在服务器(或数据中心)上运行程序的一个实例。很多人连接到该服务并通过互联网与其进行交互。
重要的是,与用户维护自己的状态不同,这种模式下服务会根据用户的行为维护状态。
这会带来严重的后果——权利脱离了用户与他们的个人意识,出现了一种新的巩固与控制的力量。具有讽刺意味的是,互联网是一个去中心化的通信网络,而它却催生了一些史上最中心化的服务。
让我们看一看“服务”的通用定义:
提供公共所需的系统,例如运输、通信或电力与水等公用设施。
服务与工具截然不同。
工具 | 服务 |
车辆 | 交通网络 |
发动机 | 电力公司 |
个人博客 | 社交网络 |
RSS 阅读器 | 搜索引擎 |
TensorFlow | Google 广告 |
Unity | Dota 2 |
MP3 播放器 | Spotify |
服务随着规模经济(工业的概念)和有状态网络效应的新概念而大规模发展,追求全球化和单一化,拥有很长且连续的使用寿命,支持自主操作。与现实世界中的服务一样,对于依赖于互联网服务的用户来说,互联网服务的失效会是一场灾难。
用户发现利用现有的服务比建立自己的服务更有价值,这自然导致了服务形成垄断。
服务可以部署在数据中心,其上的应用程序能够以个人计算机无法承受的规模运行,能够爬取整个互联网的服务,背后通常有充足的资金和齐全的架构。
状态使服务拥有超能力
用户可以与服务交互以满足个人需求,例如,通过关键字查询来查找特定的网站。这种服务通过返回结果列表来满足需求,但用户的操作也能让服务改善其全局状态。在搜索的时候,用户的操作会更新系统中所选网站的全局排名,从而改善未来所有其他用户的搜索结果。即使用户出于个人的原因使用服务,服务也会变得更智能,对所有用户更有用。
在服务的生命周期中,其代码的效用与其状态的效用不同。
状态会合成而且会迅速变得更有价值。虽然代码对于服务的稳定运行和发展至关重要,但却会变得越来越不重要,必要性也会降低。
大多数服务主要由开源组件构成并不奇怪。任何人都可以尝试复制服务,甚至重新做一个实际代码库的实例,但已有服务中拥有的用户越多,就会拥有更多有用的状态,而且对新用户更加理想。这会形成一个反馈回路,更多用户可以获得更多状态,从而产生更有用的服务,吸引更多用户和更多状态。
从开源到开放服务
一些公司正在进行互联网服务的大规模整合。创新公司多年积累的状态提供了非常有用的服务(搜索、地图、社交、电商),但进一步的组合创新已经超出了外部开发者和企业家的能力,从头开始构建同等的服务也没什么希望。
随着加密网络的发展,他们可能会提供强大的动力来进一步发展状态,并在当前由封闭网络主导的许多领域创建开放服务。由加密网络支持的开放式服务将为新一代开发人员和创业者提供前所未有的机会。
原文:https://denisnazarov.com/what-comes-after-open-source/
本文为 CSDN 翻译,如需转载,请注明来源出处。
热 文 推 荐
☞ 深圳一 AI 公司人脸数据泄露,超 256万 用户敏感信息在“裸奔”!
☞ 回乡偶记|从这个四省交界的苏北大城, 看二三线城市区块链现状
print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"
点击“阅读原文”,打开 CSDN App 阅读更贴心!
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/4b2b95350a1aa373154a340982983484.png)
更多推荐
所有评论(0)