Page MenuHomePhabricator

[GSoC Proposal 2018] Improve the Cargo Special:Drilldown page
Closed, ResolvedPublic


Profile Information

Name: Nikhil Kumar
IRC nickname: nikhil-nk
GitHub Profile:
Location: India
Typical working hours: 11 am to 5 pm, 9 pm to 1 am (UTC + 5:30)


  • The Cargo extension's Special:Drilldown page shows a listing of each table, its contents, and a set of filters, for all the data in a wiki stored via Cargo. This project aims to improve upon the current results of the Drilldown page (for instance, adding additional tabs to let users see the results in a map, or in a calendar or timeline) and to improve the implementation of the filters.
  • Mentors: @Yaron_Koren, @D3r1ck01, @Fz-29


1. Add additional tabs for displaying results

Show the results of drilldown in map format if there are field(s) of type coordinates in the table and in calendar or timeline format if there are field(s) of type date or datetime in the table.
Add tab which will allow the user to revert the result format to the default.
If there are fields of both "coordinates" and "date" or "datetime" types, then an extra tab will be added which will allow the user to choose the result format(amongst map and calendar).

2. Automatically display a thumbnail image for each page, for Cargo tables that include a field of type “File”.
3. Allow administrators to customize which set of fields will get displayed per page, for each table.
4. Allow for defining “dependent fields”.

To define a dependent field, the user will have to make a declaration in the #cargo_declare call which will look something like(keywords may be different)

|Cities=List (,) of String (dependent_fields;allowed parent_field=State)

For instance, If a table is declared in the following manner

|State=String (dependent_fields;allowed parent_field=Country)
|Cities=List (,) of String (dependent_fields;allowed parent_field=State)

then in its drilldown, ‘State’ filter won’t show up until a ‘Country’ value is selected and ‘City’ filter won’t show up until a ‘State’ value is selected.

5. Allow for defining “parent tables”.

It will be done in almost similar way as in case of dependent fields.But instead of dependent_fields, it will allow the user to declare parent_tables such that all the filters for parent_tables will be shown in the drilldown of the table along with its own filter, allowing the user to choose amongst filters, for both this table and its parent tables.(For instance, Let’s say we have two tables: Books and Authors. And while declaring the table Books, Authors table has been declared as parent table. Then, in drilldown of the Books tables, not only filters for just Books table, but also the filters for the 'Authors' table will be shown such that search for a book can include not just fields directly related to the Books table, like its genre and language, but also fields for its parent table(Authors), like the nationality of its author)


Community Bonding (April 23 - May 14)

Go through the documentation and the codebase of Cargo Extension.
Read the documentation of SQL and get more familiar with it.
Finalize the implementation details of the project by discussing it with the mentors.

Phase 1 (May 14 - June 15)
Time periodTask
Week 1 and 2 (May 14 - 28)Implement the feature: "Add additional tabs for results display of fields of type “Coordinates” and of type date or datetime".
Week 3 (May 28 - June 4)Complete the subtask: “Automatically display a thumbnail image for each page, for Cargo tables that include a field of type File”.
Week 4 (June 4 - 11)This week will act as a buffer to complete backlog (if any) and for bug fixes(if any).

Phase I evaluation (June 11 - 15)

Phase 2 (June 15 - July 9)
Time periodTask
Week 5 and 6 (June 15 - 22 )Now I’ll start with one of the major parts of the project: Allow for defining “dependent fields”. I plan on completing around 60 percent of this task by the end of week 3 and Complete it by the end of week 6.
Week 7 and 8 (June 22 - July 12)Start off with “Allow for defining parent tables” in week 7 and complete it by the end of phase 2.

Phase 2 Evaluation (July 9 - 13)

Phase 3 (July 13 - August 6)
Time periodTask
Week 9 (July 13 - 21)Complete the last subtask “Allow administrators to customize which set of fields will get displayed per page, for each table”.
Week 10 (July 22 - 29)It will act as a buffer week to complete backlogs(if any) and for bug fixes.
Week 11 (July 30 - August 6)Add documentation and review all the changes.

Final Submission


I’ll use GitHub to publish my source code. I’ll communicate my weekly progress with my mentors via email. In case I get stuck, I’ll reach out to them via email and IRC.

About Me

Tell us about a few:

Your Education:

I am a sophomore at Indian Institute of Technology Guwahati studying Computer Science and Engineering.

How did you hear about this program?

I came to know about this program via my friends and tech blogs.

Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program?

No, I won’t have any other commitments this summer. I’ll be able to work for around 40 hrs a week. However, my institute opens on 23rd July, after which I will only be able to work for around 30 hrs a week. That’s why I have kept my workload lighter for the 2nd half of phase 3.

What does making this project happen mean to you?

It will be a huge achievement for me since this will be my first major open source endeavor. It will also be a huge learning experience.

Past Experience

Contributions to MediaWiki:
T187410: Add Replace Text reminder message at the end of page move

T187114: Page Forms: add "starting bounds" parameter for "googlemaps" input type