AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

不要被“假开源”所迷惑

  • 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:152558
用户头像

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

关注

评论

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

必须得会的汽车ECU研发基础--ECU是什么1

SOA开发者

使用AI在原神里自动钓鱼,扫描Git仓库泄露的密码 【蛮三刀酱的Github周刊第三期】

Zhendong

GitHub

运用贝塞尔曲线绘制笔锋效果

ZEGO即构

音视频 笔锋实践 贝塞尔曲线

自动驾驶混战,剑气二宗谁能笑傲江湖?

脑极体

盘盘 DevOps“衍生品”: DevSecOps、NoOps、AIOps

飞算JavaAI开发助手

🚄【Redis基础指南】推荐给大家的「主从模式」+「缓存穿透」的学习小贴士(提炼优化)

码界西柚

redis Redis缓存穿透 10月月更

流计算 Oceanus 限量1元秒杀,立省2000元

腾讯云大数据

携程 x StarRocks:高效支持高并发查询,大幅降低人力和硬件成本

StarRocks

大数据 数据分析 高并发 StarRocks

华为宣布启动“开源雨林”计划,与社区伙伴共迎开源挑战

解读世界互联网大会新品——智能运维2.0,管运提效再升级

云计算

分享一套golang实现的 IM 系统,一键部署服务端,客户端SDK全平台支持,可以替代IM云服务

OpenIM

报名|飞桨中国行- AI赋能软硬件产品创新

百度大脑

人工智能 百度 飞桨

必须得会的汽车ECU研发基础—底层软件介绍4

SOA开发者

中国移动5G消息开发者社区 | 主题沙龙直播预约:5G消息在文旅场景的应用探讨

5G消息

5G 5G消息 中国移动5G rcs

云原生数据库TDSQL-C和传统主备方式数据库有什么区别?

腾讯云数据库

数据库 tdsql

一文读懂 OceanBase 数据库的SLog日志

OceanBase 数据库

oceanbase OceanBase 开源 OceanBase 社区版 OceanBase 数据库大赛

软件架构思考

轻口味

android 架构设计原则 10月月更

MyCAT、DRDS、TIDB、TDSQL、TBase 在实现分布式事务时的区别及其各自的优势?

腾讯云数据库

数据库 tdsql

记不住源码?掌握这套方法,Alibaba必有你一席之地!

Java 架构 面试 程序人生 编程语言

机器人自主学习新进展,百度飞桨发布四足机器人控制强化学习新算法

百度大脑

人工智能 飞桨

数字化加速时刻,天津港解锁了“天工开物”新篇

脑极体

Hold the Door!区块链底层平台流控分析

趣链科技

区块链 流量控制 底层平台

Redis和tdsql数据异地同步(迁移)案例

腾讯云数据库

数据库 tdsql

TDSQL交易型分布式数据库背景分析

腾讯云数据库

数据库 tdsql

从用户关系看产品发展

石云升

产品经理 产品思维 产品分析 10月月更

出自阿里P8之手的这份微服务架构实践手册,为何能霸榜GitHub一周

进击的王小二

Java 架构 分布式 微服务

这本笔记!仅需16个小时,让你像阿里P7一样掌握Spring源码解析

Java 架构 面试 程序人生 编程语言

Python代码阅读(第34篇):列表元素出现频率字典

Felix

Python 编程 Code Programing 阅读代码

认识流媒体协议,从 RTSP 协议解析开始!

声网

协议 RTSP

号角声响!联想图像发起“百家百试”项目第二期,诠释“真国货之光”

手把手教你使用Studio Lite + Digtal car!助力智能汽车场景、轻应用开发更轻松!

SOA开发者

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