User:Pawanseerwani 1/GSoC proposal

From mediawiki.org

This is my(Pawan Kumar D) GSoC proposal.

Simultaneous Modification of Multiple Pages with Semantic Forms[edit]

Name and contact information[edit]

Name: Pawan Kumar D
Email: pawanseerwani@gmail.com
IRC or IM networks/handle(s): pawan_seerwani (channels : #mediawiki, #wikimedia-dev, #semantic-mediawiki, #gsoc)
Location: Roorkee, Uttarakhand, India
Typical working hours: 1:00 pm to 6:00 pm , 9:00 pm to 2:00am (IST) (~10 hours)

Synopsis[edit]

The aim of this project is to facilitate simultaneous modification of multiple pages(which were created using Semantic Forms), in a tabular format.

Right now the editing of multiple pages with Semantic Forms is rather cumbersome with users having to edit every page separately, then sending it off and waiting for the server reply to then click their way to the edit form for the next page. The aim of this project is to facilitate the simultaneous editing of the data of multiple pages displayed in a table, ideally giving a spreadsheet-like experience. This project would help a great deal in editing such multiple pages.

Deliverables[edit]

Goals of this project :

Required goals :

  • Create a tabular display of multiple pages with a single page in each row. (Note: Multiple pages being displayed should be created by a single Semantic Form)
  • Add Pagination & Search feature in the tabular display.
  • Option for editing of single/multiple pages from the tabular display.
  • Keyboard Navigation feature in the tabular display.
  • Using of Job queue for storing of modified data.
  • A parser function for modification of multiple pages.

Optional goals :

  • Use the input widgets(as specified in the form definition) in the corresponding tabular structure
  • Create an #autoedit like parser function to modify multiple pages at once.
  • A mechanism to detect mass-modification of pages by a bot.

UI MockUp[edit]

Consider an example of Semantic Form:Book as given in this link

Assume we have created the following 3 pages using the above form,

  1. Game of Thrones by George RR Martin
  2. Angels and Demons by Dan Brown
  3. My experiments with truth by MK Gandhi

In order to edit multiple pages of the Form:Book, we would get the tabular display as :

Page Title

Authors

Genres

Year of publication

Number of pages

Last Modified

Option

Game of Thrones George RR Martin Fiction 2005 700 Mar 05 2014 07:10 AM Edit
Angels and Demons Dan Brown Fiction 2002 400 Feb 22 2014 09:35 PM Edit
My experiments with truth MK Gandhi Autobiography 1940 300 Oct 17 2013 12:48 PM Edit
Harry Potter and the deathly hallows JK Rowling Fiction 2001 450 Sep 27 2013 04:59 PM Edit
Shiva Trilogy Amish Tripathi Fiction 2009 550 Jun 27 2012 02:64 PM Edit

*Note : Search row could not be shown here as wikitext currently does not allow <input> tag. Refer to the screenshot below.

A Screenshot of the expected UI.

Use Case[edit]

Use Case

High Level Code Architecture[edit]

Here is a possible version of high level API

class TabularStructure {
    public function displayTable();
    public function editSingleRow();
    public function saveSingleRow();
    public function saveMultipleRows(); //Uses JobQueue for saving data of multiple pages
    public function search(); //Only Ajax requests allowed
...
}

Major JavaScript Components

var ajaxSearch = (function(){
...
});
 
var ajaxPagination = (function(){
...
});
 
var keyboardNavigation = (function(){
...
});

Timeline[edit]

Timeline Task
Apr 21 - May 19 (4 weeks) Bonding Period - Get familiar with code base, read documentation and bond with community
May 19 - Jun 04 (2.5 weeks) Add feature of tabular display of multiple pages
Jun 05 - Jun 15 (1.5 weeks) Add pagination and search feature in the tabular display
Jun 16 - Jun 22 (1 week) Write unit tests and testing
Jun 23 Mid Term Evaluation
Jun 24 - Jun 30 (1 week) Code optimization & add keyboard navigation
Jul 01 - Jul 07 (1 week) Using of Job queue for storing of modified data.
Jul 08 - Jul 15 (1 week) Create parser function for automatic modification of multiple pages
Jul 16 - Jul 22 (1 week) Write unit tests and thorough testing repeatedly
Jul 23 - Jul 31 (1 week) (Additional goals) Add input widgets in tabular display. Detection of modification by bots.
Aug 01 - Aug 07 (1 week) Final Testing
Aug 08 - Aug 18 (1.5 weeks) Code clean up, documentation + Buffer time for unprecedented delays

About you[edit]

I am Pawan Kumar D (a.k.a Pawan Seerwani). I am currently pursuing my B.Tech in Computer Science Engineering from Indian Institute of Technology Roorkee, India. I love coding, chess and listening to music.

This project is my first opportunity to bond with an open source organization. Through the GSoC I wish to become a regular contributor in MediaWiki. I am very dedicated in what I do, and I hope this project would help a lot in enhancing my skills and learning new things.

Participation[edit]

During my work hours, I would always be logged in IRC (channels: #mediawiki, #wikimedia-dev) and also can always be reached at my email. I am an internet buff and have hard time staying off of it. During the project period I would be at my home(Shimoga, Karnataka) where I have a good broadband internet connection without any proxy issues, so disconnection won't be an issue.

I intend to (and always have) clear idea before I start working on a project. At each stage of development I would like to discuss implementation details with the mentor so that there are no delays/issues later on.

I would keep the progress of my work updated in my monthly reports.  I will communicate with the community over the mailing lists (Wikitech-I) for any feedback, suggestions and queries. All the code will be hosted on Github, so that anyone can easily track my progress and give feedback.

Commitments (Other than GSoC) : My end-term exams would be finished by 7th May. So that won't be a issue. I have been placed(got a job), but yet to get my joining date. It should be somewhere around mid-july. I will update here know when I know it myself. Also the job involves an initial training period of 1.5 months which will be introductory, so I will have an ample amount of time for GSoC. :)

Past open source experience[edit]

Bugs I have worked on (Wikimedia) :

  1. Bug - 35370 (micro-task) (merged)
  2. Bug - 41538 (micro-task) (merged)
  3. Bug - 32678 (micro-task) (merged)
  4. Bug - 51505
  5. Bug - 40626
  6. Bug - 34925

See also[edit]