User:Pawanseerwani 1/GSoC proposal
This is my(Pawan Kumar D) GSoC proposal.
Simultaneous Modification of Multiple Pages with Semantic Forms
[edit]- Public URL: https://www.mediawiki.org/wiki/User:Pawanseerwani_1/GSoC_proposal
- Bugzilla report: Bug - 61989
- Wikitech-l Announcement: GSoC Proposal
- Project Announcement: Simultaneous Modification of Multiple Pages with Semantic Forms
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,
- Game of Thrones by George RR Martin
- Angels and Demons by Dan Brown
- 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]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) :
- Bug - 35370 (micro-task) (merged)
- Bug - 41538 (micro-task) (merged)
- Bug - 32678 (micro-task) (merged)
- Bug - 51505
- Bug - 40626
- Bug - 34925