欢迎来到优建站!
网站建设/软件开发/微信小程序开发以及交流学习。
0.2元/条,免审核!
建站分类
优建站 > 餐饮行业新闻资讯 > 软件开发 >  为什么要开源?

为什么要开源?

发布时间:2019-08-13 14:35:57  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
背景:今天和朋友聊天,讲关于本子汉化的事,(不要问我什么是本子),他是一个动漫爱好者论坛(大雾)的版主。我觉得发生在另一个领域的事或许能为题主提供一些借鉴。具体内容整理如下:翻译本子的字幕组有两类,一
为什么要开源?背景:今天和朋友聊天,讲关于本子汉化的事,(不要问我什么是本子),他是一个动漫爱好者论坛(大雾)的版主。我觉得发生在另一个领域的事或许能为题主提供一些借鉴。

具体内容整理如下:翻译本子的字幕组有两类,一类叫免空,一类叫钱空。为啥这么叫我也不太懂,区别就是免空做汉化主要是因为兴趣,做了就免费发到百度网盘之类的地方分享到论坛里。钱空则是汉化之后发到城通这一类赚钱的网盘里,(这种网盘就是你的东西被下载越多,就能拿到现金,貌似1000点击就有几十块钱。下载之前需要输入N次验证码,各种弹出广告,各种等待时间。)靠爱好者下载来挣钱。

我一开始就问,收钱的话质量应该更好对吧,毕竟更有动力才对。可是朋友告诉我完全不是这么回事,他非常讨厌钱空,因为钱空的质量很差。

那我就疑惑了,质量差又如何赚钱呢?

朋友的解释真心让我感受到中国人赚钱的热情和苦心钻研。

因为本子在某种程度上是非法物品,所以百度网盘这一类网站如果有人举报就会封禁,不允许分享,于是做汉化水平不怎么样的那些钱空党利用这一点,只要发现免空的汉化本一出,立马去百度网盘举报他们,于是很快被封禁,然后想要下载的直男绅士们只能去他们那些充斥广告的网站下载质量低劣的内容,聊胜于无嘛。这中间更不要提抄袭等问题了。

于是我就又想到了可怜的快播。貌似已经离题万里了。

最后稍微带回题主的问题,很明显的事情,免空的成员很明显就是在无私奉献,他们就是完全为了自己的兴趣和与人分享的目的做这些事的,毕竟做那些东西还是很辛苦的,而且一般作品只有汉化组的名称,不会有个人的姓名,最多有点自得而已。类似于知乎答题的人,大多数人也都是免费答题吧,谁想过通过这个获利呢?
钱空的道德也就不吐槽了,毕竟人是要生活的。而开源不开源也是如此吧,你不愿意,也请不要总去怀疑别人的动机。题主问的非常好,尤其是从功利的角度来看为什么要开源。我把这个问题分成三个回答你:

从无私的角度看,为什么要开源?
从自私的角度看,个人为什么要开源?
从自私的角度看,公司为什么要开源?

从无私的角度看,为什么要开源?
1. 建立社区:可以这么说,如果没有开源社区,苹果,谷歌,Facebook都不会是现在这样。如果没有Linux,现在互联网的格局简直无法想象。为了让更多人能够使用优秀的产品,需要有人来愿意把自己的产品免费给他人使用。很多开源社区的贡献者都是为了建立,维持这样一个互助互利的社区而不断努力的。

2. 帮助他人:开源一个很美妙的地方就是,别人不用花时间解决一样的问题。当你看到你的一个大问题已经有人做了开源项目的时候,你一定感觉如释重负。同样,有人感谢你的开源项目帮他们解决了一个大问题,真的是种很美妙的成就感。

3. 结识朋友:开源社区中经常能遇到很多志同道合的好朋友。你帮我改代码,我帮你加功能,说不定两个人就认识成了好朋友。我和我现在的一位导师和几位朋友就是在贡献开源项目的时候认识的。


好,下面来说说不明显的:

从自私的角度看,个人为什么要开源?
1. 提升代码质量:开源是提升个人代码质量的好方法。这个有两个方面:首先,如果你知道你的代码要给别人看,你会不自觉的把代码写的更干净一点,多加点说明。其次,开源之后别人会建议怎么改(如果你的项目有一定影响力),给你建议的人多了,你也大概就有概念怎么把代码写的更好了。

2. 展示个人代码:如果你在找工作,这个很可能会是你的主要动机。公司实际上很好奇你写的代码质量如何,但是光从1个小时的面试实在看不出太多。所以很多公司会非常喜欢看你的开源项目,来评估一下你的代码质量如何。同样,如果你面试的时候告诉公司,“我有个开源项目,你们可以去看看”,这将是个不错的加分项。

