毫无疑问,开源哲学在编写代码和生产软件方面的优点。现代计算核心的许多软件包,从Linux操作系统到MySQL,都是使用开放共享和协作开发的模式创建的。四十年来,在开放哲学的滋养下,伟大的代码解决了任何关于开源思想是否有效的问题。

尽管开源有其巨大之处,但它也并非没有缺点。现在开源已经成为主流,让我们考虑一下它的一些缺点,与其说是哲学,不如说是日常现实。以下是开发人员在为开源项目做出贡献时可能会再三考虑的七个原因。

1、开源不适用于云

今天的许多开源许可证都产生于在云之前,当时用户通过下载并在桌面上运行软件来访问软件。自那以后,云公司已经找到了在保持其代码更改所有权的同时,释放开源风气的方法。一家大型云公司的一位开源经理颇为腼腆地告诉笔者,他们分发软件,因此不需要共享源代码。

正如Drupal(PHP语言编写的开源内容管理框架)公司CEO,在一次接受采访时所说,“云技术的快速应用实际上可能会阻碍开源活动”、“它将开源开发者的大量收入转向了云供应商”。

这里有几十个云供应商创建开源项目的特殊版本以在云中转售的例子。亚马逊Web服务和Elasticsearch的创建者之间的分歧就相当明显。当双方无法达成协议时,最后闹掰,彼此单干了,现在有两个有效版本的Elasticsearch代码库。

一些开源拥护者正在通过制定更严格的许可证或修正案(如公共条款)来抵制云合作选项。我们可能会看到未来的改进,但这些改进无助于原始开源许可证下的遗留系统。

“公共条款”许可条件v1.0如下:

本软件由许可方根据以下定义的许可证提供给您,但须满足以下条件。在不限制许可证中的其他条件的情况下,授予许可证下的权利不包括,许可证也不授予您销售软件的权利。就上述内容而言,“出售”是指行使许可证授予您的任何或所有权利,以收取费用或其他代价(包括但不限于托管或咨询 / 支持软件相关服务的费用)向第三方提供其价值完全或实质上来自软件功能的产品或服务。许可证要求的任何许可证通知或归属也必须包括本通用条款许可条件通知。

2、开源存在多样性问题

社区这个词在开源圈子里被广泛使用,但这并不意味着开源文化就是某种香格里拉。首先,开源开发者可能是一个激进的群体:粗鲁、分心、固执己见,甚至是彻头彻尾的卑鄙。众所周知,开源存在着多样性问题,一些知名人士,诸如自由软件运动的精神领袖斯托尔曼就被指控种族主义和性别歧视。

其次,当个人以相对匿名的方式参与开源项目,仅通过电子邮件或公告栏进行交流时,结构性不平等可能不太明显。但有时这种匿名会产生脱节的感觉,这会使协作过程不如想象中的那样令人愉快,也不那么包容。

3、社区建设和维护需要时间

许多企业公司将其产品的开源版本作为“社区版”发布。这是一个很棒的营销工具,也是收集想法的好方法,有时也是改进产品的代码。然而,围绕该项目建立一个真正的社区需要时间和资源。如果用户和潜在贡献者向在线社区公告栏发布问题,他们希望得到答案。是的,许多贡献都是本着开源的精神自由做出的,但培育社区仍然需要时间。当它运行良好时,结果可能是一个正在构建伟大代码的新兴团队,但在这一过程中通常有大量工作要做。这种权衡的一个结果是,较大的企业项目往往会主导该领域。他们可以通过小型公司无法管理的有偿角色为社区模式提供资金。

4、开源Mentors出奇的少

类似地,许多开发人员很乐意与任何人分享他们的代码,但这并不意味着他们想帮助其他人真正学习。让某人访问Git存储库需要几分钟的时间,但支持他们作为开发人员和共同贡献者的成长是一项重要的承诺。有些项目甚至在其出资人协议中包含了一项条款,即出资人不应期望获得入职或支持,甚至不应期望得到回答。

从本质上讲,为一个开源项目做出贡献就像是一个“大灌篮”:这里有大量的代码行和一个问题需要您解决。你会发现很少有评论来解释发生了什么。谢谢,祝你好运!

5、理想派也需要薪水

大多数开源开发者都是理想主义者,他们不受名声和财富的驱使,但他们仍然需要在屋顶下吃饭和睡觉。现实世界有许多物理限制,与开源的自由共享精神不兼容。对于数字世界来说,“匮乏”可能是一个陌生的字眼,但对于现实生命形式来说,这是一个非常真实的物质问题。

对于小型堆栈和激情项目而言,开源非常有效,因为在这些项目中,没有人期望得到报酬,但对于全职程序员支持的大型代码库来说,它可能不太适合。如果有太多用户选择免费版本,整个项目可能会崩溃。

6、没有什么是真正免费的

在开源环境中待久了,你可能会遇到缩写词TANSTAAFL(There Ain’t No Such Thing As a Free Lunch.),即“天下没有免费午餐”。理查德·史泰尔曼喜欢说,他想创建一个“像演讲一样自由,但不像啤酒那样免费”的软件

在用户下载并使用开源软件后,他们将开始发现其局限性。有时,代码只需要一些小的改进。有时,它根本没有提供正确的功能。没有人想抱怨杯子只有半满,尤其是当价格为零时。但是,在最后期限内填满剩余的半杯,可能会给开发商带来巨大的负担。即使当自由代码让你99%的时间达到目标时,最后的1%也可能是一个非常艰难的过程。

