Author: anthonyshaw
Date: Wed Jun 15 01:32:13 2016
New Revision: 1748478

URL: http://svn.apache.org/viewvc?rev=1748478&view=rev
Log:
Added assets

Added:
    
libcloud/site/trunk/generated/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css
    
libcloud/site/trunk/generated/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css.gz
   (with props)
    
libcloud/site/trunk/generated/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js
    
libcloud/site/trunk/generated/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js.gz
   (with props)
    
libcloud/site/trunk/generated/assets/index-d2b5f16dce0cff3423840ceaa54edec2.js
    
libcloud/site/trunk/generated/assets/index-d2b5f16dce0cff3423840ceaa54edec2.js.gz
   (with props)
    libcloud/site/trunk/generated/blog/2016/04/12/
    libcloud/site/trunk/generated/blog/2016/04/12/help-wanted.html
    libcloud/site/trunk/generated/blog/page/15/
    libcloud/site/trunk/generated/blog/page/15/index.html
    libcloud/site/trunk/generated/blog/tags/community.html
Removed:
    
libcloud/site/trunk/generated/assets/global-14c8e0124e6d563413005cb909342e2a.js
    
libcloud/site/trunk/generated/assets/global-14c8e0124e6d563413005cb909342e2a.js.gz
    
libcloud/site/trunk/generated/assets/global-57b0092d353d0369071e1021782bb38d.css
    
libcloud/site/trunk/generated/assets/global-57b0092d353d0369071e1021782bb38d.css.gz
    
libcloud/site/trunk/generated/assets/index-326436a009a390ecdd6ea59e13a2e1bc.js
    
libcloud/site/trunk/generated/assets/index-326436a009a390ecdd6ea59e13a2e1bc.js.gz
Modified:
    libcloud/site/trunk/generated/blog/atom.xml

Added: 
libcloud/site/trunk/generated/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css?rev=1748478&view=auto
==============================================================================
--- 
libcloud/site/trunk/generated/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css
 (added)
+++ 
libcloud/site/trunk/generated/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css
 Wed Jun 15 01:32:13 2016