3. 建立个人品牌:如果你足够厉害,把一个优质项目开源是个迅速提升影响力的好方法。很多在大公司工作过的顶级工程师,我们都是通过他们的开源项目认识的。git的发明人,Linus Torvalds,就是一个好例子。一个工程师如果在工作之外想要树立个人品牌的话,写一个高质量的开源项目是个相当好的选择。

4. 备份个人项目:其实很多人把项目放到Github的时候根本没想这么多。。。他们只是想把家庭作业,代码练习啥的备份到网上去而已。。。其实Github当中绝大部分项目都是这种实际没啥用的代码备份(只是Github没让你看到)。。



从自私的角度看,公司为什么要开源?
1. 树立品牌形象:公司与个人开源的动机不同。公司开源很多情况下是为了提升外界对公司的形象认知。任何一个大科技公司,肯定用了多多少少用了开源项目(Linux,至少吧?)。如果连一个开源项目都没有,这很容易给人造成,“这公司总是索取,却不回馈给开源社区”的形象(尤其在美国)。

2. 发掘潜在员工:比如,我读了谷歌的Android的代码,发现里面有个大安全漏洞,然后我提交一个修改把漏洞给补了。你说谷歌想不想拉起我去工作?很多公司一个很好的招聘渠道是开源项目的贡献者。如果能在公司开源项目做出有意义贡献的话,这个对于公司来说是比面试好很多的能力证明。

3. 实现额外功能:这点实际上很有意思,有的公司/项目实际上有很多想做的小功能,但是没时间也没人力去单独做。这个时候开源的力量就体现出来了,项目开源之后很多时候能吸引到开源贡献者来做一些自己感兴趣,项目想要,但项目没时间做的feature。我之前在http://Socket.io做的时候写的就是这样的一个小feature。

4. 扩大影响范围:公司开源项目的质量,很多时候能反映公司的影响力。所以硅谷的很多大公司,都有一些厉害的开源项目。一方面是回馈社区,一方面是展示公司的影响力和代码质量,吸引更多人才。同样,如果一个公司很希望自己的一个产品有更大影响力的话,开源是个好方法。苹果的Swift就是个好例子。Swift开源之后,能够用在不少iOS之外的领域。说不定之后我们还能看到用Swift写的网站架构。

5. 用作战略武器:开源项目还可以作为公司的战略武器。最好的例子就是谷歌的Android。通过开源和病毒式的传播一下追上iOS。这里面有很多弊端(比如碎片化严重),不过谷歌这么一招给了开发者十分大的力量,Android一下成为一个和iOS比肩的选项。


如果你好奇全职的开源工程师如何赚钱的话,这是我之前的答案:
世界顶级开源软件工程师,他们如何谋利? - 编程

最后,也希望题主能继续为开源社区出一分力 :)

有些项目,光靠发起者一个人的力量无法完成,又不愿意花钱雇人为自己工作,只有开放源代码,才能吸引开发者参与进来。

例如wine,到2.20版本,共计开发者1604人

开源社区的贡献者,都是有国际主义精神的一群人,一定程度上是世界公民。

他们的知识和技能可以让他们保持局部领先,但是为了拓展人类的知识边界,为了人类整体的福利,他们将工具或者知识开源出来,别人就可以在他们的基础上工作,人类进步的速度就加快了。

他们放弃了自己的局部领先优势,选择人类整体的福利,不可谓不伟大。

知乎上的很多答主也是这样的表率,他们分享的知识与见解直接或者见解的改变很多人,甚至改变人的一生。与他们贡献相比,收获的一点名利就显得太微不足道。

他们的例子有很多,我心中立马可能想起好几位,但为了避免造成棒杀或者抱团的嫌疑,就不列举他们的ID了。

总之,向所有的共源知识贡献者致敬,向国际主义者致敬。

在不太久远的过去——大概也就是十多年前,互联网精神代表着自由、平等、共享——人人为我,我为人人。维基百科、CC协议、FTP服务器、P2P(不是那个臭名昭著的理财模式),包括开源软件,都是那个时代的产物。

但在今天的移动互联网大潮中,主流思维已变成了商业化、消费主义、版权、信息壁垒。无怪乎新时代的互联网子民,已经不理解为什么有人会无私地奉献。“一定从中得到了什么利益”,他们揣测道。

以前的开源,以前留下来的开源习惯,和现在的开源,目的是不一样的。

