编者按:秉持“开放、共享、解惑”的开源项目意味着任何人都能随便使用项目或产品中的代码,但开源并不意味着“拿来主义”,更不应发生“ 00 后 CEO 抄袭了程序员的开源项目”这类的事件。开源项目承载诸多开发者的心血与精力,他们不仅花费了大量的时间进行项目维护,还需要回答问题、读代码、merge PR。由此,本文提议,免费的代码大家可以共用,但应付费订阅,尊重开源项目维护者的劳动成果。以下是译文。

作为软件开发人员,我不得不承认开源代码改变了世界。这些开源软件原本可以变得更好,遗憾的是一些因素阻止了它。精疲力尽且充满失望情绪的项目发起者是造成众多有价值的项目停滞不前的重要原因:

“我不会再投入时间和精力到开源项目中。我为开源工作付出了很多自己的业余时间,这些时间原本可以用来陪伴家人、享受生活或者写作,然而这样的付出并没有收到任何物质方面的回报。我今天在此声明,决定终止目前自己所从事的所有开源工作。”

——Ryan Bigg,多个 Ruby 和 Elixir 项目的早期维护者

“ FubuMVC 占据了我太多时间,这是我现在决定停止它的重要原因。并且在专注 FubuMVC 的过程中,我不得不放弃其他的事情以及自我学习,开源工作的机会成本很高。”

——Jeremy Miller,FubuMVC 的前项目负责人

“当我决定开始要小孩的时候,我可能会放弃开源,一旦有了小孩我的时间将远远不够用,我估计只有放弃开源工作才能真正解决我的问题。

——Nolan Lawson,PouchDB 的维护者之一

我们需要一个新的行业规范:项目开发者付出的时间应该得到经济补偿。此外,我们还需要规避这样的想法,即任何提交问题或请求的开发者都应该获得项目维护者的关注。

有关开源代码库在市场上的使用方式,接下来我们将进行具体解析。开源代码作为实用的软件,企业必须承担开源软件的 License 费用才能将其商业化从而实现盈利。如果用户能够了解代码的原理,并且知道它比替代方案(现成的闭源软件,自定义的内部解决方案,等等)更有价值,围绕软件开发的相关社区就会迅速发展。那么开源其实可以做的更好、耗费更低的成本,或两者兼而有之。

如果一个企业或者组织想要改进代码,他们可以免费聘请任何其想要的开发者。因为诸多开发者参与改进完全出自于自身的兴趣,而将社区的改善归功于社区内部,这样也是有利的。此外由于社区合并的复杂性,基于这种方法,企业或组织可以轻松获得更多用户的支持。这种“重力”倾向于将社区聚集在一起。

但是这也会给项目维护者带来负担,因为他们必须回应这些改进。可同时他们自己得到什么呢?往好处想,他们对于社区贡献值可能将来会体现出来而不是现在。往坏了说,这只是一个戴着利他主义面具的自私请求。

有一类开源项目已经避免了这个陷阱。诸如 Linux、MySQL、Android、Chromium 和 .NET Core 除了有名之外,其他还有什么共同点呢?

它们对于一个或多个大型商业项目具有重要的战略意义,因为它们是这些项目的重要组成部分。聪明的公司将这些开源软件商品化,并且开源软件非常便宜。例如,红帽公司需要更多企业使用 Linux 方便其销售 Linux 企业版,Oracle 使用 MySQL的目的也是为了推广企业版,Google 希望世界上所有人都使用它的手机和浏览器,而微软正试图将开发人员吸引到一个平台上然后推送其 Azure 云服务。这些项目都由各自的公司直接资助。

但是除了拥有强大战略的大项目之外,其他项目如何呢?

如果你是其中一个项目的领导者,则需要征收社区会员年费。代码开源,社区封闭。给用户的信息应该是“用代码做你任何想做的事,但是如果你想影响项目的未来,需要为我们的付出付费 。” 将未付费用户锁定在论坛之外,并忽略他们的电子邮件。应该让不支付的人感觉到他们被社区孤立。

开发者需记住 YAGNI (You Aren’t Gonna Need It,适可而止)这样软件开发原则,即只需要将应用程序必需的功能包含进来,而不要试图添加任何其他你认为可能需要的功能。

这样做会导致社区减小,还是参与者增加呢?如果你坚持构建自己的愿景,并为他人提供有价值的代码,当他们想要参与项目时自然心甘情愿付费。事实上,你贡献应当是稀缺代码,这样,用户必须根据你发布的每个新版本调整他们想要的更改。

如果你希望在代码库中保持高水平的概念完整性,那么限制社区尤为重要。具有自由贡献政策的无头项目很少需要收费。

如果你的项目对其他人有利,为了完成自己的愿景,众筹是获得项目资金的重要方式。下面三个项目就是众筹的成功案例:

  • Font Awesome 5
  • Ruby enVironment Management (RVM)
  • Django REST framework 3

众筹的作用有限。它不适用于大项目。但需要再次强调的是,开源代码是实用软件,它不需要太大的野心以及冒险的游戏规则。它凭借不断的更新并逐渐渗透到所有行业。

这些想法代表着可持续发展的道路,也可以解决开源的多样化问题,这些问题可能源自于之前的无偿性质。但最重要的是让我们明白生命所剩的时光,而且我们有一天会为我们浪费的时间感到遗憾。

当我谈到 “开源 ”时,我的意思是只要代码被许可,就可以用来构建专有的东西。这通常意味着许可证( MIT 、Apache 或者 BSD),但并不总是。比如 Linux 作为当今技术行业的核心,但它却是通过 GPL 授权的。


