CINXE.COM

<!doctype html> <html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-community docs-doc-id-contribution_guide/contribute" data-has-hydrated="false"> <head> <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v2.4.3"> <title data-rh="true">Participate in Contributing | Apache SeaTunnel</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://seatunnel.apache.org/community/contribution_guide/contribute"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-community-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-community-current"><meta data-rh="true" property="og:title" content="Participate in Contributing | Apache SeaTunnel"><meta data-rh="true" name="description" content="This guide documents the best way to make various types of contribution to Apache SeaTunnel,"><meta data-rh="true" property="og:description" content="This guide documents the best way to make various types of contribution to Apache SeaTunnel,"><link data-rh="true" rel="icon" href="/image/favicon.ico"><link data-rh="true" rel="canonical" href="https://seatunnel.apache.org/community/contribution_guide/contribute"><link data-rh="true" rel="alternate" href="https://seatunnel.apache.org/community/contribution_guide/contribute" hreflang="en"><link data-rh="true" rel="alternate" href="https://seatunnel.apache.org/zh-CN/community/contribution_guide/contribute" hreflang="zh-CN"><link data-rh="true" rel="alternate" href="https://seatunnel.apache.org/community/contribution_guide/contribute" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://S2J1A7LWND-dsn.algolia.net" crossorigin="anonymous"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache SeaTunnel RSS Feed"> <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache SeaTunnel Atom Feed"> <link rel="search" type="application/opensearchdescription+xml" title="Apache SeaTunnel" href="/opensearch.xml"> <link rel="alternate" type="application/rss+xml" href="/user_cases/rss.xml" title="Apache SeaTunnel RSS Feed"> <link rel="alternate" type="application/atom+xml" href="/user_cases/atom.xml" title="Apache SeaTunnel Atom Feed"> <script>var _paq=window._paq=window._paq||[];_paq.push(["setDoNotTrack",!0]),_paq.push(["disableCookies"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),function(){var a="https://analytics.apache.org/";_paq.push(["setTrackerUrl",a+"matomo.php"]),_paq.push(["setSiteId","65"]);var e=document,p=e.createElement("script"),t=e.getElementsByTagName("script")[0];p.async=!0,p.src=a+"matomo.js",t.parentNode.insertBefore(p,t)}()</script><link rel="stylesheet" href="/assets/css/styles.196a51e3.css"> <link rel="preload" href="/assets/js/runtime~main.90e4d198.js" as="script"> <link rel="preload" href="/assets/js/main.45894ca1.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><div class="announcementBar_mb4j" style="background-color:rgb(70, 125, 175, 0.8)" role="banner"><div class="content_knG7 announcementBarContent_xLdY"><a href="https://github.com/apache/seatunnel" target="_blank" style="display: flex; width: 100%; align-items: center; justify-content: center; margin-left: 4px; text-decoration: none;">⭐️ If you like Apache SeaTunnel, give it a star on GitHub <img style="width: 1.2rem; height: 1.2rem; margin-left: 0.4rem;" src="/home/icons/github1.svg"> ⭐️ </a></div></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/image/logo.png" alt="Apache SeaTunnel Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/image/logo.png" alt="Apache SeaTunnel Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Apache SeaTunnel</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/">Home</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Document</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/2.3.9/about">2.3.9</a></li><li><a class="dropdown__link" href="/docs/2.3.8/about">2.3.8</a></li><li><a class="dropdown__link" href="/docs/2.3.7/about">2.3.7</a></li><li><a class="dropdown__link" href="/docs/2.3.6/about">2.3.6</a></li><li><a class="dropdown__link" href="/docs/2.3.5/about">2.3.5</a></li><li><a class="dropdown__link" href="/docs/about">Next</a></li><li><a class="dropdown__link" href="/versions/">All versions</a></li></ul></div><a class="navbar__item navbar__link" href="/download">Download</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/community/contribution_guide/contribute">Community</a><a class="navbar__item navbar__link" href="/blog">Blog</a><a class="navbar__item navbar__link" href="/user_cases">UserCases</a><a class="navbar__item navbar__link" href="/team">Team</a><a class="navbar__item navbar__link" href="/user">Users</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">ASF</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Foundation</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">License</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://apache.org/foundation/policies/privacy.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Privacy</a></li></ul></div><a href="https://github.com/apache/incubator-seatunnel" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a class="navbar__item navbar__link" href="/security">Security</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>English</a><ul class="dropdown__menu"><li><a href="/community/contribution_guide/contribute" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="en">English</a></li><li><a href="/zh-CN/community/contribution_guide/contribute" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="zh-CN">简体中文</a></li></ul></div><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG menuWithAnnouncementBar_GW3s"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/community/contribution_guide/contribute">Contribution Guide</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/community/contribution_guide/contribute">Participate in Contributing</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/contribution_guide/subscribe">Subscribe Mailing Lists</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/contribution_guide/code-review">Code Review Guidance</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/contribution_guide/committer">Become Apache SeaTunnel Committer</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/contribution_guide/release">Become Apache Release Manager</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/community/submit_guide/document">Submit Guide</a></div></li></ul></nav><button type="button" title="Collapse sidebar" aria-label="Collapse sidebar" class="button button--secondary button--outline collapseSidebarButton_PEFL"><svg width="20" height="20" aria-hidden="true" class="collapseSidebarButtonIcon_kv0_"><g fill="#7a7a7a"><path d="M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"></path><path d="M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"></path></g></svg></button></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Contribution Guide</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Participate in Contributing</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Participate in Contributing</h1></header><p>This guide documents the best way to make various types of contribution to Apache SeaTunnel, including what is required before submitting a code change.</p><p>Contributing to SeaTunnel doesn&#x27;t just mean writing code. Helping new users on the mailing list, testing releases, and improving documentation are also welcome. In fact, proposing significant code changes usually requires first gaining experience and credibility within the community by helping in other ways. This is also a guide to becoming an effective contributor.</p><p>So, this guide organizes contributions in order that they should probably be considered by new contributors who intend to get involved long-term. Build some track record of helping others, rather than just open pull requests.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributing-by-helping-other-users">Contributing by helping other users<a href="#contributing-by-helping-other-users" class="hash-link" aria-label="Direct link to Contributing by helping other users" title="Direct link to Contributing by helping other users">​</a></h2><p>A great way to contribute to SeaTunnel is to help answer user questions on the <code>dev@seatunnel.apache.org</code> mailing list or on StackOverflow. There are always many new SeaTunnel users; taking a few minutes to help answer a question is a very valuable community service.</p><p>Contributors should subscribe to this list and follow it in order to keep up to date on what&#x27;s happening in SeaTunnel. Answering questions is an excellent and visible way to help the community, which also demonstrates your expertise.</p><p>See the <a href="https://lists.apache.org/list.html?dev@seatunnel.apache.org" target="_blank" rel="noopener noreferrer">Mailing Lists guide</a> for guidelines about how to effectively participate in discussions on the mailing list, as well as forums like ISSUE.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributing-by-testing-releases">Contributing by testing releases<a href="#contributing-by-testing-releases" class="hash-link" aria-label="Direct link to Contributing by testing releases" title="Direct link to Contributing by testing releases">​</a></h2><p>SeaTunnel&#x27;s release process is community-oriented, and members of the community can vote on new releases on the <code>dev@seatunnel.apache.org</code> mailing list. SeaTunnel users are invited to subscribe to this list to receive announcements, and test their workloads on newer release and provide feedback on any performance or correctness issues found in the newer release.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributing-by-reviewing-changes">Contributing by reviewing changes<a href="#contributing-by-reviewing-changes" class="hash-link" aria-label="Direct link to Contributing by reviewing changes" title="Direct link to Contributing by reviewing changes">​</a></h2><p>Changes to SeaTunnel source code are proposed, reviewed and committed via <a href="https://github.com/apache/incubator-seatunnel/pulls" target="_blank" rel="noopener noreferrer">GitHub pull requests </a> (described later). Anyone can view and comment on active changes here. Reviewing others&#x27; changes is a good way to learn how the change process works and gain exposure to activity in various parts of the code. You can help by reviewing the changes and asking questions or pointing out issues -- as simple as typos or small issues of style.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributing-documentation-changes">Contributing documentation changes<a href="#contributing-documentation-changes" class="hash-link" aria-label="Direct link to Contributing documentation changes" title="Direct link to Contributing documentation changes">​</a></h2><p>To propose a change to <em>release</em> documentation (that is, docs that appear under <a href="https://github.com/apache/incubator-seatunnel/tree/dev/docs" target="_blank" rel="noopener noreferrer">docs</a> edit the Markdown source files in SeaTunnel&#x27;s <a href="https://github.com/apache/incubator-seatunnel/tree/dev/docs" target="_blank" rel="noopener noreferrer">docs</a> directory, whose <code>README</code> file shows how to build the documentation locally to test your changes. The process to propose a doc change is otherwise the same as the process for proposing code changes below.</p><p>To propose a change to the rest of the documentation (that is, docs that do <em>not</em> appear under <a href="https://github.com/apache/incubator-seatunnel/tree/dev/docs" target="_blank" rel="noopener noreferrer">docs</a> , similarly, edit the Markdown in the <a href="https://github.com/apache/incubator-seatunnel-website" target="_blank" rel="noopener noreferrer">website</a> and open a pull request.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributing-bug-reports">Contributing bug reports<a href="#contributing-bug-reports" class="hash-link" aria-label="Direct link to Contributing bug reports" title="Direct link to Contributing bug reports">​</a></h2><p>Ideally, bug reports are accompanied by a proposed code change to fix the bug. This isn&#x27;t always possible, as those who discover a bug may not have the experience to fix it. A bug may be reported by creating a ISSUE but without creating a pull request (see below).</p><p>Bug reports are only useful however if they include enough information to understand, isolate and ideally reproduce the bug. Simply encountering an error does not mean a bug should be reported; as below, search ISSUE and search and inquire on the SeaTunnel user / dev mailing lists first. Unreproducible bugs, or simple error reports, may be closed.</p><p>It&#x27;s very helpful if the bug report has a description about how the bug was introduced, by which commit, so that reviewers can easily understand the bug. It also helps committers to decide how far the bug fix should be backported, when the pull request is merged. The pull request to fix the bug should narrow down the problem to the root cause.</p><p>Performance regression is also one kind of bug. The pull request to fix a performance regression must provide a benchmark to prove the problem is indeed fixed.</p><p>Note that, data correctness/data loss bugs are very serious. Make sure the corresponding bug report ISSUE ticket is labeled as <code>correctness</code> or <code>data-loss</code>. If the bug report doesn&#x27;t get enough attention, please send an email to <code>dev@seatunnel.apache.org</code>, to draw more attentions.</p><p>It is possible to propose new features as well. These are generally not helpful unless accompanied by detail, such as a design document and/or code change. Large new contributions should consider be discussed on the mailing list first. Feature requests may be rejected, or closed after a long period of inactivity.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributing-to-issue-maintenance">Contributing to ISSUE maintenance<a href="#contributing-to-issue-maintenance" class="hash-link" aria-label="Direct link to Contributing to ISSUE maintenance" title="Direct link to Contributing to ISSUE maintenance">​</a></h2><p>Given the sheer volume of issues raised in the Apache SeaTunnel ISSUE, inevitably some issues are duplicates, or become obsolete and eventually fixed otherwise, or can&#x27;t be reproduced, or could benefit from more detail, and so on. It&#x27;s useful to help identify these issues and resolve them, either by advancing the discussion or even resolving the ISSUE. Most contributors are able to directly resolve ISSUEs. Use judgment in determining whether you are quite confident the issue should be resolved, although changes can be easily undone. If in doubt, just leave a comment on the ISSUE.</p><p>When resolving ISSUEs, observe a few useful conventions:</p><ul><li>Resolve as <strong>Fixed</strong> if there&#x27;s a change you can point to that resolved the issue<ul><li>Set Fix Version(s), if and only if the resolution is Fixed</li><li>Set Assignee to the person who most contributed to the resolution, which is usually the person who opened the PR that resolved the issue.</li><li>In case several people contributed, prefer to assign to the more &#x27;junior&#x27;, non-committer contributor</li></ul></li><li>For issues that can&#x27;t be reproduced against master as reported, resolve as <strong>Cannot Reproduce</strong><ul><li>Fixed is reasonable too, if it&#x27;s clear what other previous pull request resolved it. Link to it.</li></ul></li><li>If the issue is the same as or a subset of another issue, resolved as <strong>Duplicate</strong><ul><li>Make sure to link to the ISSUE it duplicates</li><li>Prefer to resolve the issue that has less activity or discussion as the duplicate</li></ul></li><li>If the issue seems clearly obsolete and applies to issues or components that have changed radically since it was opened, resolve as <strong>Not a Problem</strong></li><li>If the issue doesn&#x27;t make sense – not actionable, for example, a non-SeaTunnel issue, resolve as <strong>Invalid</strong></li><li>If it&#x27;s a coherent issue, but there is a clear indication that there is not support or interest in acting on it, then resolve as <strong>Won&#x27;t Fix</strong></li><li>Umbrellas are frequently marked <strong>Done</strong> if they are just container issues that don&#x27;t correspond to an actionable change of their own</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="preparing-to-contribute-code-changes">Preparing to contribute code changes<a href="#preparing-to-contribute-code-changes" class="hash-link" aria-label="Direct link to Preparing to contribute code changes" title="Direct link to Preparing to contribute code changes">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="choosing-what-to-contribute">Choosing what to contribute<a href="#choosing-what-to-contribute" class="hash-link" aria-label="Direct link to Choosing what to contribute" title="Direct link to Choosing what to contribute">​</a></h3><p>Review can take hours or days of committer time. Everyone benefits if contributors focus on changes that are useful, clear, easy to evaluate, and already pass basic checks.</p><p>Sometimes, a contributor will already have a particular new change or bug in mind. If seeking ideas, consult the list of starter tasks in ISSUE, or ask the <code>dev@seatunnel.apache.org</code> mailing list.</p><p>Before proceeding, contributors should evaluate if the proposed change is likely to be relevant, new and actionable:</p><ul><li>Is it clear that code must change? Proposing a ISSUE and pull request is appropriate only when a clear problem or change has been identified. If simply having trouble using SeaTunnel, use the mailing lists first, rather than consider filing a ISSUE or proposing a change. When in doubt, email <code>dev@seatunnel.apache.org</code> first about the possible change</li><li>Search the <code>dev@seatunnel.apache.org</code> mailing list for related discussions. Often, the problem has been discussed before, with a resolution that doesn&#x27;t require a code change, or recording what kinds of changes will not be accepted as a resolution.</li><li>Search ISSUE for existing issues: <a href="https://github.com/apache/incubator-seatunnel/issues" target="_blank" rel="noopener noreferrer">ISSUES</a></li><li>Type <code>SeaTunnel [search terms]</code> at the top right search box. If a logically similar issue already exists, then contribute to the discussion on the existing ISSUE and pull request first, instead of creating a new one.</li><li>Is the scope of the change matched to the contributor&#x27;s level of experience? Anyone is qualified to suggest a typo fix, but refactoring core scheduling logic requires much more understanding of SeaTunnel. Some changes require building up experience first (see above).</li></ul><p>It&#x27;s worth reemphasizing that changes to the core of SeaTunnel, or to highly complex and important modules are more difficult to make correctly. They will be subjected to more scrutiny and held to a higher standard of review than changes to less critical code.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="error-message-guidelines">Error message guidelines<a href="#error-message-guidelines" class="hash-link" aria-label="Direct link to Error message guidelines" title="Direct link to Error message guidelines">​</a></h3><p>Exceptions thrown in SeaTunnel should be associated with standardized and actionable error messages.</p><p>Error messages should answer the following questions:</p><ul><li><strong>What</strong> was the problem?</li><li><strong>Why</strong> did the problem happen?</li><li><strong>How</strong> can the problem be solved?</li></ul><p>When writing error messages, you should:</p><ul><li>Use active voice</li><li>Avoid time-based statements, such as promises of future support</li><li>Use the present tense to describe the error and provide suggestions</li><li>Provide concrete examples if the resolution is unclear</li><li>Avoid sounding accusatory, judgmental, or insulting</li><li>Be direct</li><li>Do not use programming jargon in user-facing errors</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="code-review-criteria">Code review criteria<a href="#code-review-criteria" class="hash-link" aria-label="Direct link to Code review criteria" title="Direct link to Code review criteria">​</a></h3><p>Before considering how to contribute code, it&#x27;s useful to understand how code is reviewed, and why changes may be rejected. See the <a href="https://google.github.io/eng-practices/review/" target="_blank" rel="noopener noreferrer">detailed guide for code reviewers</a> from Google&#x27;s Engineering Practices documentation. Simply put, changes that have many or large positives, and few negative effects or risks, are much more likely to be merged, and merged quickly. Risky and less valuable changes are very unlikely to be merged, and may be rejected outright rather than receive iterations of review.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="positives">Positives<a href="#positives" class="hash-link" aria-label="Direct link to Positives" title="Direct link to Positives">​</a></h4><ul><li>Fixes the root cause of a bug in existing functionality</li><li>Adds functionality or fixes a problem needed by a large number of users</li><li>Simple, targeted</li><li>Easily tested; has tests</li><li>Reduces complexity and lines of code</li><li>Change has already been discussed and is known to committers</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="negatives-risks">Negatives, risks<a href="#negatives-risks" class="hash-link" aria-label="Direct link to Negatives, risks" title="Direct link to Negatives, risks">​</a></h4><ul><li>Band-aids a symptom of a bug only</li><li>Introduces complex new functionality, especially an API that needs to be supported</li><li>Adds complexity that only helps a niche use case</li><li>Changes a public API or semantics (rarely allowed)</li><li>Adds large dependencies</li><li>Changes versions of existing dependencies</li><li>Adds a large amount of code</li><li>Makes lots of modifications in one &quot;big bang&quot; change</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributing-code-changes">Contributing code changes<a href="#contributing-code-changes" class="hash-link" aria-label="Direct link to Contributing code changes" title="Direct link to Contributing code changes">​</a></h2><p>Please review the preceding section before proposing a code change. This section documents how to do so.</p><p><strong>When you contribute code, you affirm that the contribution is your original work and that you license the work to the project under the project&#x27;s open source license. Whether or not you state this explicitly, by submitting any copyrighted material via pull request, email, or other means you agree to license the material under the project&#x27;s open source license and warrant that you have the legal authority to do so.</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="cloning-the-apache-seatunnel-source-code">Cloning the Apache SeaTunnel<span class="tm">™</span> source code<a href="#cloning-the-apache-seatunnel-source-code" class="hash-link" aria-label="Direct link to cloning-the-apache-seatunnel-source-code" title="Direct link to cloning-the-apache-seatunnel-source-code">​</a></h3><p>If you are interested in working with the newest under-development code or contributing to Apache SeaTunnel development, you can check out the master branch from Git:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Master development branch</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">git clone git@github.com:apache/incubator-seatunnel.git</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Once you&#x27;ve downloaded SeaTunnel, you can find instructions for installing and building it on the <a href="https://github.com/apache/incubator-seatunnel/tree/dev/docs" target="_blank" rel="noopener noreferrer">documentation page</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="issue">ISSUE<a href="#issue" class="hash-link" aria-label="Direct link to ISSUE" title="Direct link to ISSUE">​</a></h3><p>Generally, SeaTunnel uses ISSUE to track logical issues, including bugs and improvements, and uses GitHub pull requests to manage the review and merge of specific code changes. That is, ISSUEs are used to describe <em>what</em> should be fixed or changed, and high-level approaches, and pull requests describe <em>how</em> to implement that change in the project&#x27;s source code. For example, major design decisions are discussed in ISSUE.</p><ol><li>Find the existing SeaTunnel ISSUE that the change pertains to.<ol><li>Do not create a new ISSUE if creating a change to address an existing issue in ISSUE; add to the existing discussion and work instead</li><li>Look for existing pull requests that are linked from the ISSUE, to understand if someone is already working on the ISSUE</li></ol></li><li>If the change is new, then it usually needs a new ISSUE. However, trivial changes, where the what should change is virtually the same as the how it should change do not require a ISSUE. Example: <code>Fix typos in Foo scaladoc</code></li><li>If required, create a new ISSUE:<ol><li>Provide a descriptive Title. &quot;Update web UI&quot; or &quot;Problem in scheduler&quot; is not sufficient. &quot;Kafka Streaming support fails to handle empty queue in YARN cluster mode&quot; is good.</li><li>Write a detailed Description. For bug reports, this should ideally include a short reproduction of the problem. For new features, it may include a design document.</li><li>Set required fields:<ol><li><strong>Issue Type</strong>. Generally, Bug, Improvement and New Feature are the only types used in SeaTunnel.</li><li><strong>Priority</strong>. Set to Major or below; higher priorities are generally reserved for committers to set. The main exception is correctness or data-loss issues, which can be flagged as Blockers. ISSUE tends to unfortunately conflate &quot;size&quot; and &quot;importance&quot; in its Priority field values. Their meaning is roughly:<ol><li>Blocker: pointless to release without this change as the release would be unusable to a large minority of users. Correctness and data loss issues should be considered Blockers for their target versions.</li><li>Critical: a large minority of users are missing important functionality without this, and/or a workaround is difficult</li><li>Major: a small minority of users are missing important functionality without this, and there is a workaround</li><li>Minor: a niche use case is missing some support, but it does not affect usage or is easily worked around</li><li>Trivial: a nice-to-have change but unlikely to be any problem in practice otherwise</li></ol></li><li><strong>Component</strong></li><li><strong>Affects Version</strong>. For Bugs, assign at least one version that is known to exhibit the problem or need the change</li><li><strong>Label</strong>. Not widely used, except for the following:<ul><li><code>correctness</code>: a correctness issue</li><li><code>data-loss</code>: a data loss issue</li><li><code>release-notes</code>: the change&#x27;s effects need mention in release notes. The ISSUE or pull request should include detail suitable for inclusion in release notes -- see &quot;Docs Text&quot; below.</li><li><code>starter</code>: small, simple change suitable for new contributors</li></ul></li><li><strong>Docs Text</strong>: For issues that require an entry in the release notes, this should contain the information that the release manager should include in Release Notes. This should include a short summary of what behavior is impacted, and detail on what behavior changed. It can be provisionally filled out when the ISSUE is opened, but will likely need to be updated with final details when the issue is resolved.</li></ol></li><li>Do not set the following fields:<ol><li><strong>Fix Version</strong>. This is assigned by committers only when resolved.</li><li><strong>Target Version</strong>. This is assigned by committers to indicate a PR has been accepted for possible fix by the target version.</li></ol></li><li>Do not include a patch file; pull requests are used to propose the actual change.</li></ol></li><li>If the change is a large change, consider inviting discussion on the issue at <code>dev@seatunnel.apache.org</code> first before proceeding to implement the change.</li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="pull-request">Pull request<a href="#pull-request" class="hash-link" aria-label="Direct link to Pull request" title="Direct link to Pull request">​</a></h3><ol><li><a href="https://help.github.com/articles/fork-a-repo/" target="_blank" rel="noopener noreferrer">Fork</a> the GitHub repository at <a href="https://github.com/apache/incubator-seatunnel/" target="_blank" rel="noopener noreferrer">incubator-seatunnel</a> if you haven&#x27;t already</li><li>Clone your fork, create a new branch, push commits to the branch.</li><li>Consider whether documentation or tests need to be added or updated as part of the change, and add them as needed.<ol><li>When you add tests, make sure the tests are self-descriptive.</li><li>Also, you should consider writing a ISSUE ID in the tests when your pull request targets to fix a specific issue. In practice, usually it is added when a ISSUE type is a bug or a PR adds a couple of tests to an existing test class. See the examples below:<ul><li>Scala<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">test(&quot;SeaTunnel-12345: a short description of the test&quot;) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ...</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li>Java<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">@Test</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public void testCase() {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> // SeaTunnel-12345: a short description of the test</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ...</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ul></li></ol></li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-review-process">The review process<a href="#the-review-process" class="hash-link" aria-label="Direct link to The review process" title="Direct link to The review process">​</a></h3><ul><li>Other reviewers, including committers, may comment on the changes and suggest modifications. Changes can be added by simply pushing more commits to the same branch.</li><li>Lively, polite, rapid technical debate is encouraged from everyone in the community. The outcome may be a rejection of the entire change.</li><li>Keep in mind that changes to more critical parts of SeaTunnel, like its core components, will be subjected to more review, and may require more testing and proof of its correctness than other changes.</li><li>Reviewers can indicate that a change looks suitable for merging with a comment such as: &quot;I think this patch looks good&quot;. SeaTunnel uses the LGTM convention for indicating the strongest level of technical sign-off on a patch: simply comment with the word &quot;LGTM&quot;. It specifically means: &quot;I&#x27;ve looked at this thoroughly and take as much ownership as if I wrote the patch myself&quot;. If you comment LGTM you will be expected to help with bugs or follow-up issues on the patch. Consistent, judicious use of LGTMs is a great way to gain credibility as a reviewer with the broader community.</li><li>Sometimes, other changes will be merged which conflict with your pull request&#x27;s changes. The PR can&#x27;t be merged until the conflict is resolved. This can be resolved by, for example, adding a remote to keep up with upstream changes by <code>git remote add upstream git@github.com:apache/incubator-seatunnel.git</code>, running <code>git fetch upstream</code> followed by <code>git rebase upstream/master</code> and resolving the conflicts by hand, then pushing the result to your branch.</li><li>Try to be responsive to the discussion rather than let days pass between replies</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="closing-your-pull-request--issue">Closing your pull request / ISSUE<a href="#closing-your-pull-request--issue" class="hash-link" aria-label="Direct link to Closing your pull request / ISSUE" title="Direct link to Closing your pull request / ISSUE">​</a></h3><ul><li>If a change is accepted, it will be merged and the pull request will automatically be closed, along with the associated ISSUE if any<ul><li>Note that in the rare case you are asked to open a pull request against a branch besides <code>master</code>, that you will actually have to close the pull request manually</li><li>The ISSUE will be Assigned to the primary contributor to the change as a way of giving credit. If the ISSUE isn&#x27;t closed and/or Assigned promptly, comment on the ISSUE.</li></ul></li><li>If your pull request is ultimately rejected, please close it promptly<ul><li>... because committers can&#x27;t close PRs directly</li><li>Pull requests will be automatically closed by an automated process at Apache after about a week if a committer has made a comment like &quot;mind closing this PR?&quot; This means that the committer is specifically requesting that it be closed.</li></ul></li><li>If a pull request has gotten little or no attention, consider improving the description or the change itself and ping likely reviewers again after a few days. Consider proposing a change that&#x27;s easier to include, like a smaller and/or less invasive change.</li><li>If it has been reviewed but not taken up after weeks, after soliciting review from the most relevant reviewers, or, has met with neutral reactions, the outcome may be considered a &quot;soft no&quot;. It is helpful to withdraw and close the PR in this case.</li><li>If a pull request is closed because it is deemed not the right approach to resolve a ISSUE, then leave the ISSUE open. However if the review makes it clear that the issue identified in the ISSUE is not going to be resolved by any pull request (not a problem, won&#x27;t fix) then also resolve the ISSUE.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="if-in-doubt">If in doubt<a href="#if-in-doubt" class="hash-link" aria-label="Direct link to If in doubt" title="Direct link to If in doubt">​</a></h3><p>If you&#x27;re not sure about the right style for something, try to follow the style of the existing codebase. Look at whether there are other examples in the code that use your feature. Feel free to ask on the <code>dev@seatunnel.apache.org</code> list as well and/or ask committers.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="code-of-conduct">Code of conduct<a href="#code-of-conduct" class="hash-link" aria-label="Direct link to Code of conduct" title="Direct link to Code of conduct">​</a></h2><p>The Apache SeaTunnel project follows the <a href="https://www.apache.org/foundation/policies/conduct.html" target="_blank" rel="noopener noreferrer">Apache Software Foundation Code of Conduct</a>. The <a href="https://www.apache.org/foundation/policies/conduct.html" target="_blank" rel="noopener noreferrer">code of conduct</a> applies to all spaces managed by the Apache Software Foundation, including IRC, all public and private mailing lists, issue trackers, wikis, blogs, Twitter, and any other communication channel used by our communities. A code of conduct which is specific to in-person events (ie., conferences) is codified in the published ASF anti-harassment policy.</p><p>We expect this code of conduct to be honored by everyone who participates in the Apache community formally or informally, or claims any affiliation with the Foundation, in any Foundation-related activities and especially when representing the ASF, in any role.</p><p>This code <u>is not exhaustive or complete</u>. It serves to distill our common understanding of a collaborative, shared environment and goals. We expect it to be followed in spirit as much as in the letter, so that it can enrich all of us and the technical communities in which we participate.</p><p>For more information and specific guidelines, refer to the <a href="https://www.apache.org/foundation/policies/conduct.html" target="_blank" rel="noopener noreferrer">Apache Software Foundation Code of Conduct</a> .</p><p>Acknowledgement: This document refers to <a href="https://spark.apache.org/contributing.html" target="_blank" rel="noopener noreferrer">Spark</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-seatunnel-website/edit/main/community/contribution_guide/contribute.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--next" href="/community/contribution_guide/subscribe"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Subscribe Mailing Lists</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#contributing-by-helping-other-users" class="table-of-contents__link toc-highlight">Contributing by helping other users</a></li><li><a href="#contributing-by-testing-releases" class="table-of-contents__link toc-highlight">Contributing by testing releases</a></li><li><a href="#contributing-by-reviewing-changes" class="table-of-contents__link toc-highlight">Contributing by reviewing changes</a></li><li><a href="#contributing-documentation-changes" class="table-of-contents__link toc-highlight">Contributing documentation changes</a></li><li><a href="#contributing-bug-reports" class="table-of-contents__link toc-highlight">Contributing bug reports</a></li><li><a href="#contributing-to-issue-maintenance" class="table-of-contents__link toc-highlight">Contributing to ISSUE maintenance</a></li><li><a href="#preparing-to-contribute-code-changes" class="table-of-contents__link toc-highlight">Preparing to contribute code changes</a><ul><li><a href="#choosing-what-to-contribute" class="table-of-contents__link toc-highlight">Choosing what to contribute</a></li><li><a href="#error-message-guidelines" class="table-of-contents__link toc-highlight">Error message guidelines</a></li><li><a href="#code-review-criteria" class="table-of-contents__link toc-highlight">Code review criteria</a></li></ul></li><li><a href="#contributing-code-changes" class="table-of-contents__link toc-highlight">Contributing code changes</a><ul><li><a href="#cloning-the-apache-seatunnel-source-code" class="table-of-contents__link toc-highlight">Cloning the Apache SeaTunnel<span class="tm">™</span> source code</a></li><li><a href="#issue" class="table-of-contents__link toc-highlight">ISSUE</a></li><li><a href="#pull-request" class="table-of-contents__link toc-highlight">Pull request</a></li><li><a href="#the-review-process" class="table-of-contents__link toc-highlight">The review process</a></li><li><a href="#closing-your-pull-request--issue" class="table-of-contents__link toc-highlight">Closing your pull request / ISSUE</a></li><li><a href="#if-in-doubt" class="table-of-contents__link toc-highlight">If in doubt</a></li></ul></li><li><a href="#code-of-conduct" class="table-of-contents__link toc-highlight">Code of conduct</a></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">SeaTunnel</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/faq">FAQ</a></li><li class="footer__item"><a href="https://github.com/apache/incubator-seatunnel/releases" target="_blank" rel="noopener noreferrer" class="footer__link-item">Releases<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/apache/incubator-seatunnel" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://github.com/apache/incubator-seatunnel/issues" target="_blank" rel="noopener noreferrer" class="footer__link-item">Issue Tracker<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://github.com/apache/incubator-seatunnel/pulls" target="_blank" rel="noopener noreferrer" class="footer__link-item">Pull Requests<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Subscribe Mailing List</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/community/contribution_guide/subscribe">How to Subscribe</a></li><li class="footer__item"><a href="mailto:dev-subscribe@seatunnel.apache.org" target="_blank" rel="noopener noreferrer" class="footer__link-item">Subscribe Mail<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://lists.apache.org/list.html?dev@seatunnel.apache.org" target="_blank" rel="noopener noreferrer" class="footer__link-item">Mail Archive<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright"> <div style="margin-top: 20px;"> <img style="height:50px;margin: 30px 0 10px;" alt="Apache Software Foundation" src="/image/asf_logo_wide.svg"> <div style="border-top: 1px solid #ccc;min-height: 60px;line-height: 20px;text-align: center;font-family: Avenir-Medium;font-size: 14px;color: #999;display: flex;align-items: center;"><span>Copyright © 2021-2025 The Apache Software Foundation. Apache SeaTunnel, SeaTunnel, and its feather logo are trademarks of The Apache Software Foundation.</span></div> <div style="text-align: center;"> <a href="https://twitter.com/asfseatunnel?s=21" target="_blank" title="Twitter"><svg t="1644553365083" class="icon" viewBox="0 0 1260 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7015" width="38" height="38"><path d="M1259.846921 121.148242c-46.524504 20.728739-96.273478 34.547899-148.325646 40.536201 53.434084-31.784067 94.430924-82.454319 113.777747-142.797982-50.209613 29.480874-105.486251 51.13089-164.447999 62.646857A257.584528 257.584528 0 0 0 872.449815 0.000276c-142.797982 0-258.418284 115.620302-258.418284 258.418284 0 20.268101 2.303193 40.075563 6.909579 58.961748C405.82286 306.32498 215.579097 203.602561 87.98219 47.446058c-22.110655 38.233008-35.008538 82.454319-35.008538 129.900099 0 89.824537 45.603227 168.593747 115.159663 215.118251-42.378756-1.381916-81.99368-12.897882-117.002217-32.244706v3.224471c0 125.293713 88.90326 229.398049 207.287393 253.351259-21.650017 5.988302-44.681949 9.212773-68.17452 9.212773-16.582991 0-32.705344-1.842555-48.827697-4.606387 32.705344 102.722419 128.518184 177.345881 241.374653 179.649074-88.442621 69.095798-199.917175 110.553277-321.06514 110.553277-20.728739 0-41.457479-1.381916-61.72558-3.685109 114.238386 73.241546 250.126788 116.08094 396.149241 116.08094 475.379089 0 735.179289-393.846048 735.179289-735.179289 0-11.055328-0.460639-22.571294-0.921277-33.626621 51.13089-36.851092 94.891562-82.454319 129.439461-134.045848z" fill="#909094" p-id="7016"></path></svg></a> <a href="https://s.apache.org/seatunnel-slack" target="_blank" title="Slack" style="margin-left: 20px;"><svg t="1644553076784" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3088" width="36" height="36"><path d="M215.125333 647.04a107.861333 107.861333 0 0 1-107.52 107.648A107.861333 107.861333 0 0 1 0 647.04a107.818667 107.818667 0 0 1 107.605333-107.52h107.52v107.52z m54.229334 0a107.818667 107.818667 0 0 1 107.562666-107.52 107.818667 107.818667 0 0 1 107.562667 107.52v269.354667A107.861333 107.861333 0 0 1 376.917333 1024a107.861333 107.861333 0 0 1-107.562666-107.605333v-269.354667zM376.917333 215.125333a107.861333 107.861333 0 0 1-107.562666-107.52A107.861333 107.861333 0 0 1 376.917333 0a107.861333 107.861333 0 0 1 107.562667 107.605333v107.52H376.917333z m0 54.229334a107.861333 107.861333 0 0 1 107.562667 107.562666 107.861333 107.861333 0 0 1-107.562667 107.562667H107.605333A107.861333 107.861333 0 0 1 0 376.917333a107.861333 107.861333 0 0 1 107.605333-107.562666h269.312z m431.872 107.562666a107.861333 107.861333 0 0 1 107.605334-107.562666A107.861333 107.861333 0 0 1 1024 376.917333a107.861333 107.861333 0 0 1-107.605333 107.562667h-107.605334V376.917333z m-54.101333 0a107.861333 107.861333 0 0 1-107.648 107.562667 107.818667 107.818667 0 0 1-107.52-107.562667V107.605333A107.818667 107.818667 0 0 1 647.04 0a107.861333 107.861333 0 0 1 107.648 107.605333v269.312z m-107.648 431.872a107.861333 107.861333 0 0 1 107.648 107.605334A107.861333 107.861333 0 0 1 647.04 1024a107.818667 107.818667 0 0 1-107.52-107.605333v-107.605334h107.52z m0-54.101333a107.818667 107.818667 0 0 1-107.52-107.648 107.776 107.776 0 0 1 107.52-107.52h269.354667A107.818667 107.818667 0 0 1 1024 647.04a107.861333 107.861333 0 0 1-107.605333 107.648h-269.354667z" p-id="3089" fill="#909094"></path></svg></a> <a href="https://lists.apache.org/list.html?dev@seatunnel.apache.org" target="_blank" title="Mailing list" style="margin-left: 20px;"><svg t="1644553175467" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5304" width="39" height="39"><path d="M853.333333 170.666667H170.666667c-46.933333 0-85.333333 38.4-85.333334 85.333333v512c0 46.933333 38.4 85.333333 85.333334 85.333333h682.666666c46.933333 0 85.333333-38.4 85.333334-85.333333V256c0-46.933333-38.4-85.333333-85.333334-85.333333z m0 170.666666l-341.333333 213.333334-341.333333-213.333334V256l341.333333 213.333333 341.333333-213.333333v85.333333z" p-id="5305" fill="#909094"></path></svg></a> <a href="https://github.com/apache/seatunnel" target="_blank" title="GitHub" style="margin-left: 20px;"><svg t="1644553223000" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6156" width="36" height="36"><path d="M512 12.64c-282.752 0-512 229.216-512 512 0 226.208 146.72 418.144 350.144 485.824 25.6 4.736 35.008-11.104 35.008-24.64 0-12.192-0.48-52.544-0.704-95.328-142.464 30.976-172.512-60.416-172.512-60.416-23.296-59.168-56.832-74.912-56.832-74.912-46.464-31.776 3.52-31.136 3.52-31.136 51.392 3.616 78.464 52.768 78.464 52.768 45.664 78.272 119.776 55.648 148.992 42.56 4.576-33.088 17.856-55.68 32.512-68.48-113.728-12.928-233.28-56.864-233.28-253.024 0-55.904 20-101.568 52.768-137.44-5.312-12.896-22.848-64.96 4.96-135.488 0 0 43.008-13.76 140.832 52.48a491.296 491.296 0 0 1 128.16-17.248c43.488 0.192 87.328 5.888 128.256 17.248 97.728-66.24 140.64-52.48 140.64-52.48 27.872 70.528 10.336 122.592 5.024 135.488 32.832 35.84 52.704 81.536 52.704 137.44 0 196.64-119.776 239.936-233.792 252.64 18.368 15.904 34.72 47.04 34.72 94.816 0 68.512-0.608 123.648-0.608 140.512 0 13.632 9.216 29.6 35.168 24.576C877.472 942.624 1024 750.784 1024 524.64c0-282.784-229.248-512-512-512z" p-id="6157" fill="#909094"></path></svg></a> </div> <div></div></div></div></div></div></footer></div> <script src="/assets/js/runtime~main.90e4d198.js"></script> <script src="/assets/js/main.45894ca1.js"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10