User:TasneemLo/Outreachy11-CodeSniffer

Improving Static Analysis Tools for MediaWiki
Public URL - http://www.mediawiki.org/wiki/User:TasneemLo/Outreachy11-CodeSniffer

Related phabricator tasks - T89682 is the master task.

Project Outline
The most popular issues that come up in review are based on coding conventions - especially when a new user wants to contribute to the community. This can be addressed by a static code analysis tool which is able to identify these problems (without human intervention) and can let the contributor know the issues - or better yet solve it autonomously. PHP-CodeSniffer is one such tool which allows this.

PHPCS has already been added to the composer file in mediawiki-core (patch) but the core doesn't yet pass the test. And a custom standard for mediawiki is being worked on. This projects aims to improve on the custom standard and make the mediawiki-core pass the PHPCS test. Once the core actually passes the test, CI can be set-up to run the test on review in gerrit. This reduces the repetitive tasks that every reviewer has to do to check coding standards and also gives the contributor a quick way to correct it !

Mentors: Addshore

Communication
I will always try to stay logged into IRC (Channels #mediawiki, #mediawiki-dev during my working hours and will try to contribute back to the community as much as I can. I am extremely regular in replying to emails and also to comments on phabricator and gerrit (as they send notifications to my mail). I plan to prepare a weekly report of things done (as recommended in lessons learned) and send it over to my mentors and update it on this page in the Timeline section. All source code written by me will be regularly pushed to gerrit so that my mentors can review it when they're free. I will keep my mentors updated about the progress through what ever form of communication they prefer (Email or weekly IRC meetings). All discussions regarding design and implementation will be public :)

Time-line
I will not be working on any other projects during the time Dec 7 to Mar 7. I may plan a vacation for a few days around Christmas (Dec 25), but I can make up the time in other weeks.

Initial homework (Nov 17 - Dec 7)
This section encompasses work that will be done before the official coding period begins. Here, the first thing that needs to be done is float a survey form on making a list of things that need to be addressed. This would involve writing out a check-list that most people have in their head while reviewing patch-sets on gerrit.

This would give a list of sniffs that need to be created during the next phase of the project.

Personal Information
Name - Tasneem Lohani

Email - tasneem.lo.31 [at] gmail.com

IRC Nick - TasneemLo

User Profile - https://www.mediawiki.org/wiki/User:TasneemLo

Timezone - UTC + 5:30 (IST - India)

Location - India

Typical working hours (Flexible to ensure deadlines are kept)
 * IST : 10am to 1pm and 3pm - 9pm
 * UTC : 4:30am to 7:30am and 9:30am - 3:30pm

About me
I'm a college student from India, and at my college I learn a lot of varied things. I've made and designed a few websites earlier and am familiar with PHP, JavaScript, HTML/CSS. I've also dabbled in android development (although I do not own an android phone right now). I have a very varied skill set and love doing things that interest me and make me learn new things. I've recently started contributing to open source software, and MediaWiki was the right fit for me as I'm well versed with web technologies.

Current experience with Mediawiki

 * Have set-up the development and debug environment on the core and mediawiki-codesniffer.
 * Basic familiarity of code and code conventions.
 * Understood the process of submitting a patch and review (phabricator, gerrit and git).
 * Understood how to write a PHPCS sniffer and written a few of them (see "Bugs worked on" for more details).
 * As a users, obviously, I have used Wikipedia and other wiki sites as any other student has :)

Bugs worked on
Also gave inputs on a host of other tasks which can be seen at my profile]
 * T101311 : If else structure in CodeSniffer (patch submitted)
 * T114267 : Sniff to detect usage of  (patch submitted)
 * T92744 : Assign in if/while in CodeSniffer (patch submitted)
 * T92751 : Test suite revamp in CodeSniffer [ also a fix for T108458 ] (patch submitted)
 * T17616 : Cache message position in Core (patch rejected)
 * T100467 : Rename "resource" module names for MobileFrontend (done)
 * T106005 : Change blue colors to standard color (done)

Other Information
(as mandated by Outreachy application format)

Do you meet the eligibility requirements outlined? Yes

Preferred pronoun - she

Education - Student at Stella Maris in Bachelor, Visual Arts. Graduating in 2017

How did you hear about this program - A friend who participated in GSoC