<!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="news" />
    

    
      <title>2012 in retrospect and a Happy New Year from the Libcloud team | 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="2012 in retrospect and a Happy New Year from the Libcloud team" property="og:title">
    

    

    

    
      <meta content="article" property="og:type">
    

    
      <meta content="https://libcloud.apache.org/blog/2012/12/26/2012-in-retrospect-and-happy-new-year-from-libcloud-team.html" property="og:url">
    
    
      <meta content="2012-12-26T00:00:00+01:00" property="article:published_time">
      <meta content="https://libcloud.apache.org/about.html" property="article:author">
    

    
      
      <meta content="news" property="article:tag">
      
    

    <link href='/assets/global-3a45d2e711096a8ae9abecd72683acb5.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><!-- /.navbar-collapse -->
      </div><!-- /.container -->
    </nav>

    <div class="container main-container">
      <div class="row section page-content">
  <div class="col-lg-8 col-lg-offset-2">
    
<div class="post">
  
    <h2>2012 in retrospect and a Happy New Year from the Libcloud team</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>

Share : <a href="https://twitter.com/share" class="twitter-share-button"{count} data-via="libcloud" data-size="large" data-hashtags="cloud">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>

  </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="/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 13:47:27 +0200</p>
</div>

          </div>
        </div>
      </footer>

    </div><!-- /.container -->

    <!-- JavaScript -->
    <script src='/assets/global-cda7136d9b37b9359b7069f5495d767d.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>
