概述
首先是问题。什么是Apache APISIX的 "开源"? 这个想法始于我上周五为大学生举办的一个实验性研讨会。 那是一个很好的星期五,我非常兴奋地和他们谈论如何为apache项目(在这里是指APISIX)做出贡献,直到他们问了这个发人深省的问题。 哦,是的。这是个好问题。但我这样做是出于一种本能的驱动力,想给这个世界带来一些不同的东西,仅此而已,谁知道这一行动背后的真正原因呢? 我承认我没有想得太深,"就这么做 "是我的原则。 那是一个令人困惑的星期五 :(
我想了一个星期,然后我想出了这篇文章 :)
关于这份文件 我将从 "我的思考"、"好书推荐"、"如何贡献 "三个方面与大家交流。 欢迎大家把自己的想法加入到这个文件中 :-)
首先,请允许我对《大教堂和集市》以及ASL北京组织的文章表示感谢,这对我来说是非常有启发的!!。
目标
让那些不了解开源的学生能够有一个基本的了解。 让APISIX社区有更多的贡献者。(这是一件有意义的事情!)。 从你的编码旅程中抽出一点时间来谈论一些有趣的事情 :P
我的思考
正如 "一千个人有一千个哈姆雷特 "这句经典名言,即使你问AFS成员什么是 "Apache之道",他们也会给出一千个奇怪的答案。 但同时,官方也从很多资深开源开发者的角度总结出一些东西出来(至少我是这样理解Apache的官方含义的)。
是什么让Apache方式如此难以定义?
那么,是什么阻止了我们为Apache的行为方式定义精确的准则呢?(重复标题以示强调) 从Apache的表面可以看出,Apache的行为准则是其内部各个社区开发过程的一个缩影。要理解Apache的行为准则,就必须从理解Apache内部大大小小的社区开始。 阿帕奇项目和它的社区是独特而多样的。主要集中在项目的生命周期和一系列的行动上。这些行动包括从培养社区(无论是培训技术人员还是布道者),到发掘更好的代码,再到建立项目的意识。总之,Apache更注重项目,只要项目有很好的发展,就让他去做吧(前提是不影响公共秩序和道德)。 那么我就从Apache的特点和理念方面对Apache有一个简单而系统的了解。
阿帕奇开放源代码的特点
人人平等
每个人都有机会参与到项目中来,而你获得的权限大小取决于你对项目的贡献,这就是人人平等的概念。
基于社区
参与ASF项目的应该是个人,而不是一个组织参与。这实际上进一步促进了公平和开放的态度。
开放的沟通
所有的交流和决定都是在开放网络上,以邮件列表的形式,进行公开交流。 这其实有一种约束的味道在里面,但其实辩证地看,你也有更多的机会。如果你想为社区做贡献,假设你做了一个错误的决定,那么其他友好的开发者可以在这边跟你打仗,但是如果你是对的呢,你可以在这边跟别人进行激烈的讨论呢,这是一个很美好的事情哟。当然如果你做了坏事,啧啧,好事不出门,坏事传千里可能hhh。 邮件列表中大致有以下几个组
- dev@ (主要开发者)
- user@ (用户的讨论区)
- commits@(源代码的变化会在这里通知)。
- 偶尔的支持角色,如marketing@!
强烈声明所有的对话都必须是公开的!
共识决定
全部由志愿者团队监督决定,这边引用一下。也就是接下来要讲的 "72小时懒人共识制度"。 举个例子。 如果我们有一个开源项目要放到Apache去孵化,那么就要经过Apache导师的投票环节。 Apache是实行一票否决制的。而这里的导师投票都是志愿者,被足够多的Apache志愿者信任。
理念
许多人都知道 "社区重于代码 "的格言,它在Apache APISIX社区中得到了最好的体现。因为根据ASF的理念,一个健康的社区比好的代码更重要。一个强大的社区可以随时纠正其代码中的问题,而一个不健康的社区可能会努力以可持续的方式维护代码库,然后还不一定能得到一个好的结局。 然后这句话,我也可以这样理解,举个常见的例子,哈哈。如果一串代码已经达到了完美的地步,那么这个社区就不会真正发挥作用(这里我想起了Fabrice Bellard,伟大的发烧级程序员,或许更准确地说,是计算机科学家)。但是Fabrice的项目一般都是超基本的项目,这些项目基本上都是在不需要下一次迭代开发的情况下写出来的。不过,Fabrice的代码也确实完全不需要社区。 但是像Fabrice Bellard这样的程序员有多少呢?恐怕没有多少吧! 好了,我想我现在能理解的就这么多了,让我们开始看看关于开源书籍的一些有趣的知识。
我的好书推荐
我非常欢迎你的推荐!!。 如果你有想推荐的书或资料,请随时添加你自己的内容。
大教堂与集市》(The Cathedral and the Bazaar)
提高专注度
同行评议 事实上,市场模式的核心价值在于跨越组织边界的独立同行评审,以验证设计并确保正确性。原文将此称为 "莱纳斯定律",它指出
如何贡献
我总结了一下,有三种方式可以算作贡献。 提交问题。 代码审查。 提交PR。 你可以点击以下链接,了解更多关于如何贡献的信息。 https://apisix.apache.org/zh/docs/general/contributor-guide/ (重要!!!) https://github.com/apache/apisix/contribute 添加您的链接