以前技术世界并没有那么普及的时候,开源是来自于炫技。程序员在20年前以及更以前(美国要30年前),写出厉害的东西,拿出来给大家分享分享是很正常的,那时候还没有现在那么多大中小学生会喷人,炫技,对谈都是实打实的。你觉得我这个不好,你来写一个,写出来我佩服,写不出来我自豪。后来就逐渐聚集起一群人,就是同好,盯着一个开源出来的东西,大家都觉得你这个玩意我有兴趣,我来添砖加瓦,大家一起high。这和在一个服务器里玩游戏,没什么不一样。最多就是门槛高点罢了。

这是古典主义的开源,那时候还没有github,大多是在sourceforge上面,乃至于私服的VSS上走的。

后来资本进入了,各种车库工作组变成软件巨头了,开源这个事情并不会被忘记,那些开源得开心得年轻人变成了各种O,他们发现,开源可以当作生意做。先开源,打好群众基础,再在开源上面叠加各种不同程度得商业许可,这和当年微软在中国盗版泛滥有异曲同工之妙,你习惯了,你就会去附加用上面得商业版。

这是目前正确得开源打开方式。

再到中国来,就又出现了一种利己开源。很多人觉得,我扔个垃圾东西出来,让其他蠢货帮我改bug,这就是开源。never mind,随便什么事情,基础大了以后,总会烂一点的。

很多软件的复杂度已经超过单个企业可以承受的规模,即使单纯出于纯利益开源也是有好处的。

因为开源是无产者对抗资产阶级的一种武器。

在过去,代码是由程序员生产出来的,变成资本家的资产,和其他产业最大的不同是,代码的边际成本接近为0,只要代码能产生效益,资本家就能源源不断的在其上榨取剩余价值,做的就是无本生意。是以新世纪以来,排名靠前的富人基本都来自IT行业。

程序员可以将自己的代码资产化,成为资本增值的道具,但也可以将其开源。

那么开源带来的好处是什么?首先,代码不能再以资本化的方式获取利润,那开源的程序员靠什么为生?靠为开源代码提供服务

打个比方,你造了一辆车,别人想要用这个车,但世界上只有你一个人能开。那么用车的人有两个选择:1.花钱请你开车,2.自己或找愿意学开这辆车的人来开这辆车。因为你这辆车是开源的,意味着任何人都可以获得这辆车,但并不是任何人都愿意为学开这辆车付出成本。这样所有会开这辆车的人,以及维护,修理,升级换代这辆车的人,他们的劳动利益都能得到保障。

搞投资理财的人最爱讲挖井和挑水的故事,来说明挖井对实现财务自由的重要性,但所谓的财务自由,其本质是,你不从事劳动却能获得劳动果实,那么意味着,这世界上某个角落的人,正因为你的资产而被迫接受剥削,让出自己的劳动所得。

开源运动,让程序员能够保证自己的劳动产生的剩余价值不被攫取,回归劳动光荣的传统。是世界无产阶级革命运动的一部分。

如图,以数据库为例,开源正在不断侵蚀商用数据库的市场份额。

碰巧又看到圈里的程序员大佬转发 CSDN 最近的一篇文章:开源正在蚕食 500 亿美元的数据库行业!还引用了 Gartner 最新的数据库市场研究报告:

“截止到2022年,超过70%的内部应用程序都将建立在开源数据库管理系统(open-source database management system,简称OSDBMS)之上,50%的现有商业关系数据库管理系统(relationaldatabase management system,简称RDBMS)都将被替换。”

为什么程序员愿意开源这个问题其实不如说现在很多公司,不论大小,都愿意开源自己的项目。

开源意味着很多事情,社区、用户、不要钱的测试工程师,甚至是投资。

在互联网这个迭代如此迅速的行业中,好产品自然能够发光,真正想要盈利也可以推出商业付费版,并不冲突。

最后来一波广告:CovenantSQL,开源的区块链数据库,欢迎试用

快速开始 · CovenantSQL Docs

1 对公司来说, 可以增加名气, 增加影响力. 有不少公司就是会开源一些跟核心业务没直接关系, 不会泄露商业机密的组件. 借此向外界展示自己公司的技术实力, 也是为了笼络一些技术强人来自己公司入职.

2 由于使用了某些特定的组件, 如果该组件本身属于 GPL 协议, 根据 GPL 协议传染性的特点, 直接调用者必须也是开源的. 因此他们不得不开源. 基于这一点, 才会有类似于 Mokee, Liquid 等等各种三方 Android ROM.

3 通过开源某一个组件, 形成生态圈甚至形成市场垄断. 比如 Android, Java...

