写点什么

不要被“假开源”所迷惑

  • 2013-12-18
  • 本文字数:1888 字

    阅读完需:约 6 分钟

Simon Phipps 是一位在开源领域经验丰富的领导者,早在上世纪八十年代就参与 ISO 标准的制定,目前他是独立的开源顾问。Simon指出,近来人们进行大量尝试去定义开源模型——甚至是新许可——这些行为限制了除了项目“发起者”外的所有人的自由,相反这些项目发起者因拥有软件的全部权限而获利。支持者们认为他们可以在不提供给所有人同样的软件权限的同时产生一个含有采用、贡献的网络效应。

Simon 认为这些新许可是自欺欺人,他分析了开源的声明周期:

我参加各种开源项目的时间已经长于十年了。我还记得整个学习周期:很惊喜最终用户可以免费使用开源软件,发现针对于各个开源项目并涵盖开发者、测试者、撰写者、部署者的讨论社区,很震惊有时候会在某些项目中与竞争对手合作等。每个人都会经历这个发现过程,这个过程对应福勒的个人成长模型“信仰的阶段”。

初涉开源软件的新手们往往为可以免费使用好用的、完整的、良好维护的开源软件而惊喜。一些人认为这是因为他人无私的“将自己的工作成果免费提供给别人”。有些人甚至认为这是因为某些开发者天真善良。事实上,一个商业领袖总结了对抗开源软件对他的业务带来威胁的最有效方式——“寄生手段”:“当一个开源软件做的足够好之后,我们就把它拿来用。”

但开源软件可以免费给最终用户使用并非是因为开发者的慈善或者天真。Simon 指出,开发者需要解决所有版权可能带来的问题才可能保证程序员协作开发软件成功进行。面向最终用户零收费的许可是提供开发者间的自由的条款带来的副产品。

开源促进会 (Open Source Initiative) 依据开源定义制定的开源许可实现了合作的自由。一个组织完善的开源社区为所有参与者提供同等的权利,这样的开源社区产生网络效应。网络效应带来大的软件占有率,并激励用户和开发者。但这种网络效应依赖于每个人拥有以任何目的使用软件的自由——去研究、修改源代码、发布源代码、发布修正版代码,这些行为都不需要任何人的审批。

“假开源”最终会失败,Simon 认为,限制自由同时追求网络效应的行为是自欺欺人的。这种要求也是不现实的。某些人貌似达到了这种目的,但这是暂时的——社区成员很快意识到自己并没有享有同社区创始人一样的自由,于是网络效应会很快随之衰落。

现在,也有些所谓的“开源软件”,有开发者定期地修改它们的框架,但这些开源项目的发起人可以从中盈利,而其他社区成员没有这些权利。最近发布的一组提案——“开源最终保障”提案——规定只给过了收益期的软件颁发开源许可。但是,这种提案不会产生网络效应的贡献者。要调动贡献者的积极性,需要让贡献者知道他们和其它人享有同样的权利。

我认为现存的各种不同的、突变的开源理念源自人们在开源项目中未能掌握“自由软件”的作用—— 包括保障使用、研究、修改、发布源代码和二进制代码的权利。那些依然断言“限制自由的同时得到网络效应”的人滞留在了认识开源的初级阶段。想法的确诱人的,但没有相应的软件自由我们永远无法获得网络效应。

说到开源,Cypress North 的创始人谈到了开源项目的另一个问题:“为什么开发者担心将代码公布”,主要存在四个原因

  1. 我的代码还不够好——这是最常见的反应,也许是出于谦虚的态度。几乎每个公布代码的开发者在一开始都会有这样的感受。对于开发者来说,软件是一种在表达能力上非常个性化的表现形式。解决问题的方案是多种多样的,但是你所选择的解决方式可以代表你的个性和技术水平。
  2. 不希望别人非议自己的软件程序——的确,这是另一个很自然的回答。现在互联网就像是一个大熔炉,什么样的开发者都有,有的喜欢藏起来使用匿名,有的程序员喜欢背地里搞点小手段。作为一个程序员,必须要有能够接受批评的心胸。同时,还要能够甩掉心理包袱,把批评当作是一种动力。换句话说,建设性的批评能够帮助开发者快速成长,节省时间去经历更多的经验教训。
  3. 事关安全问题——安全的确是不可忽视的大事,任何需要公布的东西都要考虑到是否会暴露敏感信息或是访问协议等等。如果你认为我们谈论的东西和安全或敏感数据加密有关的话,这里建议你在开发过程中尽可能早些时间公开代码。通过这种方式,将你设计的安全保密方法公布出来,如果你的方法经不起推敲的话,肯定会有一些专业知识丰富的专家帮助你解决问题:尽早的查出程序策略里的漏洞,或者是你根本没注意到的错误。
  4. 拥护自己的技术思想——也许大多数人对现在这个网络世界不是很信任,因此公众对于这方面的担忧达到了一个荒谬的高度。就像有些人大声跟你说:我有一个很好的想法你想知道吗?不过没有保密协议我是不会轻易告诉你的。事实上,没人会偷你的想法,你所做的事情可能已经存在了,或者别人已经开始做了(甚至是开源的)。
