写点什么

不要被“假开源”所迷惑

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

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

关注

评论

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

抽象语法树AST必知必会 | 京东物流技术团队

京东科技开发者

前端 AST 抽象语法树 企业号 7 月 PK 榜

零基础能学习Java吗,看了这篇文章你就知道!

java易二三

绘出「星辰大海」:华为云Astro轻应用新手指南-第二章

云计算 开发者 软件开发 华为云

矩阵起源通过ISO 三大体系认证!

MatrixOrigin

数据库 超融合 HTAP MatrixOrigin MatrixOne

倒计时 1 天!21 位大咖 11个议题,龙蜥社区走进 Intel MeetUp 即将在上海召开

OpenAnolis小助手

操作系统 芯片 intel Meetup 龙蜥社区

一文了解电商大促系统的高可用保障思路 | 京东云技术团队

京东科技开发者

产品 高可用 研发 电商大促 企业号 7 月 PK 榜

LigaAI:从效率、度量和价值维度,成为研发团队的智能医生

LigaAI

研发管理 SaaS 研发协作平台 TO B 企业号 7 月 PK 榜

全球LED显示屏市场机遇与挑战

Dylan

封装 芯片 LED显示屏 体育 全球

Spring高手之路5——彻底掌握Bean的生命周期

砖业洋__

Spring Bean Spring Bean生命周期 @PostConstruct InitializingBean DisposableBean

O-Star | 矩阵起源2023届校招生入职啦~

MatrixOrigin

数据库 云原生 HTAP MatrixOrigin MatrixOne

日增320TB数据,从ClickHouse迁移至ByConity后,查询性能十分稳定!

字节跳动开源

大数据 开源 云原生 Clickhouse 数仓

关于互联网产业的一些思考

用友BIP

产业互联网

Spring高手之路9——掌握Spring条件装配的秘密武器

砖业洋__

spring Spring配置 @Profile @Conditional 条件装配

# **基于TiDB Binlog架构的主备集群切换操作手册**

TiDB 社区干货传送门

实践案例 管理与运维

绘出「星辰大海」:华为云Astro轻应用新手指南-第一章

云计算 华为 开发者 华为云

pump 日志错误信息疑问之你的pump 数据被gc了嘛?

TiDB 社区干货传送门

性能调优 实践案例 集群管理 TiDB 源码解读

Spring高手之路7——事件机制与监听器的全面探索

砖业洋__

spring 观察者模式 事件机制 Spring生命周期 Spring 监听

Spring高手之路8——Spring Bean模块装配的艺术:@Import详解

砖业洋__

@Import 模块装配 Import注解 ImportSelector Spring动态装配

中移链与BSN分布式云管平台集成,共同构建专属协同体系

BSN研习社

企业数智化底座赋能国资国企数智监管

用友BIP

数智底座 国资国企

Spring高手之路6——Bean生命周期的扩展点:BeanPostProcessor

砖业洋__

spring ioc BeanPostProcessor Bean生命周期扩展点 后置处理器

记一次sst文件损坏修复过程

TiDB 社区干货传送门

故障排查/诊断

7.25齐聚西安!助推国资国企建设一流司库管理体系

用友BIP

全球司库 国资国企

Spring高手之路4——深度解析Spring内置作用域及其在实践中的应用

砖业洋__

spring Singleton prototype Spring作用域 Spring原型作用域

免费又好用的MES系统——万界星空MES系统重磅来袭

万界星空科技

开源

装备制造行业数智人力应从何入手?超实用干货来了!

用友BIP

人力资源

用 Generative AI 构建企业专属的用户助手机器人

TiDB 社区干货传送门

Ui2Code+ChatGPT助力低代码搭建 | 京东云技术团队

京东科技开发者

低代码 ChatGPT 企业号 7 月 PK 榜 Ui2Code

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