我终于理解了开源软件

尚无读者喜欢此内容。
The word play made out of lightbulbs

Opensource.com

谷歌从拥有如此多的开源项目中获得了什么?TwitterFacebook 呢?为什么公司会免费赠送花费了他们时间、金钱并且可能帮助其竞争对手的软件?为什么 Github 以惊人的速度增长,拥有超过 200 万个存储库?为什么世界各地的开发人员免费贡献他们的时间和工作?

我使用过大量的开源软件(例如,请参阅简历生成器的“使用了哪些技术”部分),并且非常坚信尽可能使用开放的库和标准。然而,直到最近,开源软件背后的全部动机——为什么如此多的个人和公司做出贡献——才真正在我脑海中清晰起来。一旦理解了,我就创建了我的第一个开源 Github 项目

我意识到开源不是为了帮助世界、分享或行善。它与自由、选择、人权、标准化或任何这些都无关。当然,所有这些都发挥了作用,但它们都不足以解释开源运动是如何发展到今天的地步的。我认为真正推动开源的是对项目创建者的三大好处:免费劳动力、更简洁的代码和作品集。

免费劳动力

开源软件对最终用户的好处是显而易见的:您可以免费使用惊人的库、操作系统、标准和工具。您可以利用由数百或数千名开发人员构建和测试的项目,从源代码中学习,根据您的需求进行定制,并在更短的时间内构建更大、更好的东西。您可以站在巨人的肩膀上。

对我来说不太明显的是,项目所有者从我使用它中获得了多少好处。每次我运行代码、发现错误或尝试基准测试时,我都在免费进行 QA 和性能测试。每次我在网上提问或发布教程时,我都在免费编写文档。每次我在我的代码库中使用该项目并告诉其他人时,我都在免费宣传该项目。如果我创建了一个补丁、添加了一个新功能或提出了改进建议,我都在免费帮助设计和开发该项目。

换句话说,使用您的项目的开源社区实际上是一支完全免费且非常有效的工作队伍。谷歌开源 snappy 可能有助于社区中的每个人进行快速压缩,但如果他们能够让足够多的人对该项目感兴趣,那么当该社区发现错误、修复错误、构建新功能并将所有内容贡献回 snappy 时,这对谷歌的帮助更大。雇用数百名开发人员和 QA 来处理像 snappy 这样的项目的成本将高得令人望而却步,即使对于一家大公司来说也是如此;对于一个孤独的开发人员来说,这完全是不可能的。但是开源它,您就可以免费获得庞大的劳动力。

更简洁的代码

事实证明,知道其他人会仔细审查您的代码,拆解您的设计,并以您意想不到的方式使用它,这是一种保持代码简洁的绝佳动力。将一些代码变成“项目”的这一行为本身就会鼓励您使事情更模块化和可重用,编写文档,使用源代码控制,跟踪错误,以及所有好的东西。人性就是为客人打扫公寓比为自己打扫更彻底;因此,开源项目往往比专有项目更简洁。

作品集

开源项目是软件开发人员或公司可以拥有的最好的作品集。仅仅看到最终产品很难学到很多东西(如果它甚至是公开可见的);面试也很遗憾地不具有太多启发性(另一个博客文章的主题);简历和“关于我”页面几乎毫无用处。但是,当我可以看到每一行代码、设计决策和所涉及的技术时,我可以很好地了解我正在与哪种类型的人或公司打交道。这是终极品牌策略:展示,而不是讲述。

在招聘方面,我宁愿选择 Github 提交日志而不是简历。- John Resig

我是一个信徒

长期以来,我一直是开源的最终用户。现在是我积极开始贡献的时候了。不是因为它对世界有益,也不是因为我想改善人类——它确实如此,我也确实想,但这以前还不足以成为动力。不,我将为开源做出贡献,因为我终于看到了它将如何直接使我受益。我没有理由不能同时自私和拯救世界。

这最初发布在 Jim 的博客上,并经作者许可转载。

标签
User profile image.
软件工程师,Crossfiter,旅行者。

评论已关闭。

知识共享许可协议本作品根据知识共享署名-相同方式共享 3.0 未本地化版本许可协议获得许可。
© . All rights reserved.