@@ -0,0 +1,9 @@
+/*!
+ * Bootstrap v3.0.3
+ *
+ * Copyright 2013 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.

[... 3 lines stripped ...]
Added: 
libcloud/site/trunk/generated/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css.gz
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css.gz?rev=1748478&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
libcloud/site/trunk/generated/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css.gz
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
libcloud/site/trunk/generated/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js?rev=1748478&view=auto
==============================================================================
--- 
libcloud/site/trunk/generated/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js 
(added)
+++ 
libcloud/site/trunk/generated/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js 
Wed Jun 15 01:32:13 2016
@@ -0,0 +1,33 @@
+/*!
+ * jQuery JavaScript Library v2.0.3
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03T13:30Z
+ */
+(function(window,undefined){var rootjQuery,readyList,core_strundefined=typeof 
undefined,location=window.location,document=window.document,docElem=document.documentElement,_jQuery=window.jQuery,_$=window.$,class2type={},core_deletedIds=[],core_version="2.0.3",core_concat=core_deletedIds.concat,core_push=core_deletedIds.push,core_slice=core_deletedIds.slice,core_indexOf=core_deletedIds.indexOf,core_toString=class2type.toString,core_hasOwn=class2type.hasOwnProperty,core_trim=core_version.trim,jQuery=function(selector,context){return
 new 
jQuery.fn.init(selector,context,rootjQuery)},core_pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,core_rnotwhite=/\S+/g,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,rsingleTag=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,rmsPrefix=/^-ms-/,rdashAlpha=/-([\da-z])/gi,fcamelCase=function(all,letter){return
 
letter.toUpperCase()},completed=function(){document.removeEventListener("DOMContentLoaded",completed,false);window.removeEventListener("load",completed,false);jQue
 
ry.ready()};jQuery.fn=jQuery.prototype={jquery:core_version,constructor:jQuery,init:function(selector,context,rootjQuery){var
 match,elem;if(!selector){return this}if(typeof 
selector==="string"){if(selector.charAt(0)==="<"&&selector.charAt(selector.length-1)===">"&&selector.length>=3){match=[null,selector,null]}else{match=rquickExpr.exec(selector)}if(match&&(match[1]||!context)){if(match[1]){context=context
 instanceof 
jQuery?context[0]:context;jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,true));if(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){for(match
 in 
context){if(jQuery.isFunction(this[match])){this[match](context[match])}else{this.attr(match,context[match])}}}return
 
this}else{elem=document.getElementById(match[2]);if(elem&&elem.parentNode){this.length=1;this[0]=elem}this.context=document;this.selector=selector;return
 
this}}else{if(!context||context.jquery){return(context||rootjQuery).find(selector)}else
 {return 
this.constructor(context).find(selector)}}}else{if(selector.nodeType){this.context=this[0]=selector;this.length=1;return
 this}else{if(jQuery.isFunction(selector)){return 
rootjQuery.ready(selector)}}}if(selector.selector!==undefined){this.selector=selector.selector;this.context=selector.context}return
 
jQuery.makeArray(selector,this)},selector:"",length:0,toArray:function(){return 
core_slice.call(this)},get:function(num){return 
num==null?this.toArray():(num<0?this[this.length+num]:this[num])},pushStack:function(elems){var
 
ret=jQuery.merge(this.constructor(),elems);ret.prevObject=this;ret.context=this.context;return
 ret},each:function(callback,args){return 
jQuery.each(this,callback,args)},ready:function(fn){jQuery.ready.promise().done(fn);return
 this},slice:function(){return 
this.pushStack(core_slice.apply(this,arguments))},first:function(){return 
this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var 
len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<le
 n?[this[j]]:[])},map:function(callback){return 
this.pushStack(jQuery.map(this,function(elem,i){return 
callback.call(elem,i,elem)}))},end:function(){return 
this.prevObject||this.constructor(null)},push:core_push,sort:[].sort,splice:[].splice};jQuery.fn.init.prototype=jQuery.fn;jQuery.extend=jQuery.fn.extend=function(){var
 
options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;if(typeof
 target==="boolean"){deep=target;target=arguments[1]||{};i=2}if(typeof 
target!=="object"&&!jQuery.isFunction(target)){target={}}if(length===i){target=this;--i}for(;i<length;i++){if((options=arguments[i])!=null){for(name
 in 
options){src=target[name];copy=options[name];if(target===copy){continue}if(deep&&copy&&(jQuery.isPlainObject(copy)||(copyIsArray=jQuery.isArray(copy)))){if(copyIsArray){copyIsArray=false;clone=src&&jQuery.isArray(src)?src:[]}else{clone=src&&jQuery.isPlainObject(src)?src:{}}target[name]=jQuery.extend(deep,clone,copy)}else{if(copy!==undefi
 ned){target[name]=copy}}}}}return 
target};jQuery.extend({expando:"jQuery"+(core_version+Math.random()).replace(/\D/g,""),noConflict:function(deep){if(window.$===jQuery){window.$=_$}if(deep&&window.jQuery===jQuery){window.jQuery=_jQuery}return
 
jQuery},isReady:false,readyWait:1,holdReady:function(hold){if(hold){jQuery.readyWait++}else{jQuery.ready(true)}},ready:function(wait){if(wait===true?--jQuery.readyWait:jQuery.isReady){return}jQuery.isReady=true;if(wait!==true&&--jQuery.readyWait>0){return}readyList.resolveWith(document,[jQuery]);if(jQuery.fn.trigger){jQuery(document).trigger("ready").off("ready")}},isFunction:function(obj){return
 
jQuery.type(obj)==="function"},isArray:Array.isArray,isWindow:function(obj){return
 obj!=null&&obj===obj.window},isNumeric:function(obj){return 
!isNaN(parseFloat(obj))&&isFinite(obj)},type:function(obj){if(obj==null){return 
String(obj)}return typeof obj==="object"||typeof 
obj==="function"?class2type[core_toString.call(obj)]||"object":typeof 
obj},isPlain
 
Object:function(obj){if(jQuery.type(obj)!=="object"||obj.nodeType||jQuery.isWindow(obj)){return
 
false}try{if(obj.constructor&&!core_hasOwn.call(obj.constructor.prototype,"isPrototypeOf")){return
 false}}catch(e){return false}return true},isEmptyObject:function(obj){var 
name;for(name in obj){return false}return true},error:function(msg){throw new 
Error(msg)},parseHTML:function(data,context,keepScripts){if(!data||typeof 
data!=="string"){return null}if(typeof 
context==="boolean"){keepScripts=context;context=false}context=context||document;var
 
parsed=rsingleTag.exec(data),scripts=!keepScripts&&[];if(parsed){return[context.createElement(parsed[1])]}parsed=jQuery.buildFragment([data],context,scripts);if(scripts){jQuery(scripts).remove()}return
 
jQuery.merge([],parsed.childNodes)},parseJSON:JSON.parse,parseXML:function(data){var
 xml,tmp;if(!data||typeof data!=="string"){return null}try{tmp=new 
DOMParser();xml=tmp.parseFromString(data,"text/xml")}catch(e){xml=undefined}if(!xml||xml.getElement
 sByTagName("parsererror").length){jQuery.error("Invalid XML: "+data)}return 
xml},noop:function(){},globalEval:function(code){var 
script,indirect=eval;code=jQuery.trim(code);if(code){if(code.indexOf("use 
strict")===1){script=document.createElement("script");script.text=code;document.head.appendChild(script).parentNode.removeChild(script)}else{indirect(code)}}},camelCase:function(string){return
 
string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)},nodeName:function(elem,name){return
 
elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()},each:function(obj,callback,args){var
 
value,i=0,length=obj.length,isArray=isArraylike(obj);if(args){if(isArray){for(;i<length;i++){value=callback.apply(obj[i],args);if(value===false){break}}}else{for(i
 in 
obj){value=callback.apply(obj[i],args);if(value===false){break}}}}else{if(isArray){for(;i<length;i++){value=callback.call(obj[i],i,obj[i]);if(value===false){break}}}else{for(i
 in obj){value=callback.call(obj[i],i,obj[i]);if(value===
 false){break}}}}return obj},trim:function(text){return 
text==null?"":core_trim.call(text)},makeArray:function(arr,results){var 
ret=results||[];if(arr!=null){if(isArraylike(Object(arr))){jQuery.merge(ret,typeof
 arr==="string"?[arr]:arr)}else{core_push.call(ret,arr)}}return 
ret},inArray:function(elem,arr,i){return 
arr==null?-1:core_indexOf.call(arr,elem,i)},merge:function(first,second){var 
l=second.length,i=first.length,j=0;if(typeof 
l==="number"){for(;j<l;j++){first[i++]=second[j]}}else{while(second[j]!==undefined){first[i++]=second[j++]}}first.length=i;return
 first},grep:function(elems,callback,inv){var 
retVal,ret=[],i=0,length=elems.length;inv=!!inv;for(;i<length;i++){retVal=!!callback(elems[i],i);if(inv!==retVal){ret.push(elems[i])}}return
 ret},map:function(elems,callback,arg){var 
value,i=0,length=elems.length,isArray=isArraylike(elems),ret=[];if(isArray){for(;i<length;i++){value=callback(elems[i],i,arg);if(value!=null){ret[ret.length]=value}}}else{for(i
 in elems){value=callback(e
 lems[i],i,arg);if(value!=null){ret[ret.length]=value}}}return 
core_concat.apply([],ret)},guid:1,proxy:function(fn,context){var 
tmp,args,proxy;if(typeof 
context==="string"){tmp=fn[context];context=fn;fn=tmp}if(!jQuery.isFunction(fn)){return
 undefined}args=core_slice.call(arguments,2);proxy=function(){return 
fn.apply(context||this,args.concat(core_slice.call(arguments)))};proxy.guid=fn.guid=fn.guid||jQuery.guid++;return
 proxy},access:function(elems,fn,key,value,chainable,emptyGet,raw){var 
i=0,length=elems.length,bulk=key==null;if(jQuery.type(key)==="object"){chainable=true;for(i
 in 
key){jQuery.access(elems,fn,i,key[i],true,emptyGet,raw)}}else{if(value!==undefined){chainable=true;if(!jQuery.isFunction(value)){raw=true}if(bulk){if(raw){fn.call(elems,value);fn=null}else{bulk=fn;fn=function(elem,key,value){return
 
bulk.call(jQuery(elem),value)}}}if(fn){for(;i<length;i++){fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)))}}}}return
 chainable?elems:bulk?fn.call(elems):length?
 
fn(elems[0],key):emptyGet},now:Date.now,swap:function(elem,options,callback,args){var
 ret,name,old={};for(name in 
options){old[name]=elem.style[name];elem.style[name]=options[name]}ret=callback.apply(elem,args||[]);for(name
 in options){elem.style[name]=old[name]}return 
ret}});jQuery.ready.promise=function(obj){if(!readyList){readyList=jQuery.Deferred();if(document.readyState==="complete"){setTimeout(jQuery.ready)}else{document.addEventListener("DOMContentLoaded",completed,false);window.addEventListener("load",completed,false)}}return
 readyList.promise(obj)};jQuery.each("Boolean Number String Function Array Date 
RegExp Object Error".split(" "),function(i,name){class2type["[object 
"+name+"]"]=name.toLowerCase()});function isArraylike(obj){var 
length=obj.length,type=jQuery.type(obj);if(jQuery.isWindow(obj)){return 
false}if(obj.nodeType===1&&length){return true}return 
type==="array"||type!=="function"&&(length===0||typeof 
length==="number"&&length>0&&(length-1) in obj)}rootjQuery=jQuery
 (document);