3 对于个人来说, 将自己写的代码开源可以成为未来去各种公司面试时候的加分项. 当然, 垃圾代码不算.

4 开源也是对自己技术的一种总结和提炼. 当然也有代码云存储的意味在里面. 未来当你再遇到什么技术问题想不起来怎么做的来着的话, 就可以直接打开之前开源的源码再看一遍...

5 开源也是自我改进与产品改进的一部分. 我这个东西开源出去了, 如果代码写的很烂, 我好意思开源吗? 那么为了能够开源我一定会写的很好很规整. 哪怕是装出来的. 开源之后, 你的产品就可能会有 pull request, 可能有人给你开 issue, 可能会有人帮着你改. 这样你也可以从中进步, 你的产品也可以得到完善...

我以前不理解开源的逻辑,现在明白了:开源是劳动者最好的武器,是劳动者的一次伟大尝试。

想保护劳动者,目前已知的只有三条路:

1、把资本收归国有:事实证明阻力很大、问题很多;

2、建立协会、工会:事实证明前者断了新人的活路、后者逼着资本把工作机会转移到其它地区;

3、开源:只要你不偷懒、做到持续学习,就永远不会失业。


专利(不是版权)是压迫劳动者的工具,资本雇佣了一帮劳动者、开发出一个新技术,然后占有了这个技术的使用权,这种人为制造的技术壁垒,让壁垒里面的人躺着就可以赚钱,而壁垒外面的人不管多努力、多聪明,哪怕明知道这个技术的原理,也无法无偿使用。这种制度看似鼓励创新,但如果某技术的最优解只有一个呢?如果某技术因为应用太广而不能不用呢?难道要所有人都为那个手握专利的资本买单吗?更不用说资本在拿到专利后,甚至会把那些真正开发专利的劳动者卸磨杀驴、鸟尽弓藏,因为此时专利已经在某个资本手上,只有这个资本才有资格去免费使用,而劳动者即使知道怎么使用这个专利,也只能选择直接或间接给这个资本打工,给这个资本提供了充分的议价权。


而如果取消专利制度,做到一切技术都开源,那劳动者就变成了专利本身,谁持续学习,谁就可以掌握知识和技术,谁就是专利,而资本如果想要开发对应的产品,就必须要雇佣这些掌握知识和技术的劳动者,他们无法再用专利去压榨后来者,也无法用专利来对劳动者压价。

当然前提是,劳动者必须持续学习,不能指望自己成为垄断资本的附庸来躺着赚钱,也不能组织协会来无限抬高后来者的门槛。

换句话说,开源一方面保证了劳动者的议价权、另一方面迫使劳动者持续学习来促进社会进步,同时还可以淘汰掉不保证员工学习时间、只知道压榨其劳动力的996公司,是目前已知的最好的制度。

共产主义好!!!!!!!!!!!

人人为我,我为人人!!!!!!!!

我为人人,是为了人人为我;

人人为我,是为了我为人人。

你尽然还问为什么?

这个世界上总还是有愚公们愿意为了推倒知识壁垒献出自己的力量,哪怕只能搬走一层皮。

与这些公司的表里不一不同,最近在接受 Computer Business Review 采访时,MongoDB 公司 CEO Dev Ittycheria 明确表示了 MongoDB 的开源用意:“我们的开源并不是为了获得帮助,使产品更好,而是作为免费增值策略,以推动采用。”


we didn’t open source it to get help from the community, to make the product better. We open sourced as a freemium strategy; to drive adoption.


在被问到 MongoDB 修改开源 License 相关问题时,Dev 说出了这段话。MongoDB 去年 10 月份宣布将开源 License 从 GNU AGPLv3 切换到 Server Side Public License(SSPL),以此回应 AWS 等云厂商将 MongoDB 以服务的形式提供给用户而没有回馈社区的行为。SSPL 明确要求托管 MongoDB 实例的云厂商要么获取商业许可证要么向社区开放其服务源码。


但是开源社区对此似乎有不少反对声音,许多人认为 SSPL 是具有针对性的,对特定类别的用户具有严重歧视性,这违反了开源的真谛,所以 Fedora 认定 SSPL 不是一个自由软件许可,红帽和 Debian 也宣布从发行版中删除 MongoDB。




对于这种情况,MongoDB CEO Dev 认为不必在意,他说:“从那以后,我们的业务增长得更快。这没有任何影响,它只影响那些可能在考虑使用我们的免费版本,并将其作为托管服务提供给第三方的人。”


