开源(open source)是什么?为什么要开源?

为什么开源这个问题挺复杂,这里就从社会面以及个人两个角度来说。当然个人层面的开源其实是建立在社会面形成开源氛围后开始的。

社会面开源

这里举一个例子,既互联网从 web1.0 到 web3.0 (开源 → 闭源 → 再开源)的历程:

1)web1.0 阶段(开源)

在互联网早期,以 TCP/IP、 SMTP 和 HTTP 为代表的开放标准,我们叫它 Web1.0 协议阶段。

它的特点是:基于一组开放的标准,人人都可以使用它们构建应用,而且它有着几百个开源的实现,你可以直接使用。由于 web1.0 协议是开源的,没有人能够单方面控制互联网,而且协议是稳定的,支撑着庞大的网络世界的快速发展。

但是,问题也随之而来,建立在开源技术之上很难实现大规模盈利。比如:同样是做操作系统的Linux社区,跟微软市值相比,那是天壤之别。开源的数据库 mysql,oracle 的市值相比,好比九牛一毛。

解决办法是什么?许多商业公司在 web1.0 的基本上,构建了闭源的协议,这就是 web2.0 协议时代。

2)web2.0 阶段(闭源)

许多公司在 web1.0 协议的基础上,构建是自己的闭源协议,通过打造平台建立起自己的商业组织,这些协议和代码是具有产权的,是归属于这些商业公司的。比如,谷歌在 PC 时代,通过 page rank 专利技术,构建了世界上最大的搜索引擎服务;字节跳动基于自有算法,进行内容推荐和分发,推出今日头条、抖音等现象级应用。

web2.0 的特点是:

  • 平台经济。平台最终必然走向垄断,这个不难理解。比如国内 BAT、字节、美团等商业巨头,国外的 google、facebook、微软、uber 等等。
  • 隐私换服务。用户通过提供个人隐私数据,如消费记录、浏览记录,来获得平台提供的个性化推荐、消息推送服务、信用贷款等便捷服务。但是,平台是不是合理、合法、安全的处理我们的隐私数据,就不得而知了,这是有着巨大隐患的。
  • 数据归平台方所有。平台获得了我们的隐私数据,并且对数据做挖掘和加工,产生了利润,这些利润归平台方所有,而我们这些提供数据的人,半毛钱也拿不到。
  • 平台决定利益分配。依赖于平台而生存的某些职业,在平台的利益分配上,没有定价权。比如外卖小哥、商家,都被平台抽取很大一部分费用。

web2.0 存在的问题:

  • 平台掌握了巨大的权利。他们制定游戏规则,他们拥有用户产生的数据,随意修改服务协议。比如:用户交易数据、浏览/关注/点赞行为数据、好友关系等等。
  • 平台一家独大。在互联网的各个领域,平台形成了垄断,赢家通吃,新进公司毫无机会。
  • 扼杀创新。大家试想一家,在 google 平台上,还能长出一家比 google 还大的平台吗?肯定是不可能的,早就被打压兼并收购了。
  • 数据由企业掌控。这是互联网平台企业的核心资产,数据完全控制在平台手上。
  • 所有的人都给平台打工。定价权、分配权都在平台的手上,各参与方其实都在给平台打工。

那么,思考一个问题,如果用户数据依托于开放的协议以及数学算法,而不是掌握在平台手中,那将会发生什么?于是,专家们提出了 web3.0 的构想。

3)web3.0 阶段(开源)

专家们提出了关于 web3.0 的构想:web3.0 必须是开放的、安全的、去中心化(开放协议,必定造就去中心化)、具有原生通证(利益分配)的网络。

web3.0 理念的拥护者们,从区块链技术受到了启发,区块链用密码学的一些基础设施比如数字签名,Web1.0 的开放协议(TCP,UDP 等),和一个非常聪明的激励结构来构建了一个集体所有的中立的数据库,或者叫分布式账本,用于记录比特币的交易/支付数据。

举例来说,用 web3.0 来重构互联网服务,那么我们的个人隐私数据将保存在一个基于区块链的网络之上,而不是存储于任何商业公司。当我们在网上购物的时候,购物 app 如果想使用这些个人数据,需要经过授权,而使用数据的过程和协议都是透明的,都记录在区块链之上。利益分配也在区块链的智能合约上,事先约定好。

web3.0 重新定义了游戏规则,把数据的归属权、使用权归还给用户,巨头垄断的局面被打破。

由此可见,开源更像是关于归属权、使用权革命的产物。

企业开源

既然社会面开始了开源的趋势,想要在社会中生存,企业便也不得不积极的拥抱开源,并且企业参与开源,也有如下的收益:

1、改进代码和功能

