|
本帖最后由 PYL 于 3-28-2025 16:25 编辑
开源
在很多人眼中,「开源」是一个时髦且有情怀的词汇,始终伴随有理想主义色彩。 我们总是看到各类公司以「开源」作为宣传手段。噱头?这篇文章,我们将一同了解何为开源,何为社区。
Open source is source code that is madefreely available for possible modification and redistribution. Products includepermission to use and view the source code, design documents, or content of theproduct.
---- Wikipedia
从翻译的角度来说,“开源”就是 Open 和 Source 两个单词的直译。 实际上,开源 不等于 开放源代码,仅让你看到源代码 也不等于 开源。
开源,不止于放出源代码
开源许可证(Open Source License):你能干什么,你不能干什么。
让我们先来看几个简单的许可证示例。
- MIT License: 保留版权和许可声明,修改后的版本可以以其他协议分发,允许商业使用。
- GPLv3 License: 保留版权和许可声明,在同一许可下提供许可作品和修改的完整源代码,允许商业使用。
- CC-BY-NC: 保留版权和许可声明,在同一许可下提供许可作品和修改的完整源代码,不允许商业使用。
开源软件通过某一的开源许可证(Open Source License),限制软件的使用、复制、修改和再发布等方面。换而言之,开源从不意味着完全放弃著作权,而是规范了开源项目的传递使用。
Fork, Pull Request, Merge
为什么开源许可证如此重要?因为这是为一开源项目做贡献(即修改开源项目的一部分)的法律基石。
- Fork: 在开源项目的规范下,创建某一开源项目的副本并做出修改。
- Pull Request: 拉取请求。向原开源项目作者提出我的修改内容,请求原作者审核。
- Merge: 合并。恭喜你,你的代码永久进入了一开源项目。
积水成渊,蛟龙兴焉。在大量参与者的合作下,一人的一次微小贡献成就了庞大的开源项目。
为什么需要开源
It is important to build a sustainableproject to consider your reasons for publishing as open source and use these asguidance for decision-making.
---- Google, Why Open Source
分享你的成果
或许你没有宏伟的战略,但就是为了解决某个特定的问题,开发了一套工具。
若是封闭性的发布,你需要持续维护来保证工具的可用性,分享有效的内容。 但更好的选择是:将其抛到一边,让所有人自由使用和修改它。
由此,以开源的形式分享这套工具,能尽量减少需要重新发明“轮子”的次数。
凝聚集体的力量
82 位大大小小的贡献者共同用十万行代码拿下中国大陆地区 1/3 Minecraft: Java Edition 启动器市场份额
项目太大,忙于和生活对线无暇维护?让它成为开源项目,让全球开发者共同助你一臂之力。
一人开发,无法照顾到所有可能的使用情况做针对适配?让它成为开源想,总有开发者想出解决方案。
开源社区
An open source community is defined as aself-governing and self-organizing group of individuals who collaborate todevelop software without a traditional corporate hierarchy.
Members contribute voluntarily based ontheir interests and needs, rather than being assigned tasks by executives.
---- Science Direct, Computer Science, OpenSource Community
开源社区,也称社区,是由(可能)素不相识的开发者自发建立的组织。其中并不存在传统意义上的管理者。
社区基于开源
社区成员根据自己的兴趣和需求自愿做出贡献。由此,开源许可证必须允许分叉、修改、再分发。 否则社区成员将不可能自由做出贡献,社区也不复存在。
贡献
- Bug Feedback: 漏洞反馈,是对已有功能的补全。
- Feature Request: 功能请求,是添加更多的功能。
通常来说,漏洞的修复顺序按照影响范围从大到小依次排序。 而功能的具体实现则完全基于参与者是否认定这一功能有足够的重要性。
因此,不要因为你的功能没有被采纳而攻击(甚至辱骂)对应维护者。不如亲自为这一项目做出贡献。未来想要此功能的人也能直接使用你取得的成果。
反例:https://github.com/HMCL-dev/HMCL/issues/3641
问,答
无论是在使用某一开源项目中遇到问题,还是在开发某一功能时遇到困难, 你总能在 https://stackoverflow.com/社区寻得解决方案。
提问者获取了解决方案,回答者为了编写回答查阅文献,有了更深入的了解。 这是提问者和回答者共同成长的过程。
以下提供一个真实的例子:
TeaCon 是一个集开发-展览于一体的线上 Minecraft 模组开发展会。
TeaCon · 甲辰开展后,为优化网络带宽请求,社区共同开发了 NotEnoughBandwidth 来降低服务器上行带宽到原先的 20%。同时,全社区积极宣传 NotEnoughBandwidth,将其迁移到其他 Minecraft 版本,以供各玩家和服务器管理人员使用。
赛博许愿井
在写这篇文章的时候,我想许个愿 ——
- 登录账户时,自动识别用户名登录 / 邮箱登录,避免用户手动选择认证方式。
- 支持 Markdown 发帖
……未完待续……
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|