(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{Ojim:function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return s})),a.d(t,"default",(function(){return p}));var n=a("k1TG"),r=a("8o2o"),i=(a("q1tI"),a("7ljp")),c=a("hhGP"),s=(a("qKvR"),{});void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!s.hasOwnProperty("__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/pages/docs/contributing-page.mdx"}});var o={_frontmatter:s},b=c.a;function p(e){var t=e.components,a=Object(r.a)(e,["components"]);return Object(i.b)(b,Object(n.a)({},o,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"contributing-to-superset"},"Contributing to Superset"),Object(i.b)("p",null,"Superset is an ",Object(i.b)("a",Object(n.a)({parentName:"p"},{href:"https://www.apache.org/theapacheway/index.html"}),"Apache Software foundation")," project.\nThe core contributors (or committers) to Superset communicate primarily in the following channels (all of\nwhich you can join):"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",Object(n.a)({parentName:"li"},{href:"https://lists.apache.org/list.html?dev@superset.apache.org"}),"Mailing list")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",Object(n.a)({parentName:"li"},{href:"https://join.slack.com/t/apache-superset/shared_invite/zt-l5f5e0av-fyYu8tlfdqbMdz_sPLwUqQ"}),"Apache Superset Slack community")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/apache/superset/issues"}),"Github issues and PR's"))),Object(i.b)("p",null,"If you're interested in contributing, we recommend reading the Community Contribution Guide\n",Object(i.b)("a",Object(n.a)({parentName:"p"},{href:"https://github.com/apache/superset/blob/master/CONTRIBUTING.md"}),"described in CONTRIBUTING.MD"),"\nto get started. Here are some helpful links from that page:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/apache/superset/blob/master/CONTRIBUTING.md#types-of-contributions"}),"Overview of types of contributions")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/apache/superset/blob/master/CONTRIBUTING.md#pull-request-guidelines"}),"Pull request guidelines")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/apache/superset/blob/master/CONTRIBUTING.md#managing-issues-and-prs"}),"Managing Issues and PR's")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/apache/superset/blob/master/CONTRIBUTING.md#setup-local-environment-for-development"}),"Setting up local environment for development"))))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!p.hasOwnProperty("__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/pages/docs/contributing-page.mdx"}}),p.isMDXComponent=!0}}]);
//# sourceMappingURL=component---src-pages-docs-contributing-page-mdx-e5eb60f8898805ffc262.js.map