Implementing JGoogle package for Joomla platform

Buddhima Wijeweera

Short description: With this proposal I’m proposing to enhance the Joomla platform by adding classes which incorporate with Google APIs. At the completion of the project Joomla community gets the opportunity of using set of very useful features in Google API which cannot be accessed by current platform or extensions.

Implementing JGoogle package

Google Summer of Code Project Proposed by Joomla!


Contact Information

Name:  Buddhima Wijeweera

Blog: buddhimawijeweera.wordpress.com

Location: Sri Lanka

Time zone: UTC+5:30

  

Contact information for my university

Name of institution: University of Moratuwa, Sri Lanka

Website of institution: http://www.mrt.ac.lk/efac/

Name of major department: Department of Computer Science and Engineering

 

My Project

JGoogle package project is for the Joomla platform. It aims to include set of classes that support the following Google APIs:

1.       Google Picker API [1]
Shifting away from conventional, platform-specific “File Open” dialogs, by incorporating Google Picker API, Joomla users can benefited as follows.
   The familiar Google look and feel for Google Docs and other Google facilities.
   A dialog box with previews or thumbnails.
By adding the feature user can easily link files in Google docs, YouTube, Picasa and many more to web page with few clicks.

2.       Google reCAPTCHA API [2]
Google reCAPTCHA service helps to protect web sites against spams and malicious registrations where computers are trying to appear as humans. Although Joomla is using a reCAPTCHA service by incorporating Google service spam detection could be increased and provide more reliable service. In addition to that Joomla community will get a chance to help project of digitizing books.

3.       Google Feed API [3]
This API helps to download and public Atom or RSS feed to website. In addition to that it can be presented as an intermediate component which helps to show feeds on Google Maps. This component would be very useful for Joomla users who are interested in working with RSS feeds.

4.       Google Page Speed Insights API [4]
Google Page Speed is the service offered by Google to optimize the downloading speed of web pages and give feedback on users about improving the loading speed of web pages. In currently Joomla web pages shows a bit slow in loading, so this would surely be helpful to reduce the latency.

In addition to above four major components I’m planning to Integrate Fusion Table API in JGoogle Package. From overall project I’m trying to expose 4 important Google APIs to the Joomla platform which are currently not use support by Joomla. After completion of my project Joomla users will surely get new experiences with Joomla.

Final deliverable from this project would be set of classes with test classes for Joomla platform that support for Google APIs mentioned above. So other developers will get a chance of using them for their own purposes.



Project Design in Brief

For my project I am proposing the following design. It contains JGoogleObject an abstract class which possess the common information required to all sub-classes. For the usage of each Google API needs to extend from the JGoogleObject and implement methods and attributes related to that API.

Google APIs offer web services, for that I need to implement set of classes which extends from JGoogleHttp class. JGoogleHttp is a class which extends from JHttp class which has already in Joomla platform. [5]   

In designing this diagram I have taken care of reusability and loose coupling which will help to extend the development of this package in future. For this designing I referred the jGithub package code which is currently available in Joomla platform. [6]  

This link will explain my proposing design for JGoogle Package using standard UML diagrams.


Project Schedule

I’m going to divide development phase of my project plan into 4 parts including community building period.

Present – April 23rd: Getting more familiar with Joomla platform, read documentations and prepare background environment for the project.

1st Quarter [ April 24th – May 25th ]

April 24th – May 10th : Get to know mentors, Read  documentations related to Joomla platform, Picker API, design the class structure according to platform requirements.

May 10th – May 16th : Implement the relevant background classes required to implement Picker API considering the structure of the core class.

May 16th – May 25th : Implement and test for main class related to Picker API and finalize the 1st Quarter

2nd Quarter [ May 26th – June 15th ]

May 26th – May 30th : Read the documentation related to reCAPTCHA API and designing about implementing it. Studying about currently available reCAPTCHA in Joomla

May 30th –June 7th : Implement supporting classes for the main class which connects with reCAPTCHA.

June 7th – June 15th : Implement the main class related to reCAPTCHA and create necessary test cases.

3rd Quarter [ June 16th – July 10th ]

June 16th – June 23rd : Read documentation related to Feed API and designing how RSS feeds could be incorporate with currently available platform.

June 23rd – July 10th : Implementing classes which are related to Feed API and check for their functionality.

Mid-Term Evaluation Period [ July 11th – July 13th ]

4th Quarter [ July 14th – August 12th ]

July 14th – July 25th : Studying about Page Speed Insight API, Identifying the functionalities that could integrate in to Joomla platform.

