专栏名称: Python之禅
分享Python相关技术干货,偶尔扯扯其它的
目录
相关文章推荐
Python爱好者社区  ·  “给我滚出贵大!”郑强出任贵州大学校长,打算 ... ·  3 天前  
Python爱好者社区  ·  节后第一个私活,赚了3w ·  2 天前  
Python爱好者社区  ·  python接私活,yyds ·  昨天  
Python爱好者社区  ·  DeepSeek 最新中国大学排名 ·  昨天  
Python开发者  ·  国产 DeepSeek V3 ... ·  5 天前  
51好读  ›  专栏  ›  Python之禅

关于开源,6大谎言

Python之禅  · 公众号  · Python  · 2021-01-19 21:21

正文



| 作者: Fernando Doglio
| 转载自: InfoQ
| 编辑:王玥敏
| 设计:王福政
| 翻译:王者

开源是我在 IT 行业中遇到的最有趣的事情之一。它本质上是一种运动,将人们聚集在一起做一个产品。他们通常免费做这些事情,特别是在项目的开始阶段,然后负责维护,让其他人可以免费使用。

我倾向于认为,如果有更多的行业像软件行业一样采用开源模式,那么事情会变得容易得多。不过话说回来,我们要讨论的不是这个。事实上,开源运动并不像人们想象的那么完美,因为参与开源的是人,而人是不完美的。

在开源的发展过程中,人们对它产生了很多误解。这些误解有很多是来自开源项目的用户(即他们只是开源项目的用户,而非贡献者),或者是来自那些在错误的时机参与开源项目的人,从而破坏了原本精彩的开源体验。

我写这篇文章的目的是讨论 IT 行业中有关开源的一些最常见的误解,作为新进者的你就可以自己决定是否要加入这个运动。

本文最初发布于 Medium(《The Biggest Lie in Open Source》),经作者授权,由 InfoQ 翻译并分享。


1

成本是免费的,那么使用也必须免费


谁都知道这个,对吧?开源是免费的。我们可以免费从 GitHub 下载开发库,作为开发者,我们也可以在那里免费发布项目。


所以,只要我们有电脑,就可以写代码,并免费与整个行业分享。


错了。


我们倾向于将成本与资源 (通常是物理资源) 联系在一起,但除了电脑,我们还需要什么资源来生产和维护开源软件呢?


时间。


没错,你的时间就是一种资源。事实上,这是你拥有的最有价值的资源之一,而你却在考虑免费把它送给别人?你在开源项目上花费的时间可能是你的雇主没有给你补偿的那部分 (除非你是在为他们开发这些项目)。所以,如果你的时间没有换来收入,那你换来了什么?你和爱人相处的时间?你用来放松的时间?几个小时的睡眠?锻炼的时间?


时间是宝贵的,参与开源项目的每个人的时间也都是宝贵的。他们愿意牺牲自己的时间开发项目给你用,但这并不意味着你有权要求你想要的任何东西。我看到有人要求贡献者提供 24 小时支持,或者因为他们自己的(私人)项目需要某些功能就要求贡献者接受他们的要求。这样的例子不胜枚举。


根据项目的不同,既有一个人的团队,也有由委员会领导的大型团队,他们花费了时间和资源(是的,有时他们需要在这些项目上花钱),让其他用户可以免费使用他们开发的库或框架。当你以后想要抱怨开源项目时,请先想一想项目维护者付出的成本吧。


2

开源不会带来收入

开源软件是免费的,因此,它的维护者和作者不能靠它谋生。

错了。


乍一看,开源软件对用户来说是免费的,但要断定这不能作为一个有效的收入来源还为时过早。


就像任何数字产品一样,赚钱完全取决于你的商业模式和营销策略。如果你对如何基于开源项目赚钱感兴趣,下面是一些建议,供你参考。



提供专业服务