而为什么 MongoDB 能够如此沉着呢?Dev 说 MongoDB 与其它开源公司不一样,“与其它开源公司不同,我们可以在一定程度上控制 License 是因为大多数其它开源公司都建立在已有技术上”,他认为其它开源公司只是将其非真正业务核心的东西开源出来,继而进入公共领域,他们的开源本质是想让社区进行众包研发,使项目完善得更好。


“根据定义,开源 License 必须非常宽松,因为它希望鼓励人们开发并使开源项目变得更好”,Dev 解释:“然而 MongoDB 不是这样,MongoDB 由 MongoDB 自己构建,没有其它技术经验支持。”他补充:“一方面,这说明了 MongoDB 团队的技术敏锐性;另一方面,我们的开源并不是为了获得帮助,使产品更好,而是作为免费增值策略,以推动采用。”


Dev 这话的意思似乎是直接否认了开源的分布式协作与同行代码审核这基本的特性,否认了参与 MongoDB 项目开发的开发者的贡献,也难怪有开发者会直接回应表示受到侮辱:作为一个为 MongoDB 源码做过一点点贡献的人,听到这样的说法简直觉得侮辱。




而另一方面,实际上,MongoDB 之所以受欢迎还有部分原因是其支持广泛的驱动,虽然 MongoDB 公司实现了与 MongoDB 一起使用的主要驱动,但其仍然依赖了第三方开发者以解决较少使用的驱动问题。


讽刺的是,虽然 MongoDB CEO 都这么明确地说了,但是 MongoDB 还将继续带着“开源”的光环走下去。


然而,回过头来联系一下文章开头提到的各公司的“遮遮掩掩”,是否会觉得 MongoDB 的这种表述多了几分真实呢?你怎么看?

如果一段代码你可以拿来卖钱,你就不会开源。

但是通常程序员没法直接把代码卖出去。

反正都换不来钱的东西,放出来换点名,或者找点测试,不失为一件好事。

这才是聪明的体现。

“前事不忘,后事之师”。为什么要开源这个事儿还是要从计算机系统发展的历史长河来看。

操作系统之初,人们追求分时复用的设计。在Multics项目因为不堪重负而消亡后,Unix系统悄悄的从这个项目的残骸里出世。虽然Multics项目死掉了,但是人们对分时复用系统的追求没有停止,所以在Multics“死后”,Unix作为个人“追求”和“爱好”开始默默发展。Unix的最初设计者Ken Tompson是Multics项目的研究员,他在1969年设计了Unix了系统的第一代雏形。开始的Unix是用汇编语言和B语言所写,后来Dennis Ritchie加入创作,开创了C语言,然后二人又用C语言重写了Unix。不得不说,用C语言重写Unix系统对其影响很大。一个用高级语言编写的可读性可扩展性良好的支持分时复用的系统代码,很快在世界顶级黑客间得到广泛流传和认可。

1974年,Tompson和Ritchie在CACM(美国计算机通信)发表论文第一次展示了Unix和其上数百个应用程序后,全世界各大研究室和高校都为之兴奋,并都要求获得Unix系统来研究。这个时候的AT&T其实是很心痒痒的,因为显然Unix是成功的,是一个巨大的机遇。但是在1958年AT&T就被禁止进入计算机相关商业领域(为解决反托拉斯案件达成的和解协议),所以AT&T不能靠Unix来获取利润,而且根据协议贝尔实验室必须将当时的Unix分给提出要求获取到它的人。所以Ken Thompson开始将载有Unix源码的磁带或磁盘一一寄出去。然后就引发的Unix开发浪潮,各种民间黑客以及公立组织的黑客们开始争先恐后的扩展Unix系统,其中最出名的当属加州大学伯克利分校。Unix系统得到前所未有的成功和发展,在1979年发布的V7版本可以称为第一个完整意义上的Unix系统。而当时对于V6版本的源代码注释,也成了Unix的最正式文档,流传至今。那个时候,作为一个从事计算机行业的人,没有一份V6注释版源码的拷贝,你简直都没法说自己是黑客。Unix开始进入黄金发展的时期。

1978年,第一家Unix的公司SCO成立,Unix的产业开始初见端倪。微软当时也加入到Unix中,把AT&T版本移植到了微型计算机上,取名XENIX来卖(不过后来他们就另谋它路了)。

上面我们提到了加州大学伯克利分校,这是Unix发展史上的一个重要高校。他们对Unix的贡献非常巨大。为什么?因为Ken Thompson曾在此教学,并将Unix的研究深深的植入了这里。以至于他离开后,这里的老师和学生仍然持续的努力研究。1977年,第一版的BSD问世,伯克利分校迅速成为一个核心开发点,很多创意被反馈回贝尔实验室。

