Jump to: navigation, search

Difference between revisions of "SDKs"

 
(Delinkified OpenStack all over the place)
Line 2: Line 2:
 
= Software Development Kits =
 
= Software Development Kits =
  
SDKs are a vital part of any ecosystem and we need to start treating them as such in [[OpenStack]]. To do so we need to raise the profile and legitimacy of SDKs that support [[OpenStack]].
+
SDKs are a vital part of any ecosystem and we need to start treating them as such in OpenStack. To do so we need to raise the profile and legitimacy of SDKs that support OpenStack.
  
 
== Definition ==
 
== Definition ==
  
# A set of language bindings that provide a language-level API for accessing [[OpenStack]] (as opposed to forcing developers to use the REST/HTTP APIs directly) in a manner consistent with language standards
+
# A set of language bindings that provide a language-level API for accessing OpenStack (as opposed to forcing developers to use the REST/HTTP APIs directly) in a manner consistent with language standards
# A Getting Started document that shows how to use the API to access [[OpenStack]] powered clouds
+
# A Getting Started document that shows how to use the API to access OpenStack powered clouds
 
# Detailed API reference documentation
 
# Detailed API reference documentation
# Tested sample code that you can use as a "starter kit" for your own [[OpenStack]] applications
+
# Tested sample code that you can use as a "starter kit" for your own OpenStack applications
# SDKs treat [[OpenStack]] as a blackbox and only interact with the REST/HTTP API
+
# SDKs treat OpenStack as a blackbox and only interact with the REST/HTTP API
  
 
== Known SDKs ==
 
== Known SDKs ==
  
What follows is a list of known SDKs that support [[OpenStack]]. This is not a list of official [[OpenStack]] SDKs. What constitutes an official [[OpenStack]] SDK has not been determined. This is an area the needs more work (see Criteria section).
+
What follows is a list of known SDKs that support OpenStack. This is not a list of official OpenStack SDKs. What constitutes an official OpenStack SDK has not been determined. This is an area the needs more work (see Criteria section).
  
To date, SDKs that support [[OpenStack]] fall into two categories. SDKs that support multiple clouds including [[OpenStack]] (aka cross-cloud toolkits) and SDKs that support [[OpenStack]] only. If you're aware of any other SDKs, please add them to the lists below.
+
To date, SDKs that support OpenStack fall into two categories. SDKs that support multiple clouds including OpenStack (aka cross-cloud toolkits) and SDKs that support OpenStack only. If you're aware of any other SDKs, please add them to the lists below.
  
 
=== Cross-Cloud Toolkits ===
 
=== Cross-Cloud Toolkits ===
Line 30: Line 30:
  
 
* Java
 
* Java
** [https://github.com/woorea/openstack-java-sdk OpenStack Java SDK] is a Java binding for the [[OpenStack]] APIs.
+
** [https://github.com/woorea/openstack-java-sdk OpenStack Java SDK] is a Java binding for the OpenStack APIs.
 
* [[JavaScript]]
 
* [[JavaScript]]
** [http://ging.github.com/jstack/ jstack] is a [[JavaScript]] implementation of [[OpenStack]] API
+
** [http://ging.github.com/jstack/ jstack] is a [[JavaScript]] implementation of OpenStack API
 
* PHP
 
* PHP
** [https://github.com/rackspace/php-opencloud php-opencloud] is a software development kit (SDK) to help developers using PHP to work with [[OpenStack]] and other open clouds.
+
** [https://github.com/rackspace/php-opencloud php-opencloud] is a software development kit (SDK) to help developers using PHP to work with OpenStack and other open clouds.
 
* Python
 
* Python
** [https://github.com/openstack/ python-<project>client] are the native Python bindings for the [[OpenStack]] APIs. They are used to implement the command-line interfaces (which ship with the library).
+
** [https://github.com/openstack/ python-<project>client] are the native Python bindings for the OpenStack APIs. They are used to implement the command-line interfaces (which ship with the library).
  
 
== Criteria ==
 
== Criteria ==
  
What criteria is used to determine whether or not an SDK can be considered an [[OpenStack]] SDK has not been formalized. This has been initially discussed at the [[OpenStack]] Grizzly Summit ([https://etherpad.openstack.org/sdk-documentation etherpad]). Naturally the SDK will need to meet the definition above. In addition we thought the [[OpenStack]] Foundation may want to consider a compatibility test suite that will validate whether or not an SDK supports [[OpenStack]].
+
What criteria is used to determine whether or not an SDK can be considered an OpenStack SDK has not been formalized. This has been initially discussed at the OpenStack Grizzly Summit ([https://etherpad.openstack.org/sdk-documentation etherpad]). Naturally the SDK will need to meet the definition above. In addition we thought the OpenStack Foundation may want to consider a compatibility test suite that will validate whether or not an SDK supports OpenStack.

Revision as of 18:04, 24 October 2012

Software Development Kits

SDKs are a vital part of any ecosystem and we need to start treating them as such in OpenStack. To do so we need to raise the profile and legitimacy of SDKs that support OpenStack.

Definition

  1. A set of language bindings that provide a language-level API for accessing OpenStack (as opposed to forcing developers to use the REST/HTTP APIs directly) in a manner consistent with language standards
  2. A Getting Started document that shows how to use the API to access OpenStack powered clouds
  3. Detailed API reference documentation
  4. Tested sample code that you can use as a "starter kit" for your own OpenStack applications
  5. SDKs treat OpenStack as a blackbox and only interact with the REST/HTTP API

Known SDKs

What follows is a list of known SDKs that support OpenStack. This is not a list of official OpenStack SDKs. What constitutes an official OpenStack SDK has not been determined. This is an area the needs more work (see Criteria section).

To date, SDKs that support OpenStack fall into two categories. SDKs that support multiple clouds including OpenStack (aka cross-cloud toolkits) and SDKs that support OpenStack only. If you're aware of any other SDKs, please add them to the lists below.

Cross-Cloud Toolkits

  • Java
    • jclouds is an open source library that helps you get started in the cloud and utilizes your Java or Clojure development skills. The jclouds API gives you the freedom to use portable abstractions or cloud-specific features.
  • Python
    • Apache Libcloud is a standard Python library that abstracts away differences among multiple cloud provider APIs.
  • Ruby
    • fog provides an accessible entry point and facilitates cross service compatibility.

OpenStack Toolkits

  • Java
  • JavaScript
  • PHP
    • php-opencloud is a software development kit (SDK) to help developers using PHP to work with OpenStack and other open clouds.
  • Python
    • python-<project>client are the native Python bindings for the OpenStack APIs. They are used to implement the command-line interfaces (which ship with the library).

Criteria

What criteria is used to determine whether or not an SDK can be considered an OpenStack SDK has not been formalized. This has been initially discussed at the OpenStack Grizzly Summit (etherpad). Naturally the SDK will need to meet the definition above. In addition we thought the OpenStack Foundation may want to consider a compatibility test suite that will validate whether or not an SDK supports OpenStack.