{"version":3,"sources":["webpack:///./src/pages/docs/contributing-page.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","isMDXComponent"],"mappings":"wPAMaA,G,UAAe,S,sNAE5B,IAKMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAC5E,iBAAQ,CACN,GAAM,4BADR,4BAGA,kEAEE,gBAAO,CACL,KAAQ,iDACR,WAAc,KAFhB,kCAFF,sIASA,sBAEE,iBAAQ,CACN,WAAc,MACb,gBAAO,CACN,KAAQ,6DACR,WAAc,MAFf,iBAMH,iBAAQ,CACN,WAAc,MACb,gBAAO,CACN,KAAQ,4FACR,WAAc,MAFf,oCAMH,iBAAQ,CACN,WAAc,MACb,gBAAO,CACN,KAAQ,sDACR,WAAc,MAFf,4BAML,qHAEE,gBAAO,CACL,KAAQ,2EACR,WAAc,KAFhB,gCAFF,iEAQA,sBAEE,iBAAQ,CACN,WAAc,MACb,gBAAO,CACN,KAAQ,kGACR,WAAc,MAFf,uCAMH,iBAAQ,CACN,WAAc,MACb,gBAAO,CACN,KAAQ,mGACR,WAAc,MAFf,4BAMH,iBAAQ,CACN,WAAc,MACb,gBAAO,CACN,KAAQ,mGACR,WAAc,MAFf,6BAMH,iBAAQ,CACN,WAAc,MACb,gBAAO,CACN,KAAQ,mHACR,WAAc,MAFf,wD,oNAUTH,EAAWI,gBAAiB","file":"component---src-pages-docs-contributing-page-mdx-c211bf38930c4f5dc45b.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/srinify/Documents/incubator-superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\n\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return <div {...props} />;\n};\n\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n    <h2 {...{\n      \"id\": \"contributing-to-superset\"\n    }}>{`Contributing to Superset`}</h2>\n    <p>{`Superset is currently being incubated at\n`}\n      <a {...{\n        \"href\": \"https://www.apache.org/theapacheway/index.html\",\n        \"parentName\": \"p\"\n      }}>{`the Apache Software Foundation`}</a>\n      {`. The core\ncontributors (or committers) to Superset communicate primarily in the following channels (all of\nwhich you can join):`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><a {...{\n          \"href\": \"https://lists.apache.org/list.html?dev@superset.apache.org\",\n          \"parentName\": \"li\"\n        }}>{`Mailing list`}</a></li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><a {...{\n          \"href\": \"https://apache-superset.slack.com/join/shared_invite/zt-g8lpruog-HeqpgYrwdfrD5OYhlU7hPQ#/\",\n          \"parentName\": \"li\"\n        }}>{`Apache Superset Slack community`}</a></li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><a {...{\n          \"href\": \"https://github.com/apache/incubator-superset/issues\",\n          \"parentName\": \"li\"\n        }}>{`Github issues and PR's`}</a></li>\n\n    </ul>\n    <p>{`If you're interested in contributing, we recommend reading the Community Contribution Guide\n`}\n      <a {...{\n        \"href\": \"https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md\",\n        \"parentName\": \"p\"\n      }}>{`described in CONTRIBUTING.MD`}</a>\n      {`\nto get started. Here are some helpful links from that page:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><a {...{\n          \"href\": \"https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#types-of-contributions\",\n          \"parentName\": \"li\"\n        }}>{`Overview of types of contributions`}</a></li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><a {...{\n          \"href\": \"https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#pull-request-guidelines\",\n          \"parentName\": \"li\"\n        }}>{`Pull request guidelines`}</a></li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><a {...{\n          \"href\": \"https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#managing-issues-and-prs\",\n          \"parentName\": \"li\"\n        }}>{`Managing Issues and PR's`}</a></li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><a {...{\n          \"href\": \"https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#setup-local-environment-for-development\",\n          \"parentName\": \"li\"\n        }}>{`Setting up local environment for development`}</a></li>\n\n    </ul>\n\n  </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}