1980年,DARPA(美国国防部高级研究计划局)想要实现全新的TCP/IP协议栈,BSD版Unix成为首选,因为这版代码最公开最容易得到,DARPA选择和伯克利合作开发。

然后1983年TCP/IP随着BSD 4.2版本一起发布,这是历史性一刻,让BSD版Unix红极一时。同年DEC公司取消PDP-10后续的开发计划,MIT人工智能实验室以PDP-10为中心的黑客文化消亡,这刺激的Richard Stallman,他开始思考创建GNU,一个他心目中完全自由的Unix克隆版本。还是同年(1983年发生了很多很多事)美国司法部拆分了贝尔实验室,这个举动将AT&T从禁止Unix商品化的协议中解脱,AT&T早就心痒难耐,立马开始Unix System V(系统5)的商业化。就是这一举措,让Unix逐渐没落。

Unix商业化后,原有的自由交流氛围消失。AT&T用保密协议从软件中获利,严格管制源代码散发,对开发商的产品管制也很严格。这导致Unix失去绝大部分的贡献者,因为获取分发Unix源码属于非法交易了。祸不单行,在贡献源头枯竭后,各个厂商开始寻求产品的差异性,即将Unix打造成各自的标准,来争取市场。这一做法极大的破坏了Unix的跨平台兼容性,对Unix造成毁灭性打击。商业化的Unix开始和BSD Unix分歧不断,从技术层面的分歧,到文化层面的分歧不断加深,几乎到水火不相融的地步。相关人员开始纷纷站队,技术人员一般站BSD这边,以利益为目标的人站AT&T的System V这边。

又是1983年,一件不大不小的事悄然发生。那就是Larry Wall先生(我曾有幸见过他和他的太太,并拿到他亲笔签名的Perl语言书籍),他在那一年发明了一个应用程序,叫patch。这个事件可算大可算小,因为它增进了程序员源码交流的效率,改善了方式。让开发人员可以通过传送补丁进行协作。让基于共享代码库的开发可以分开开发,并行进行,最后合并到一起。它引领和新的开发协作方式,为Unix的新生做了铺垫。

1985年,Intel 的 386芯片问世。当时这个还不是很起眼,因为当时大家的注意力还都在Sun公司的工作站上。但是可以很轻松的运行Unix的微处理器,在后来让Sun知道了什么叫无力回天。同年,Richard Stallman发表GNU宣言,发起了自由软件基金会。但是当时没有人把他和他的组织放在眼里。

1986年,IBM开始在大型机市场失利,以Intel 386为基础,配合Unix跑起来的PC机开始占领市场。其实这个时候如果有人用Stallman的GNU项目配合386制作出Unix工作站,那将是最便宜的解决方案,而且便宜的不是一点。

后面Unix的战争愈演愈烈,经历几轮战争后,Unix社群的人们的梦想开始破灭。Unix的商业化没有取得成功,成为鸡肋的存在。微软在Unix自相残杀的时候迅速占领了无人重视的小型机市场,赚的盆满钵满,并巩固了其统治地位。“自由”的梦想似乎就要在此终结。

但是曙光在这一刻悄然埋下。1988年,伯克利分校的黑客Keith Bostic受到Stallman的影响(听说Stallman先生“游说”了当时的BSD老大很久,劝他移除并重写BSD中Unix商业代码相关的部分),开始尝试把BSD中AT&T的专有代码清除出去,之后William Jolitz在1990年把BSD移植到了386机器上。这一消息立刻引起不小的轰动,但是在1991年底到1992年初的时候,Jolitz突然退出了这个项目,并毁掉了自己的成果。原因传说是项目的赞助商选择专有授权模式,而不同意他希望将源代码无条件无限制发布的愿望,于是,这个程序员就怒了。

1991年8月,默默无闻的大学生Linus Torvalds宣布了Linux项目,并加入GPL协议。因为BSD移植到386的项目在1992年才下线,所以Torvalds并不知道这个项目。他曾亲自表示,如果自己早知道,就一定会加入BSD移植386的那个项目。不过即便Torvalds宣布了Linux项目,但是这个开源的内核太弱小,GNU也没有壮大起来。人们的热点还是停留在Unix如何复兴上面。

