Introduction and Purpose:-
Page Forms is an extension to MediaWiki allowing for creation,edition, updation,deletion and querying of pages by using a simple forms based interface. Currently PageForms allows only a single page to be edited at a given time. This proposal aims to implement #T63989 to make a spreadsheet interface to edit multiple pages using a Special Page created for it.
Profile Information (Who am I?):-
Name: Balakarthikeyan Rajan
IRC Nick: Balabky9
Wikimedia Username: bkybala9
Resume: Google Drive Link
Locale: Mumbai, India (UTC+5.30)
Typical Working hours: [10AM-1PM], [2PM-5PM], [8PM-2AM] (All times in IST, UTC+5.30)
Deliverables (What will we do?):-
- Familiarize oneself with Wikimedia and Mediawiki. [Done]
- Get started with Page Forms and Semantic Mediawiki. [Done]
- Review micro-tasks and objectives of #T63989. [Done]
- Submit bug-fix/ complete one micro-task to develop better understanding of codebase.[Done]
- Getting in-depth familiarity with Page Forms and implementing tasks as per project. [WIP]
Objectives and Implementations:-
- Implement support for additional custom data types for jsGrid. The support for Date fields, along with Date-Time fields with JQuery UI Date-picker is already accomplished as part of a micro-task given by Yaron.
- Proceed to extend similar implementation for Combobox. Use it further to develop implementation for Tokens data-type.
- Think about a proper way to organize the spreadsheet interface. Interface needs to be clean and clutter-free to enable smooth editing of multiple pages.
- Add backend PHP code to create and edit pages and list the template calls. Read more about templates and their parsing.
- First provide support to rename pages in the interface. Then also allow a way to add a completely new page. If a page is actually being represented by a jsGrid row, then inserting a page becomes trivial, only corresponding PHP logic backend needed.
- Add support to display the ideal-input type of a template. Additional PHP logic will be added to add support to our custom data type. Ex. such a logic for date has already been implemented in micro-task.
- Big wikis=many pages, thus implement support for pagination. Use the page loading strategy and write corresponding backend php-code. Have experience in doing a similar pagination for Ag-Grid.
- To finally reach a minimum viable product stage which can handle this tasks with minimum compromise and bugs. Properly document and unit test the plugin.
Each step is characterized with bug-tests and bug-fixes before moving on, and thorough discussion with mentor and co-mentor to visualize the idea and move in the right direction.
Communications and Reporting:-
To be in constant touch with mentors and provide them with daily updates. Yaron and Nischay both will be available at around 10PM IST mostly. A weekly report and discussion with mentors on current progress and code-review. Engagement with other fellow contributors of the community and other GSOC entrants to be informed and learn more.
The Schedule (When will we do it?):-
|May 5 - May 30||Community Bonding Period:- Get more active on IRC, and try to resolve more issues and bugs in other parts of Mediawiki. Also try to help other students with mediawiki basics. Explore more of Semantic Mediawiki and its workings. Learn more about Cargo and explore it as well. Take another look at select2 js library. Contribute possible documentation to jsGrid/mediaWiki to better explain the functioning of this plugin, which are sometimes not very evident.|
|May 30 - Jun 20||Finish off with custom data-types combobox. Take mentor feedback on it, and iron off box. Add immediate documentation to it since it will be a base for Tokens. Work on Tokens and implement it.|
|Jun 21- Jun 26||Take mentor and community feedback. Testing and bug-fixing to be done. Any incomplete documentation to be added. Packaging this code neatly.|
|Jun 27- July 12||Work on the interface for the special page to manage editing of multiple pages. Work on a few demos and take the opinion of mentors in this regard. Implement PHP logic to set grid variables, ie field names etc. Fix any bugs and repercussions. Provide mentor with any other additional work and help in any way for the evaluation.|
|July 13 - July 18||Continue implementing save and edit procedures and ensure data validation and type validation. Document these files thoroughly before proceeding to next task.|
|July 19 - July 24||Add PHP logic to support ideal input type. Communicate with mentors for the best way to do it.|
|July 25- Aug 5||Adjust for any delays if needed. Work on renaming pages and adding support for adding a new page. Discuss the limitations this will have. Document them well. Fix any other bugs that might be introduced.|
|Aug 6- Aug 15||Adjust for any more overflows and delays. Work on pagination and lazy loading of data. Control logic which would generate the pages entries already to be designed in such a way that it supports pagination. So in-fact pagination feature is already there but now gets thorough implementation. Document and run tests.|
|Aug 15-Aug 21||Run full scale tests and fix any bugs coming along. Take mentor guidance and help for the same. Code to be nicely integrated and packaged. All loose ends to be tried to be fixed.|
|Aug 21 - Aug 29||Buffer Time. Be active on IRC channels and mailing lists.|
Each step involves proper discussions with mentors and proper research before starting out. Discussion to aim to increase knowledge and awareness of the student.
Student to always confirm code as per project standards and will take mentors assistance in the same.
I would write blog posts and forum posts at regular intervals to detail my experience.
My objective is to gain satisfaction by lending my time to the community. It gives me a lot of satisfaction to help a project move forward and use technology for the same. To gain a sense of belonging and bonding with the Wikipedia community and be an active contributor to the same and in future possibly with other open source organizations too. Gain tremendous knowledge from my mentor. The 3 day micro-task with Yaron made me do so much and instilled tremendous confidence in me. Also I plan to organize workshops in my University to help students get to know Open Source Foundations better. Try my best to take part in any local Wikimedia/Mediawiki conferences.
Why Wikipedia/Mediawiki? :- Well for starters everyone loves and uses wikipedia extensively. The mission to provide free knowledge to everyone has changed how our world has developed. I strongly believe in Knowledge is Power and what better opportunity than to contribute to the world’s wiki. Not only my contributions might power wikipedia but any person using a wiki to spread knowledge. When I first landed on the IRC channels of Wikipedia I was warmly welcomed and especially ragesoss a mentor for a different project helped me a lot. He and Sristhi put me in touch with Nischay and I was finally in touch with Yaron. This experience has been tremendous. The amount of knowledge and output gained under Yaron was simply hands down fantastic. The project also suited my skill set and since I had knowledge of jsGrid I decided to go with it. Yaron also was very polite and helped me out with all my queries and I had a truly great learning experience under him. This is what endeared me to the community and I would like to thank every one of the contributors and volunteers here.
Bachelor of Technology (Information Technology) 2nd Year at Veermata Jijabai Technological Institute, Mumbai
Micro-Task: - To develop simple selector to handle dates in jsGrid. Involved creation of a custom date field and changes to a few php files to handle the new data-type. Two input box for day and year with a select for month was implemented. A datepicker implementation with time-stamp also made.
Rockmetric (Internship at Bombay Stock Exchange):- Worked as UX and backend engineer. Integrated Mail Chimp API and Net-Core with the product. Ported filtering system to react and all tables to AG-Grid. Extensive experiene with AG-Grid a more feature rich version of jsGrid. Some experience with jsGrid as well before its use was discarded. User experience improvements, quality control and testing. Worked with Piwik analytics framework for form-tracking.
Tweakbytes.com:- Founded in 2011, a technical forum which used MyBB. Made switches to SMF and PHP-BB before finally returning to MyBB. In 2014 moved to XenForo. MyBB version had a lot of core edits, which prevented a smooth upgrade from 1.6 to 1.8 Work included posting, maintaining and developing the website. Adsense approval in late 2011. Developed one of the first Bootstrap based themes for MyBB 1.6. Formerly GeekyTrix.com
VJTI Alumni Association:-
2013 end-2014:- Maintenance of the old website which was on Wordpress. Custom coded CRUD based admin panel to operate on Life Members. Adding support for online scholarship applications. Developing a jQuery plugin for delayed image loading. Oversaw all technical formalities and live streaming of the Alumni Reunion in 2014,15.
2014 end-Present:- New theme on Wordpress. Site made responsive, with custom compiled Bootstrap. Laravel 5 based new admin panel with support for mass mailing and auto generation of membership nos. Other duties entailed small fixes, posting and uploading of relevant content.
E-cell VJTI :- Maintenance and cosmetic facelift to website. Organized their online aptitude test and wrote a custom script using Google App Engine to correct answers and declare the marks of top contestants.
2015:- Created a Virtual Stock market application, which delivers updates each second for Wallstreet at Ecell. Was implemented using Laravel, MySQL DB and AJAX based long polling. Currently being implemented with Laravel and ReactDB to support greater number of clients. Also created registration and management system using Excel and VBA.
2016:- Complete blog, website and registration portal for SNC based on Wordpress using a custom Foundation 6 Framework theme.
Geekiest.net:- Guest blogger posting articles on latest technological news.
Techishare.com:- Co-owner with 1/3rd stake.
Designed various websites/application and plugins needed by various associations at the college including the techfest (Technovanza), Entrepreneurship Cell (E-Cell), Cultural (Pratibimb), Magazine (Nirmaan).