Google Data APIs Protocol (GData Module)

Events happening in the community are now at Drupal community events on www.drupal.org.
mepcotterell's picture

Proposed Abstract: This proposal aims to create a module that implements the GData protocol specification in Drupal. The Google data APIs provide a simple standard protocol, called "GData", for reading and writing data on the web using either of two standard XML-based syndication formats: Atom or RSS. This module will handle all the basic stuff a developer shouldn't have to worry about when developing modules that extend its functionality such as data transfer, protocol adherence, and authentication. It will expose its own API which will allow other developers to create modules that easily interact with information provided by Google's many service APIs. Using this module, module developers who need access to this information need only concern themselves with what's important: the data.

I understand that there is another project proposal for Google Contacts API Integration. I think that a single module that does everything involved in interacting with the Contacts API is potentially an unnecessarily big task. My proposal seeks to make the creation of such a module, as well as many other modules that need to use GData, easy and maintainable.

Also, there's been talk among some students about creating a Social Integration API/module. I believe that my proposal and its API would make the creation of such a module easier. However, I do see a potential problem in that it would be beneficial to most developers for there to be a single API spec (maybe called "Drupal Web Services API") that these modules (GData and other modules providing APIs to web services) are exposing to Drupal. At the very least, the API that this module would expose to Drupal needs to be similar in syntactics to Drupal's core APIs. Some, if not a lot of, guidance would be appreciated on this subject.

AttachmentSize
Google Data APIs Protocol (GData Module).pdf31.93 KB

Comments

Writing up my Application

mepcotterell's picture

I should have my full application written up and posted here for review by tomorrow evening, if not earlier. I hope I get some input on this!

Benefits to the Drupal/Open Source Community

mepcotterell's picture

Here's a draft of the benefits part of my application:

This module will benefit Drupal by providing developers with an easy way to interact with information provided by Google's many service APIs without worrying about all the behind-the-scenes stuff that goes into accessing and modifying that information. This opens up a world of possibilities for integrating Google applications into Drupal. Some ideas that could be more easily implemented using the API provided by a GData module include, but are not limited to, the following:

  • Using Gooogle's Apps API to integrate various Google applications into Drupal, allowing it to be a competitor with other online groupware suites such as Microsoft SharePoint.
  • Integrating Google Base Data into dynamic Drupal applications using Google's Base Data API.
  • Creating a Drupal front-end to Google's Blogger service through its Blogger Data API, allowing for the administration of one or more Blogger sites through a Drupal interface.
  • Allow users with a Google account to add their contacts to Drupal through Google's Contacts API, enabling, beyond the simple importation of such information, the ability for social networks built on Drupal to connect users using their Contacts data.
  • Easily share calendars with users or between sites using Google's Calendar API.
  • Enable users to search through Google Code through a Drupal interface with Google's Code Search API.
  • Allow users to share documents and notebooks using Google's Document List, Notebook Data, and Spreadsheet Data APIs.
  • Allow users to import and export their Drupal settings to their Google accounts via database abstraction of Google Spreadsheets through their Spreadsheets Data APIs.
  • Create a community image hosting application in Drupal leveraging the power of Google's Picasa Web Albums Data API.
  • Create a community video hosting application in Drupal leveraging the power of Google and YouTube using Google's YouYube API.

Many people will benefit from this module. Developers who need to harness the powers of GData can do so with relative ease. Users who use contributed modules that make use of the API exposed by the GData will benefit by knowing that very interesting things are being done with their Google services while still maintaining a high level of security and without exposing any personal information except that information that they approve.

The likely user-base for this module is Drupal developers. Currently, there is not single way to access Google APIs in Drupal and so developers are coming up with varying implementations of accessig GData on a module-by-module basis. This module is an improvement by providing a single, maintainable, and easy-to-use interface for Drupal developers to get what they need out of Google services.

alex_b's picture

I am sure you have seen that there are at least three Google Data API modules (youtube, contacts, document list) and probably some contrib modules that use Google Data APIs.

Would your module handle all common tasks of the Google Data API or only the GData protocol? Or: how would your module help with integrating common tasks between the proposed modules? (See the discussion about sharing functionality here). Please clarify if I am asking an uneducated question. My Google API expertise stems from flying over the documentation.

I see great potential for this module to be the common base for some proposed and existing modules.

GData as a Protocol

mepcotterell's picture

To be concise, this module would help with integrating common tasks between the other proposed modules.

The Google service APIs all share GData as a protocol specification for how the data should be interacted with between applications. The APIs differ only in the structures of the data transported using the protocol. Each application (or derived module [ex: google contacts module]) would be responsible for handling the data once recieved.

The GData module would allow modules to easily get the data without worrying about how they got the data by providing a Drupal-like API for accessing the Google APIs which provides transport authentication and easy querying.

Also, if the GData specification gets updated, this module can be updated to support the newer specification. This potentially allows dependent modules to gain new functionality offered by the specification update without breaking their current functionality due to the API-to-API nature of the GData module.

GData

robloach's picture

I made a quick note in the GData issue queue regarding a GData module revamp. It would be a good idea to give it a read over and think over the design a bit, as there are some components out there that you could already use (Zend Framework, Services, etc).

You could do so much with this system, that it would also be worth it to get a strict feature set that you'd be working towards for the end of the summer.

The Zend GData Client Libraries

mepcotterell's picture

Since Zend provides these libraries independently of the Zend Framework, it should be possible to wrap the libraries in a way that makes accessing their features just as easy as anything in Drupal.

I suppose the goal would be to use this, or possibley some other (but why?), library to implement a module that provides a Drupal-like API for interacting with the Google APIs.

As for a feature set, I haven't thought about that yet. Although, supporting most, if not all, of the protocol implementation and possibly including an example module are prime targets.

I've uploaded my application

mepcotterell's picture

I've uploaded my application to the main post in this discussion. I'd like for someone from the community to review it, criticize it, and make suggestions before I officially submit it so that I can make changes where necessary.

I think its a great idea ..

dipen chaudhary_'s picture

I have written a application for http://groups.drupal.org/node/9829 and I wanted this kind of framework to talk GDATA protocol with google services .. I think drupal should have a framework of Gdata protocol so that integrating Drupal with google services becomes easier :)

meep?

1kenthomas's picture

meep?

~kwt

SoC 2008

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: