Add Shiva Teja's proposal to GSoC docbook

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/a3d585ea
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a3d585ea
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a3d585ea

Branch: refs/heads/disk_io_throttling
Commit: a3d585ea4effc3a326858e777a7f785ddf44dfe2
Parents: ac48e5d
Author: Shiva Teja <[email protected]>
Authored: Fri Jun 14 00:54:03 2013 +0530
Committer: Sebastien Goasguen <[email protected]>
Committed: Mon Jun 17 02:20:37 2013 -0400

----------------------------------------------------------------------
 docs/en-US/gsoc-shiva.xml | 70 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a3d585ea/docs/en-US/gsoc-shiva.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/gsoc-shiva.xml b/docs/en-US/gsoc-shiva.xml
new file mode 100644
index 0000000..400af3c
--- /dev/null
+++ b/docs/en-US/gsoc-shiva.xml
@@ -0,0 +1,70 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"; [
+<!ENTITY % BOOK_ENTITIES SYSTEM "CloudStack_GSoC_Guide.ent">
+%BOOK_ENTITIES;
+]>
+
+<!-- Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+ 
+   http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<chapter id="gsoc-shiva">
+        <title>Shiva Teja's 2013 GSoC Proposal</title>
+        <para>This chapter describes Shiva Teja's 2013 Google Summer of Code 
project within the &PRODUCT; ASF project. It is a copy paste of the submitted 
proposal.</para>
+       <section id="gsoc-abstract-shiva">
+               <title>Abstract</title>
+               <para>
+                       The aim of this project is to create a new modular UI 
for Apache CloudStack using Bootstrap by Twitter and Backbone.js. To achieve 
this easily, I'll be creating a RESTful wrapper API on top of the current 
CloudStack API. I hope this project will make custom UIs for CloudStack very 
easy.</para>
+
+               <para>Why does CloudStack need a new UI?</para>
+
+               <para>The current UI cannot be reused easliy to make a custom 
UI. The UI I will be making using backbone.js can be reused very easily to make 
custom UIs. The models, views, routers etc can remain the same in all the UIs. 
The user interface can be changed just by changing the templates. Check the 
implementation details below for further details.</para>
+
+               <para>Why does it need a RESTful wrapper API ?</para>
+
+               <para>Backbone.js heavily depends on RESTful architecture. 
Making a new UI with backbone.js using a query based API might not be 
easy.</para>
+       </section>
+       <section id="gsoc-deliverables-shiva">
+               <title>List of deliverables</title>
+               <orderedlist>
+                       <listitem><para>A new UI for CloudStack(with almost all 
features in the current UI and new ones, if any).</para></listitem>
+                       <listitem><para>A RESTful wrapper API on top of the 
CloudStack API</para></listitem>
+                       <listitem><para>Some documentation about using this UI 
to make a custom UI.</para></listitem>
+               </orderedlist>
+       </section>
+       <section id="gsoc-approach-shiva">
+               <title>Approach</title>
+               <para>Wrapper API: Backbone.js, by default, uses four HTTP 
methods(GET, PUT, POST, DELETE) for communicating with the server. It uses GET 
to fetch a resource from the server, POST to create a resource, PUT to update 
the resource and DELETE to delete the resource. A query based API can probably 
be used to make the UI by overriding backbone's<ulink 
url="http://backbonejs.org/#Sync";><citetitle> default sync 
function</citetitle></ulink>. But it makes more sense to have an API which 
supports the above mentioned method and is resource based. This RESTful API 
works on top of the CloudStack API. The main task is to map the combinations of 
these HTTP methods and the resources to appropriate CloudStack API command. The 
other task is to decide on how the URLs should look like. Say for starting a 
virtual machine, for it to be RESTful, we have to use POST as we are creating a 
resource, or a PUT as we are changing the state of a virtual machine. So the 
possible options on the URL could be to do
  a POST /runningvirtualmachines and respond with 201 Created code or a PUT on 
/virtualmachines/id and respond with 200 OK. If these are decided, the wrapper 
can be generated or be written manually, which can use defined patters to map 
to appropriate CloudStack API commands(Similar to what cloudmonkey does. See 
this <ulink 
url="https://github.com/shivateja/cloudstack-restful-api";><citetitle>prototype</citetitle></ulink>.
 I can use cloudmonkey's code to generate the required API entity verb 
relationships. Each verb will have a set of rules saying what method should be 
used in the RESTful API and how should it look like in the URL. Another 
possible way could be to group entities first manually and write the wrapper 
manually(something like zone/pods/cluster). Some possibilities have been 
discussed in <ulink 
url="http://mail-archives.apache.org/mod_mbox/cloudstack-dev/201304.mbox/%3CCAJrLSbaqa08uHw_xETt7Q59Nex%3DThQzvqEJyoXK8Q-OwN04Suw%40mail.gmail.com%3E";><citetitle>this
 thread</citetit
 le></ulink>.</para>
+
+               <para>UI: It will be a single page app. It'll use <ulink 
url="http://underscorejs.org/#template";>client side templating</ulink> for 
rendering. This makes it very easy to make a custom UI because it can be 
achieved just by changing the templates. Backbone views will make use of these 
templates to render the appropriate models/collections. A completely new 
interface can be written just by changing the templates. Javascript code can 
completely remain the same. The views will take care of appropriate DOM events. 
Such event will correspond to appropriate model/collection chages, thus causing 
appropriate API calls.</para>
+       </section>
+       <section id="gsoc-schedule-shiva">
+               <title>Approximate Schedle</title>
+               <para>Till June 17 - Decide on how the RESTful API should look 
like and design algorithms to generate the wrapper.</para>
+               <para>July 5(soft deadline), July 10(hard deadline) : Wrapper 
API will be ready.</para>
+               <para>July 12(soft) - July 15(hard): Make basic wireframes and 
designs for the website and get them approved.</para>
+               <para>July 29(mid term evaluation) : All the basic models, 
views, routes of the UI should be ready along with a few templates.</para>
+               <para>August 15(hard deadline, shouldn't take much time 
actually) - A basic usable UI where users can just list all the entities which 
are present in the current UI's main navigation( Like Instances, Templates, 
Accounts etc)</para>
+               <para>September 1(hard) - From this UI, users should be able to 
launch instances, edit settings of most of the entities.</para>
+               <para>September 16(Pencil down!) - Fix some design tweaks and 
finish a completely usable interface with functions similar to current 
UI.</para>
+               <para>September 23 - Finish the documentation on how to use 
this UI to make custom UIs.</para>
+       </section>
+       <section id="gsoc-aboutme-shiva">
+               <title>About Me</title>
+               <para> I am a 2nd year computer science undergrad studying at 
IIT Mandi, India. I've been using Python for an year and a half now. I've used 
Django, Flask and Tornado for my small projects. Along with Python, I use C++ 
for competitive programming. Recently, I fell in love with Haskell. I've always 
been fascinated about web technologies.</para>
+       </section>
+</chapter>

Reply via email to