《精通门罗币》:全球第三大加密货币开发社区是如何炼成的?

原著 | Serhack 翻译 | 筋斗云_头等仓 6.1 社区文化6.1.1 开放虽然门罗币本身是隐私币的典范,但其社区是建立在透明与协作这一核心价值观之上的。用户、开发者和研究者所在的中继聊天频道(IRC)也是完全开放给公众的。你也可以通过Slack、Mattermost和Taiga等平台与门罗的用户和开发者交流互动。所有重要的会议记录都可以在官方网站上找到。
头等仓APP下载

原著 | Serhack
翻译 | 筋斗云_头等仓

6.1 社区文化

6.1.1 开放

虽然门罗币本身是隐私币的典范,但其社区是建立在透明与协作这一核心价值观之上的。用户、开发者和研究者所在的中继聊天频道(IRC)也是完全开放给公众的。你也可以通过Slack、Mattermost和Taiga等平台与门罗的用户和开发者交流互动。所有重要的会议记录都可以在官方网站上找到。

门罗开放协作的文化需要从门罗的渊源讲起。门罗源自ByteCoin的代码分叉,而Bytecoin的开发者一直保持着神秘的身份,制定决策也全然无视社区的反馈。这不仅导致了开发出错,更过分的是其引火自焚的预挖设置。

门罗社区在对幽暗隐蔽的ByteCoin进行代码分叉的那一刻诞生,在去中心化、协作性和多元化的光辉下成长。这无疑在方方面面促进了门罗的成长,门罗社区也从中领悟到协作共荣的理念。如果说加密学是门罗的技术支撑,社区则是门罗发展的力量来源。

《精通门罗币》:全球第三大加密货币开发社区是如何炼成的?

6.1.2 江山代有才人出

门罗项目是由全球数百人齐心协力,倾心奉献的结晶。在写稿的此刻,累计有超过500位人士对门罗的代码做出过贡献,其中仅去年就有200位。门罗采用非政府性治理(un-governance)的机制来协调开发等工作。项目由几大分支组成:门罗核心团队(Monero Core Team),门罗研究实验室(Monero Research Lab),门罗工作组(Monero Workgroups)和社区。

门罗核心团队负责以下关键事项:
· 作为论坛众筹系统(Forum Funding System,FFS)的社区代理人和首要仲裁人
· 管理门罗项目的代码库:合并代码,保存备份,保障安全和开放性
· 作为门罗收到的捐款资金的管理人,确保这些资金用于门罗的发展
· 作为门罗软件和相关技术的受信任的签发者
· 与社区协作,建立愿景,规划发展蓝图

门罗研究实验室从基础理论和应用两个层面,研究和分析最前沿的加密货币技术。实验室中有数位学者和研究人员,所有的研究也在https://lab.getmonero.org/这一公众平台上发布。

门罗工作组是专门为一个个任务的协作而运行的,成员围绕数个任务组成数个小组。例如,门罗硬件工作组正在全力打造第一社区驱动的、开源的硬件钱包。另一个例子是门罗集成工作组,他们开发开源支付网关。你还可以加入门罗翻译组,门罗见面会组织小组等。

门罗的发展离不开它的社区,我们诚挚欢迎各位加入社区,为门罗贡献代码,提案,众筹,宣传和撰文。

6.2 编程文化

6.2.1 创建拉取请求来改进门罗

我们欢迎所有有意为门罗代码库做贡献的人。如果你想要修复或修改代码,请创建一个拉取请求(pull request)并提交至“master”分支。你可以参照下列步骤,通过引用代码副本,并在编辑后提交,来修缮门罗代码:
1. 引用(fork)GitHub上的程序库(repository)
2. 复制程序库至本地
3. 创建分支,进行修改
4. 对改动进行清晰的描述
5. 执行git push origin brach-name,将本地的改动同步至引用的程序库
6. 创建拉取请求(包含清晰的描述和档案),并提交至原始程序库

如果你的改动比较轻微,或者没有影响到代码库的其它部分,那么你的改动通常会在短时间内被通过。如果你的改动很大很复杂,那么则需要经过社区充分的讨论。

6.2.2 打补丁的礼节

希望大家按照以上步骤,以拉取请求的方式提交补丁。如若不行,请以git format-patch的格式发送补丁(例如,粘贴至fpaste.org,并分享链接给#monero-dev on irc.freenode.

net)。

补丁应该是独立自足的。一个优秀的经验法则是为每一个问题、功能或逻辑改变创建一个补丁。当你要对某部分代码进行修缮时,请遵循它原本的代码风格,并且不要进行不必要的编辑,比如空格(whitespace)或行首缩进(reindentation)。请进行适当的压缩精简(squash)(例如,如果你补丁中要修复的问题也包含在下一个补丁中,请合并两个补丁)。

