<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    
      <meta name="description" content="Archive: 2012 12">
    

    <meta name="author" content="The Apache Software Foundation">

    
      <meta name="keywords" content="python,libcloud,cloud,cloud computing,rackspace,amazon ec2,cloudfiles,openstack,cloudstack" />
    

    
      <title>Archive: 2012 &raquo; December | 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" />

    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,400italic' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>

    <!-- Facebook OpenGraph tags -->
    <meta content="Apache Libcloud" property="og:site_name">
    
      <meta content="Archive: 2012 &raquo; December" property="og:title">
    

    

    
      <meta content="Archive: 2012 12" property="og:description">
    

    
      <meta content="website" property="og:type">
    

    
      <meta content="https://libcloud.apache.org/blog/archives/2012/12/" property="og:url">
    
    

    

    <link href='/assets/global-49923225b15584efebd7a337daac5102.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="/index.html"><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 ><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="post">
  
    <h2><a href="/blog/2012/12/28/new-committer-mahendra-maheshwara-joins-our-team.html">New committer Mahendra Maheshwara joins our team</a></h2>
  
  <span class="post-date-author">By Tomaz Muraus on Dec 28, 2012</span>

  <div class="post-content">
    <p>The Project Management Committee (PMC) for Apache Libcloud has asked
Mahendra Maheshwara to become a committer and we are pleased to announce
that they have accepted.</p>

<p>Mahendra Maheshwara has joined the Libcloud community fairly recently, but
he has already contributed multiple great patches -
https://issues.apache.org/jira/issues/?jql=project%20%3D%20LIBCLOUD%20AND%20reporter%20in%20(%22mahendra.m%22)
.</p>

<p>Giving him commit access will allow him to more directly contribute to the
project.</p>

<p>Everyone, please help me welcome him to the team :)</p>

<p>Source: <a href="http://mail-archives.apache.org/mod_mbox/libcloud-dev/201212.mbox/%3CCAJMHEmLyVg66Kb1Q9LRD1z9bSbtVFU=hTZGeWO2pc+s4qcEpow@mail.gmail.com%3E">mailing list thread</a>.</p>


  </div>

  <div class="row section post-meta">
    <div class="col-md-12 post-tags">
      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/new-committer.html" rel="tag">new committer</a></p>
    </div>
  </div>
</div>


  <div class="post">
  
    <h2><a href="/blog/2012/12/26/2012-in-retrospect-and-happy-new-year-from-libcloud-team.html">2012 in retrospect and a Happy New Year from the Libcloud team</a></h2>
  
  <span class="post-date-author">By Tomaz Muraus on Dec 26, 2012</span>

  <div class="post-content">
    <p>Dear users, developers and team members!</p>

<p>2012 is slowly coming to an end and Libcloud team wishes everyone a happy
and successful new year 2013!</p>

<p>2012 has been another great year for us and we have surpassed 2011 in
pretty much every aspect.</p>

<p>Here is a short list of things which have been accomplished and important
events which have happened in 2012:</p>

<ul>
  <li>One new committer Ilgiz Islamgulov (ilgiz) has joined the team.</li>
  <li>We have another new commiter joining our team soon (Mahendra M).
Currently he is undergoing a process of submitting his ICLA.</li>
  <li>134 new JIRA issues have been opened (total of 271). Out of those 134
issues, 111 are now marked as ‘resolved’.</li>
  <li>SVN repository has had a total of 320 commit. More than 50% of those
commits were patches from external contributors.</li>
  <li>We had our first Google Summer of Code student which worked on a project
named “Libcloud REST” (https://github.com/islamgulov/libcloud.rest). The
goal of the project is to expose Libcloud functionality over HTTP.</li>
  <li>Tomaz gave a talk titled “Avoiding Vendor Lock-In Using Apache Libcloud”
at CloudOpen 2012 in San Diego</li>
  <li>We now finally have some more user friendly documentation and examples on
the website - http://libcloud.apache.org/docs/</li>
  <li>We held a first in person meetup at the Rackspace San Francisco office in
the beginning of the year (http://libcloudmeetup.eventbrite.com/)</li>
  <li>We had a total of 7 releases (0.8.0, 0.9.1, 0.10.1, 0.11.0, 0.11.1,
0.11.3, 0.11.4) and over 70.000 downloads / installs on PyPi (
http://pypi.python.org/pypi/apache-libcloud/)</li>
  <li>Github mirror has been starred by 266 users (
https://github.com/apache/libcloud)</li>
</ul>

<p>Thanks again to everyone for their work and contributions and lets make
2013 even better :)</p>

<p>I will post those numbers in a more machine readable format (JSON) in the
next couple of weeks. This way it will be easier for us to track those
metrics on a year over year basis.</p>

<p>Numbers retrieved on: 2012-12-25.
Sources for those numbers: JIRA, Libcloud website, PyPi, Ohloh.net, Google
Analytics</p>

<p>Source: <a href="http://mail-archives.apache.org/mod_mbox/libcloud-users/201212.mbox/%3CCAJMHEmK-Y47qbqpSQjNfWxK-1efqiifvpRgE-tO8q-QLTk-EYg@mail.gmail.com%3E">mailing list post</a>.</p>


  </div>

  <div class="row section post-meta">
    <div class="col-md-12 post-tags">
      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a></p>
    </div>
  </div>
</div>



<p class="navigation">
  

  
</p>



      <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="/credits.html">Credits</a> | <a href="/media.html">Media</a>
</div>

<div class="footer-text">
  <p class="">Copyright &copy; 2009-2022 <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 2022-03-29 21:34:03 +0000</p>
</div>

          </div>
        </div>
      </footer>

    </div><!-- /.container -->

    <!-- JavaScript -->
    <script src='/assets/global-9d3ec4fa3c143ff7102734d40de1aad8.js' type='text/javascript'></script>

    

    <script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-23580482-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>

  </body>
</html>
