(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{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("wx14"),r=a("zLVn"),i=(a("q1tI"),a("7ljp")),o=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 c={_frontmatter:s},b=o.a;function p(e){var t=e.components,a=Object(r.a)(e,["components"]);return Object(i.b)(b,Object(n.a)({},c,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"contributing-to-superset"},"Contributing to Superset"),Object(i.b)("p",null,"Superset is currently being incubated at\n",Object(i.b)("a",{href:"https://www.apache.org/theapacheway/index.html",parentName:"p"},"the Apache Software Foundation"),". The core\ncontributors (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",{href:"https://lists.apache.org/list.html?dev@superset.apache.org",parentName:"li"},"mailing list")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{href:"https://apache-superset.slack.com/join/shared_invite/zt-g8lpruog-HeqpgYrwdfrD5OYhlU7hPQ#/",parentName:"li"},"Apache Superset Slack community")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{href:"https://github.com/apache/incubator-superset/issues",parentName:"li"},"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",{href:"https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md",parentName:"p"},"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",{href:"https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#types-of-contributions",parentName:"li"},"Overview of types of contributions")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{href:"https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#pull-request-guidelines",parentName:"li"},"Pull request guidelines")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{href:"https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#managing-issues-and-prs",parentName:"li"},"Managing Issues and PR's")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{href:"https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#setup-local-environment-for-development",parentName:"li"},"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-929990872d922fe719b2.js.map