欢迎来到openEuler!

# 1. 体验openEuler

# 1.1 体验openEuler操作系统

您可以通过以下四种方式体验openEuler操作系统:

# 1.2 体验原创开源项目

您可以体验openEuler社区里的以下原创开源项目:

  • StratoVirt:面向云数据中心的企业级虚拟化平台
  • A-Tune:一款基于AI开发的智能优化引擎
  • iSula:轻量级容器解决方案
  • secGear:面向计算产业的机密计算安全应用开发套件
  • PkgShip:管理OS软件包依赖关系,提供依赖和被依赖关系完整图谱的查询工具
  • BishengJDK : OpenJDK定制版Huawei JDK的开源版本,是一个高性能、可用于生产环境的OpenJDK发行版
  • Compass-CI : 可持续集成的开源软件平台, 构建一个开放、完整的测试系统

# 2. 签署CLA

在参与社区贡献前,您需要签署openEuler社区贡献者许可协议(CLA)。
根据您的参与身份,选择签署个人CLA、员工CLA或企业CLA,请点击这里签署

  • 个人CLA:以个人身份参与社区,请签署个人CLA
  • 企业CLA: 以企业身份参与社区,请签署企业CLA
  • 员工CLA: 以企业员工的身份参与社区,请签署员工CLA

# 3. 参与openEuler社区

# 3.1 参与社区活动

您可以了解并参与丰富多彩的社区活动:

# 3.2 找到您想参与的SIG

# 3.2.1 了解SIG并找到您感兴趣的SIG

SIG就是Special Interest Group的缩写,openEuler社区按照不同的SIG来组织,以便于更好的管理和改善工作流程。因此参与社区事务正确的起始姿势是先找到您感兴趣的SIG, SIG组均是开放的,欢迎任何人来参与。
目前openEuler社区已有70+ SIG组,可查看 openEuler SIG 列表 找到您感兴趣的SIG。
如果定位不到您感兴趣的SIG,您可以向community@openeuler.org发求助邮件。建议您在邮件列表内用“【开发过程疑问】”作为标题,在内容中写出你寻找的SIG或项目的特征,我们会为您提供帮助。

# 3.2.2 成立新的SIG

如果在已有的SIG组列表里面没有找到您感兴趣的SIG,而您对某个方向有浓厚的兴趣,希望在openEuler社区成立一个新的相关SIG进行维护和发展,那您可以参考 申请新SIG流程指南 来申请创建新的SIG.

# 3.3 参与社区贡献

在签署了CLA协议、找到了你想参与的SIG组之后,就可以开始你的社区贡献之旅啦!社区贡献的方式有很多种,每一种贡献都将受到社区的欢迎和重视。

# 1.提交Issue/处理issue任务
  • 找到Issue列表:
    在您感兴趣的SIG项目Gitee主页内,点击“Issues”,您可以找到其Issue列表(如Community团队的Issue列表)
  • 提交Issue
    如果您准备向社区上报Bug或者提交需求,或者为openEuler社区贡献自己的意见或建议,请在openEuler社区对应的仓库上提交Issue。
    提交Issue请参考 Issue提交指南。为了吸引更广泛的注意,您也可以把Issue的链接附在邮件内,通过邮件列表发送给所有人。
  • 参与Issue内的讨论
    每个Issue下面可能已经有参与者们的交流和讨论,如果您感兴趣,也可以在评论框中发表自己的意见。
  • 找到愿意处理的Issue
    如果您愿意处理其中的一个issue,可以将它分配给自己。只需要在评论框内输入 /assign或 /assign @yourself,机器人就会将问题分配给您,您的名字将显示在负责人列表里。
# 2.贡献编码
  • 准备openEuler的开发环境
    如果您想参与编码贡献,需要准备openEuler的开发环境,请参考开发环境准备

  • 了解SIG和项目内的开发注意事项
    每个SIG内的项目使用的编码语言、开发环境、编码约定等都可能存在差异的。如果您想了解并参与到编码类贡献,可以先找到该项目给开发者提供的贡献者指南——这个指南一般是在该SIG的首页地址内,以CONTRIBUTING.md文件的形式提供,或者就直接在该项目的README.md内。

  • 下载代码和拉分支
    如果要参与代码贡献,您还需要了解如何在Gitee下载代码,通过PR合入代码等。openEuler使用Gitee代码托管平台,想了解具体的指导,请参考Gitee Workflow Guide。该托管平台的使用方法类似GitHub,如果您以前使用过GitHub,本节的内容您可以大致了解甚至跳过。

  • 修改、构建和本地验证
    在本地分支上完成修改后,进行构建和本地验证,请参考构建软件包

  • 提交一个Pull-Request
    当你提交一个PR的时候,就意味您已经开始给社区贡献代码了。请参考 openEuler社区PR提交指导。
    为了使您的提交更容易被接受,您需要:

    • 遵循SIG组的编码约定,如果有的话
    • 准备完善的提交信息
    • 如果一次提交的代码量较大,建议将大型的内容分解成一系列逻辑上较小的内容,分别进行提交会更便于检视者理解您的想法
    • 使用适当的SIG组和监视者标签去标记PR:社区机器人会发送给您消息,以方便您更好的完成整个PR的过程

    注意:如果您的PR请求没有引起足够的关注,可以在SIG的邮件列表或dev@openeuler.org求助。