July 26th – August 2nd : Implementing the classes and test cases related to Page Speed API.

August 3rd – August 12th : Read documentation related to Google Fusion table and integrated in to platform with relevant  classes and test cases.

Finalizing Period [ August 13th – August 19th ]

Bug fixing, testing for each unit integrated, finalizing documents related to the project and add documentation to relevant online resources (Joomla wiki if necessary).

Final Evaluation [August 21st – August 24th ]

In the plan above I have allocated more time on first few tasks as they may need time for adoption. But that would help me to speed up the tasks which are in the latter part and produce deliverables on time. The above schedule is a rough plan but I can speed up my plan as getting much more familiar to the platform, so I could cover up almost 65% of the project before mid-evaluations and get more opportunity to work with my challenging idea of integrating Fusion Table API to Joomla platform.

Time: About 40 hours per week

For the successful completion of the project I am expecting the guidance from a friendly, reachable mentor who is familiar with Joomla platform.

My Familiarity with Joomla

As a developer with future plans

I have used many open source software in my career. But I had an idea of how to contribute as a developer to the open source community.

First I have developed web pages through Joomla for my Artificial Intelligent based gaming client.

After that I’ve read some articles about developing plugins to Joomla platform. After few days I was able to develop a Sinhala (National Language of Sri Lanka) word finder plugin for Joomla. That would help Sinhalese speaking people to understand contents in Joomla pages very easily.

Recently I have launched patches which are mentioned issues in main Github repository.

If my project approved I will be able to develop components based on my own JGoogle package classes and serve the Joomla community.

In future as an open source software developer I would like to participate in more open souce software projects.

Links for my works related to Joomla

Website for Game Client project: [7]  

SinhalaMatcher plugin: [8]  

 

Familiarity with tools used by Joomla

        Git: I have used for three of projects I have evolved

                SinhalaMatcher plugin: [8]

                GSUN Projet: [9] 

                Bus Route Finder Project: [10]

 

        I have knowledge about PHPUnit, Selenium and PHP_CodeSniffer, used for testing of PHP applications developed locally.

Non-Joomla Projects

Creating a Gmail client using Java : [11] 

My third year project (Web service with an Android client): [9] 

 

Involvement with Joomla community

I was able to fix bugs as mentioned below:

Issue #660 - To avoid Fatal error with JEditor::getButtons

      Issue #708 - Avoid division by zero

         Issue #1122 - Mobile detection is wrong

I have also subscribed to Joomla developer mailing lists and willing to contribute more to Joomla using my knowledge and skills.

My participation in the Google Summer of Code project with the Joomla! Project

1.    A requirement for successful completion of the project is that students publish a minimum of three blog posts or articles on the joomla.org family of sites. Do you agree to complete this requirement?  

I agree

2.    A requirement for successful completion of the project is that you be in contact with your mentor or project administrator at least once a week. Do you agree to complete this requirement?

I agree

3.    During the summer there will be meetings, webinars and other possible online events for students and mentors. Do you agree to make a commitment to attend as many of these as possible given your time zone?

I agree

4.    The Joomla project has a code of conduct (lhttp://www.joomla.org/about-joomla/the-project/code-of-conduct.html).  Do you agree to comply with the code of conduct?

I agree

5.    The Joomla project requires code contributors to complete the Joomla Contributor Agreementhttp://developer.joomla.org/contributor-agreements.html. Have you completed this agreement or do you commit to completing it prior to the commencement of the program?

I have completed

References

[1] http://code.google.com/apis/picker/docs/index.html

[2] https://developers.google.com/recaptcha/ 

[3] https://developers.google.com/feed/v1/ 

[4] https://developers.google.com/speed/docs/insights/ 

[5] https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/http 

[6] https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github 

[7] http://testa.netii.net/ 

[8] https://github.com/Buddhima/SinhalaMatcher  

[9] https://github.com/Buddhima/GSUN 

[10] https://github.com/pulasthi7/Help-Me-Find-Bus-Routes 

[11] http://buddhimawijeweera.wordpress.com/2011/02/09/sendreceiveemailsjava/

[12] https://github.com/joomla/joomla-platform/issues/660

[13] https://github.com/joomla/joomla-platform/pull/1093 

[14] https://github.com/joomla/joomla-platform/issues/708  

[15] https://github.com/joomla/joomla-platform/pull/1095 

[16] https://github.com/joomla/joomla-platform/issues/1122

[17] https://github.com/joomla/joomla-platform/pull/1123 

[18] https://github.com/joomla/joomla-platform/pull/1125