《开源思索集》一Source Code + X

简介:

本节书摘来异步社区《开源思索集》一书中的第1章,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

Source Code + X

开源思索集
最近,有一位来自学术界朋友,找到了我们这个开源的圈子,因为他正在做一个课题《开源项目知识共享影响机理》,打算做一轮访谈。他所提出的大多数问题,都是围绕开源与知识共享展开的。我在经过相当长的一段时间思考之后,却打算撇开那些问题,谈谈我的一些思考。

最早的Source Code,其实是非常学术性的,那些科学家们,研究、发明并制造出了计算机,然后再编写计算机能够运行的代码。对于科学家来说:代码与论文非常类似,都是学术成果,饱含知识。他们应该,也必须被分享给学术界的其他专家。

所以,在非常早期的阶段:Source Code + 论文 = 知识分享

到了1976年2月3日,比尔盖茨发了一封著名的《写给电脑爱好者的公开信》,高唱版权与利益。而且愤怒地将那些免费复制软件的家伙,称之为:窃贼!盖茨的观点,可以说完全正当,甚至他的逻辑也完全成立。如果无法保护商业软件的版权,那么整个软件行业都不会出现,他们会永远停留在校园里,停留在学术阶段。

所以,在看到的软件利益之后:Source Code + 版权 = 利益

有一群黑客,他们崇尚自由,并且痛恨一切对于自由的限制,哪怕是合理的,合法的限制。伟大的Richard Stallman站了出来,在1985年发表了GNU宣言,并于1989年起草了GPL,提出了Copyleft的概念。

所以,在追求自由的黑客看来:Source Code + GPL = 自由

而在另一方面,“贪得无厌”的资本家们觉得版权法对于他们利益的保护依然不够,他们需要借助专利的力量,不仅保证对手无法盗版他们的软件,而且连仿制都将违法。从美国的软件专利的历史来看,1992年以后,美国的软件专利保护,一直在呈不断扩大的趋势。

所以,对于资本家来说:Source Code + 专利 = 受到更多保护的利益

当然,这个世界上,中庸的人与团体,还是大多数。围绕着源代码,大家也在探索,是不是能够建立某种利益的共同体,而且这个共同体,并不会追求极端的自由,并不是仅仅为了共享知识,交流学术,他们拿起了法律的武器,创作了很多种不同的License,用于规定参与各方的权利与义务,不但能够与版权相容,甚至与 专利都不产生矛盾。(最早的Open Source这个名词,诞生于1998年)

所以,成千上万的人们,从五湖四海走来,团结在某一个License之下:

Source Code + License = Open Source

就像我不会批评比尔盖茨一样,没有对于版权的强调,就不会有健康的软件行业。我也不会批评开源运动,没有足够好的利益协调机制,仅仅靠理想与坚持,根本不会有现在这么多开源软件。

总体而言,我的态度是:自由软件值得尊重;软件版权应该遵守;开源运动值得参与;专利说到底是个很糟糕的东西;而知识, 蕴含在任何能够被读到的源代码里。

相关文章
|
存储 Kubernetes 开发工具
Kubernetes (K8s) 的几种卷类型
Kubernetes (K8s) 提供了以下几种卷类型: 1. 空白卷(emptyDir):这是一个临时的卷,它在 Pod 生命周期内存在,但在 Pod 关闭或重新启动后会被清空。 2. 主机路径卷(hostPath):将节点上的目录或文件挂载到 Pod 中,可以使用节点上的文件系统或文件。 3. 持久卷(Persistent Volume,PV):PV 是独立于 Pod 的一种资源,它可以由管理员手动创建并供 Pod 使用。PV 存储在集群中,并可以被多个 Pod 共享。 4. 持久卷声明(Persistent Volume Claim,PVC):PVC 是对 PV 的请求,它描述了所需的存
1061 0
|
文字识别 API
印刷文字识别操作报错合集之如何解决报错:The image type does not match the API operation.
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
关系型数据库 数据库 数据库管理
关系型数据库数据一致性和完整性
【5月更文挑战第8天】关系型数据库数据一致性和完整性
859 4
|
存储 传感器 大数据
大数据定义详解
【4月更文挑战第9天】大数据,超常规工具处理的海量(TB-PB-EB)多样化数据,包含结构化与非结构化信息,生成速度快且真实性高。关键在于专业化处理以实现数据增值,依赖于计算机科学、统计学的理论与云计算的支撑。大数据分析提供决策支持,驱动业务创新和社会治理改善,与云计算紧密关联,共同塑造新兴领域。
1020 4
|
存储 数据库连接 数据处理
数据加载与保存:Pandas中的数据输入输出操作
【4月更文挑战第16天】Pandas是Python数据分析的强大工具,支持多种数据加载和保存方法。本文介绍了如何使用Pandas读写CSV和Excel文件,以及与数据库交互。`read_csv`和`to_csv`用于CSV操作,`read_excel`和`to_excel`处理Excel文件,而`read_sql`和`to_sql`则用于数据库的读写。了解这些基本操作能提升数据处理的效率和灵活性。
|
前端开发 JavaScript
【掰开揉碎】react中的super(props)
【掰开揉碎】react中的super(props)
297 0
|
数据采集 存储 监控
【建议收藏】|某大型金融集团内部数据治理实战总结
近几年,企业都在做数字化转型。 数字化转型是为了使组织更好地适应数字时代的变革,提高效率、降低成本、增强竞争力。是将业务和流程数字化,以实现更快、更准确、更可靠的数据处理和决策。是以数据驱动的精细化运营、业务创新增长和商业模式创新。
1485 0
【建议收藏】|某大型金融集团内部数据治理实战总结
|
机器学习/深度学习 传感器 数据采集
【CNN回归预测】基于卷积神经网络的数据回归预测附matlab完整代码
【CNN回归预测】基于卷积神经网络的数据回归预测附matlab完整代码
【CNN回归预测】基于卷积神经网络的数据回归预测附matlab完整代码
|
安全 Java 编译器
JDK11 介绍讲解,语法改进,API增强
JDK 11进一步完善了JDK 9引入的模块化系统。模块化系统允许开发人员将代码和依赖项组织成模块,以提高可维护性、安全性和性能。开发人员可以使用`module`关键字定义模块,并使用`requires`和`exports`语句来声明模块之间的依赖关系和对外暴露的API。模块化系统还提供了更细粒度的访问控制,可以限制对模块中的内部API的访问。
550 0