Student: Nithish R

Student e-mail: nithishr [at] gmail [dot] com

Project Proposal title: Enhancements to the nearby people application

Apache project name : Wookie

Mentor name : Ross Gardler

Link to project idea JIRA : https://issues.apache.org/jira/browse/COMDEV-22

1. Abstract

The Apache Community Development Project's Nearby People Application is used to help people find speakers and mentors in a specific geographic location. The application is written in Django (Python) and is hosted at [1]. It currently allows the user to locate speakers and mentors near the specified geographic location.

Apache Wookie is a Java server application that allows you to upload and deploy widgets for your applications; widgets can not only include all the usual kinds of mini-applications, badges, and gadgets, but also fully-collaborative applications such as chats, quizzes, and games.

Wookie is based on the W3C Widgets specification, but widgets can also be included that use extended APIs such as Google Wave Gadgets and OpenSocial.

Administrators can upload Widgets packaged according to the W3C Widgets specification. Wookie makes these available to applications using a REST API. These widgets can then be hosted in a container application such as Drupal, Wordpress, Moodle, Elgg or any other web based system.

This proposal aims to enhance the functionality of the Nearby people application to include the options to accomplish the following:

(i) FIlter the people by their Projects

(ii) Provide further information about the person from other sites such as twitter & their blogs.

These features would be implemented using Wookie widgets. 

2. Detailed description

2.1 Requirements

The implementation would require the user interface through Wookie widgets. The users' inputs should then be given to the Nearby people application which would process the request and return the search results. These results would then be given back to the Wookie widget from the application. Then the user can then view more details regarding the results. This information would again be transferred to the application. The application would provide the required information like the Twitter handle of the users & the Projects in which they are working. This would require the addition of a REST interface to the application.  This REST interface would be responsible in managing the transfer of information between the application & the widget.

2.1.1 REST Interface For Communication Between Wookie Widget & Nearby People Application

REST interface consists of clients and servers. Clients initiate requests to servers; servers process requests and return appropriate responses. Requests and responses are built around the transfer of representations of resources. A resource can be essentially any coherent and meaningful concept that may be addressed. A representation of a resource is typically a document that captures the current or intended state of a resource.

There is an identifier for each instance of the widget. Based on this information, the different users of the widget can be determined. Now this information can be embedded in the transmission of messages between the application & the widget. The Wookie widgets support the transmission of information using HTTP request methods like GET, PUT & POST. So the user input can be be transferred to the application using the GET method. This information would be in XML format. The application can process this XML & extract the required information. There are plenty of XML parsers in Python like MiniDom. The application would be accessing the required information from the database holding the information regarding the people & their locations. The After processing in the application, the output can be transferred back to the widget using POST method.  For this, Django REST Framework or Requests Library in Python can be used.

2.1.2. Display of Output from Nearby People Application on the Widget

The response from the Nearby People Application can be in the form of XML or JSON.  This involves the creation of the Wookie widgets for the functionality, i.e, getting the Wookie widget to process the output from the application & display it.

2.1.3  Twitter Feed & Blog Display

The details of the person's twitter handle & blogs may be obtained from the nearby people application. Once this information is received by the widget, the widget can then retrieve their tweets using the Twitter API. The twitter widget supplied along with the Wookie widget uses the older API which is not supported currently. The latest API uses JSON instead of XML for the representation of data. This can then used to display the person's twitter feed. Similarly using the details of the blog, its feed can also be used in the widget.

2.2 Deliverables

  • Nearby People Application with REST interface for communication with the Wookie widgets.
  • Wookie widgets for user input  & the display of the information related to the user query.
  • Documentation related to using the widgets & the application.

2.3 Architectural outline

This is a high level design of the proposed system. The Application side involves the Django framework, the REST interface & the Database. The widgets & the application communicate via the REST interface. The Wookie widgets use the Twitter & Blog APIs for getting the external information.

3. Timeline

Time Frame

Task

Before August 2nd

Proposal Reviews & getting to know the different libraries & technologies involved.

August 5th to August 25th (3 Weeks)

Establish the REST interface communication between Wookie widget & the Nearby People Application.

August 26th to September 10th ( ~2 Weeks)

Enable the display of output from the Nearby People Application onto the Wookie widget.
Documentation till date.
Mid Term Evaluation.

September 16th to September 29th (2 Weeks)

Mid Term Evaluation Review.
Implement the filtering by Project feature.

September 30th to October 13th (2 Weeks)

Implementation of Twitter feed & blog details.

October 14th to October 21st (1 Week)

Buffer week in case of delays.

October 22nd to October 28th (1 Week)

Code Review.
Documentation.
Final Evaluation.

[1] http://community.zones.apache.org/

  • No labels