就这样又过了两年,1993年~1994年,互联网大爆发!随着互联网的兴起,GNU, Linux, 开源BSD项目才真正被整个Unix世界的人们所了解。但是不幸的是对BSD的支持者来说,AT&T对BSDI(赞助Jolitz移植BSD的创业公司)的诉讼消耗了大量时间(相当长的时间,而且对BSD的毁灭是灾难性的,甚至伯克利的计算机科学研究组都在1992~1994年间被关闭了),使得BSD的主要开发者转向了Linux,大部分原来贡献于Unix的黑客也开始转向Linux。这对Linux的开发无疑是重要的生命注入,要知道转向Linux的这些开发者,那才是远超越当时的Torvalds的技术水平的人们。可以毫不夸张的说,他们转向哪里,哪里就有操作系统,束缚他们的只是商业协议而已。

一直以来主要反对GNU的不是以微软为首的商业软件体系,而是BSD等其它开源协议拥护者。它们并不认同甚至反感GPL协议。BSD认为自己的协议比GPL更自由,GPL反而是具有传染性的毒瘤。而Stallman又是个极致的“自由”崇拜者,他反对所有的私有软件,认为其系统上只能有“自由”软件,不能有不遵守GPL协议的“蛀虫”。这一点在思想上很大程度上不受传统Unix文化影响下的人们的支持,他们反而喜欢类似BSD的方式。Torvalds在这一点上很聪明,他巧妙的穿梭在GPL协议和反GPL协议之间。他利用GNU的软件集搭建的Linux内核,用GPL协议保护自己的成果,但是拒绝认同Stallman的思想体系。他曾明确多次表示,自己认为自由软件非常好,但是他也用专有软件,他希望自己的内核上既可以跑自由软件,也可以跑专有软件,选择权交给用户。这样的观念平衡了两方的人,大家都愿意在Linux上开发贡献。

其实RMS只是固执了些,他作为一个大师级别的程序员,已经接近了“思想者”的地步,他们这样的人有自己独到的思想体系是非常正常的。就像中国古代百家争鸣时代的一大批哲学家思想家一样,一个人的能力高到一定地步,就开始创立思想体系。但是,作为计算机行业,实用主义还是最受欢迎的。

后来,Linux抱到Apache服务器的大腿,开始一发不可收拾的发展起来。迅速成长为替代Unix的存在,受到各大厂商,开发者,使用者的多方支持。

其实仔细想想,Unix文化从未离我们而去。它只是饶了一圈,在商业化的道路上消亡殆尽后,伴随着互联网的兴起,以另一种开源的形式重新出现。汇聚在它身边的还是以前那些抱着相同理想的黑客们(或他们的继任者们)。同时,Unix的没落也告诉了我们,距离开源越近,越能得到好的发展。任何试图将Unix私有化的企业都逐渐消亡了。回归开源道路的Unix文化,才是如今发展下去的动力。这是几十年下来,这些老黑客和他们的继任者们,在历尽挫折与失败后共同总结的经验,为此他们还形成了各种思想体系(开源协议)。尽管协议有不同,思想也有不同,但是相同点都是“开源”。

(另一个教训其实就是:别太自视清高。Unix和很多厂商一直专注于大型机市场,认为廉价粗制的Intel芯片都是上不了台面的。最后一次次被打脸,甚至还让微软凭借并不出众的技术就抢到了个人桌面计算机的主导权。)

最初,开源的目的就是为了低成本的发布产品。

如果闭源,你必须为你的软件产生的所有后果负责,生产者必须负责软件的后期维护,改错,以及功能更新。

为了能够付得起这个责任,你的软件必须达到产品级标准,这个标准远远高于后来开源软件发布公测的标准。

--

一群具有强大创新精神的黑客们认为,这不够酷!为什么,因为程序员最大的兴趣在于制作更多更酷的特性,而把一个软件稳定到产品级的过程中,你需要耗费很多代价去做一些不那么酷的事情(例如,调试bug,改bug,解决很多异常情况)。

这,就产生了一个矛盾:程序员们想要第一时间迅速分享自己的最酷的软件创意以及发布一个闭源软件所需要完善其达到的产品质量之间的矛盾。

为了解决这个矛盾,开源软件应运而生,它之所以开源,是为了完全意义上的免责,就是说你运行我这个开源软件,出现任何意义上的问题,都后果自负。因为所有源代码都完完全全的交给你了,有任何问题都自行解决,由于它实际上是源代码,你有自行检查的义务,哪怕由于其中的bug给你造成了严重的商业上的经济损失,你不能向开源软件发布者进行任何形式的索赔。

