CINXE.COM
View source for How To Contribute - OpenStack
<!DOCTYPE html> <html class="client-nojs" lang="en" dir="ltr"> <head> <meta charset="UTF-8"/> <title>View source for How To Contribute - OpenStack</title> <script>document.documentElement.className = document.documentElement.className.replace( /(^|\s)client-nojs(\s|$)/, "$1client-js$2" );</script> <script>(window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"How_To_Contribute","wgTitle":"How To Contribute","wgCurRevisionId":178609,"wgRevisionId":0,"wgArticleId":22801,"wgIsArticle":false,"wgIsRedirect":false,"wgAction":"edit","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgBreakFrames":true,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"How_To_Contribute","wgRelevantArticleId":22801,"wgRequestId":"89550c595db3d056d697bc48","wgIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgWikiEditorEnabledModules":{"toolbar":true,"dialogs":true,"preview":false,"publish":false},"wgULSAcceptLanguageList":[],"wgULSCurrentAutonym":"English","wgCategoryTreePageCategoryOptions":"{\"mode\":0,\"hideprefix\":20,\"showcount\":true,\"namespaces\":false}"});mw.loader.state({"site.styles":"ready","noscript":"ready","user.styles":"ready","user.cssprefs":"ready","user":"ready","user.options":"loading","user.tokens":"loading","ext.wikiEditor.toolbar.styles":"ready","ext.uls.pt":"ready","mediawiki.legacy.shared":"ready","mediawiki.legacy.commonPrint":"ready","mediawiki.sectionAnchor":"ready","skins.strapping":"loading"});mw.loader.implement("user.options@0j3lz3q",function($,jQuery,require,module){mw.user.options.set({"variant":"en"});});mw.loader.implement("user.tokens@1s7arvx",function ( $, jQuery, require, module ) { mw.user.tokens.set({"editToken":"+\\","patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"});/*@nomin*/; });mw.loader.load(["mediawiki.page.startup","ext.uls.interface"]);});</script> <link rel="stylesheet" href="/w/load.php?debug=false&lang=en&modules=ext.uls.pt%7Cmediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.sectionAnchor&only=styles&skin=strapping"/> <link rel="stylesheet" href="/w/load.php?debug=false&lang=en&modules=ext.wikiEditor.toolbar.styles&only=styles&skin=strapping"/> <script async="" src="/w/load.php?debug=false&lang=en&modules=startup&only=scripts&skin=strapping"></script> <link rel="stylesheet" href="/w/skins/strapping/bootstrap/css/bootstrap.css?303" media="screen"/><link rel="stylesheet" href="/w/skins/strapping/bootstrap/awesome/css/font-awesome.css?303" media="screen"/><link rel="stylesheet" href="/w/skins/strapping/screen.css?303" media="screen"/><link rel="stylesheet" href="/w/skins/strapping/theme.css?303" media="screen"/> <meta name="ResourceLoaderDynamicStyles" content=""/> <link rel="stylesheet" href="/w/load.php?debug=false&lang=en&modules=site.styles&only=styles&skin=strapping"/> <meta name="generator" content="MediaWiki 1.28.2"/> <meta name="robots" content="noindex,nofollow"/> <link rel="shortcut icon" href="/favicon.ico"/> <link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="OpenStack (en)"/> <link rel="EditURI" type="application/rsd+xml" href="https://wiki.openstack.org/w/api.php?action=rsd"/> <link rel="copyright" href="http://creativecommons.org/licenses/by/3.0/"/> <link rel="alternate" type="application/atom+xml" title="OpenStack Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"/> <style type='text/css'> li#pt-openidlogin { background: url(/w/extensions/OpenID/skin/icons/openid-inputicon.png) top left no-repeat; padding-left: 20px; text-transform: none; } </style> <!--[if lt IE 7]><style type="text/css">body{behavior:url("/w/skins/strapping/csshover.min.htc")}</style><![endif]--> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-How_To_Contribute rootpage-How_To_Contribute skin-strapping action-edit"> <div id="userbar" class="navbar navbar-static"> <div class="navbar-inner"> <div style="width: auto;" class="container"> <div class="pull-left"> <ul class="nav logo-container" role="navigation"><li id="p-logo"><a href="/wiki/Main_Page" title="Visit the main page"><img src="https://wiki.openstack.org/w/images/thumb/c/c4/OpenStack_Logo_-_notext.png/30px-OpenStack_Logo_-_notext.png" alt="OpenStack"></a><li></ul> <!-- 0 --> <ul class="nav" role="navigation"> <li class="dropdown" id="p-namespaces" class="vectorMenu"> <a data-toggle="dropdown" class="dropdown-toggle brand" role="menu">Page <b class="caret"></b></a> <ul aria-labelledby="Namespaces" role="menu" class="dropdown-menu" > <li id="ca-nstab-main" class="selected"><a href="/wiki/How_To_Contribute" title="View the content page [c]" accesskey="c" tabindex="-1">Page</a></li><li id="ca-talk" class="new"><a href="/w/index.php?title=Talk:How_To_Contribute&action=edit&redlink=1" title="Discussion about the content page [t]" accesskey="t" tabindex="-1">Discussion</a></li><li id="ca-viewsource" class="selected"><a href="/w/index.php?title=How_To_Contribute&action=edit" title="This page is protected. You can view its source [e]" accesskey="e" tabindex="-1">View source</a></li><li id="ca-history" class="collapsible"><a href="/w/index.php?title=How_To_Contribute&action=history" title="Past revisions of this page [h]" accesskey="h" tabindex="-1">History</a></li></ul></li></ul> <!-- /0 --> <!-- 0 --> <!-- /0 --> <!-- 0 --> <!-- /0 --> <!-- 0 --> </li> </ul></ul> <!-- /LANGUAGES --> <!-- 0 --> <ul class="nav" role="navigation"> <li class="dropdown" id="p-toolbox" class="vectorMenu"> <a data-toggle="dropdown" class="dropdown-toggle" role="button">Tools <b class="caret"></b></a> <ul aria-labelledby="Tools" role="menu" class="dropdown-menu" > <li id="t-info"><a href="/w/index.php?title=How_To_Contribute&action=info" title="More information about this page">Page information</a></li><li class="divider"></li><li id="t-specialpages"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li><li id="t-recentchangeslinked"><a href="/wiki/Special:RecentChangesLinked/How_To_Contribute" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li><li class="divider"></li><li id="t-whatlinkshere"><a href="/wiki/Special:WhatLinksHere/How_To_Contribute" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li> </ul> </li> </ul> <!-- /0 --> </div> <div class="pull-right"> <!-- 0 --> <form class="navbar-search" action="/w/index.php" id="searchform"> <input id="searchInput" class="search-query" type="search" accesskey="f" title="Special:Search" placeholder="Search" name="search" value=""> <input type="submit" name="fulltext" value="Search" title="Search the pages for this text" id="mw-searchButton" class="searchButton btn hidden"/> </form> <!-- /0 --> <!-- 0 --> <ul class="nav pull-right" role="navigation"> <li class="dropdown" id="p-notifications" class="vectorMenu"> </li> <li class="dropdown" id="p-createaccount" class="vectorMenu"> <li id="pt-createaccount"><a href="/w/index.php?title=Special:CreateAccount&returnto=How+To+Contribute&returntoquery=action%3Dedit" title="You are encouraged to create an account and log in; however, it is not mandatory">Create account</a></li> </li> <li class="dropdown" id="p-login" class="vectorMenu"> <li id="pt-login"><a href="/w/index.php?title=Special:UserLogin&returnto=How+To+Contribute&returntoquery=action%3Dedit" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o">Log in</a></li> </li> <li class="dropdown" id="p-openidlogin" class="vectorMenu"> <li id="pt-openidlogin"><a href="/w/index.php?title=Special:OpenIDLogin&returnto=How_To_Contribute">Log in / create account with OpenID</a></li> </li> <li class="dropdown" id="p-personaltools" class="vectorMenu"> <a data-toggle="dropdown" class="dropdown-toggle" role="button"> <i class="icon-user"></i> <b class="caret"></b></a> <ul aria-labelledby="Personal tools" role="menu" class="dropdown-menu" > <li id="pt-uls" class="active"><a href="#" class="uls-trigger autonym">English</a></li> </ul> </li> </ul> <!-- /0 --> </div> </div> </div> </div> <div id="mw-page-base" class="noprint"></div> <div id="mw-head-base" class="noprint"></div> <!-- Header --> <div id="page-header" class="container signed-out"> <section class="span12"> <ul class="navigation nav nav-pills pull-right searchform-disabled"> <!-- 0 --> <li class=""><a href="http://www.openstack.org" id="n-Home" rel="nofollow">Home</a></li> <li class=""><a href="http://www.openstack.org/software" id="n-Software" rel="nofollow">Software</a></li> <li class=""><a href="http://www.openstack.org/user-stories" id="n-User-Stories" rel="nofollow">User Stories</a></li> <li class=""><a href="http://www.openstack.org/community" id="n-Community" rel="nofollow">Community</a></li> <li class=""><a href="http://www.openstack.org/profile" id="n-Profile" rel="nofollow">Profile</a></li> <li class=""><a href="http://www.openstack.org/blog" id="n-Blog" rel="nofollow">Blog</a></li> <li class=""><a href="http://wiki.openstack.org" id="n-Wiki" rel="nofollow">Wiki</a></li> <li class=""><a href="http://docs.openstack.org" id="n-Documentation" rel="nofollow">Documentation</a></li> <!-- /LANGUAGES --> </ul> </section> </div> <!-- content --> <section id="content" class="mw-body container 0"> <div id="top"></div> <div id="mw-js-message" style="display:none;"></div> <!-- bodyContent --> <div id="bodyContent"> <!-- jumpto --> <div id="jump-to-nav" class="mw-jump"> Jump to: <a href="#mw-head">navigation</a>, <a href="#p-search">search</a> </div> <!-- /jumpto --> <!-- innerbodycontent --> <div id="innerbodycontent" class="row nolayout"><div class="offset1 span10"> <h1 id="firstHeading" class="firstHeading page-header"> <span dir="auto">View source for How To Contribute</span> </h1> <!-- subtitle --> <div id="contentSub" >← <a href="/wiki/How_To_Contribute" title="How To Contribute">How To Contribute</a></div> <!-- /subtitle --> <div id="mw-content-text"><p>You do not have permission to edit this page, for the following reason: </p> <div class="permissions-errors"> <p>The action you have requested is limited to users in the group: <a href="/wiki/OpenStack:Users" title="OpenStack:Users">Users</a>. </p> </div> <hr /> <p>You can view and copy the source of this page. </p><textarea readonly="" accesskey="," id="wpTextbox1" cols="80" rows="25" style="" class="mw-editfont-default" lang="en" dir="ltr" name="wpTextbox1"> '''How can I help?''' Thanks for asking. Let's find a place for you! First you should join our communication forums: * Subscribe to our '''[[MailingLists|mailing lists]]''' * Join us on '''[[IRC]]''': You can talk to us directly in '''#openstack''' or one of the other channels * Answer and ask questions on '''[https://ask.openstack.org Ask OpenStack]''' === If you're building clouds === * Read the [http://docs.openstack.org official OpenStack documentation], which is intended for cloud deployers and operations professionals who are standing up OpenStack clouds. Each page offers comments and the documentation can be edited by cloning a git repository, see [[Documentation/HowTo]]. * If you find problems with content on the [http://docs.openstack.org official OpenStack documentation], log a bug against the [https://bugs.launchpad.net/openstack-manuals/+filebug openstack-manuals project] with the page that contains the bug. ** Hint: you can just dump useful text into a [https://bugs.launchpad.net/openstack-manuals/+filebug bug report], and the documentation team will format it and update the docs for you. * Join the [http://lists.openstack.org/pipermail/openstack-operators/ openstack-operators mailing list] to ask and answer questions specific to deployments large and small. * Fill out the [https://www.openstack.org/user-survey/ user survey], where you can influence the community and software direction and anonymously provide feedback about your OpenStack experience. * Consider [[Operations|contributing to a working group, or adding a use case]]. === Mentoring and finding mentors === You can contact the [[First_Contact_SIG|First Contact SIG]] with any questions on how to get started. If you are in need of a more structured mentorship program (or want to be a mentor), there are a variety of [[Mentoring]] programs hosted by the Diversity and Inclusion working group that can help you get started. === If you're a developer === * Walk through [https://docs.openstack.org/contributors/code-and-documentation/index.html the Code & Docs Contributor Guide] which will help you: ** Join the [http://lists.openstack.org/pipermail/openstack-discuss/ OpenStack Discuss mailing list] ** Join the '''#openstack-dev''' '''[[IRC]]''' channel ** Set up the necessary accounts ** Learn where to find the code ** How to set up your development environment ** How to interact with Gerrit and Review code ** Learn how documentation is developed ** Learn how to contribute translations * [https://www.jetbrains.com/pycharm/ Pycharm] Open Source developer licences are available for people who are contributing to OpenStack. If you are contributing to OpenStack and you need a licence, please fill in the details [https://docs.google.com/forms/d/e/1FAIpQLSe5JMbtZEKB95AMVnyOBh4-7Y55hDgQChjg5Ed3auO74Tt2fQ/viewform here]. Additional details can be found [https://wiki.openstack.org/wiki/Pycharm here] ==== Bug fixing ==== The first area where you can help is bug fixing. ''Confirmed'' bugs are usually good targets. ''Triaged'' bugs should even contain tips on how they should be fixed. Here is the list of [https://bugs.launchpad.net/openstack/+bugs?orderby=-importance&search=Search&field.status:list=CONFIRMED&field.status:list=TRIAGED Confirmed and Triaged bugs]. You can contribute instructions on how to fix a given bug, and set it to ''Triaged''. Or you can directly fix it: assign the bug to yourself, set it to ''In progress'', branch the code, implement the fix, and propose your change for merging into trunk ! Some easy-to-fix bugs may be marked with the [https://bugs.launchpad.net/openstack/+bugs?orderby=-importance&search=Search&field.status:list=NEW&field.status:list=CONFIRMED&field.status:list=TRIAGED&field.tag=low-hanging-fruit low-hanging-fruit] tag: they also make good targets for a beginner. ==== Housekeeping ==== Maintaining good code quality is a never-ending effort that is shared across the development team. There are several always-ongoing efforts that need your help, for example: increasing comments in code, reducing pylint violations, increasing code coverage. Those are usually nice ways to get involved in development: easy changes that will let you touch various areas of OpenStack code, and gain respect from your peers. :) It might be also a good idea to check the results of the continuous code quality and test coverage monitoring described [[User_talk:P%C3%A9ter_Heged%C5%B1s| here]]. You can also try some [[WikiGardening|gardening of this wiki]]. === If you're a tester (and breaker), get started this way: === ==== Testing ==== We need your help in making sure OpenStack components behave correctly. Feel free to install the development version and report any issue. ==== Triaging bugs ==== Reported bugs need care: prioritizing them correctly, confirming them, making sure they don't go stale... All those tasks help immensely. If you care about OpenStack stability but are not a hardcore developer, consider helping in that area! The whole process is described on [[BugTriage]]. === If you're into security, we'd love your help === The OpenStack Security Group (OSSG) is a collection of security-minded people working together to broadly improve security across OpenStack. OSSG has people with a wide range of skills (including developers, architects, writers, and more). See [[Security/How_To_Contribute]] for more details on how to get involved with OSSG. === If you're a designer or usability professional, help shape the UX === You can contribute in many different ways to the User Experience of OpenStack. Whether it's reviewing current features as a user and giving feedback, designing new features, testing designs or features with users, or helping to build use cases and requirements, we'd love to have your help in the UX group! Take a look at the "[[UX#Getting_Started_with_Designing_for_User_Experience|Getting Started with Designing for User Experience]]" section of the [[UX]] wiki for details. Also, feel free to contact fellow designers and folks interested in UX work in #openstack-ux on OFTC if you have any questions or need any guidance on where to jump in. === If you want to help with the openstack.org website === Start by reading the [[Website|contributing to the website]] document. === If you're a community builder === Check out the [https://groups.openstack.org user group page] to learn which communities exist and how to start one. If you're into diversity and making our community more welcoming and diverse, please look at the [https://wiki.openstack.org/wiki/Women_of_OpenStack Women of OpenStack] and [https://wiki.openstack.org/wiki/OutreachProgramForWomen Outreach Program for Women] for ideas. === Is there something missing? === If you need further guidance about how to contribute or if you are having trouble getting started, you can look at '''#openstack-dev''' on [http://webchat.oftc.net oftc.net] as well. ---- [[Category:HowTo]] [[Category:Contribute]] </textarea><div class="templatesUsed"></div><p id="mw-returnto">Return to <a href="/wiki/How_To_Contribute" title="How To Contribute">How To Contribute</a>.</p> </div> </div></div> <!-- /innerbodycontent --> <!-- printfooter --> <div class="printfooter"> Retrieved from "<a dir="ltr" href="https://wiki.openstack.org/wiki/How_To_Contribute">https://wiki.openstack.org/wiki/How_To_Contribute</a>" </div> <!-- /printfooter --> <!-- catlinks --> <div id="catlinks" class="catlinks catlinks-allhidden" data-mw="interface"></div> <!-- /catlinks --> <div class="visualClear"></div> <!-- debughtml --> <!-- /debughtml --> </div> <!-- /bodyContent --> </section> <!-- /content --> <!-- footer --> <div id="footer" class="footer container"> <div class="row"> <ul id="footer-places"> <li id="footer-places-privacy"><a href="/wiki/OpenStack:Privacy_policy" title="OpenStack:Privacy policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/OpenStack:About" title="OpenStack:About">About OpenStack</a></li> <li id="footer-places-disclaimer"><a href="/wiki/OpenStack:General_disclaimer" title="OpenStack:General disclaimer">Disclaimers</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"> <a href="http://creativecommons.org/licenses/by/3.0/"><img src="/w/resources/assets/licenses/cc-by.png" alt="Attribution 3.0 Unported (CC BY 3.0)" width="88" height="31"/></a> </li> <li id="footer-poweredbyico"> <a href="//www.mediawiki.org/"><img src="/w/resources/assets/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="/w/resources/assets/poweredby_mediawiki_132x47.png 1.5x, /w/resources/assets/poweredby_mediawiki_176x62.png 2x" width="88" height="31"/></a> </li> </ul> </div> </div> <!-- /footer --> <script>(window.RLQ=window.RLQ||[]).push(function(){mw.loader.load("/w/load.php?debug=false\u0026lang=en\u0026modules=skins.strapping\u0026only=scripts\u0026skin=strapping");mw.loader.load(["mediawiki.action.edit.collapsibleFooter","site","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest","ext.uls.init","ext.uls.geoclient"]);});</script><script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-17511903-5', 'auto'); ga('set', 'anonymizeIp', true); ga('send', 'pageview'); </script> <script>(window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgBackendResponseTime":948});});</script> </body> </html>