# 3.贡献软件包

如果你发现openEuler缺失了一个软件包,可以帮openEuler把这个软件包补上。实际上贡献软件包的过程就是帮助openEuler提供更丰富功能的过程。希望随着大家的参与,openEuler能够成为一个“无所不有”的软件生态系统。openEuler支持在gitee新增软件包的同时自动在obs的openEuler:Fctory上创建同名仓库。这样在向已创建的gitee仓库提交代码时,会自动对代码编译进行检测。具体流程可参考 如何新增软件包

# 4.贡献原创开源项目

如果你想将自己原创的开源项目贡献到openEuler社区,成为openEuler发行版本中的一份子,那么可参考以下两种方式:

  • 方式一:在其它社区开发,集成到openEuler中
    假定你已经在github,gitlab或者gitee上拥有了自己的项目,那么只需要按照以上提到的 如何新增软件包 那样,将软件加入到src-openeuler这个repo仓就可以了。
  • 方式二:在openEuler社区中开发,在openEuler中集成
    直接在https://gitee.com/openeuler中建立原创项目,类似将项目“托管”到openEuler社区,比如现在社区中的iSula和A-Tune就是这样的模式。
    如果你有了一个很棒的idea想要在openEuler社区里实现,那么他可以依照下面的过程来深度参与到openEuler中。
    1.在TC委员会的例会中申请一个开源项目;
    2.如果TC委员会认为这是一个很好的idea,并且认为值得去推进,那么我们会在https://gitee.com/openeuler中建立一个repo;
    3.这个项目在openeuler中持续开发和孵化,直到项目逐渐成熟,那么就可以在src-openeuler中建立一个仓,为该项目提供相关的spec文件,制作成为一个rpm;
    4.最终这个原创的开源项目会随着openEuler的发布版本走遍全世界,为世界人民所使用。
# 5.检视代码

openEuler是一个开放的社区,我们希望所有参与社区的人都能成为活跃的检视者。当成为SIG组的committer或maintainer角色时,便拥有审核代码的责任与权利。
强烈建议本着行为准则,超越自我,相互尊重和促进协作。《补丁审核的柔和艺术》一文中提出了一系列检视的重点,说明代码检视的活动也希望能够促进新的贡献者积极参与,而不会使贡献者一开始就被细微的错误淹没,所以检视的时候,可以重点关注包括:
  1.贡献背后的想法是否合理
  2.贡献的架构是否正确
  3.贡献是否完善

# 6.测试

测试——是所有贡献者的责任,对于社区版本来说,sig-qa组是负责测试活动的社区官方组织。如果您希望在自己的基础架构上开展测试活动,可以参考:社区测试体系介绍
为了成功发行一个社区版本,需要完成多种测试活动。不同的测试活动,测试代码的位置也有所不同,成功运行测试所需的环境的细节也会有差异,有关的信息可以参考:社区开发者测试贡献指南

# 7.选择社区组件打包

您也可以参与社区组件打包,请参考 如何打包

# 8.参与非代码类贡献

如果您的兴趣不在编写代码方面,可以在 非代码贡献指南 中找到感兴趣的工作。

# 9.社区安全问题披露

安全处理流程——简要描述了处理安全问题的过程。
安全披露信息——如果您希望报告安全漏洞,请参考此页面。

# 4. 和社区一起成长

# 4.1 社区角色说明

社区不同角色对应不同的责任与权利,每种角色都是社区不可或缺的一部分,您可以通过积极贡献不断积累经验和影响力,并获得角色上的成长。更详细角色说明与责任权利描述请查看 角色说明

# 4.2 技术委员会

openEuler技术委员会(Technical Committee,简称TC)是openEuler社区的技术决策机构,负责社区技术决策和技术资源的协调。
详情请查看 openEuler技术委员会介绍