**Name** : Feroz Ahmad
**IRC** : fz-29
**MediaWiki Username** : Fz-29
**Resume** : [[http://ferozahmad.com/resume/ | ferozahmad.com/resume]]
**Personal Webpage/Portfolio** : [[http://ferozahmad.com | ferozahmad.com]]
**Blog** : [[http://blog.ferozahmad.com | blog.ferozahmad.com]]
**Github** : [[https://github.com/fz-29 | github.com/fz-29]]
**Location** : New Delhi, India
**Typical Working Hours** : 12 P.M. - 9 P.M. IST (UTC+05:30)
This project aims to introduce hierarchy fields in Cargo MediaWiki extension. This project will enhance the capability of MediaWiki by enabling efficient storage and querying over information which is hierarchical in nature, such as following piece of information :
`Chapter Name > Topic > Sub-Topic`
Project also involves addition of support for hierarchy fields in Page Forms MediaWiki extension, to ensure easy input from users entering hierarchy data into the wiki as well as to maintain compatibility with frequently used helper pages.
Possible Mentors : @Nischayn22, @Yaron_Koren, @Oetterer
# Understand MediaWiki, Cargo Extension and Page Forms Extension. [Done]
# Understand how to contribute at Wikimedia and learn various conventions. [Done]
# Perform micro-task T160687 and submit a few patches. [Done]
# Understand Cargo Extension architecture for its data storage. [Done]
# Explore various implementations for storing hierarchy data.
# Discuss available implementations to efficiently store and query hierarchical data according to the features provided by the cargo extension, with mentors.
# Add support for declaring and querying over hierarchy fields in Cargo Extension.
# Add support for query using new Cargo keyword - “WITHIN”.
# Modify Cargo’s DrillDown interface to incorporate hierarchy fields.
# Add support for hierarchy fields in the Page Forms extension to set default input type as tree for hierarchy field.
# Add support for hierarchy fields in the helper pages of Page Forms extension for compatibility with Special:CreateClass and Special:CreateTemplate.
**1. First Phase**
Create the minimum viable product with hierarchy field creation, its efficient storage, and ability to query hierarchy data using ‘WITHIN’ keyword.
**2. Second Phase**
Product with modified Special:DrillDown interface to incorporate hierarchy field display and provide support in Page Forms MediaWiki extension to identify right input type for hierarchy data.
**3. Final Phase**
Complete project with hierarchy field support in Cargo and as well as in Page Forms helper pages, with documentation of the work performed.
=Proposed Schedule (Timeline)=
|**Week** |** From** |** To** |**Tasks to be done** |
| |4 April |3 May |Get more familiarized with code while solving more issues, brush up database management skills.|
| |4 May |29 May |Communicate with mentors, communicate with other WikiMedia participants of GSoC to know them and their projects, explore various implementations for storing hierarchical data.|
|1 |30 May |5 June |Finalize the database schema implementation for hierarchy field, begin PHP coding for 'hierarchy' keyword support in template|
|2 |6 June |12 June |Write and Optimize SQL queries to perform on-demand changes in Cargo's database schema to support hierarchy type, implement basic query over Hierarchy Field|
|3 |13 June |19 June |Implement query using WITHIN keyword, perform exhaustive testing of product so far, take mentors' feedback on minimum viable product|
|4 |20 June |26 June |Perform code refactoring, make submission ready for first phase evaluation, incorporate mentors' feedback, perform side by side documentation of the project so far|
| |!!26 June!! |!!30June!! |!!Phase 1 Evaluation!!|
|5 |27 June |3 July |Get familiarized with DrillDown's code. Write PHP code to display simple hierarchy field in DrillDown.|
|6 |4 July |10 July |Extend the above to implement nested/recursive SQL queries to display and query general hierarchy fields.|
|7 |11 July |17 July |Modify Page Forms to identify right input type(tree) for hierarchy field in the template, take mentors' and community feedback, perform documentation of the project so far|
|8 |18 July |24 July |Incorporate Mentors' feedback, perform exhaustive testing of product so far, perform code refactoring, make submission ready for second phase evaluation|
| |!!24 July!! |!!28 July!! |!!Phase 2 Evaluation!!|
|9 |25 July |31 July |Add support for hierarchy field in CreateTemplate, take feedback and incorporate feedback, perform documentation|
|10 |1 Aug |7 Aug |Add support for hierarchy field in CreateClass, take feedback, perform documentation|
|11 |8 Aug |14 Aug |Incorporate feedback, perform Full Scale Testing, refactor code, complete project according to submission guidelines|
|12 |15 Aug |21 Aug |Buffer Time, Complete the documentation, Be active on IRC and community feedbacks|
| |!!21 Aug!! |!!29 Aug!! |!!Final Evaluation!!|
* Weekly Project progress will be updated on the [[ https://www.mediawiki.org/wiki/User:Fz-29/Add_a_hierarchy_type_to_the_Cargo_extension | project progress page]]
* Communication with mentors will be done on Phabricator and Email. Timing would be around 10PM IST. (UTC+5:30). I will be interacting with other contributors on IRC and Phabricator. I will be available on channel #wikimedia.
===Education and Work Experience===
Currently I'm pursuing Bachelor of Technology in Computer Engineering at Delhi Technological University, New Delhi, India.
I work as Research Assistant at Vision and AI Research Lab, at Delhi Technological University. Apart from that I'm an active member of IEEE-DTU section where I mentor my junior college mates on their projects and also manage the web division team.
Recently, in February 2017, I finished my winter training (internship) at Defence Research and Development Organisation.
===Why contribute in Wikimedia?===
From the time we had the access to the internet, we have been using open source products knowingly or unknowingly. We have been benefitted from all those initiatives, such as Wikipedia. I have used it as a constant source of information for learning and preparing projects. Now it’s the time to give back, and contribute. Contributing to Wikimedia makes me excited, as I believe my contributions will have an impact on the lives of people through the sites which are powered by Wikimedia’s projects.
===Why I am the right person for this project?===
This project requires sound experience of Database Management Systems and PHP. Being a third year, Computer Engineering undergraduate student, I have taken a course on Database technologies in recent semester. I have performed various team, individual and semester projects (as listed in Work Experience section) which employed PHP and several database technologies such as MySQL, SQLite etc.
One of my projects - Quizzing Platform MIST - has been in production and have been enjoyed by nearly 1,500 users with 65,900 pageviews. I have optimized content delivery for a flicker free experience. Also implemented persistent O'Auth login in PHP from scratch.
For efficient performance of Online Stock Trading Simulator Project in production environment, I have analyzed all SQL queries to be most effective in order to provide real time experience to players.
In addition to this, the project involves concept of hierarchies in DBMS, for efficient representation and optimized querying over hierarchical data, which I have explored a lot recently with my mentor, Mr. Yaron Koren.
=Past Coding Experience=
===Contribution to Wikimedia===
Submitted patches for 2 bugs.
T160687 - [[https://gerrit.wikimedia.org/r/#/c/343534/ | Patch ]] [Accepted and merged]
T159405 - [[https://gerrit.wikimedia.org/r/#/c/343870/ | Patch ]]
T160687 was assigned to me as a microtask by Yaron Koren. He also guided me with the contribution practice followed at Wikimedia projects.
===Development under IEEE Delhi Technological University Section===
**Competitive Quizzing Platform MIST**
PHP Web Application developed for Online Quizzing Event - MIST - hosted by IEEE-DTU, focused on optimized multimedia delivery for a flicker‐free experience. Enjoyed by 1,500 users, producing 65,900 pageviews. The application was in production for more than 1 week.
**IEEE DTU Website Management**
I have been managing official website of IEEE DTU and its annual technical fest Troika, from Jan 2015 to June 2016. Various tasks performed by me are website development, deploying over VPS, regular upgrades in website and bug fixes. Several tasks here require knowledge of cron jobs and database management techniques for required normalization of databases. Now I guide and mentor my fellow juniors at the university. Technologies involved are PHP, jQuery, MySQL.
**Online Stock Market Simulation**
I have developed this simulator for online event - Virtual Online Stock Market - Bulls n Bears - hosted by IEEE-DTU for 2 consecutive years. First time I coded the application in PHP and handcrafted all SQL queries to simulate a stock market. For the next year, we decided to go with Django Web Framework with Angular Front End. The application in both the years was in production for a span of 3 days under annual cultural fest of Delhi Technological University, Troika.
===Training at Defence Research and Development Organisation (DRDO), New Delhi===
Worked on several cryptanalysis algorithms and learnt about several attacks on current encryption algorithms being used. I also underwent 2 days professional training by Intel at DRDO for optimizing parallel codes. I also optimized openMPI implementations of certain cryptanalysis algorithms using Intel Parallel Studio.
===Experience in Wordpress CMS===
Co-founded and deployed following 4 blogs over VPS, for affiliate marketing. I also perform regular site maintenance and routine bug fixes.
[[ http://fitnessclimber360.com/ | fitnessclimber360.com]]
[[ http://slidelock-locker.com/ | slidelock-locker.com]]
[[https://thebestparkourgear.com/ | thebestparkourgear.com]] [now acquired]
[[http://movieboxguru.com/ | movieboxguru.com]] [now acquired]
**Have you participated in Google Summer of Code in the past?** No.
**Have you applied to GSoC in the past?** No.
**Are you applying to any other organizations this year?** No.
**How many hours will you devote to your GSoC project each week?** I plan to work at least 8 hour work every weekday and weekend.