7、有些项目不应该是开源的

有位数据库开发人员告诉笔者,他从未真正考虑过开源项目。他的客户是一些拥有大量数据集的大公司。他们有预算,愿意付钱给他做这项工作。如果客户想阅读源代码,他非常愿意让他们阅读。但他不想经历拆分项目正式、开放版本的麻烦。

开放源代码版本适用于广泛的开发人员使用的代码,他们可以帮助共同开发代码。但在某些情况下,金钱交换,是组织软件研发工作的一种更简单、最终更可持续的方式。

项目是否应该开源, 这是一个值得深思的问题相关推荐

  1. 男子因微信被封从腾讯公司坠亡 前快播CEO王欣说出一个值得深思的问题

    男子因微信被封从腾讯公司坠亡 前快播CEO王欣说出一个值得深思的问题 8 月 27 日,有媒体报道称,有市民反映,自己 21 岁弟弟从腾讯用户接待中心顶楼坠亡.据悉,坠亡者此前被微信封号,多次申诉无果 ...

  2. 分页携带请求参数_一个值得深思的小问题 请求中的参数值为空要不要携带该参数?...

    最近一个朋友疯狂的和我吐槽公司的后端,说很常规.很普通的一个事儿,也就是验证一下子的事儿,非要搞的那么复杂,治标不治本,技术玩来玩去不但没进步还倒退了. 这是怎么回事呢?咱们就来聊聊这件"小 ...

  3. 训练softmax分类器实例_一个值得深思的问题?为什么验证集的loss会小于训练集的loss...

    编辑:zero 关注 搜罗最好玩的计算机视觉论文和应用,AI算法与图像处理 微信公众号,获得第一手计算机视觉相关信息 在本教程中,您将学习在训练自己的自定义深度神经网络时,验证损失可能低于训练损失的三 ...

  4. 一个值得深思的问题?为什么验证集的loss会小于训练集的loss

    在本教程中,您将学习在训练自己的自定义深度神经网络时,验证损失可能低于训练损失的三个主要原因. 我的验证损失低于训练损失! 怎么可能呢? 我是否意外地将训练和验证loss绘图的标签切换了? 潜在地. ...

  5. aws搭建java项目_AWS 创建开源 UI 项目:这是新开源设计系统的第一步

    Amazon Web Services 发布了 AWS UI 以及 Porting Assistant for .NET UI,后者使用了前者的组件,并且已公开源代码仓库.而 AWS UI 项目根据 ...

  6. python+opencv别踩白块儿游戏辅助,一天一个opencv小项目(已开源)

    python+opencv别踩白块儿游戏辅助,一天一个opencv小项目(已开源) 见链接

  7. 源自Google、Facebook、Netflix和Cisco的10款开源安全工具很值得回味

     源自Google.Facebook.Netflix和Cisco的10款开源安全工具很值得回味 选择自由的开源安全软件是一个重要话题,随着新品牌的出现,在选择上也出现很多不确定性.但这没有影响开源 ...

  8. 中国开源界的一个剪影

    --- 中国开源界的一个剪影 自从在学校无意中接触了Linux以后,我就对开源软件深爱至今.  由于在各大技术论坛潜水许久,也就了解了国内一些开源界牛人的事迹.  写下这篇blog,来宣传一下自己心目 ...

  9. ssm架构 开源项目_6个开源架构项目签出

    ssm架构 开源项目 架构世界的变化没有软件那样快,但是架构师仍在寻找共享创新设计和思想的新方法. 开源架构运动旨在免费提供架构设计,工程图,3D渲染和文档,以根据开源许可将其集成到其他项目中. 它的 ...

最新文章

  1. iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge
  2. python保存到固定文件夹的存储路径不能直接复制!
  3. BEX5下新建任务到待办任务
  4. linux 内核模块 警告 initialization from incompatible pointer type 解决方法
  5. 如果张东升是个程序员
  6. linux /proc/net/arp
  7. docker 安装ElasticSearch 6.x
  8. linux的samb配置文件,Linux系统如何配置samba文件服务器?
  9. leetcode18. 四数之和(双指针)
  10. java中整数如何表示,在Java中如何在位级别上内部表示整数?
  11. 持久化框架数据持久化框架(JPA)及其具体实现
  12. 安卓交叉编译环境配置
  13. panoramic image view 全景照片查看器
  14. 深入浅出数据分析:寻找最大值Solver
  15. LeetCode(数据库)- 2142. The Number of Passengers in Each Bus I
  16. POI导出word文件中表格合并方法(行合并,列合并)
  17. CAD数字签名的实现
  18. ruby-to_ary
  19. 实现1~100求和的三种方法
  20. vscode json文件配置

热门文章

  1. crow-han(基于go-micro框架的微服务脚手架)-01-快速启动(简介、快速启动、接口测试)
  2. ROS从入门到精通2-1:机器人3D可视化工具——Rviz
  3. Kubernetes在混合云架构下的应用
  4. vue3非父子组件间传值
  5. 计算机基础与程序设计真题及答案,02275计算机基础与程序设计201504历年真题及答案...
  6. 摄像头RTSP流硬解码
  7. 山东大学软件项目管理
  8. 什么是互操作协议LayerZero?
  9. 中国科学院院士、中国人工智能学会副理事长谭铁牛:人工智能发展现状
  10. Flutter之实现可折叠的列表