Google Summer of Code 2008 Project Proposal

User interface for Global Alliance product gRavi

Marcus Westin (student), Ravi Madduri (mentor)


 

Introduction - The Grid.

Grid computing promises the potential to coordinate vastly distributed computational resources into a coherent whole. In doing so it poses qualitatively novel challenges to the field of technology. The socio-political structure among Grid participants is far from obvious; the software communication protocols are complex; and the actual deployment of a ready service onto a grid is exceptionally non-trivial. 

Table of Content

What is the project? Being a service made easy.

Assuming that we have a working grid at our hands, the development, deployment and maintenance of a service is still difficult. At the moment, the participation threshold for anyone but the technology wiz is simply too high. Thus we aim to create a browser-based user interface with the goal to bridge the gap between the highly domain specific complexities of WSDL/WSRF/etc and a seamless user experience. Imagine a South American student on an XO laptop successfully deploying a Grid service - that's our dream.

Conceptual design: After discovering services by search 
and by browsing the service archives, a service flow is 
easily created by connecting services to each other.  

Why is it a good project? Anything is only as useful as it's used.

In short: Grid computing has huge potentials but is still a young technology and extremely difficult to use. In order to leverage its fullest potential the participation threshold has to be lowered, and the user experience made more pleasant. 

Our particular choice of a browser-based GUI has the obvious benefit of easy distribution and minimal client requirements.

What exactly? The Deliverables:

Ravi delivers a deployable war file for Apache servers, complete with XML configuration files and necessary java classes. This makes it manageable to deploy a web service for a novice terminal user. However, implementing the actual service still requires e.g. advanced knowledge of domain specific java libraries, not to mention manually editing the service XML specification files. The missing component is an enhanced xhtml/javascript UI for easily building services at multiple layers of detail (from drag and drop to actual code editing). The critical sub-components will be:

Technology to be used - Languages, libraries, toolkits etc.

Server side: REST - As GT4 and gRavi is implemented in Java, I expect to work strictly with Java on the server side. The major server-side component should be the implementation of a RESTful HTTP API, which should amount to a minor module extension to the servlet created by gRavi.

Client side: UI - The two primary goals for the UI is accessibility/ease of use and ease of distribution. People with computers and Internet access pretty much universally have a web browser on their system and experience using it. Thus the browser platform is the perfect platform for distribution. Dynamic user interfaces can be created in browsers using javascript, html and css. Combined with fluent/asynchronous server communication with xml or json, we get what people call ajax. 

Ajax is difficult for two reasons
  1. You have to use at least 4 distinct technologies (html, css, javascript and a server implementation of your choice).
  2. Two of them vary significantly across platforms (css and the javascript DOM api)
The first is simply a matter of experience - I consider myself to have that experience. The second is dealt with by leveraging various javascript libraries that abstract cross platform incompatibilities, such as ExtJS, jQuery, mootools, prototype, yui, (or any of the by now 100's of open source libraries out there) and create a smooth, solid development foundation.

I believe the following libraries will be of significant help and importance:
  1. ExtJS for the overarching UI style and framework
  2. JsViz for the service connectivity flowchart UI
  3. jQuery or Mootools if there are any small pages not belonging inside the main UI framework

Development Timeline

My intention would be to work on the project part time, ca 2-3 hours per day for a 10-15 hour work-week. The outlined timeline give milestones - naturally, much of the work will be done more in parallel (and obvious things like test case development and documentation are omitted) but the timeline milestones offer a good outline of the development process. Assuming 10 weeks of active development, I imagine the process to go something like this:

Why me? Good timing, Good skills, Good faith.


Most importantly, I believe in the potential of the Grid and find it a natural next step in the development of technology and communication in a global society. In addition, I have a fitting combination of 

My relevant experience - What I've worked on before

Relevant academic CS classes, taken at the University of Chicago 

Relevant software experience

Here is a Resume of other "real world" work I've had experience with.

Example products created

Implior database user interface
User interface created for Swedish company Implior, summer of 2007
   Click for full size image
 

ShareWithMe - Spare time project: online user interface for document/image/video management

                          
Video demo  - system overview        Video demo  - Cut and paste videos into documents by drag and drop


Showcase for Implior: Javascript/XHTML/CSS UI for an implementation of the Miss Manners benchmark written for the company's in-house Rule Engine:
http://www.marcuswestin.com/Demos/MissManners/

Fingerprint - A Javascript tool for fingerprinting password keystroke timing, and passing it back to the server along with the username and password
Blogged about on Ajaxian