<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    

    <meta name="author" content="The Apache Software Foundation">

    
      <meta name="keywords" content="python,libcloud,cloud,cloud computing,rackspace,amazon ec2,cloudfiles,openstack,cloudstack" />
    

    
      <title>Community | Apache Libcloud</title>
    

    <!-- fav icons -->
    <link rel="shortcut icon" href="/images/favicon.png" />
    <link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
    <link rel="apple-touch-icon-precomposed" href="/images/apple-touch-icon.png" />

    <link href="/blog/atom.xml" type="application/atom+xml" rel="alternate" title="Apache Libcloud Blog Feed" />

    <!-- Facebook OpenGraph tags -->
    <meta content="Apache Libcloud" property="og:site_name">
    
      <meta content="Community" property="og:title">
    

    

    

    
      <meta content="website" property="og:type">
    

    
      <meta content="https://libcloud.apache.org/community" property="og:url">
    
    

    

    <link href='/assets/global-0faf439f2f098e60d3f1e591316155fc.css' rel='stylesheet' type='text/css' />
  </head>

  <body data-spy="scroll" data-target=".sidebar-nav" data-offset="80">
    <nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="/"><img src="/images/libcloud_logo.png" class="navbar-logo" /> Apache Libcloud</a>
        </div>
        <div class="collapse navbar-collapse navbar-ex1-collapse">
          <ul class="nav navbar-nav">
            
            
              
              <li ><a href="/" >Home</a></li>
            
              
              <li ><a href="/about.html" >About</a></li>
            
              
              <li ><a href="/getting-started.html" >Quick Start</a></li>
            
              
              <li ><a href="https://libcloud.readthedocs.org/en/stable/" target="_blank">Documentation</a></li>
            
              
              <li ><a href="/downloads.html" >Downloads</a></li>
            
              
              <li class="active"><a href="/community.html" >Community</a></li>
            
              
              <li ><a href="/blog/" >Blog</a></li>
            
          </ul>

          <div class="material-switch pull-right">
              <input id="theme-switch" name="theme-switch" type="checkbox" onclick="modeSwitcher()"/>
              <label for="theme-switch" class="label-default"></label>
              <span id="theme-toggle" class="theme-switch">Dark mode</span>
          </div>

        </div><!-- /.navbar-collapse -->
      </div><!-- /.container -->
    </nav>

    <div class="container main-container">
      <div class="row section page-content">
  <div class="col-lg-2 sidebar-nav visible-lg">
    <ul class="list-unstyled nav">
      
        <li><a href="#mailing-lists">Mailing Lists</a></li>
<li><a href="#irc-chat">IRC Chat</a></li>
<li><a href="#issue-tracker">Issue tracker</a></li>
<li><a href="#main-code-repository">Main Code Repository</a></li>
<li><a href="#website-code-repository">Website Code Repository</a></li>
<li><a href="#community-resources">Community Resources</a></li>
<li><a href="#google-summer-of-code">Google Summer of Code</a></li>
<li><a href="#contributing-to-libcloud">Contributing</a></li>
<li><a href="#other">Other</a></li>
<li><a href="#asf-board-reports">Board Reports</a></li>

      
    </ul>
  </div>
  <div class="col-lg-8 col-lg-offset-3">
    <h1 id="community">Community</h1>

<h2 id="mailing-lists">Mailing Lists</h2>

<ul>
  <li><a href="mailto:announce-subscribe@libcloud.apache.org">announce@libcloud.apache.org</a> (<a href="mailto:announce-subscribe@libcloud.apache.org">subscribe</a>, <a href="http://mail-archives.apache.org/mod_mbox/libcloud-announce/">archive</a>) - Only important project
updates and release announcements are sent to this list (low volume).</li>
  <li><a href="mailto:users-subscribe@libcloud.apache.org">users@libcloud.apache.org</a> (<a href="mailto:users-subscribe@libcloud.apache.org">subscribe</a>, <a href="http://mail-archives.apache.org/mod_mbox/libcloud-users/">archive</a>) - Mailing list for Libcloud
users (low volume)</li>
  <li><a href="mailto:dev-subscribe@libcloud.apache.org">dev@libcloud.apache.org</a> (<a href="mailto:dev-subscribe@libcloud.apache.org">subscribe</a>, <a href="http://mail-archives.apache.org/mod_mbox/libcloud-dev/">archive</a>) - Mailing list for Libcloud
developers and people interested in contributing to Libcloud (moderate volume)</li>
  <li><a href="mailto:notifications-subscribe@libcloud.apache.org">notifications@libcloud.apache.org</a> (<a href="mailto:notifications-subscribe@libcloud.apache.org">subscribe</a>, <a href="http://mail-archives.apache.org/mod_mbox/libcloud-notifications/">archive</a>) - Commits messages, pull