如此以来,发布软件的门槛跟风险被大幅度降低了。在早期的闭源软件时代,其实一个初学者是不敢随便发布自己写的软件的,出问题还不够赔的。(大家应该知道在美国,卖鱼给顾客吃了卡刺是该卖鱼的赔钱的,所以他们不敢卖有刺的鱼。关于为什么不敢发布不成熟的闭源软件,原理类似。)

而开源软件制度,确实是大幅度推进了软件业的发展,因为人们敢于更早期的发布自己的不成熟的作品,这促进了学徒阶段程序员之间的大量的积极的交流

开源软件使得软件能够更早期的被发布,使得人们敢于发布自己的不成熟的产品供有兴趣的同行去完善,这是开源的一大优势。

--

开源软件还有另外一个考量,就是给使用者建立信心,使得不知名的程序员个体以及组织开发的软件愿意被人使用。

软件,并不是个一锤子买卖的商品,它必然关联了大量的后期维护,改进,出错,更新。一个闭源软件必须由开发者进行维护,如果我对一个开发者没有足够的信心,我就无法信任他能够在该软件的生存周期内保持对软件的维护,因此,在闭源软件的市场,你不能建立客户的信任,就无法将软件卖出去。久而久之,闭源软件市场只会出现强者恒强的情况。小企业以及个体程序员难以有出头之日。


开源软件,则给使用者建立了更大的信心,即便你对我的长期活跃度不抱有信心,但如果你对我的开源软件现在认可,将来就算我不继续维护了,你也可以自行维护这个开源软件。换句话说,开源软件从协议上保证了绝对没有断供的风险。

如果你从来没有做过操作系统,别人对你的操作系统当然就不会非常信任,那么让别人愿意使用的一种方式,就是开源。

开源给使用者建立了更大的信心,使得不具有悠久历史以及没建立长期信任的软件能够被客户使用,这是开源的第二大好处。

--

开源的第三大好处,个人认为是,明确劳动者的价值。或者说是明确程序员的价值。

对开源软件来说,软件代码本身没有价值,你对软件的劳动才产生价值,也就是说,调试软件,安装部署软件,修改错误,增加新功能,等等这些必须程序员做的事情是有价值的,而分发复制开源软件本身,这些不需要程序员做的事情,就变得很廉价。

如果你需要使用开源软件,那么往往就需要雇佣程序员去维护它。开源软件为程序员创造了工作岗位。但如果你需要使用闭源软件,你自己其实往往不需要雇佣程序员,只需要厂商提供技术支持即可,产商的技术支持只有一份,而用户有多个,因此用户侧的程序员维护者数量将远远多于产商维护者。——换句话说,程序员们发明开源软件机制,客观的为程序员创造了更多的就业岗位,使得社会对程序员的整体需求增加了,也使得自己的就业面变宽广了。而闭源软件则难以具备这个好处。


总的来说,开源软件,是程序员为了自身利益,切实对程序员群体自身创造了实实在在好处的机制。他有实实在在的价值考量与现实意义,而并非只是所谓活雷锋的道德境界。

暂时,就先说这么多。

因为生产资料全民所有啊

这样资产阶级就无法通过占用生产资料来剥削剩余价值了

初中课本上不是都写了吗?

开源在不同时期具有不同的意义。

最初开源为之奋斗的是软件的自由修改权。也就是我的电脑我做主,怎么执行不受商业公司控制。

之后是分发和再分发,开源的代码要保持开源才能成长。

前两个是 GPL 的时代。

再之后开源一方面开始反哺商业,刺激商业软件繁荣,很多项目选择兼容较好的 BSD License. 另一方面在 toB 端自由软件生态已经超越很多商业的系统软件,商业公司开始由软件到服务的战略转型。

互联网加速了开源软件的发展,社区这种东西就自发形成了。社区里天然具有马太效应,对于追求赢家通吃的互联网行业,是一个重要的占有市场的渠道。于是开源成了顶尖公司开拓和维持市场地位,快速推动技术变革的重要平台。计算机人才更热衷于去能够产出优秀软件的公司,通过开源在社区赢取口碑也成为中小型公司吸引人才的重要手段。

开源无外乎下面几个理由:
1.免费获取用户
2.美化个人简历
3.建立行业标准
4.PR
5.垃圾回收,放手一搏

以上理由可以叠加

开源只是一种手段而已,本身并没有什么高尚不高尚的,背后都有各种目的。

从长远来看,开源出现在软件业并不意外,因为我们再生产的成本基本为0。你看开源硬件什么的只是听着很美好,实际上是没什么momentum的。也不见有人开源桌子椅子什么的。

责任编辑:
相关评论我来说两句
© 优建站 粤ICP备12015996号

友情链接我要申请