[GSoC Draft Proposal] Building a Specialized Syntax based Querying module over Views Module

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

Personal Details

Name: Dhruv Baldawa
Email: dhruvbaldawa@gmail.com
Personal Website: http://dhruvb.wordpress.com
Skype ID or GTalk: dhruvbaldawa@gmail.com
IRC nick: dhruvbaldawa
Phone number: +(91)-9323321233
School Name: Thakur College of Engineering and Technology, University of Mumbai
Years completed: Third Year Computer Engineering
PHP Experience Level: Advanced

Open Source Development Experience

PHP Experience:

Developed website for All India Stainless Steel Industries Association (http://www.aissia.org)
Developed Mass Mailing application
Developed Facebook Application (http://apps.facebook.com/invertendo)
Developed website for College Technical Festival
Developed eBooks Repository Management application
Mobile UI for Home Automation System
Developing a PHP Script Obfuscator
Building a open-source Paper Conference Management System : http://sourceforge.net/projects/conms/

Academic Performance:

I am amongst the first 4 students in my department. My aggregate from previous 2 semesters is 76.82 %

The courses completed in college are :

C++ Programming Language
Java Programming Language
Analysis of Algorithms and Design
Data Structures and Files
Computer Organization and Architecture
Computer Graphics
Operating Systems
Computer Networks
Theory of Computer Science
Database Management Systems
Advanced Database Management Systems
Microprocessors
Web Engineering
Advanced Computer Networks
Advanced Microprocessors
Systems Programming and Compiler Construction
Data Warehousing and Mining
Object Oriented Software Engineering

Why do you I want to do this project with Drupal ?

Drupal has an excellent Views module, which also provides a good API, which can act as a good base for this project. The Views Module is a good abstraction between the user and the data sources.

Project Description :

The current Drupal system, which uses Views module to display data from various data sources, depends upon Exposed Forms and its various variants for a user to actually search the data he/she requires. It requires user to fill in the forms and the required values for attributes, along with keywords to get the required data from the data source. What I propose is a system, which uses a Specialized Syntax, to get a query from the user. The user only needs to write a query in a simple language and the query is given to the Views API and the rest of the job is done by the Views API.

For example, consider a system keeping track of various Journals getting published. So a sample query being ” To get recent 10 entries of the Journal ‘Nature’”

Query by the user : list recent 10 articles in journal name = “Nature”

User View :

For the user, it is only a AJAX-based textbox, which provides the user with suggestions, regarding what are the valid inputs and what are the entities or attributes, he/she can query. So, the user need not learn the syntax. It is similar to the autocomplete feature present in various IDEs, so that user need not remember all the functions.

Developer View :

The developer only has to create a View for a particular data source, as all the relationships and attributes are described in the View, this particular system, uses the View API to extract this information. The developer only needs to customize the settings, as he/she desires.

Technologies or Concepts which can be used while developing :

The system depends on Views API, to get the relationship amongst the data entities. Also, it uses AJAX technologies, on the front end, which helps user in building up queries. I have good knowledge in using jQuery, having used in almost all of my PHP projects. Also, the knowledge gained from my semester courses like “Systems Programming and Compiler Construction” and “Theory of Computer Science”, the concepts of Regular Grammars, Context-free Grammars and Context-sensitive Grammars can be applied to create a generic and easy-to-learn syntax, which can easily used even for novice or first-time users.

Advantages :

The developer can restrict access for the user, as far as access to various entities are concerned.
Simple and easy, no forms required, just one AJAXified textbox.

Milestones and deliverables schedule:

April 25 – May 23 (28 days): Get acquainted with the development cycle, version control systems. Read various books on Drupal development and plugins development and study the basic and core architecture of the system. Discuss with mentors the current design and check for potential pitfalls and try to modify the design the system in order to cover them. Develop an initial syntax for the system. Get to know the modules which are pretty much related to Views module.

May 23 – June 13 (20 days): Design the basic algorithm (including Lexical Analysis and Syntax Checker), which can access the Views API and then returns the Result Set. This also includes synthesis of complex queries.

June 13 – June 27 (14 days): Develop the query helper tool, which helps user to build query. The tool shows the valid inputs when user is present at a particular stage.

June 27 – July 11 (14 days): Create options for user-based customization of tools, depending upon discussion with the mentors, core developers and the requirements.

July 15 – August 1 (17 days): Integrate the entire system, and check for User Experience and usability. Generate and perform test cases.
August 1 – August 22 (21 days): Start preparing the final documentation and perform the rigorous testing on the system.

Puzzle :

isset($var) – This function, checks whether a given variable is set or not. It just checks whether is NULL or not.

empty($var) – This function, checks whether the given variable is empty or not. By empty it means that the value, it holds doesnot indicate emptiness like FALSE, NULL, 0, “0″, “”,array()

if isset($a) == empty($a)

Case 1 : True, this would mean that isset() is true, hence, this would mean that value is NOT NULL, but, it indicates emptiness. Hence, $a can be “”, FALSE, 0,”0″,”",array()

Case 2: False, hence, isset() is false, therefore, $a is not set, i.e., it doesnot exist or the variable is empty.

Links :

http://groups.drupal.org/node/137714

http://dhruvb.wordpress.com/2011/04/03/comparison-between-the-normal/

Comments

I guess look into pluggable

moshe weitzman's picture

I guess look into pluggable backends for Views3

moshe : yes, it is something

dhruvbaldawa's picture

moshe : yes, it is something like a wrapper over views to make it more user-friendly.

The proposal is really

dawehner's picture

The proposal is really interesting! You should really read the blog post.
If the student want's me, i would like to be a mentor for this project.

Dereine - I want you !!

dhruvbaldawa's picture

it would be really great if you mentor me, dereine.

Google Summer of Code 2011

Group notifications

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