request notifications, build notifications and other automated messages go
to this mailing list (high volume)</li>
</ul>

<p>To unsubscribe from a mailing list, simply send an email to
listname-unsubscribe@libcloud.apache.org from the same email address you
subscribed with.</p>

<h2 id="irc-chat">IRC Chat</h2>

<ul>
  <li><a href="https://web.libera.chat/?channel=#libcloud">#libcloud</a> on Libera.Chat</li>
</ul>

<h2 id="issue-tracker">Issue Tracker</h2>

<ul>
  <li>Github Issues: <a href="https://github.com/apache/libcloud/issues">https://github.com/apache/libcloud/issues</a></li>
</ul>

<h2 id="main-code-repository">Main Code Repository</h2>

<p>Project source code is stored in an Apache hosted git repository.</p>

<ul>
  <li>Repository: <a href="http://gitbox.apache.org/repos/asf/libcloud.git">http://gitbox.apache.org/repos/asf/libcloud.git</a></li>
  <li>Github: <a href="https://github.com/apache/libcloud">https://github.com/apache/libcloud</a></li>
</ul>

<h2 id="website-code-repository">Website Code Repository</h2>

<p>Website source code is stored in an Apache hosted git repository with a Github
mirror available. This means that you can contribute to the website in the same
manner as you would contribute to the main code base using Github pull requests.</p>

<ul>
  <li>Repository: <a href="http://gitbox.apache.org/repos/asf/libcloud-site.git">http://gitbox.apache.org/repos/asf/libcloud-site.git</a></li>
  <li>Github: <a href="https://github.com/apache/libcloud-site">https://github.com/apache/libcloud-site</a></li>
</ul>

<p>Old website code location (not used anymore):</p>

<ul>
  <li>Repository: <a href="https://svn.apache.org/repos/asf/libcloud/site/trunk">https://svn.apache.org/repos/asf/libcloud/site/trunk</a></li>
  <li>ViewVc: <a href="https://svn.apache.org/viewvc/libcloud/site/">https://svn.apache.org/viewvc/libcloud/site/</a></li>
</ul>

<h2 id="community-resources">Community Resources</h2>

<p>See <a href="/community-resources.html">Community Resources</a> page for a list of articles, presentations and
blog posts written by Libcloud users and developers.</p>

<h2 id="google-summer-of-code">Google Summer of Code</h2>

<p>See <a href="/gsoc.html">Google Summer of Code page</a>.</p>

<h2 id="contributing-to-libcloud">Contributing to Libcloud</h2>

<p>For information on how to contribute, please see <a href="https://libcloud.readthedocs.org/en/stable/development.html#contributing">Contributing</a> section in
the documentation.</p>

<h2 id="other">Other</h2>

<ul>
  <li><a href="https://github.com/apache/libcloud">apache/libcloud</a> on Github</li>
</ul>

<h2 id="asf-board-reports">ASF Board Reports</h2>

<p>Apache Software Foundation board reports are available at <a href="https://whimsy.apache.org/board/minutes/Libcloud.html">https://whimsy.apache.org/board/minutes/Libcloud.html</a>.</p>


  </div>
</div>


      <hr />

      <footer>
        <div class="row">
          <div class="col-lg-12 text-center">
            <div class="footer-links">
  <p><a href="http://www.apache.org/licenses/">License</a> | <a
  href="/security.html">Security</a> | <a
  href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
  <a href="http://www.apache.org/foundation/thanks.html">Thanks</a> |
  <a href="https://www.apache.org/events/">Events</a> |
  <a href="/credits.html">Credits</a> | <a href="/media.html">Media</a>
</div>

<div class="footer-text">
  <p><a class="acevent" data-format="wide"></a></p>
  <p class="">Copyright &copy; 2009-2023 <a href="https://www.apache.org/" target="_blank">The Apache Software Foundation</a></p>
  <p class="">Apache Libcloud, Libcloud, Apache, the Apache feather, and the Apache Libcloud project logo are trademarks of the Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
  <p class="">Site last updated on 2023-09-09 21:30:54 +0000</p>
</div>

          </div>
        </div>
      </footer>

    </div><!-- /.container -->

    <!-- JavaScript -->
    <script src='/assets/global-dac9eed9206cf02359a2dd1d7c03e401.js' type='text/javascript'></script>

    

    <script type="text/javascript">
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before
"trackPageView" */
  /* We explicitly disable cookie tracking to avoid privacy issues */
  _paq.push(['disableCookies']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '7']);
    var d=document, g=d.createElement('script'),
s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>

    <script src="https://www.apachecon.com/event-images/snippet.js"></script>

  </body>
</html>