+/*!
+ * Sizzle CSS Selector Engine v1.9.4-pre
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-06-03
+ */

[... 11 lines stripped ...]
Added: 
libcloud/site/trunk/generated/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js.gz
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js.gz?rev=1748478&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
libcloud/site/trunk/generated/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js.gz
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
libcloud/site/trunk/generated/assets/index-d2b5f16dce0cff3423840ceaa54edec2.js
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/assets/index-d2b5f16dce0cff3423840ceaa54edec2.js?rev=1748478&view=auto
==============================================================================
--- 
libcloud/site/trunk/generated/assets/index-d2b5f16dce0cff3423840ceaa54edec2.js 
(added)
+++ 
libcloud/site/trunk/generated/assets/index-d2b5f16dce0cff3423840ceaa54edec2.js 
Wed Jun 15 01:32:13 2016
@@ -0,0 +1 @@
+var LINE_TOOLTIPS={"compute-1":{"1":"Import libcloud type we 
need","2":['Import "get_driver" method for obtaining a reference to the driver 
'," class."],"4":["Obtain a reference to the provider driver class. <br /><br 
/>Keep in ","mind that Libcloud supports more than 30 providers total and 
","Provider.RACKSPACE constant can be replaced with a provider constant ","of 
any other of the supported providers."],"5":["Instantiate the driver with your 
provider credentials. ",'Rackspace driver supports multiple regions so in this 
case, "region" ',"argument is used as well."],"7":["List all the available 
sizes. <br /><br />In Libcloud, size ","represents a server hardware 
configuration. Usually this is the amount ","of the available RAM, bandwidth, 
CPU speed and disk size. Most of ","the drivers also expose an hourly price (in 
US dollars) for the Node ","of this size."],"8":["List all the available 
images.<br /><br />In Libcloud, image ","represents an operating system 
image."],"10":"Select 
 a size to use.","11":"Select an image to use.","13":"Create a node using a 
previously selected size and image.","14":"Print representation of the created 
Node object."},"dns-1":{"1":"Import libcloud types we need","2":['Import 
"get_driver" method for obtaining a reference to the driver '," 
class."],"4":"Obtain a reference to the provider driver 
class.","5":"Instantiate the driver with your provider credentials.","7":"List 
all the available zones (domains) on this account.","8":"Select the zone to 
operate on.","10":['Create a new "A" record with a name of "www" and a value of 
','"127.0.0.1" under the selected zone.'],"11":"Print representation of the 
created Record object."}};jQuery(document).ready(function(a){a(".example code 
span[id]").on("mouseover click",function(b){var 
f,c,e,d,h,j,i,g;d=a(this).closest("div.example");h=d.attr("data-example");f=LINE_TOOLTIPS[h];if(!f){return}g=a(this).attr("title")!==undefined;c=a(this).attr("id").replace("line-","");i=f[c];if(!i){return}if(g){if
 (b.type==="click"){a(this).popover("toggle")}return}if(i instanceof 
Array){e=i.join("")}else{e=i}j={content:e,placement:"auto 
right",html:true,trigger:"hover",container:"body"};a(this).popover(j);a(this).popover("show")})});
\ No newline at end of file

Added: 
libcloud/site/trunk/generated/assets/index-d2b5f16dce0cff3423840ceaa54edec2.js.gz
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/assets/index-d2b5f16dce0cff3423840ceaa54edec2.js.gz?rev=1748478&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
libcloud/site/trunk/generated/assets/index-d2b5f16dce0cff3423840ceaa54edec2.js.gz
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: libcloud/site/trunk/generated/blog/2016/04/12/help-wanted.html
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/2016/04/12/help-wanted.html?rev=1748478&view=auto
==============================================================================
--- libcloud/site/trunk/generated/blog/2016/04/12/help-wanted.html (added)
+++ libcloud/site/trunk/generated/blog/2016/04/12/help-wanted.html Wed Jun 15 
01:32:13 2016
@@ -0,0 +1,310 @@
+<!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,community" />
+    
+
+    
+      <title>Help Wanted | 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="Help Wanted" property="og:title">
+    
+
+    
+
+    
+
+    
+      <meta content="article" property="og:type">
+    
+
+    
+      <meta 
content="https://libcloud.apache.org/blog/2016/04/12/help-wanted.html"; 
property="og:url">
+    
+    
+      <meta content="2016-04-12T00:00:00+10:00" 
property="article:published_time">
+      <meta content="https://libcloud.apache.org/about.html"; 
property="article:author">
+    
+
+    
+      
+      <meta content="news" property="article:tag">
+      
+      <meta content="community" property="article:tag">
+      
+    
+
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.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/latest/"; 
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>Help Wanted</h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Apr 12, 2016</span>
+
+  <div class="post-content">
+    <h1>Help wanted - a summary of community contributions we really need your 
help with</h1>
+
+<p>Libcloud has a fantastic community, we value our community contributions 
and having a wide and varied experience and skillset.</p>
+
+<p>Recently people have been asking what else they can do to help that 
isn&#39;t creating another driver, there&#39;s still plenty to do, here is a 
summary of some contributions
+that would be really valuable and don&#39;t nessecarily require advanced 
Python experience.</p>
+
+<h2>Skill set - documentation</h2>
+
+<ul>
+<li>Develop a &#39;writing a driver&#39; from scratch tutorial that covers all 
the steps to developing a new DNS, Storage, Compute etc driver.</li>
+<li>Improve the provider feature matrix, it&#39;s difficult to navigate and a 
more screen friendly format needs to be found <a 
href="http://libcloud.readthedocs.org/en/latest/supported_providers.html#provider-matrix";>page</a></li>
+<li>Develop a &quot;Libcloud in 30 minutes&quot; tutorial that takes you 
through installation, getting started and loading up your cloud and using the 
driver.</li>
+</ul>
+
+<h2>Skill set - Web Authoring</h2>
+
+<p>Our website is written using Jekyll, Markdown and HTML. </p>
+
+<p><a href="http://svn.apache.org/viewvc/libcloud/site/trunk/";>Source 
Code</a></p>
+
+<p>We would really value</p>
+
+<ul>
+<li>Additional copy on the homepage explaining what the project does and 
potential use cases</li>
+<li>Develop out the community pages</li>
+<li>Extend the Using pages to link to the documentation site</li>
+<li>Integrating video/GIF tutorials on the homepage</li>
+</ul>
+
+<h2>Skill set - Video tutorials</h2>
+
+<p>Complimenting our documentation with video tutorials (or GIF tutorials) on 
basic concepts and how to use the library would be really useful for 
beginners.</p>
+
+<h2>Skill set - Advanced Python development</h2>
+
+<h3>Compute driver</h3>
+
+<ul>
+<li>The base <code>Node</code> class is missing standard fields to describe 
the CPU, Memory and Disk information for the Node. Propose, design and develop 
an implementation for this problem.</li>
+<li>Update the Azure driver to support the ARM APIs.</li>
+<li>Solve the <code>create_node</code> problem - (this is a big one). The 
driver classes are interchangable with the large and important exception of 
<code>create_node</code>. Some drivers use implicitly required 
<code>kwargs</code>, some require additional
+named keyword arguments, like the GCE driver requires the project name. This 
means any code needs to switch the argument set depending on the driver.
+We need a method(s) in the base driver which is consistent, and can be used 
across drivers. This would most likely use an Adapter or Proxy design pattern. 
</li>
+</ul>
+
+<h3>Container driver</h3>
+
+<ul>
+<li>Extend the <a 
href="http://libcloud.readthedocs.org/en/latest/container/drivers/kubernetes.html";>Kubernetes</a>
 driver to implement a <a 
href="https://cloud.google.com/container-engine/";>Google Container Engine</a> 
driver</li>
+<li>Develop an Azure Container Service driver</li>
+<li>Test and extend the Docker driver</li>
+<li>Test and extend the Kubernetes driver for compatibility with the 1.2 
release</li>
+</ul>
+
+<h3>Backup driver</h3>
+
+<ul>
+<li>Implement a driver using Amazon EBS snapshots</li>
+<li>Implement an Azure Backup driver</li>
+</ul>
+
+<h3>DNS driver</h3>
+
+<ul>
+<li>Implement an Azure <a 
href="https://azure.microsoft.com/en-us/services/dns/";>DNS</a> driver</li>
+</ul>
+
+<h2>Skill set - Testing and experience</h2>
+
+<p>We have 2 major changes that need testing against real life</p>
+
+<ul>
+<li><p>The <code>requests</code> implementation of our base HTTP classes, see 
my <a 
href="http://libcloud.apache.org/blog/2016/04/06/requests-support.html";>previous
 post</a> on details. This needs thoroughly testing against</p>
+
+<ul>
+<li>Compute classes, POST, GET methods</li>
+<li>AWS auth token signing</li>
+<li>Storage drivers using PUT and file streams</li>
+</ul></li>
+<li><p>The container base class promoting to a &quot;stable&quot; state</p>
+
+<ul>
+<li>Testing the docker driver against different implementations and auth 
mechanisms</li>
+<li>Testing the Amazon ECS driver against real-world scenarios</li>
+</ul></li>
+</ul>
+
+<h2>Use case projects</h2>
+
+<p>There are a number of use cases that have been discussed but not 
implemented in a public repository. These would
+demonstrate the power of libcloud.</p>
+
+<ul>
+<li>A storage migration utility - Our storage APIs are a great way </li>
+<li>A DNS management library - Configure your DNS providers in a DSL file and 
have a command line utility to list records, zones and manage DNS</li>
+<li>A bind export utility - Our DNS driver supports <a 
href="http://libcloud.readthedocs.org/en/latest/dns/api.html#libcloud.dns.base.DNSDriver.export_zone_to_bind_format";>exporting
 a zone to bind format</a>. Some cloud providers, such as Amazon Route53 
don&#39;t offer this feature publically, so using libcloud would be
+a great use to allow people to export and backup data from Route53 or other 
services to a secondary NS slave.</li>
+<li>A REST API for Libcloud - @tonybaloney has already started this using 
Flask RESTful supporting GET methods, this needs to extended and developed. The 
idea is
+to allow non-Python users to leverage libcloud via a RESTful API. The API will 
be dynamically constructed using Pythons introspection capabilities. <a 
href="https://github.com/tonybaloney/libcloud.api";>See the project and fork 
this to get started</a></li>
+</ul>
+
+<h2>OK, I&#39;m ready - what now?</h2>
+
+<p>Depending on what level of experience you are at, you can learn more about 
how to get started. You&#39;ll be pleased to learn that the libcloud project is 
beginner friendly, we accept contributions from all levels as well as abiding 
by the ASF code of ethics.</p>
+
+<h3>New to open-source?</h3>
+
+<p>Check out this <a 
href="https://www.thinkful.com/learn/github-pull-request-tutorial/";>tutorial on 
creating your first PR</a> </p>
+
+<h3>New to Python?</h3>
+
+<p>Check out <a href="http://www.learnpython.org/";>LearnPython.org</a> to cut 
your teeth on some interactive tutorials.</p>
+
+<p>Specifically to develop on libcloud you will need some tools:</p>
+
+<ul>
+<li>A Python text editor like <a href="https://atom.io/";>Atom</a>, <a 
href="http://komodoide.com/";>Komodo</a>, <a 
href="https://www.jetbrains.com/pycharm/";>PyCharm</a> or emacs.</li>
+<li>The Python 2.7 and 3.5 CPython interpreters installed</li>
+<li>Tox for running the unit tests (<code>easy_install tox</code>)</li>
+<li>Linting tools for checking PEP8 compliance, Flake8 (<code>easy_install 
flake8</code>) and PyLint (<code>easy_install pylint</code>)</li>
+<li>Sphinx for building the docs</li>
+</ul>
+
+<h3>New to Apache?</h3>
+
+<p>Firstly, checkout <a href="http://www.theapacheway.com/";>The Apache Way</a> 
to understand the principles of the Apache community projects.</p>
+
+<p>If you&#39;re a committer on an Apache project, it means that you can 
commit directly to the project&#39;s repository. For instance, with Apache 
Libcloud committers are allowed to directly push commits into the git 
repository. Non-Committers can
+raise pull-requests on the read-only mirror on <a 
href="https://github.com/apache/libcloud";>github.com/apache/libcloud</a>, one 
of the committers will then use <code>git am</code> to merge your patch 
directly into the ASF git repository on your behalf. You will still
+get contribution recognition in the git logs.</p>
+
+<h3>I&#39;m a pro, come at me</h3>
+
+<ul>
+<li>Read our project style and best-practice guidance on <a 
href="http://libcloud.readthedocs.org/en/latest/development.html#getting-started-with-contributing-to-libcloud";>the
 documentation site</a> for all of the things that are checked during the PR 
process.</li>
+</ul>
+
+  </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/community.html" rel="tag">community</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-2016 <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>
+</div>
+
+          </div>
+        </div>
+      </footer>
+
+    </div><!-- /.container -->
+
+    <!-- JavaScript -->
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.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>

Modified: libcloud/site/trunk/generated/blog/atom.xml
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/atom.xml?rev=1748478&r1=1748477&r2=1748478&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/atom.xml (original)
+++ libcloud/site/trunk/generated/blog/atom.xml Wed Jun 15 01:32:13 2016
@@ -5,7 +5,7 @@
   <link href="https://libcloud.apache.org"; rel="self" />
   <link href="https://libcloud.apache.org"; />
   <id>https://libcloud.apache.org</id>
-  <updated>2016-06-15T11:25:39+10:00</updated>
+  <updated>2016-06-15T11:31:00+10:00</updated>
   <author>
     <name>The Apache Software Foundation</name>
   </author>

Added: libcloud/site/trunk/generated/blog/page/15/index.html
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/page/15/index.html?rev=1748478&view=auto
==============================================================================
--- libcloud/site/trunk/generated/blog/page/15/index.html (added)
+++ libcloud/site/trunk/generated/blog/page/15/index.html Wed Jun 15 01:32:13 
2016
@@ -0,0 +1,191 @@
+<!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>Blog | 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="Blog" property="og:title">
+    
+
+    
+
+    
+
+    
+      <meta content="website" property="og:type">
+    
+
+    
+      <meta content="https://libcloud.apache.org/blog/page/15/index.html"; 
property="og:url">
+    
+    
+
+    
+
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.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/latest/"; 
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">
+    <h1>Blog</h1>
+
+<div class="posts">
+  
+  
+    
+      <div class="post">
+  
+    <h2><a href="/blog/2010/02/02/libcloud-0-2-0-released.html">Libcloud 0.2.0 
released</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Paul Querna <span style="display:none">(<a 
href="https://plus.google.com/114551141389167971892?rel=author";>Google+</a>)</span>on
 Feb 02, 2010</span>
+
+  <div class="post-content">
+    <p>Libcloud 0.2.0 has been released.</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/release%20announcement.html" rel="tag">release 
announcement</a></p>
+    </div>
+  </div>
+</div>
+
+    
+  
+</div>
+
+<p class="navigation">
+  
+
+  
+    
+      
+        <span class="pull-right"><a href="/blog/page/14/">Next Page 
»</a></span>
+      
+    
+  
+</p>
+
+
+  </div>
+
+  <div class="col-lg-3 col-lg-offset-1">
+    <h2>Archive</h1>
+    <ul>
+      <li> <a href="/blog/archives/2016/04/"> April 2016</a> 
&nbsp;(3)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> 
&nbsp;(2)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> 
&nbsp;(4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> 
&nbsp;(1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> 
&nbsp;(1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> 
&nbsp;(2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> 
&nbsp;(1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> 
&nbsp;(1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> 
&nbsp;(1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> 
&nbsp;(1)</li><li> <a href="/blog/archives/2014/11/"> November 2014</a> 
&nbsp;(1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> 
&nbsp;(2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> 
&nbsp;(1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> 
&nbsp;(1)</li><li> <
 a href="/blog/archives/2014/04/"> April 2014</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2014/02/"> February 2014</a> &nbsp;(8)</li><li> <a 
href="/blog/archives/2014/01/"> January 2014</a> &nbsp;(4)</li><li> <a 
href="/blog/archives/2013/12/"> December 2013</a> &nbsp;(3)</li><li> <a 
href="/blog/archives/2013/11/"> November 2013</a> &nbsp;(2)</li><li> <a 
href="/blog/archives/2013/09/"> September 2013</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2013/08/"> August 2013</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2013/07/"> July 2013</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2013/03/"> March 2013</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2013/02/"> February 2013</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2012/12/"> December 2012</a> &nbsp;(2)</li><li> <a 
href="/blog/archives/2012/11/"> November 2012</a> &nbsp;(2)</li><li> <a 
href="/blog/archives/2012/09/"> September 2012</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2012/08/"> August 2012</a> &nbsp;(1)</li><li> <a 
 href="/blog/archives/2012/07/"> July 2012</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2012/05/"> May 2012</a> &nbsp;(2)</li><li> <a 
href="/blog/archives/2012/04/"> April 2012</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2012/02/"> February 2012</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2011/12/"> December 2011</a> &nbsp;(2)</li><li> <a 
href="/blog/archives/2011/11/"> November 2011</a> &nbsp;(3)</li><li> <a 
href="/blog/archives/2011/10/"> October 2011</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2011/09/"> September 2011</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2011/07/"> July 2011</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2011/06/"> June 2011</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2011/05/"> May 2011</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2011/02/"> February 2011</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2011/01/"> January 2011</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2010/10/"> October 2010</a> &nbsp;(1)</li><li> <a 
href="/blog/arch
 ives/2010/05/"> May 2010</a> &nbsp;(1)</li><li> <a 
href="/blog/archives/2010/02/"> February 2010</a> &nbsp;(1)</li>
+    </ul>
+  </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-2016 <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>
+</div>
+
+          </div>
+        </div>
+      </footer>
+
+    </div><!-- /.container -->
+
+    <!-- JavaScript -->
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.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>

Added: libcloud/site/trunk/generated/blog/tags/community.html
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/community.html?rev=1748478&view=auto
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/community.html (added)
+++ libcloud/site/trunk/generated/blog/tags/community.html Wed Jun 15 01:32:13 
2016
@@ -0,0 +1,305 @@
+<!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>Tag Archive | 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="Tag Archive" property="og:title">
+    
+
+    
+
+    
+
+    
+      <meta content="website" property="og:type">
+    
+
+    
+      <meta content="https://libcloud.apache.org/blog/tags/community.html"; 
property="og:url">
+    
+    
+
+    
+
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.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/latest/"; 
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">
+    <h1>Tag: community</h1>
+
+
+
+  
+    <div class="post">
+  
+    <h2><a href="/blog/2016/04/12/help-wanted.html">Help Wanted</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Apr 12, 2016</span>
+
+  <div class="post-content">
+    <h1>Help wanted - a summary of community contributions we really need your 
help with</h1>
+
+<p>Libcloud has a fantastic community, we value our community contributions 
and having a wide and varied experience and skillset.</p>
+
+<p>Recently people have been asking what else they can do to help that 
isn&#39;t creating another driver, there&#39;s still plenty to do, here is a 
summary of some contributions
+that would be really valuable and don&#39;t nessecarily require advanced 
Python experience.</p>
+
+<h2>Skill set - documentation</h2>
+
+<ul>
+<li>Develop a &#39;writing a driver&#39; from scratch tutorial that covers all 
the steps to developing a new DNS, Storage, Compute etc driver.</li>
+<li>Improve the provider feature matrix, it&#39;s difficult to navigate and a 
more screen friendly format needs to be found <a 
href="http://libcloud.readthedocs.org/en/latest/supported_providers.html#provider-matrix";>page</a></li>
+<li>Develop a &quot;Libcloud in 30 minutes&quot; tutorial that takes you 
through installation, getting started and loading up your cloud and using the 
driver.</li>
+</ul>
+
+<h2>Skill set - Web Authoring</h2>
+
+<p>Our website is written using Jekyll, Markdown and HTML. </p>
+
+<p><a href="http://svn.apache.org/viewvc/libcloud/site/trunk/";>Source 
Code</a></p>
+
+<p>We would really value</p>
+
+<ul>
+<li>Additional copy on the homepage explaining what the project does and 
potential use cases</li>
+<li>Develop out the community pages</li>
+<li>Extend the Using pages to link to the documentation site</li>
+<li>Integrating video/GIF tutorials on the homepage</li>
+</ul>
+
+<h2>Skill set - Video tutorials</h2>
+
+<p>Complimenting our documentation with video tutorials (or GIF tutorials) on 
basic concepts and how to use the library would be really useful for 
beginners.</p>
+
+<h2>Skill set - Advanced Python development</h2>
+
+<h3>Compute driver</h3>
+
+<ul>
+<li>The base <code>Node</code> class is missing standard fields to describe 
the CPU, Memory and Disk information for the Node. Propose, design and develop 
an implementation for this problem.</li>
+<li>Update the Azure driver to support the ARM APIs.</li>
+<li>Solve the <code>create_node</code> problem - (this is a big one). The 
driver classes are interchangable with the large and important exception of 
<code>create_node</code>. Some drivers use implicitly required 
<code>kwargs</code>, some require additional
+named keyword arguments, like the GCE driver requires the project name. This 
means any code needs to switch the argument set depending on the driver.
+We need a method(s) in the base driver which is consistent, and can be used 
across drivers. This would most likely use an Adapter or Proxy design pattern. 
</li>
+</ul>
+
+<h3>Container driver</h3>
+
+<ul>
+<li>Extend the <a 
href="http://libcloud.readthedocs.org/en/latest/container/drivers/kubernetes.html";>Kubernetes</a>
 driver to implement a <a 
href="https://cloud.google.com/container-engine/";>Google Container Engine</a> 
driver</li>
+<li>Develop an Azure Container Service driver</li>
+<li>Test and extend the Docker driver</li>
+<li>Test and extend the Kubernetes driver for compatibility with the 1.2 
release</li>
+</ul>
+
+<h3>Backup driver</h3>
+
+<ul>
+<li>Implement a driver using Amazon EBS snapshots</li>
+<li>Implement an Azure Backup driver</li>
+</ul>
+
+<h3>DNS driver</h3>
+
+<ul>
+<li>Implement an Azure <a 
href="https://azure.microsoft.com/en-us/services/dns/";>DNS</a> driver</li>
+</ul>
+
+<h2>Skill set - Testing and experience</h2>
+
+<p>We have 2 major changes that need testing against real life</p>
+
+<ul>
+<li><p>The <code>requests</code> implementation of our base HTTP classes, see 
my <a 
href="http://libcloud.apache.org/blog/2016/04/06/requests-support.html";>previous
 post</a> on details. This needs thoroughly testing against</p>
+
+<ul>
+<li>Compute classes, POST, GET methods</li>
+<li>AWS auth token signing</li>
+<li>Storage drivers using PUT and file streams</li>
+</ul></li>
+<li><p>The container base class promoting to a &quot;stable&quot; state</p>
+
+<ul>
+<li>Testing the docker driver against different implementations and auth 
mechanisms</li>
+<li>Testing the Amazon ECS driver against real-world scenarios</li>
+</ul></li>
+</ul>
+
+<h2>Use case projects</h2>
+
+<p>There are a number of use cases that have been discussed but not 
implemented in a public repository. These would
+demonstrate the power of libcloud.</p>
+
+<ul>
+<li>A storage migration utility - Our storage APIs are a great way </li>
+<li>A DNS management library - Configure your DNS providers in a DSL file and 
have a command line utility to list records, zones and manage DNS</li>
+<li>A bind export utility - Our DNS driver supports <a 
href="http://libcloud.readthedocs.org/en/latest/dns/api.html#libcloud.dns.base.DNSDriver.export_zone_to_bind_format";>exporting
 a zone to bind format</a>. Some cloud providers, such as Amazon Route53 
don&#39;t offer this feature publically, so using libcloud would be
+a great use to allow people to export and backup data from Route53 or other 
services to a secondary NS slave.</li>
+<li>A REST API for Libcloud - @tonybaloney has already started this using 
Flask RESTful supporting GET methods, this needs to extended and developed. The 
idea is
+to allow non-Python users to leverage libcloud via a RESTful API. The API will 
be dynamically constructed using Pythons introspection capabilities. <a 
href="https://github.com/tonybaloney/libcloud.api";>See the project and fork 
this to get started</a></li>
+</ul>
+
+<h2>OK, I&#39;m ready - what now?</h2>
+
+<p>Depending on what level of experience you are at, you can learn more about 
how to get started. You&#39;ll be pleased to learn that the libcloud project is 
beginner friendly, we accept contributions from all levels as well as abiding 
by the ASF code of ethics.</p>
+
+<h3>New to open-source?</h3>
+
+<p>Check out this <a 
href="https://www.thinkful.com/learn/github-pull-request-tutorial/";>tutorial on 
creating your first PR</a> </p>
+
+<h3>New to Python?</h3>
+
+<p>Check out <a href="http://www.learnpython.org/";>LearnPython.org</a> to cut 
your teeth on some interactive tutorials.</p>
+
+<p>Specifically to develop on libcloud you will need some tools:</p>
+
+<ul>
+<li>A Python text editor like <a href="https://atom.io/";>Atom</a>, <a 
href="http://komodoide.com/";>Komodo</a>, <a 
href="https://www.jetbrains.com/pycharm/";>PyCharm</a> or emacs.</li>
+<li>The Python 2.7 and 3.5 CPython interpreters installed</li>
+<li>Tox for running the unit tests (<code>easy_install tox</code>)</li>
+<li>Linting tools for checking PEP8 compliance, Flake8 (<code>easy_install 
flake8</code>) and PyLint (<code>easy_install pylint</code>)</li>
+<li>Sphinx for building the docs</li>
+</ul>
+
+<h3>New to Apache?</h3>
+
+<p>Firstly, checkout <a href="http://www.theapacheway.com/";>The Apache Way</a> 
to understand the principles of the Apache community projects.</p>
+
+<p>If you&#39;re a committer on an Apache project, it means that you can 
commit directly to the project&#39;s repository. For instance, with Apache 
Libcloud committers are allowed to directly push commits into the git 
repository. Non-Committers can
+raise pull-requests on the read-only mirror on <a 
href="https://github.com/apache/libcloud";>github.com/apache/libcloud</a>, one 
of the committers will then use <code>git am</code> to merge your patch 
directly into the ASF git repository on your behalf. You will still
+get contribution recognition in the git logs.</p>
+
+<h3>I&#39;m a pro, come at me</h3>
+
+<ul>
+<li>Read our project style and best-practice guidance on <a 
href="http://libcloud.readthedocs.org/en/latest/development.html#getting-started-with-contributing-to-libcloud";>the
 documentation site</a> for all of the things that are checked during the PR 
process.</li>
+</ul>
+
+  </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/community.html" rel="tag">community</a></p>
+    </div>
+  </div>
+</div>
+
+  
+
+
+  </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-2016 <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>
+</div>
+
+          </div>
+        </div>
+      </footer>
+
+    </div><!-- /.container -->
+
+    <!-- JavaScript -->
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.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>


Reply via email to