6.2.3 通用教程

提交的消息(commit message)应该是清晰且合乎逻辑的。标题中必须对补丁进行描述,另外可利用更多文字来提供细节,纪录等。富有意见性的代码能够积极地引导他人理解你所要表达的信息,并与之互动。如果你的改动中有新增功能,那么你可以在拉取请求中附上测试结果,这对他人非常有帮助。

如果你做了一些随机的不相关的改动(比如过于热心的编辑),你可以通过使用git add -p来选择要包含的改动,单步调试每一条编辑。这将有助于你创建一个干净简约的补丁。Git diff表示你在树(tree)中的改动,git diff --cached表示目前正要被提交的改动。添加了git add -p的hunks,将从git diff输出中迁移至git diff --cached输出,这样一来你就可以明了地看到你的代码提交会是什么样的。

你可以前往门罗币的官方程序库获得更详细的通用教程。

6.2.4 门罗的程序库

门罗项目GitHub中有多个程序库。它们之中的几个包含了本书提及的重要工具:
· 门罗:采用C++语言编写的门罗网络的内核(core),包含CLI钱包
· 门罗网站:https://getmonero.org的源代码
· 门罗GUI:门罗的图形化用户界面,由Qt library开发而来
· Kastelo:社区硬件钱包
· Kovri:Kovri匿名路由

这些项目都被很好地记录下来,所以你可以熟悉它们的代码并进行改进。此外,门罗还有很多子项目,你可以参与其中。欢迎随意浏览一个程序库,看看仍待处理的问题中,有没有是你可以参与贡献的。

$ This text is a terminal command. Don't run this command if you don't know what you are touching.

注意:在写稿的此刻,门罗生态的部分程序库正从GitHub迁移至GitLab。

6.3 门罗开发简介

因为开发门罗代码是一个复杂的过程,我们在这里提供一些建议和总结。因为Linux系统拥有内置的壳(注:shell,用来区别于核,是指“为使用者提供操作界面”的软件),来帮助开发门罗内核,所以请优先考虑使用基于Unix的操作系统。门罗是通过C++编写的(C++11风格referenciation)。

6.3.1 下载门罗源代码

门罗使用Git作为版本管理的工具;Git允许开发者追踪代码中的改动和修缮,使得共享文档的协作变得简单容易。执行下面的命令,以下载门罗源代码:

$ git clone --recursive https://github.com/monero-project/monero

6.3.2 Dependencies

从源码构建门罗,系统路径需要包括以下依赖组件(如表格所示)。部分依赖库已经包含在本代码库(标记为外部编译[vendored])。默认情况下,项目构建将优先使用系统自带的库,除非在系统路径中没有找到对应的库,才会使用外部编译的库。

《精通门罗币》:全球第三大加密货币开发社区是如何炼成的?

6.3.4 开发指南

门罗使用CMake构建系统和一个顶级的生成文件(Makefile)来调用需要的cmake命令。一旦你安装了依赖部件(dependences),改变源代码目录的根(root)并执行make命令以开始构建。这个过程将耗费1~2小时,当代码完成构建后,你可以在构建文件夹中找到门罗的二进制文件。

6.3.5 Build故障排除

如果你碰到出错,输出会指明到底是哪里出错了。以下是一些常见的bug:
· 过期的boost版本(你可能需要手动安装一个现在的版本)
· 过期的gcc/g++
· 丢失的libzmq3-dev
· 丢失的libreadline-dev
· OpenGL出错

你可以(可选)输入make debug来编译一个除错构建(debugging build)。有众多社区可以帮助你排除故障。通过搜索引擎查询构建错误,你可以获得解决方案或他人的帮助。

6.3.6 构建门罗图形化用户界面(GUI)

门罗图形化用户界面是通过C++和Qt library构建的,两者缺一不可。有了依赖,你可以通过以下命令克隆和构建GUI:

$ git clone --recursive https://github.com/monero-project/monero-gui $ cd monero-gui $ ./build.sh

感谢Alex_L对于该章节计算机术语的翻译指点
未完待续(历史连载在app内可免费阅读)
希望你喜欢这段门罗之旅。

本文由 区块链资讯平台头等仓 作者:筋斗云 发表,其版权均为 区块链资讯平台头等仓 所有,文章内容系作者个人观点,不代表 区块链资讯平台头等仓 对观点赞同或支持。如需转载,请注明文章来源。
头等仓APP下载

发表评论