2013-12-18 04:152743
用户头像

发布了 501 篇内容, 共 275.8 次阅读, 收获喜欢 63 次。

关注

评论

发布
暂无评论
发现更多内容

飞桨助力南京邮电大学智能芯片测试团队斩获“互联网+”大赛全国银奖

飞桨PaddlePaddle

paddle 芯片 大学生 飞桨 国赛

构建云边端一体的分布式云架构,软硬结合驱动边缘计算创新场景

Baidu AICLOUD

边缘计算 分布式云

Seal 0.4 发布:软件供应链安全洞察更上一层楼!

SEAL安全

软件供应链安全 SEAL 企业号 2 月 PK 榜

软件测试/测试开发 | web自动化测试-文件上传与弹框处理

测试人

软件测试 自动化测试 测试开发 Web自动化测试 selenium

聊一聊 gRPC 中的拦截器

江南一点雨

gRPC

CNCF社区首个!KubeEdge达到软件供应链SLSA L3等级

华为云开发者联盟

云原生 华为云 企业号 2 月 PK 榜 华为云开发者联盟

使用 NGINX 在 Kubernetes 中实现多租户和命名空间隔离

NGINX开源社区

nginx NGINX Ingress Controller NGINX Kubernetes Gateway 企业号 2 月 PK 榜

海量并发低延时 RTC-CDN 系统架构设计(上)

网易云信

实时音视频 音视频开发

海泰方圆受邀参加中关村网信联盟会议并斩获三项殊荣

电子信息发烧客

设计模式第六讲:责任链模式和迭代器模式详解

C++后台开发

设计模式 责任链模式 迭代器模式 后端开发 Linux服务器开发

软件测试 | 常用模拟器使用

测吧(北京)科技有限公司

测试

0源码基础学习Spring源码系列(二)——Spring如何解决循环依赖

京东科技开发者

spring 源码 初始化 二级缓存 企业号 2 月 PK 榜

政企服务机构如何进行数字化转型?

优秀

数字化转型

如何在现实场景中随心放置AR虚拟对象?

HarmonyOS SDK

HMS Core

rust入坑指南之ownership

京东科技开发者

rust JVM 内存 企业号 2 月 PK 榜 ownership

GaiaX开源解读 | 表达式作为逻辑动态化的基础,我们是如何设计的

阿里巴巴文娱技术

开源 研发效能 服务端 多端开发

为什么大多数团队推行自动化测试最后却不了了之?

Liam

测试 自动化测试 测试自动化

Greenfield

股市老人

Apache Doris 1.2.2 Release 版本正式发布

SelectDB

大数据 数据分析 OLAP 分析型数据库 数据库·

软件测试/测试开发 | web自动化测试-PageObject 设计模式

测试人

软件测试 自动化测试 测试开发 Web自动化测试

Bytebase 体验官之勇闯新手村

朱亚光

IoT设备数据业务价值洞察实践——实践类

阿里云AIoT

阿里云 物联网 IoT

一文读懂Guava EventBus(订阅\发布事件)

京东科技开发者

架构 观察者模式 Guava EventBus 企业号 2 月 PK 榜

性能测试中获取JVM资源信息

FunTester

DR-AP40X9-A-Qualcomm-IPQ4019/IPQ4029-2.4G&5G

Cindy-wallys

IPQ4019 ipq4029

2022年最新数据库调查报告:超八成DBA月薪过万,你拖后腿了吗?

墨天轮

MySQL 数据库 oracle 工资 dba

李宏伟 安警官的IP地址已经锁定你!IP地址究竟如何定位到莽村附近?

郑州埃文科技

IP地址 IP定位查询

进击中的 Zebec 生态,Web2 与 Web3 世界的连接器

股市老人

Wallys /industrial wifi6 router/ Ipq6010 /ipq6018/ipq6000 2x2 2.4G & 5G

Cindy-wallys

IPQ6010 ipq6018 IPQ6000

不要被“假开源”所迷惑_社区_崔康_InfoQ精选文章