这是最常见的一种方式。之前说过,人们倾向于认为,既然你已经开发了一个项目并向全世界发布了,那么你就要 24 小时提供支持。这绝对是一个完全不同的工作领域,既然如此,为什么不收费呢?


事实上,你还可以收取培训费用,甚至为那些想要使用你的免费产品的公司提供支持。这些就是我们所说的专业服务(为使用你产品的公司提供服务)。


有一些大型的开源项目就是这样做的。例如,RedHat、IBM、Hortonworks 和 Percona。


提供相关内容


你看到过(甚至是读过)多少本有关 React 或 PHP 的书?这些书都不是免费的,不是吗?


如果你成功地构建了一个人们喜欢和使用的开源项目,那么你就可以通过给他们提供相关的学习内容来赚钱。这与专业服务模式非常相似,但你需要亲自参与(从而可以收取更高的费用)。有了这些东西,你就可以为非公司用户(比如想要使用你的代码的开发者)构建更便宜的替代品。


即使你不是项目的作者,你也可以借助他们的项目来获益。你正在围绕一个开源项目 (只是它们不是你自己的项目) 构建产品。


我们说的是撰写与开源项目有关的书,为 Udemy 等平台创建视频课程,甚至是撰写有关这些开源项目的赞助性博文。为什么不呢?有时候,开源项目作者也愿意付钱让你为他们的项目写书或文章。


捐赠


你可以从捐款者那里赚到钱。不要害怕向别人要钱。只要做得对,这绝对是一个有效的收入来源。


如果你已经构建了一个正在被大型社区使用的项目,你会对结果感到惊讶。比如 Git 这个项目,它确实收到了来自对它感兴趣的人的捐赠。


这与项目的影响力和它背后的社区有关。如果它足够大,那就有可能从中赚到钱。

还有很多其他方法可以让你从开源工作中获得收入 只要你开动脑筋。


参与开源项目才算得上是开发者


我们都知道,只有为开源做贡献的开发者才算得上是真正的开发者,对吧?


错了。


能够为开源做贡献(无论是以参与项目的形式,还是基于别人的项目创建 PR)是一种特权,而不是获得一份开发者工作或被认为是开发者的一种要求。


是的,开源项目的贡献者确实能够从他们的工作中受益,因为他们的工作是公开的,而这反过来也能让行业和潜在雇主看到他们的项目,并对他们的技能有一定程度的了解,但也有一些优秀的内部开发者无法从这样的事情中受益。


或许他们也可以把时间用在开源项目上,但也许他们使用时间的方式与你不同,因此无法参与开源项目。


我在这里要说的是,一些公司甚至是一些开发人员认为,如果你参与了开源项目,你就会是个出色的开发者。否则,你就是一个没了谷歌就写不出简单 if 语句的公司蛀虫。


这是不对的,所以别再这么做了,好吗?


维护开源代码很容易


关于这一点,我能说些什么呢?维护任何类型的开源项目都不是一件容易的事。


当你在开发闭源项目时,你可能需要与四到五名其他开发者共享你的代码。当你维护的是开源项目时,整个行业都可以对你的代码进行评审,并公开指责你的不对。


有很多文章指出,开源的一个好处是迫使你写出干净和可维护的代码。


回到重点上来:维护有数百万开发者正在使用的代码是一项重大的责任。即使整个社区都在努力提供帮助,你又如何能够确保他们可以达到与你相同的标准?如何确保等待你评审的 10 个 PR 已经考虑到了所有潜在的安全风险?


如果你想要维护好开源项目,这绝对是一项非常困难的任务,并且很快会让你精疲力尽。2018 年,一名黑客获取了一个开源代码库的控制权,并加入有害代码来窃取个人信息。黑客之所以得逞,是因为这个开源项目的所有者和维护者工作太累了,没有办法一直看着 PR,他们决定把这个项目交给其他人。


他们太累了,总得要有人接替。


开源项目很容易参与


开源项目有很多,所以对某些人来说,参与开源肯定很简单,不是吗?







请到「今天看啥」查看全文