原文:GIVE AWAY YOUR CODE, BUT NEVER YOUR TIME
作者:William Gross
翻译:安翔

免费拿走我的代码可以,但请对使用我的时间付费相关推荐

  1. html免费天气预报代码,免费自我定制天气预报代码

    免费自我定制天气预报代码 (2010-06-15 22:03:35) 标签: 昔阳天气预报一 乌海天气预报一 杂谈 今晚蚊子又发现一个天气预报,在别人博客上看见的,昔阳天气预报一周,觉得还不错,查看了 ...

  2. 免费QQ空间皮肤代码及使用方法

    免费QQ空间皮肤代码: 免费QQ空间蓝色520代码 javascript:window.top.space_addItem(1,7976,0,80,0,0,90); 空间免费皮肤代码:黑色FLASH相 ...

  3. 10个免费的图表生成代码

    这周我做了一个画图表的项目,需要可视化显示数据.我研究了一下图表生成代码,推荐下面10个免费的图表生成代码. Flot - Flot 为 jQuery 提供的javascript代码库. 容易使用,有 ...

  4. 史上最简单的openshift免费空间上传代码教程!没有之一!

    史上最简单的openshift免费空间上传代码教程!没有之一! 最近因为想弄一个免费的空间,而且最好是java的空间,找了一大片,jsp的空间少不说,免费的更是寥寥无几.  找了一大推垃圾空间,终于让 ...

  5. php暴力引流代码,利用霸屏暴力引流,免费分享霸屏代码

    导语:这个方法我之前好像在哪见过. 这个霸屏很代码,特别暴力. 比如我在QQ空间给别人留言 看到没有,我在QQ空间给别人留言之后,出现这样一个效果. 这样的效果怎么引流呢? 其实很简单,因为你发了这个 ...

  6. 免费拿走Vivado2017.4安装包及其license(附带安装教程)

    免费拿走Vivado2017.4安装包及其license(附带安装教程) 安装包下载地址:下载链接 license: 这是另外一个连接,你懂的u1qq 安装教程: 1.双击安装包文件夹中的xsetup ...

  7. 最简单的openshift免费空间上传代码教程!和FTP一样简单!

    史上最简单的openshift免费空间上传代码教程!没有之一! 最近因为想弄一个免费的空间,而且最好是java的空间,找了一大片,jsp的空间少不说,免费的更是寥寥无几. 找了一大推垃圾空间,终于让我 ...

  8. 【杂谈】开学重磅!有三AI最强资料固态硬盘开启预订,3本书视频代码PPT,两套教学视频,所有付费专栏代码+数据...

    各位,秋招临近,开学也临近了,有三AI给大家准备了一个带学习资料的固态硬盘,月底发货,喜欢的同学就好好阅读本文了解一下吧. 硬盘产品细节 本次我们的产品为固态移动硬盘,注意是固态硬盘,不是普通U盘,虽 ...

  9. 只加两行代码,为什么用了整整两天时间?

    作者 | Matt Lacey 译者 | 弯月,责编 | 屠敏 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 以下为译文: "只加两行代码,为什么用了整 ...

最新文章

  1. 「GAN优化」小批量判别器如何解决模式崩溃问题
  2. android clipdrawable 小例子
  3. 学python最好的方式-你们都是怎么学 Python 的?
  4. Confluence 6 使用一个页面为站点的默认页面
  5. 新一代容器平台ACK Anywhere,来了
  6. Linux设备驱动开发-linux驱动中的非阻塞访问方式
  7. 【算法竞赛学习】资金流入流出预测-挑战Baseline_时间序列规则
  8. [剑指offer]面试题第[53-2]题[JAVA][0-n-1中缺失的数字][二分法][暴力法]
  9. npm在项目目录安装插件需要使用sudo
  10. 如何实现共享软件网络授权认证,包括注册新用户、登录、修改密码等操作
  11. html 隐藏hide,jQuery UI 实例
  12. python绘制不带颜色曲线图_绘制一条曲线,并根据每个点的值和定制的颜色图对其进行着色...
  13. tomcat配置报错解决方法 The jre_home environment variable is not defined correctly
  14. 2019暑假绍兴第一中学游记
  15. 不使用反射,“一行代码”实现Web、WinForm窗体表单数据的填充、收集、清除,和到数据库的CRUD...
  16. linux的tar命令压缩26g文件,如何使用Linux上的tar命令压缩和解压缩文件 | MOS86
  17. Python深度学习:常见优化算法
  18. 程序员的情人节「GitHub 热点速览 v.22.07」
  19. Android studio导入项目报错Please refer to the user guide chapter on the daemon at http://gradle.org/docs/2
  20. 计算机 添加环境变量,windows系统手动添加环境变量的方法

热门文章

  1. 双酚基CE树脂行业调研报告 - 市场现状分析与发展前景预测
  2. 初中计算机考试成绩会纳入吗,【政策】北京海淀将信息技术纳入初中学业水平测试,考试不通过将不予毕业...
  3. 第12章 坚持一百秒(《C和C++游戏趣味编程》教学视频)
  4. 服务 23 年,苹果宣布停止 macOS Server
  5. 云原生被热捧,是炒作还是大势所趋?
  6. 几行代码撸了一天,源码到底该如何读?
  7. 当音乐博士开始写代码...
  8. 字节跳动副总裁喊话腾讯:停止无理由封杀飞书;Git服务器配置错误导致日产汽车源码泄露;Linux5.10.5 发布
  9. 我在优酷 OTT 端做自动化制图
  10. 把核心代码全开源,还能做出卡别人脖子的产品吗?