欢迎来到 OpenAtom openEuler!
OpenAtom openEuler (简称 openEuler) 是由开放原子开源基金会孵化及运营的开源项目。
openEuler 是面向数字基础设施的操作系统开源项目,支持服务器、 云计算、边缘计算、嵌入式等应用场景,支持多样性计算,致力于提供安全、稳定、易用的操作系统。通过为应用提供确定性保障能力,支持 OT 领域应用及 OT 与 ICT 的融合。
openEuler 开源社区通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系,孵化支持多种处理器架构、覆盖数字设施全场景,推动企业数字基础设施软硬件、应用生态繁荣发展。
1. 体验 openEuler
1.1 体验 openEuler 操作系统
openEuler 社区版本分为长期支持版本(LTS)和创新版本(生命周期管理规范)。您可以通过:https://www.openeuler.org/zh/download/get-os/ 获取并体验 openEuler 操作系统。
1.2 体验原创开源项目
您可以体验 openEuler 社区里的以下原创开源项目:
- StratoVirt:面向云数据中心的企业级虚拟化平台
- A-Tune:一款基于 AI 开发的智能优化引擎
- iSula:轻量级容器解决方案
- secGear:面向计算产业的机密计算安全应用开发套件
- pkgship:管理 OS 软件包依赖关系,提供依赖和被依赖关系完整图谱的查询工具
- BiSheng JDK: OpenJDK 定制版 Huawei JDK 的开源版本,是一个高性能、可用于生产环境的 OpenJDK 发行版
- Compass-CI : 可持续集成的开源软件平台, 构建一个开放、完整的测试系统
- More
2. 签署 CLA
在参与社区贡献前,您需要根据自身的参与身份(个人、员工、企业),提前签署 openEuler 社区贡献者许可协议(CLA)。
- 个人 CLA:以个人身份参与社区,请签署个人 CLA
- 企业 CLA: 以企业身份参与社区,请签署企业 CLA
- 员工 CLA: 以企业员工的身份参与社区,请签署员工 CLA
参考资料:
[2] 企业签署 CLA ,正式加入 openEuler 社区的流程
3. 找到您想参与的 SIG
在 openEuler 社区的组织架构中,SIG 组(Special Interest Group)是重要的组成部分。openEuler 社区按照不同的 SIG 来组织、管理社区工作,以便于社区更好地运转。SIG 组是开放的,任何人均可参与 SIG 的工作。关于 SIG 组的详细介绍请查看 一文了解 openEuler SIG 组角色划分与管理运作。
因此,参与社区事务正确的起始姿势是 —— 先找到您感兴趣的 SIG 或项目
- 随着社区的发展,openEuler 已有 100+ SIG 组,您可以查看 openEuler SIG 列表 找到感兴趣的 SIG。
- 如果定位不到您感兴趣的 SIG,可以向 community@openeuler.org 发求助邮件。建议在邮件列表内用“【开发过程疑问】”作为标题,在内容中写出您寻找的 SIG 或项目的特征,我们会为您提供帮助。
- 如果在已有的 SIG 组列表 里面没有找到您感兴趣的 SIG,而您对某个方向有浓厚的兴趣,希望在 openEuler 社区成立一个新的相关 SIG 进行维护和发展,那您可以参考 申请新 SIG 流程指南 来申请创建新的 SIG。
4. 参与社区贡献
在签署了CLA 协议、找到了你想参与的 SIG 之后,就可以开始你的社区贡献之旅啦。当然,为维护社区的友好开发和协作环境,在参与社区贡献之前,请先阅读并遵守 openEuler 社区的行为守则 以及 openEuler 社区开发行为规范 。
4.1 贡献原创开源项目
如果你想将自己原创的开源项目融入到 openEuler 社区,成为 openEuler 发行版本中的一份子,您首先需要遵循
项目代码必须开源开放,遵循相关的开源协议。
通过邮件列表预约 TC(即 openEuler 技术委员会)例会,在会上申请将您的开源项目融入到社区中。
4.1.1 经 TC 例会之后,您可以参考以下两种方式将您的作品融入到 openEuler 中:
方式一:在 openEuler 社区中开发,在 openEuler 中集成:
直接在openEuler 代码仓中建立原创项目,类似将项目“托管”到 openEuler 社区,比如现在社区中的 iSulad 和 A-Tune 就是这样的模式。
如果您有了一个很棒的 idea 想要在 openEuler 社区里实现,那么可以依照下面的过程来深度参与到 openEuler 中。
1.在 TC 委员会的例会中 申请一个开源项目;
2.如果 TC 委员会认为这是一个很好的 idea,并且认为值得去推进,那么我们会在 https://gitee.com/openeuler 中建立一个 repo;
3.这个项目在 openEuler 中持续开发和孵化,直到项目逐渐成熟,那么就可以在 src-openeuler 中建立一个仓,为该项目提供相关的 spec 文件,制作成为一个 rpm,跟随着 openEuler 的版本发布,为世界人民所使用。
4.具体可参考:openEuler 社区项目运作流程介绍(第 4 页)
方式二:在其它社区开发,集成到 openEuler 中:
假定你已经在 github,gitlab 或者 gitee 上拥有了自己的项目,那么只需要按照以上提到的 如何新增软件包 那样,将软件加入到 src-openeuler 这个 repo 仓就可以了。
4.2 代码类贡献
openEuler 社区主要包括两个代码仓库:
1.代码仓:https://gitee.com/openeuler
2.软件包仓:https://gitee.com/src-openeuler
openEuler 主要用于存放源码类项目。
src-openeuler 主要用于存放制作发布件所需的软件包。
4.2.1 提交 Issue / 处理 Issue
在社区,Issue 是用来记录和追踪开发者的想法、反馈、任务和缺陷。因此,通过 Issue 参与自己感兴趣的 SIG 或项目,是比较便捷的参与社区贡献方式之一。您可以通过 QuickIssue 服务快速查找并提交 Issue。常见的 Issue 场景有:
a)报告 bug
b)提交建议
c)记录一个待完成任务
d)指出文档缺失/安装问题
e)答疑交流
找到 Issue 列表:
在 openEuler 的代码仓中,找到您感兴趣的 SIG 或项目主页,点击工具栏目的“Issues”,您可以找到其 Issue 列表(如openEuler/community 的 Issue 列表)。
提交 Issue:
如果您准备向社区上报 Bug 或者提交需求,为 openEuler 社区贡献自己的意见或建议,可以在 openEuler 社区对应的仓库上提交 Issue(请参考 Issue 提交指南)。为了吸引更广泛的注意,您也可以把 Issue 的链接附在邮件内,通过 邮件列表 发送给所有人。
参与 Issue 内的讨论:
每个 Issue 下面可能有参与者们的交流和讨论,如果您感兴趣,可以在评论框中发表自己的意见。
找到愿意处理的 Issue:
如果您愿意处理其中的一个 issue,可以将它分配给自己。只需要在评论框内输入 /assign 或 /assign @yourself,机器人就会将问题分配给您,您的名字将显示在负责人列表里。
你也可以通过 QuickIssue 服务平台 查找或提交 Issue。详情请参考:QuickIssue 服务介绍
4.2.2 贡献编码
搭建开发环境
1.开发环境准备:如果您想参与编码贡献,需要准备 openEuler 的开发环境,请参考开发环境准备。
2.下载和构建软件包:如果您想下载、修改、构建及验证 openEuler 提供的软件包,请参考构建软件包。
了解 SIG 和项目内的开发注意事项
每个 SIG 内的项目使用的编码语言、开发环境、编码约定等都可能存在差异的。如果您想了解并参与到编码类贡献,可以先找到该项目给开发者提供的贡献者指南——这个指南一般是在该 SIG 的首页地址内,以 CONTRIBUTING.md 文件的形式提供,或者在该项目的 README.md 内。
下载代码和拉分支
如果要参与代码贡献,您还需要了解如何在 Gitee 下载代码,通过 PR(Pull Request) 合入代码等。openEuler 使用 Gitee 代码托管平台,想了解具体的指导,请参考 Gitee Workflow Guide。该托管平台的使用方法类似 GitHub,如果您以前使用过 GitHub,本节的内容您可以大致了解甚至跳过。
修改构建和本地验证
在本地分支上完成修改后,进行构建和本地验证,请参考构建软件包。
提交一个 PR(Pull Request)
当您提交一个 PR 的时候,就意味您已经开始给社区贡献代码了。请参考 openEuler 社区 PR 提交指导。为了使您的提交更容易被接受,您需要:
1.遵循 SIG 组的编码约定,如果有的话
2.准备完善的提交信息
3.如果一次提交的代码量较大,建议将大型的内容分解成一系列逻辑上较小的内容,分别进行提交会更便于检视者理解您的想法
4.使用适当的 SIG 组和检视者(Committer)标签去标记 PR。当您完成 PR 的提交时,社区机器人会发送给您消息,以方便您更好的完成整个 PR 的过程。
注意:如果您的 PR 请求没有引起足够的关注,可以在 SIG 的邮件列表 或 dev@openeuler.org 求助。
4.2.3 贡献软件包 / 为社区组件打包
如果你发现 openEuler 缺失了一个软件包,可以帮 openEuler 把这个软件包补上。实际上贡献软件包的过程就是帮助 openEuler 提供更丰富功能的过程。
openEuler 支持在 gitee 新增软件包的同时,自动在 obs 的 openEuler:Factory 上创建同名仓库。这样在向已创建的 gitee 仓库提交代码时,会自动对代码编译进行检测。具体流程可参考 如何新增软件包。
您也可以参与社区组件打包工作,请参考 openEuler 打包指南 。
当然,如果您在使用 openEuler 时发现缺少某些软件包或已有包不满足您的需要时,还可以通过 openEuler 用户软件仓系统(EUR) 来帮助完善。参考:EUR 的介绍 和 使用指南 。
4.2.4 检视代码
openEuler 是一个开放的社区,我们希望所有参与社区的人都能成为活跃的检视者。可以参考 社区成员,该文档描述了不同贡献者的角色职责。
当成为 SIG 组的 Committer 或 Maintainer 角色时,便拥有审核代码的责任与权利。强烈建议本着 行为准则,超越自我,相互尊重和促进协作。在检视其他人的 PR 时,《补丁审核的柔和艺术》一文中提出了一系列检视的重点,说明代码检视的活动能够帮助促进新的贡献者积极参与,而不会使贡献者一开始就被细微的错误淹没,所以检视的时候,可以重点关注包括:
1.贡献背后的想法是否合理
2.贡献的架构是否正确
3.贡献是否完善
4.2.5 测试
测试——是所有贡献者的责任,对于社区版本来说,sig-QA 组是负责测试活动的社区官方组织。如果您希望在自己的基础架构上开展测试活动,可以参考:社区测试体系介绍 。
为了成功发行一个社区版本,openEuler 需要完成多种测试活动。不同的测试活动,测试代码的位置也有所不同,成功运行测试所需的环境细节也会有差异,有关的信息可以参考 测试指南 。
4.2.6 社区安全问题披露
4.3 非代码类贡献
如果您的兴趣不在编写代码方面,可以在 非代码贡献指南 中找到感兴趣的工作。本章节将介绍一些常见的非编码类社区工作,希望对大家有帮助。
4.3.1 openEuler Call for X
“openEuler Call for X 计划”是一个开放的社区项目,鼓励所有社区成员以及开源爱好者积极贡献、乐于分享、热衷实践。通过“openEuler Call for X 计划”,您不仅可以参与组织感兴趣的社区活动(Meetups、技术研讨会、直播、大会等,点此了解 活动申请 要求),也可以分享技术教程、基础设施、场地等资源,共建繁荣开源生态。
联系:events@openeuler.sh 或 openEuler 小助手(微信号:openeuler123)
4.3.2 城市用户组
openEuler 用户组(openEuler User Group),简称 oEUG,这是为方便 openEuler 各区域用户及开发者交流 openEuler 技术、应用经验,拓展 openEuler 用户生态而成立的地域性组织。您可以申请加入用户组,作为成员共同建设社区用户生态。更多介绍详情请查看 openEuler 用户组 。
4.3.3 社区其他工作
参与社区交流,通过邮件列表,社区论坛或添加小助手(微信号:openeuler123)加入社区交流群,帮助引导社区新人贡献社区,回答社区上的疑问等;
运维社区通信工具,包括协助 SIG 组的 Maintainer 完善 SIG 主页信息(EasyEditor 服务)、组织社区例会等;
成为社区布道师,共同组织社区聚会,包括 Meetups、直播、社区开发者大会等;
参与社区宣传推广与内容制作,包括 文档捉虫、博客写作、用户案例编写 、事件/技术/课程/视频投稿(联系小助手,微信号:openeuler123)等;
参与社区基础设施建设,请加入 sig-infrastructure
参与社区视觉设计,请加入 sig-OpenDesign
参与社区翻译服务,请加入 sig-G11N
5. 和社区一起成长
openEuler 技术委员会
openEuler 技术委员会(Technical Committee,简称 TC)是 openEuler 社区的技术决策机构,负责社区技术决策和技术资源的协调。详情请查看 openEuler 技术委员会介绍。
社区角色说明
社区不同角色对应不同的责任与权利,每种角色都是社区不可或缺的一部分,您可以通过积极贡献不断积累经验和影响力,并获得角色上的成长。更详细介绍与责任权利描述请查看 社区角色说明。