blob: 5475c8bb729abe7479d95c41fe3ccb4ebfd654f4 [file] [log] [blame]
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://dubbo.apache.org/en/latest/contribution-guidelines/contributor/new-contributor-guide_dev/><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.120.4"><link rel="shortcut icon" type=image/png href=/imgs/favicon.png><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=manifest href=/manifest.webmanifest><title>新贡献者向导 | Apache Dubbo</title><meta property="og:title" content="新贡献者向导">
<meta property="og:description" content="这篇向导旨在给正在准备向 Dubbo 提交贡献的新手提供指导。
邮件列表描述 邮件列表是 Dubbo 官方推荐的讨论方式,所有与 Dubbo 相关的内容都可以在这里讨论,请点击 issue 了解更多关于邮件列表订阅的内容
如需订阅如下邮件列表,请参考 邮件列表订阅向导
dev@dubbo.apache.org:开发邮件列表,您在使用或者开发 Dubbo 的过程中遇到的任何问题,都可以在这里进行提问。 commits@dubbo.apache.org:所有的提交内容都会推送到这个邮件列表,如果您对 Dubbo 的进展感兴趣,可以订阅这个邮件列表。 issues@dubbo.apache.org:所有的 JIRA issues 和修改信息都会推送到这个邮件列表。Dubbo 社区已经决定使用 github issues 代替 JIRA issues,因此大部分 issues 将由 github issues 进行跟踪。JIRA issues 用于跟踪 ASF 相关问题。 报告问题 贡献代码 贡献流程 此贡献流程适用于所有的Apache Dubbo社区内容,包括但不限于dubbo(主干仓库)、dubbo admin、dubbo website。
以下以贡献dubbo(主干仓库)为例,详细说明贡献流程。
1. fork Apache/Dubbo 项目到您的github帐号下 2. 克隆您fork的Dubbo代码仓库到您本地 git clone ${your fork dubbo repo address,for example:https://github.com/${your github id}/dubbo.git} cd dubbo 3. 添加Apache/Dubbo仓库为upstream仓库 git remote add upstream https://github."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/latest/contribution-guidelines/contributor/new-contributor-guide_dev/"><meta property="article:section" content="latest"><meta property="article:modified_time" content="2023-02-22T15:03:22+08:00"><meta itemprop=name content="新贡献者向导"><meta itemprop=description content="这篇向导旨在给正在准备向 Dubbo 提交贡献的新手提供指导。
邮件列表描述 邮件列表是 Dubbo 官方推荐的讨论方式,所有与 Dubbo 相关的内容都可以在这里讨论,请点击 issue 了解更多关于邮件列表订阅的内容
如需订阅如下邮件列表,请参考 邮件列表订阅向导
dev@dubbo.apache.org:开发邮件列表,您在使用或者开发 Dubbo 的过程中遇到的任何问题,都可以在这里进行提问。 commits@dubbo.apache.org:所有的提交内容都会推送到这个邮件列表,如果您对 Dubbo 的进展感兴趣,可以订阅这个邮件列表。 issues@dubbo.apache.org:所有的 JIRA issues 和修改信息都会推送到这个邮件列表。Dubbo 社区已经决定使用 github issues 代替 JIRA issues,因此大部分 issues 将由 github issues 进行跟踪。JIRA issues 用于跟踪 ASF 相关问题。 报告问题 贡献代码 贡献流程 此贡献流程适用于所有的Apache Dubbo社区内容,包括但不限于dubbo(主干仓库)、dubbo admin、dubbo website。
以下以贡献dubbo(主干仓库)为例,详细说明贡献流程。
1. fork Apache/Dubbo 项目到您的github帐号下 2. 克隆您fork的Dubbo代码仓库到您本地 git clone ${your fork dubbo repo address,for example:https://github.com/${your github id}/dubbo.git} cd dubbo 3. 添加Apache/Dubbo仓库为upstream仓库 git remote add upstream https://github."><meta itemprop=dateModified content="2023-02-22T15:03:22+08:00"><meta itemprop=wordCount content="272"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="新贡献者向导"><meta name=twitter:description content="这篇向导旨在给正在准备向 Dubbo 提交贡献的新手提供指导。
邮件列表描述 邮件列表是 Dubbo 官方推荐的讨论方式,所有与 Dubbo 相关的内容都可以在这里讨论,请点击 issue 了解更多关于邮件列表订阅的内容
如需订阅如下邮件列表,请参考 邮件列表订阅向导
dev@dubbo.apache.org:开发邮件列表,您在使用或者开发 Dubbo 的过程中遇到的任何问题,都可以在这里进行提问。 commits@dubbo.apache.org:所有的提交内容都会推送到这个邮件列表,如果您对 Dubbo 的进展感兴趣,可以订阅这个邮件列表。 issues@dubbo.apache.org:所有的 JIRA issues 和修改信息都会推送到这个邮件列表。Dubbo 社区已经决定使用 github issues 代替 JIRA issues,因此大部分 issues 将由 github issues 进行跟踪。JIRA issues 用于跟踪 ASF 相关问题。 报告问题 贡献代码 贡献流程 此贡献流程适用于所有的Apache Dubbo社区内容,包括但不限于dubbo(主干仓库)、dubbo admin、dubbo website。
以下以贡献dubbo(主干仓库)为例,详细说明贡献流程。
1. fork Apache/Dubbo 项目到您的github帐号下 2. 克隆您fork的Dubbo代码仓库到您本地 git clone ${your fork dubbo repo address,for example:https://github.com/${your github id}/dubbo.git} cd dubbo 3. 添加Apache/Dubbo仓库为upstream仓库 git remote add upstream https://github."><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.fe7176cbe3102a33d3e8c0c9cec61eb52508abd24a2cc1ae23ccf535a481ffde.css as=style><link href=/scss/main.min.fe7176cbe3102a33d3e8c0c9cec61eb52508abd24a2cc1ae23ccf535a481ffde.css rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin=anonymous></script><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta name=theme-color content="#326ce5"><link rel=stylesheet href=/css/feature-states.css><meta name=description content="这篇向导旨在给正在准备向 Dubbo 提交贡献的新手提供指导。
邮件列表描述 邮件列表是 Dubbo 官方推荐的讨论方式,所有与 Dubbo 相关的内容都可以在这里讨论,请点击 issue 了解更多关于邮件列表订阅的内容
如需订阅如下邮件列表,请参考 邮件列表订阅向导
dev@dubbo.apache.org:开发邮件列表,您在使用或者开发 Dubbo 的过程中遇到的任何问题,都可以在这里进行提问。 commits@dubbo.apache.org:所有的提交内容都会推送到这个邮件列表,如果您对 Dubbo 的进展感兴趣,可以订阅这个邮件列表。 issues@dubbo.apache.org:所有的 JIRA issues 和修改信息都会推送到这个邮件列表。Dubbo 社区已经决定使用 github issues 代替 JIRA issues,因此大部分 issues 将由 github issues 进行跟踪。JIRA issues 用于跟踪 ASF 相关问题。 报告问题 贡献代码 贡献流程 此贡献流程适用于所有的Apache Dubbo社区内容,包括但不限于dubbo(主干仓库)、dubbo admin、dubbo website。
以下以贡献dubbo(主干仓库)为例,详细说明贡献流程。
1. fork Apache/Dubbo 项目到您的github帐号下 2. 克隆您fork的Dubbo代码仓库到您本地 git clone ${your fork dubbo repo address,for example:https://github.com/${your github id}/dubbo.git} cd dubbo 3. 添加Apache/Dubbo仓库为upstream仓库 git remote add upstream https://github."><meta property="og:description" content="这篇向导旨在给正在准备向 Dubbo 提交贡献的新手提供指导。
邮件列表描述 邮件列表是 Dubbo 官方推荐的讨论方式,所有与 Dubbo 相关的内容都可以在这里讨论,请点击 issue 了解更多关于邮件列表订阅的内容
如需订阅如下邮件列表,请参考 邮件列表订阅向导
dev@dubbo.apache.org:开发邮件列表,您在使用或者开发 Dubbo 的过程中遇到的任何问题,都可以在这里进行提问。 commits@dubbo.apache.org:所有的提交内容都会推送到这个邮件列表,如果您对 Dubbo 的进展感兴趣,可以订阅这个邮件列表。 issues@dubbo.apache.org:所有的 JIRA issues 和修改信息都会推送到这个邮件列表。Dubbo 社区已经决定使用 github issues 代替 JIRA issues,因此大部分 issues 将由 github issues 进行跟踪。JIRA issues 用于跟踪 ASF 相关问题。 报告问题 贡献代码 贡献流程 此贡献流程适用于所有的Apache Dubbo社区内容,包括但不限于dubbo(主干仓库)、dubbo admin、dubbo website。
以下以贡献dubbo(主干仓库)为例,详细说明贡献流程。
1. fork Apache/Dubbo 项目到您的github帐号下 2. 克隆您fork的Dubbo代码仓库到您本地 git clone ${your fork dubbo repo address,for example:https://github.com/${your github id}/dubbo.git} cd dubbo 3. 添加Apache/Dubbo仓库为upstream仓库 git remote add upstream https://github."><meta name=twitter:description content="这篇向导旨在给正在准备向 Dubbo 提交贡献的新手提供指导。
邮件列表描述 邮件列表是 Dubbo 官方推荐的讨论方式,所有与 Dubbo 相关的内容都可以在这里讨论,请点击 issue 了解更多关于邮件列表订阅的内容
如需订阅如下邮件列表,请参考 邮件列表订阅向导
dev@dubbo.apache.org:开发邮件列表,您在使用或者开发 Dubbo 的过程中遇到的任何问题,都可以在这里进行提问。 commits@dubbo.apache.org:所有的提交内容都会推送到这个邮件列表,如果您对 Dubbo 的进展感兴趣,可以订阅这个邮件列表。 issues@dubbo.apache.org:所有的 JIRA issues 和修改信息都会推送到这个邮件列表。Dubbo 社区已经决定使用 github issues 代替 JIRA issues,因此大部分 issues 将由 github issues 进行跟踪。JIRA issues 用于跟踪 ASF 相关问题。 报告问题 贡献代码 贡献流程 此贡献流程适用于所有的Apache Dubbo社区内容,包括但不限于dubbo(主干仓库)、dubbo admin、dubbo website。
以下以贡献dubbo(主干仓库)为例,详细说明贡献流程。
1. fork Apache/Dubbo 项目到您的github帐号下 2. 克隆您fork的Dubbo代码仓库到您本地 git clone ${your fork dubbo repo address,for example:https://github.com/${your github id}/dubbo.git} cd dubbo 3. 添加Apache/Dubbo仓库为upstream仓库 git remote add upstream https://github."><meta property="og:url" content="https://dubbo.apache.org/en/latest/contribution-guidelines/contributor/new-contributor-guide_dev/"><meta property="og:title" content="新贡献者向导"><meta name=twitter:title content="新贡献者向导"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=stylesheet><link href=/css/language.css rel=stylesheet><script src=/js/script.js></script></head><body class="td-page td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a class=navbar-brand href=/en/><span class=navbar-logo></span><span class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/en/overview/><span>Overview</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/en/docs3-v2/><span>SDK Manual</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/en/blog/><span>Blog</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>Download</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://start.dubbo.apache.org/bootstrap.html target=_blank><span>Initializer</span><i class='fas fa-external-link-alt'></i></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdownMenuLink role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>English</a><div class="dropdown-menu dropdown-menu-right" aria-labelledby=navbarDropdownMenuLink><a class=dropdown-item href=/zh-cn/>中文</a></div></li><li class="nav-item dropdown d-lg-block"><div class="nav-item d-none d-lg-block"><div id=docsearch></div></div></li></ul></div></nav><section class="header-hero text-white pb-0 light-text"></section></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-md-nowrap"><div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"><script>$(function(){$("#td-section-nav a").removeClass("active"),$("#td-section-nav #m-enlatestcontribution-guidelinescontributornew-contributor-guide_dev").addClass("active"),$("#td-section-nav #m-enlatestcontribution-guidelinescontributornew-contributor-guide_dev-li span").addClass("td-sidebar-nav-active-item"),$("#td-section-nav #m-enlatestcontribution-guidelinescontributornew-contributor-guide_dev").parents("li").addClass("active-path"),$("#td-section-nav li.active-path").addClass("show"),$("#td-section-nav li.active-path").children("input").prop("checked",!0),$("#td-section-nav #m-enlatestcontribution-guidelinescontributornew-contributor-guide_dev-li").siblings("li").addClass("show"),$("#td-section-nav #m-enlatestcontribution-guidelinescontributornew-contributor-guide_dev-li").children("ul").children("li").addClass("show"),$("#td-sidebar-menu").toggleClass("d-none")})</script><div id=td-sidebar-menu class="td-sidebar__inner d-none"><div id=content-mobile><form class="td-sidebar__search d-flex align-items-center"><div id=docsearch></div><button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type=button data-toggle=collapse data-target=#td-section-nav aria-controls=td-docs-nav aria-expanded=false aria-label="Toggle section navigation"></button></form></div><div id=content-desktop></div><nav class="collapse td-sidebar-nav foldable-nav" id=td-section-nav><ul class="td-sidebar-nav__section pr-md-3 ul-0"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatest-li><ul class=ul-1><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestadmin-li><input type=checkbox id=m-enlatestadmin-check>
<label for=m-enlatestadmin-check><a href=/en/latest/admin/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestadmin><span>admin</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestjava-sdk-li><input type=checkbox id=m-enlatestjava-sdk-check>
<label for=m-enlatestjava-sdk-check><a href=/en/latest/java-sdk/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdk><span>Dubbo Java SDK</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestjava-sdkv2x-li><input type=checkbox id=m-enlatestjava-sdkv2x-check>
<label for=m-enlatestjava-sdkv2x-check><a href=/en/latest/java-sdk/v2.x/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv2x><span>v2.x</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestjava-sdkv2xintroduction-li><input type=checkbox id=m-enlatestjava-sdkv2xintroduction-check>
<label for=m-enlatestjava-sdkv2xintroduction-check><a href=/en/latest/java-sdk/v2.x/introduction/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv2xintroduction><span>Introduction</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv2xintroductionusers-li><input type=checkbox id=m-enlatestjava-sdkv2xintroductionusers-check>
<label for=m-enlatestjava-sdkv2xintroductionusers-check><a href=/en/latest/java-sdk/v2.x/introduction/users/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestjava-sdkv2xintroductionusers><span>Users</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestjava-sdkv2xquick-start-li><input type=checkbox id=m-enlatestjava-sdkv2xquick-start-check>
<label for=m-enlatestjava-sdkv2xquick-start-check><a href=/en/latest/java-sdk/v2.x/quick-start/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv2xquick-start><span>Quick start</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv2xquick-startquick-start-li><input type=checkbox id=m-enlatestjava-sdkv2xquick-startquick-start-check>
<label for=m-enlatestjava-sdkv2xquick-startquick-start-check><a href=/en/latest/java-sdk/v2.x/quick-start/quick-start/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestjava-sdkv2xquick-startquick-start><span>快速开始</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestjava-sdkv2xconcepts-and-architecture-li><input type=checkbox id=m-enlatestjava-sdkv2xconcepts-and-architecture-check>
<label for=m-enlatestjava-sdkv2xconcepts-and-architecture-check><a href=/en/latest/java-sdk/v2.x/concepts-and-architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv2xconcepts-and-architecture><span>Concepts & Architecture</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv2xconcepts-and-architectureusers-li><input type=checkbox id=m-enlatestjava-sdkv2xconcepts-and-architectureusers-check>
<label for=m-enlatestjava-sdkv2xconcepts-and-architectureusers-check><a href=/en/latest/java-sdk/v2.x/concepts-and-architecture/users/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestjava-sdkv2xconcepts-and-architectureusers><span>用户列表</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv2xadvanced-features-and-usage-li><input type=checkbox id=m-enlatestjava-sdkv2xadvanced-features-and-usage-check>
<label for=m-enlatestjava-sdkv2xadvanced-features-and-usage-check><a href=/en/latest/java-sdk/v2.x/advanced-features-and-usage/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv2xadvanced-features-and-usage><span>Advanced Features & Usage</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv2xreference-manual-li><input type=checkbox id=m-enlatestjava-sdkv2xreference-manual-check>
<label for=m-enlatestjava-sdkv2xreference-manual-check><a href=/en/latest/java-sdk/v2.x/reference-manual/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv2xreference-manual><span>Reference Manual</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv2xupgrades-and-compatibility-li><input type=checkbox id=m-enlatestjava-sdkv2xupgrades-and-compatibility-check>
<label for=m-enlatestjava-sdkv2xupgrades-and-compatibility-check><a href=/en/latest/java-sdk/v2.x/upgrades-and-compatibility/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv2xupgrades-and-compatibility><span>Upgrades & Compatibility</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv2xcontributing-li><input type=checkbox id=m-enlatestjava-sdkv2xcontributing-check>
<label for=m-enlatestjava-sdkv2xcontributing-check><a href=/en/latest/java-sdk/v2.x/contributing/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv2xcontributing><span>Contributing</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestjava-sdkv3x-li><input type=checkbox id=m-enlatestjava-sdkv3x-check>
<label for=m-enlatestjava-sdkv3x-check><a href=/en/latest/java-sdk/v3.x/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv3x><span>v3.x</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestjava-sdkv3xintroduction-li><input type=checkbox id=m-enlatestjava-sdkv3xintroduction-check>
<label for=m-enlatestjava-sdkv3xintroduction-check><a href=/en/latest/java-sdk/v3.x/introduction/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv3xintroduction><span>Introduction</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv3xintroductionusers-li><input type=checkbox id=m-enlatestjava-sdkv3xintroductionusers-check>
<label for=m-enlatestjava-sdkv3xintroductionusers-check><a href=/en/latest/java-sdk/v3.x/introduction/users/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestjava-sdkv3xintroductionusers><span>Users</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv3xquick-start-li><input type=checkbox id=m-enlatestjava-sdkv3xquick-start-check>
<label for=m-enlatestjava-sdkv3xquick-start-check><a href=/en/latest/java-sdk/v3.x/quick-start/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv3xquick-start><span>Quick start</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestjava-sdkv3xconcepts-and-architecture-li><input type=checkbox id=m-enlatestjava-sdkv3xconcepts-and-architecture-check>
<label for=m-enlatestjava-sdkv3xconcepts-and-architecture-check><a href=/en/latest/java-sdk/v3.x/concepts-and-architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv3xconcepts-and-architecture><span>Concepts & Architecture</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv3xconcepts-and-architectureusers-li><input type=checkbox id=m-enlatestjava-sdkv3xconcepts-and-architectureusers-check>
<label for=m-enlatestjava-sdkv3xconcepts-and-architectureusers-check><a href=/en/latest/java-sdk/v3.x/concepts-and-architecture/users/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestjava-sdkv3xconcepts-and-architectureusers><span>用户列表</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv3xadvanced-features-and-usage-li><input type=checkbox id=m-enlatestjava-sdkv3xadvanced-features-and-usage-check>
<label for=m-enlatestjava-sdkv3xadvanced-features-and-usage-check><a href=/en/latest/java-sdk/v3.x/advanced-features-and-usage/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv3xadvanced-features-and-usage><span>Advanced Features & Usage</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv3xreference-manual-li><input type=checkbox id=m-enlatestjava-sdkv3xreference-manual-check>
<label for=m-enlatestjava-sdkv3xreference-manual-check><a href=/en/latest/java-sdk/v3.x/reference-manual/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv3xreference-manual><span>Reference Manual</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv3xupgrades-and-compatibility-li><input type=checkbox id=m-enlatestjava-sdkv3xupgrades-and-compatibility-check>
<label for=m-enlatestjava-sdkv3xupgrades-and-compatibility-check><a href=/en/latest/java-sdk/v3.x/upgrades-and-compatibility/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv3xupgrades-and-compatibility><span>Upgrades & Compatibility</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestjava-sdkv3xcontributing-li><input type=checkbox id=m-enlatestjava-sdkv3xcontributing-check>
<label for=m-enlatestjava-sdkv3xcontributing-check><a href=/en/latest/java-sdk/v3.x/contributing/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestjava-sdkv3xcontributing><span>Contributing</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestgolang-sdk-li><input type=checkbox id=m-enlatestgolang-sdk-check>
<label for=m-enlatestgolang-sdk-check><a href=/en/latest/golang-sdk/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestgolang-sdk><span>golang</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestpixiu-li><input type=checkbox id=m-enlatestpixiu-check>
<label for=m-enlatestpixiu-check><a href=/en/latest/pixiu/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestpixiu><span>pixiu</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestfacade-docs-li><input type=checkbox id=m-enlatestfacade-docs-check>
<label for=m-enlatestfacade-docs-check><a href=/en/latest/facade-docs/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestfacade-docs><span>Documentation</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestfacade-docswhat-li><input type=checkbox id=m-enlatestfacade-docswhat-check>
<label for=m-enlatestfacade-docswhat-check><a href=/en/latest/facade-docs/what/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestfacade-docswhat><span>What is Dubbo?</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestfacade-docswhatoverview-li><input type=checkbox id=m-enlatestfacade-docswhatoverview-check>
<label for=m-enlatestfacade-docswhatoverview-check><a href=/en/latest/facade-docs/what/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestfacade-docswhatoverview><span>Introduction</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestfacade-docswhatcore-concepts-li><input type=checkbox id=m-enlatestfacade-docswhatcore-concepts-check>
<label for=m-enlatestfacade-docswhatcore-concepts-check><a href=/en/latest/facade-docs/what/core-concepts/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestfacade-docswhatcore-concepts><span>Core Concepts</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestfacade-docswhatecosystem-li><input type=checkbox id=m-enlatestfacade-docswhatecosystem-check>
<label for=m-enlatestfacade-docswhatecosystem-check><a href=/en/latest/facade-docs/what/ecosystem/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestfacade-docswhatecosystem><span>Dubbo Ecosystem</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestfacade-docswhy-li><input type=checkbox id=m-enlatestfacade-docswhy-check>
<label for=m-enlatestfacade-docswhy-check><a href=/en/latest/facade-docs/why/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestfacade-docswhy><span>Why use Dubbo?</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestfacade-docswhyadvantage-li><input type=checkbox id=m-enlatestfacade-docswhyadvantage-check>
<label for=m-enlatestfacade-docswhyadvantage-check><a href=/en/latest/facade-docs/why/advantage/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestfacade-docswhyadvantage><span>Advantage</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestfacade-docshow-li><input type=checkbox id=m-enlatestfacade-docshow-check>
<label for=m-enlatestfacade-docshow-check><a href=/en/latest/facade-docs/how/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestfacade-docshow><span>How to use Dubbo?</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestfacade-docshowquick-start-li><input type=checkbox id=m-enlatestfacade-docshowquick-start-check>
<label for=m-enlatestfacade-docshowquick-start-check><a href=/en/latest/facade-docs/how/quick-start/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestfacade-docshowquick-start><span>Quick Start</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestfacade-docscontact-li><input type=checkbox id=m-enlatestfacade-docscontact-check>
<label for=m-enlatestfacade-docscontact-check><a href=/en/latest/facade-docs/contact/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestfacade-docscontact><span>How to Contact the Dubbo Community?</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestdownload-li><input type=checkbox id=m-enlatestdownload-check>
<label for=m-enlatestdownload-check><a href=/en/latest/download/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestdownload><span>Download</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestnotices-li><input type=checkbox id=m-enlatestnotices-check>
<label for=m-enlatestnotices-check><a href=/en/latest/notices/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestnotices><span>Announcement</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestnoticessecurity-li><input type=checkbox id=m-enlatestnoticessecurity-check>
<label for=m-enlatestnoticessecurity-check><a href=/en/latest/notices/security/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestnoticessecurity><span>安全漏洞</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcommunity-li><input type=checkbox id=m-enlatestcommunity-check>
<label for=m-enlatestcommunity-check><a href=/en/latest/community/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestcommunity><span>Community</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestcontribution-guidelines-li><input type=checkbox id=m-enlatestcontribution-guidelines-check>
<label for=m-enlatestcontribution-guidelines-check><a href=/en/latest/contribution-guidelines/ title="Dubbo Contribution Guidelines" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestcontribution-guidelines><span>Contribution</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestcontribution-guidelinescontributor-li><input type=checkbox id=m-enlatestcontribution-guidelinescontributor-check>
<label for=m-enlatestcontribution-guidelinescontributor-check><a href=/en/latest/contribution-guidelines/contributor/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestcontribution-guidelinescontributor><span>Contributor Guidelines</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescontributorbecome-a-committer_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescontributorbecome-a-committer_dev-check>
<label for=m-enlatestcontribution-guidelinescontributorbecome-a-committer_dev-check><a href=/en/latest/contribution-guidelines/contributor/become-a-committer_dev/ title="如何成为 Dubbo Committer" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescontributorbecome-a-committer_dev><span>成为 Committer</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescontributorcla-signing-guide_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescontributorcla-signing-guide_dev-check>
<label for=m-enlatestcontribution-guidelinescontributorcla-signing-guide_dev-check><a href=/en/latest/contribution-guidelines/contributor/cla-signing-guide_dev/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescontributorcla-signing-guide_dev><span>CLA 签署向导</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescontributornew-contributor-guide_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescontributornew-contributor-guide_dev-check>
<label for=m-enlatestcontribution-guidelinescontributornew-contributor-guide_dev-check><a href=/en/latest/contribution-guidelines/contributor/new-contributor-guide_dev/ title=新贡献者向导 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescontributornew-contributor-guide_dev><span>新手向导</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescontributormailing-list-subscription-guide_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescontributormailing-list-subscription-guide_dev-check>
<label for=m-enlatestcontribution-guidelinescontributormailing-list-subscription-guide_dev-check><a href=/en/latest/contribution-guidelines/contributor/mailing-list-subscription-guide_dev/ title=邮件列表订阅向导 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescontributormailing-list-subscription-guide_dev><span>邮件组向导</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescontributorreporting-security-issues_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescontributorreporting-security-issues_dev-check>
<label for=m-enlatestcontribution-guidelinescontributorreporting-security-issues_dev-check><a href=/en/latest/contribution-guidelines/contributor/reporting-security-issues_dev/ title=报告安全问题 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescontributorreporting-security-issues_dev><span>反馈漏洞</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescontributorsoftware-donation-guide_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescontributorsoftware-donation-guide_dev-check>
<label for=m-enlatestcontribution-guidelinescontributorsoftware-donation-guide_dev-check><a href=/en/latest/contribution-guidelines/contributor/software-donation-guide_dev/ title=软件捐献向导 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescontributorsoftware-donation-guide_dev><span>捐献向导</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescontributordubbo-extension-guide_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescontributordubbo-extension-guide_dev-check>
<label for=m-enlatestcontribution-guidelinescontributordubbo-extension-guide_dev-check><a href=/en/latest/contribution-guidelines/contributor/dubbo-extension-guide_dev/ title="扩展 Dubbo 向导" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescontributordubbo-extension-guide_dev><span>扩展 Dubbo</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescontributortest-coverage-guide_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescontributortest-coverage-guide_dev-check>
<label for=m-enlatestcontribution-guidelinescontributortest-coverage-guide_dev-check><a href=/en/latest/contribution-guidelines/contributor/test-coverage-guide_dev/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescontributortest-coverage-guide_dev><span>测试覆盖率向导</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enlatestcontribution-guidelinescommitter-li><input type=checkbox id=m-enlatestcontribution-guidelinescommitter-check>
<label for=m-enlatestcontribution-guidelinescommitter-check><a href=/en/latest/contribution-guidelines/committer/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enlatestcontribution-guidelinescommitter><span>Committer Guidelines</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescommitternew-committer-guide_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescommitternew-committer-guide_dev-check>
<label for=m-enlatestcontribution-guidelinescommitternew-committer-guide_dev-check><a href=/en/latest/contribution-guidelines/committer/new-committer-guide_dev/ title="Apache 提交者注册流程" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescommitternew-committer-guide_dev><span>注册流程</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescommitterrelease-guide_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescommitterrelease-guide_dev-check>
<label for=m-enlatestcontribution-guidelinescommitterrelease-guide_dev-check><a href=/en/latest/contribution-guidelines/committer/release-guide_dev/ title="如何准备 Apache Release" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescommitterrelease-guide_dev><span>发版准备</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescommitterwebsite-guide_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescommitterwebsite-guide_dev-check>
<label for=m-enlatestcontribution-guidelinescommitterwebsite-guide_dev-check><a href=/en/latest/contribution-guidelines/committer/website-guide_dev/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescommitterwebsite-guide_dev><span>网站向导</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescommitterlabel-an-issue-guide_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescommitterlabel-an-issue-guide_dev-check>
<label for=m-enlatestcontribution-guidelinescommitterlabel-an-issue-guide_dev-check><a href=/en/latest/contribution-guidelines/committer/label-an-issue-guide_dev/ title=给问题打标签 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescommitterlabel-an-issue-guide_dev><span>问题标签</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enlatestcontribution-guidelinescommitterapache-dubbo-page_dev-li><input type=checkbox id=m-enlatestcontribution-guidelinescommitterapache-dubbo-page_dev-check>
<label for=m-enlatestcontribution-guidelinescommitterapache-dubbo-page_dev-check><a href=/en/latest/contribution-guidelines/committer/apache-dubbo-page_dev/ title="官方 Dubbo 主页的维护" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enlatestcontribution-guidelinescommitterapache-dubbo-page_dev><span>官方主页</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/latest/>Latests</a></li><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/latest/contribution-guidelines/>Contribution</a></li><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/latest/contribution-guidelines/contributor/>Contributor Guidelines</a></li><li class="breadcrumb-item active" aria-current=page><a href=https://dubbo.apache.org/en/latest/contribution-guidelines/contributor/new-contributor-guide_dev/ aria-disabled=true class="btn-link disabled">新手向导</a></li></ol></nav><div class=td-content><h1>新贡献者向导</h1><header class=article-meta></header><p>这篇向导旨在给正在准备向 Dubbo 提交贡献的新手提供指导。</p><h3 id=邮件列表描述>邮件列表描述</h3><p>邮件列表是 Dubbo 官方推荐的讨论方式,所有与 Dubbo 相关的内容都可以在这里讨论,请点击 <a href=https://github.com/apache/dubbo/issues/1393>issue</a> 了解更多关于邮件列表订阅的内容</p><p>如需订阅如下邮件列表,请参考 <a href=../mailing-list-subscription-guide_dev/>邮件列表订阅向导</a></p><ul><li><a href=mailto:dev@dubbo.apache.org>dev@dubbo.apache.org</a>:开发邮件列表,您在使用或者开发 Dubbo 的过程中遇到的任何问题,都可以在这里进行提问。</li><li><a href=mailto:commits@dubbo.apache.org>commits@dubbo.apache.org</a>:所有的提交内容都会推送到这个邮件列表,如果您对 Dubbo 的进展感兴趣,可以订阅这个邮件列表。</li><li><a href=mailto:issues@dubbo.apache.org>issues@dubbo.apache.org</a>:所有的 JIRA <a href=https://issues.apache.org/jira/projects/DUBBO/issues>issues</a> 和修改信息都会推送到这个邮件列表。Dubbo 社区已经决定使用 github issues 代替 JIRA issues,因此大部分 issues 将由 github issues 进行跟踪。JIRA issues 用于跟踪 ASF 相关问题。</li></ul><h3 id=报告问题>报告问题</h3><h3 id=贡献代码>贡献代码</h3><h4 id=贡献流程>贡献流程</h4><p>此贡献流程适用于所有的Apache Dubbo社区内容,包括但不限于dubbo(主干仓库)、dubbo admin、dubbo website。</p><p>以下以贡献dubbo(主干仓库)为例,详细说明贡献流程。</p><h5 id=1-fork-apachedubbo-项目到您的github帐号下>1. <strong>fork Apache/Dubbo 项目到您的github帐号下</strong></h5><h5 id=2-克隆您fork的dubbo代码仓库到您本地>2. <strong>克隆您fork的Dubbo代码仓库到您本地</strong></h5><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>git clone <span style=color:#2aa198>${</span><span style=color:#268bd2>your</span> fork dubbo repo address,for example:https://github.com/<span style=color:#2aa198>${</span><span style=color:#268bd2>your</span> github id<span style=color:#2aa198>}</span>/dubbo.git<span style=color:#2aa198>}</span>
</span></span><span style=display:flex><span><span style=color:#b58900>cd</span> dubbo
</span></span></code></pre></div><h5 id=3-添加apachedubbo仓库为upstream仓库>3. <strong>添加Apache/Dubbo仓库为upstream仓库</strong></h5><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>git remote add upstream https://github.com/apache/dubbo.git
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>git remote -v
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> origin <span style=color:#2aa198>${</span><span style=color:#268bd2>your</span> fork dubbo repo address<span style=color:#2aa198>}</span> <span style=color:#719e07>(</span>fetch<span style=color:#719e07>)</span>
</span></span><span style=display:flex><span> origin <span style=color:#2aa198>${</span><span style=color:#268bd2>your</span> fork dubbo repo address<span style=color:#2aa198>}</span> <span style=color:#719e07>(</span>push<span style=color:#719e07>)</span>
</span></span><span style=display:flex><span> upstream https://github.com/apache/dubbo.git <span style=color:#719e07>(</span>fetch<span style=color:#719e07>)</span>
</span></span><span style=display:flex><span> upstream https://github.com/apache/dubbo.git <span style=color:#719e07>(</span>push<span style=color:#719e07>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>git fetch origin
</span></span><span style=display:flex><span>git fetch upstream
</span></span></code></pre></div><h5 id=4-我们的工作以issue为驱动认领一个issue或者创建一个issue并描述清楚要做什么>4. <strong>我们的工作以issue为驱动,认领一个issue,或者创建一个issue并描述清楚要做什么。</strong></h5><p>新人推荐标记为: <code>good first issue</code> 的 issue</p><h5 id=5-选择一个开发的基础分支通常是-master31-并基于此创建一个新的本地分支>5. <strong>选择一个开发的基础分支,通常是 master/3.1, 并基于此创建一个新的本地分支</strong></h5><p>master/3.1 分支是目前 3.1 版本的开发分支</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=color:#586e75># 从远程仓库创建分支到本地</span>
</span></span><span style=display:flex><span>git checkout -b up-dev-issue#<span style=color:#2aa198>${</span><span style=color:#268bd2>issue</span>-number<span style=color:#2aa198>}</span> upstream/master
</span></span></code></pre></div><p>为了避免一些不必要的麻烦,我们推荐以 &ldquo;upstream&rdquo; 中的分支为基础创建新的本地分支。
可以以要做的事情的简单描述作为分支名(只要你能看懂就行),通常情况下我们会把issue号包含到分支名中,例如上面的 checkout 命令中的。</p><h5 id=6-在本地新建的开发分支上进行各种修改>6. <strong>在本地新建的开发分支上进行各种修改</strong></h5><p>首先请保证您阅读并正确设置Dubbo code style, 相关内容请阅读 <a href=#%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83>编码规范</a></p><p>修改时请保证该本地分支上的修改仅和issue相关,并尽量细化,做到一个分支只修改一件事,一个PR只修改一件事。</p><p>可以在提交注释中添加"#issue号",将该提交与issue关联。</p><h5 id=7-将您开发完成后的分支上传到您fork的仓库>7. <strong>将您开发完成后的分支,上传到您fork的仓库</strong></h5><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>git push origin up-dev-issue#<span style=color:#2aa198>${</span><span style=color:#268bd2>issue</span>-number<span style=color:#2aa198>}</span>
</span></span></code></pre></div><h5 id=8-创建-pull-request>8. <strong>创建 pull request</strong></h5><ul><li>参考<a href=https://github.com/apache/dubbo/blob/master/PULL_REQUEST_TEMPLATE.md>pull request template</a>中的检查列表</li></ul><p>Dubbo社区将会Review您的Pull Request,并可能提出修改意见,您可以根据修改意见回到步骤6进行修改,并使用步骤7进行重新提交。</p><h5 id=9-如果没有问题dubbo社区将会把您的修改合并恭喜您成为dubbo的贡献者>9. <strong>如果没有问题,Dubbo社区将会把您的修改合并,恭喜您成为Dubbo的贡献者。</strong></h5><h4 id=特别说明>特别说明:</h4><ul><li>开源项目一般都是以分支的方式工作,每件事情都创建一个分支。</li><li>创建分支时,不要从本地仓库里的分支里创建,而是从指向主仓库的远程仓库创建。</li><li>不要一直在同一个分支工作, 一个分支只做一件事情,不要在同一个分支做多件事情。</li><li>一直在同一分支中修改,提交都会一直在该分支中。这样就会造成每次PR都会带着之前的所有被merge、未被merge的提交。</li><li>一件事情可以是一个issue,也可以是一个issue中的部分(issue太大可以拆解)。</li><li>一个分支(一件事情)只提一个PR。</li><li>提了PR后,如果PR有问题需要修改,可以继续在这个PR关联的分支修改提交。在PR被merge前,向这个分支继提交都会进入这个PR。</li><li>如果只是想纯更新代码,可以从主仓库提PR到你fork的仓库, 源选择主仓库里的分支,目标选你fork的仓库的分支。</li><li>这种方式更新代码,你fork的仓库中会多一个提交。如果以你fork的仓库中的分支为源创建分支, 这个提交纪录会被带过去并会在PR中, 所以要以主仓库的分支为源创建分支。</li><li>issue 认领: 在要认领的issue中回复,明确表式你将处理这个issue。这样社区的PMC和Committer会把该issue assign给你。当然认领前先看下这个issue有没有被别人认领了。
为了方便,我们可以把认领的回复统一为: <strong>@i will solve it@</strong>, 当然这不是必须的。</li></ul><h4 id=编码规范>编码规范</h4><p>请按照<a href=https://github.com/apache/dubbo/blob/master/CONTRIBUTING.md>CONTRIBUTING.md</a>中的编码规范对自己的代码进行检查。</p><h5 id=代码约定><strong>代码约定</strong></h5><p>我们的代码风格几乎和标准 Java 约定一致(流行IDE的默认设置满足这一点),主要有以下附加限制:</p><ul><li>如果当前行中有超过 120 个字符,则起一个新的行。</li><li>确保所有新的 .java 文件都有一个简单的 JavaDoc 类注释,最好至少有一个关于该类的解释说明。</li><li>将ASF许可注释添加到所有新的 .java 文件(从项目中的现有文件复制)</li><li>请确保没有将 @author 标记添加到您所贡献的文件中,因为 Apache 不使用 @author 标记,其他方式(如cvs)将公平地记录所有您的贡献。</li><li>为代码添加一些 JavaDoc,如果您更改命名空间,则需要一些 XSD DOC 元素。</li><li>对于新的特征或重要的修复程序,应该添加单元测试。</li><li>如果没有其他人使用您的分支,请将它与 master(或主项目中的其他目标分支)同步。</li><li>当编写提交消息时,请遵循这些约定,如果您正在修复一个现有问题,请在提交消息的末尾添加 Fixes XXX(其中XXX是问题编号)。</li></ul><h5 id=代码风格><strong>代码风格</strong></h5><p>我们提供了 IntelliJ idea 的模版文件 dubbo根目录/codestyle/dubbo_codestyle_for_idea.xml,您可以将它导入到IDE。
如果使用 Eclipse,可以通过参考该文件手动配置。</p><p><strong>代码风格检查:</strong></p><ol><li>安装 checkstyle 插件(IDEA可以在插件市场搜索)</li><li>插件安装好后,在IDEA的settings==>tool==>checkstyle中设置:
<img src=/imgs/dev/checkstyle1.png alt=checkstyle1>
<img src=/imgs/dev/checkstyle2.png alt=checkstyle2>
<img src=/imgs/dev/checkstyle3.png alt=checkstyle3>
<img src=/imgs/dev/checkstyle4.png alt=checkstyle4></li></ol><p><strong>注意事项</strong></p><p>使用 dubbo_codestyle_for_idea.xml 为你的 IDEA 设置代码格式是贡献代码前至关重要的一个步骤,否则你将会无法通过 CI 的代码风格校验,下面几个步骤给你演示了如何配置代码格式:</p><ol><li>进入菜单页 Editor > Code Style</li><li>在 Code Style 页面的 scheme 菜单中点击 manage profiles 选项 在下拉列表中选择 Import Scheme, 接着选择 IntelliJ IDEA code style XML 导入 xml 文件</li><li>输入你的格式名称,方便在不同工程之间进行识别,最后别忘了 ⏎ 来保存更改.
设置完成后,IDEA 会帮助你自动 reformat 代码</li></ol><h3 id=参与发布投票>参与发布投票</h3><p>参与发布投票是一种重要的贡献社区的方式,Dubbo 社区非常欢迎和鼓励任何人参与投票,每当一个版本需要正式发布的时候,会在开发者邮件列表上进行发布投票,只有当投票取得通过之后,才会正式发布,可以参考这个<a href=https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist>检查列表</a>对源码进行合规性检查。如果有任何问题,可以在开发者邮件列表上提问。</p><div id=pre-footer><h2>Feedback</h2><p class=feedback--prompt>Was this page helpful?</p><button class="btn btn-primary mb-4 feedback--yes">Yes</button>
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled"),no.disabled=!0,no.classList.add("feedback--button__disabled")};yes.addEventListener("click",()=>{sendFeedback(1),disableButtons(),document.querySelector(".feedback--response").classList.remove("feedback--response__hidden")}),no.addEventListener("click",()=>{sendFeedback(0),disableButtons(),document.querySelector(".feedback--response").classList.remove("feedback--response__hidden")})</script><br><div class="text-muted mt-5 pt-3 border-top">Last modified February 22, 2023: <a href=https://github.com/apache/dubbo-website/commit/4517e8c1c9c4df55793a09aad36473e16a99fb35>Merge refactor website (#2293) (4517e8c1c9)</a></div></div></main><div class="d-none d-xl-block col-xl-2 td-toc d-print-none"><div class="td-page-meta ml-2 pb-1 pt-2 mb-0"><a href=https://github.com/apache/dubbo-website/edit/master/content/en/latest/contribution-guidelines/contributor/new-contributor-guide_dev.md target=_blank><i class="fa fa-edit fa-fw"></i> Edit this page</a>
<a href="https://github.com/apache/dubbo-website/new/master/content/en/latest/contribution-guidelines/contributor/new-contributor-guide_dev.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+the+top+of+the+page+%28weight+controls+how+its+ordered+amongst+other+pages+in+the+same+directory%3B+lowest+number+first%29.%0A%2A+Add+a+good+commit+message+at+the+bottom+of+the+page+%28%3C80+characters%3B+use+the+extended+description+field+for+more+detail%29.%0A%2A+Create+a+new+branch+so+you+can+preview+your+new+file+and+request+a+review+via+Pull+Request.%0A" target=_blank><i class="fa fa-edit fa-fw"></i> Create child page</a>
<a href="https://github.com/apache/dubbo-website/issues/new?title=%e6%96%b0%e8%b4%a1%e7%8c%ae%e8%80%85%e5%90%91%e5%af%bc" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><ul><li><a href=#邮件列表描述>邮件列表描述</a></li><li><a href=#报告问题>报告问题</a></li><li><a href=#贡献代码>贡献代码</a></li><li><a href=#参与发布投票>参与发布投票</a></li></ul></li></ul></nav></div></div></div></div><footer class="bg-dark py-5 row d-print-none footer-margin-0"><div class="container-fluid mx-sm-5"><div class=row><div class="col-6 col-sm-4 text-xs-center order-sm-2"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Dubbo mailing list archive" aria-label="Dubbo mailing list archive"><a class=text-white target=_blank rel="noopener noreferrer" href=https://lists.apache.org/list.html?dev@dubbo.apache.org><i class="fa fa-envelope"></i></a></li></ul></div><div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=GitHub aria-label=GitHub><a class=text-white target=_blank rel="noopener noreferrer" href=https://github.com/apache/dubbo><i class="fab fa-github"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Subscribe to mailing list" aria-label="Subscribe to mailing list"><a class=text-white target=_blank rel="noopener noreferrer" href=mailto:dev-subscribe@dubbo.apache.org><i class="fa fa-envelope"></i></a></li></ul></div><div class="col-12 col-sm-4 text-center py-2 order-sm-2"><small class=text-white>&copy; 2023 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation. All Rights Reserved</small></div></div></div></footer><div class="row pt-2 pb-2 footer-margin-0"><div class="container-fluid mx-sm-5"><div class=text-center id=my-footer><img style=float:left alt=apache_logo src=/imgs/apache_logo.png><ul><li><a href=https://www.apache.org>Foundation</a></li><li><a href=https://www.apache.org/licenses/>License</a></li><li><a href=https://dubbo.apache.org/en/docs/notices/security/>Security</a></li><li><a href=https://www.apache.org/events/current-event>Events</a></li><li><a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a></li><li><a href=https://privacy.apache.org/policies/privacy-policy-public.html>Privacy</a></li><li><a href=https://www.apache.org/foundation/thanks.html>Thanks</a></li></ul></div></div></div><script src=/js/popper.min.js integrity=sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49 crossorigin=anonymous></script><script src=/js/bootstrap.min.js integrity=sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy crossorigin=anonymous></script><script src=/js/main.min.a4534a01940be8c082c4c0e6777b61df9884f202b61c9519352adb6d1039d5aa.js integrity="sha256-pFNKAZQL6MCCxMDmd3th35iE8gK2HJUZNSrbbRA51ao=" crossorigin=anonymous></script><script src=https://cdn.jsdelivr.net/npm/@docsearch/js@3></script><script>docsearch({appId:"L5F4T9F0I1",apiKey:"364ae307e1da9d02b2335675e9db1eb1",indexName:"apache_dubbo",container:"#docsearch",debug:!1}),docsearch({appId:"L5F4T9F0I1",apiKey:"364ae307e1da9d02b2335675e9db1eb1",indexName:"apache_dubbo",container:"#docsearch_zh_home",debug:!1})</script></body></html>