大多数的组织和个人首先参与的是他们正在使用的开源项目,主要目的是想让项目/软件变得更完善,更便于自己使用;或者直接打造自己所需的工具并将其开源,也就是常说的"造轮子"。 这部分改进的功能当然可以自己使用不提交,但继续分享才是让利益最大化的方式,因为如果不贡献自己的代码,就有可能面临新版本这些功能不再工作的风险。

2、获取竞争、招聘优势

在程序员的世界中,开源虽说不上是多么崇高的事,但整体形象确实是正面的。开源意味着企业愿意与其他企业和个人共建生态,这个企业的大体上来说,是有拥抱开放的这样的倾向的。所以参与开源有助于提高组织和企业的声誉,且更能吸引志同道合的求职者共同发展。此外,这种行为也有助于提高组织和企业的声誉,提升品牌形象,特别是在开发者之间的口碑,带来的好处就是利于招聘和留住人才。

3、开源商业模式直接获利

开源不抵触商业,开源的目的是分享共享,但不是做慈善事业。具体盈利模式有技术支持、培训、高级功能、云服务等方式收费。不同的软件、不同的领域有不同的盈利模式,但所有模式的基础都是用户数。只有用户数量达到了一定的规模,才有成其商业化模式的可能。

商业开源是通过更多人的参与,减少软件的缺陷,丰富软件的功能,同时也避免了少数人在软件里留一些不正当的后门。企业通过开源的商业模式可以直接获得经济利润,开源软件最终还会反哺商业,让商业公司为用户提供更好的产品。

个人开源

最后,则是个人开源。现在很多 GitHub 上的项目,往往是几个人甚至一个人共享的代码,那么他们为什么要做这种无私奉献呢?大致可以想到,个人开源对于个人来说,也是有一定好处的:

1、提升代码质量

参与开源项目是提升个人代码质量的好方法。一方面开源会激发程序员的"耻感",一旦清楚这些代码是要公开给别人看的,就会自觉将代码写得更加整洁、干净,加更多注释。另一方面,如果项目有一定的影响力,其他关注、参与的程序员也会给予更多建议,这样可以博采众长,无形之中约束自己的代码规范,改进自己的代码质量。

2、展示个人代码

一个小时的面试可能只能展示你掌握的某些底层基础或者前沿知识,但如果有开源项目傍身,就可以从你长期的代码中看出代码质量如何。而且参与开源项目还能展示出你对技术的热爱,向面试官展示你引以为傲的开源项目,这将是个不错的加分项。而深度参与知名开源项目的开发者,从来不缺工作,参与开源的经验不仅能帮助他们获得更广阔的职业机会,而且能拓深职业发展空间。

3、建立个人品牌

正如上述两条,代码质量提升和简历的加分项都会指向同一个成就:打造个人影响力,建立个人品牌。最为典型的就是 Git 的发明者 Linus。现今活跃的很多技术大牛往往是在大公司工作过的顶级工程师,凭借开源贡献在软件社区当中积累起人气与声望,摆脱公司标签,成功打造个人品牌。

相关推荐

前端的世界总是在不断变化,作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。低代码也是一个值得我们深入探索的领域,让我们拭目以待,它将给前端世界带来怎样的变革。

介绍一款程序员都应该知道的软件JNPF快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

JNPF可以实现应用从创建、配置、开发、测试到发布、运维、升级等完整生命周期的管理。减少了传统应用程序的代码编写量,通过图形化、可视化的界面,以拖放组件的方式,即可快速生成应用程序的产品,大幅降低了开发企业管理类软件的难度。

希望这篇文章对你有所帮助~

相关推荐
vvw&1 小时前
如何在 Ubuntu 22.04 上安装 Ansible 教程
linux·运维·服务器·ubuntu·开源·ansible·devops
vvw&2 小时前
如何在 Ubuntu 22.04 上安装 Graylog 开源日志管理平台
linux·运维·服务器·ubuntu·开源·github·graylog
HelloGitHub4 小时前
跟着 8.6k Star 的开源数据库,搞 RAG!
开源·github
GitCode官方4 小时前
GitCode 光引计划投稿 | GoIoT:开源分布式物联网开发平台
分布式·开源·gitcode
m0_748256784 小时前
WebGIS实战开源项目:智慧机场三维可视化(学习笔记)
笔记·学习·开源
猫头虎5 小时前
新纪天工 开物焕彩:重大科技成就发布会参会感
人工智能·开源·aigc·开放原子·开源软件·gpu算力·agi
血色橄榄枝7 小时前
进阶岛-L2G5000
人工智能·开源
在肯德基吃麻辣烫16 小时前
使用开源在线聊天工具Fiora轻松搭建个性化聊天平台在线交流
开源
是小崔啊17 小时前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴
洛阳泰山18 小时前
MaxKB基于大语言模型和 RAG的开源知识库问答系统的快速部署教程
人工智能·语言模型·开源·rag·maxkb