##Profile
**Name:** Bill Morrisson
**Email:** billmorrissonjr@gmail.com
**IRC or IM networks/handle(s):** billm on freenode
**Web Page / Blog / Microblog / Portfolio:** Personal portfolio being developed, you can look at some of my work in the meantime at https://www.linkedin.com/in/bill-morrisson-aa99b2a1?trk=nav_responsive_tab_profile_pic
**Location:** Buea, Cameroon
**Typical working hours:** 8-10 hours a day 9am to 5pm and 2am to 6am GMT+1
##Synopsis
This project aims to improve on the code standardization of the mediawiki codebase and other extensions to standardize it in a consistent manner such that developers should not be worried about style when coding but should just code away and let analysis tool handle the coding style. By not only checking the code for errors in an automated manner but also fixing them wherever applicable. This will enable MediaWiki to have a consistent codebase for all developers and developer time will be reduced which will result in less confusion and reduced time in finishing tasks.
Mentors : @Addshore, @EBernhardson, @Legoktm
##Deliverables
Right now, MediaWiki core and some other extensions are using PHPCS standard for code standardization but some functionalities are still lacking full support for all the coding conventions in MediaWiki. Some ideas to be implemented as said in the task's description are:
- Usage of $dbr->query() directly instead of the $dbr->select() wrapper
- Using wfMessage() when $this->msg() is usable
- Using globals ($wgUser, $wgRequest) when their context equivalents could be used instead ($this->getUser(), $this->getRequest())
- Modifying certain globals ($wgUser, $wgResourceModules, etc) inside a $wgExtensionFunction where it is either too early or late to do so
Some ideas I have are:
- Enable the following tests as sniffs also: AutoLoaderTest, ResourceTest and StructureTest
- Testing infrastructure for the codesniffer to be checked. (T92751, T108458)
##Project timetable
| **WEEK** | **TASK**
| | **COMMUNITY BONDING** Research on sources like https://github.com/wikimedia/mediawiki-tools-code-utils or https://github.com/squizlabs/PHP_CodeSniffer itself - which do similar static code analysis - and identify whether they can be implemented/modified for our case. Go through recent patch sets and identify issues mentioned in the comments that can be checked using codesniffer. Read through Manual:Coding conventions and identify any points that need more looking into. (I've already read a good chunk of it.)
|Week 1 - May 23 | Enable a sniff to check the use of $dbr-> select() wrapper instead of using $dbr->query() directly
|Week 2 – May 30 | Enable a sniff for checking functions like wfMessage when $this-> msg() should be used
|Week 3 - June 6 | Enable a sniff to check for the use of globals when their context-equivalent should be used directly
|Week 4 - June 13 | Adapt MediaWiki-CS test framework to support testing sniffs that support auto-fixing
| |**MIDTERM EVALUATION**
|Week 5 - June 20 | (continued) Adapt MediaWiki-CS test framework to support testing sniffs that support auto-fixing
|Week 6 - June 27 | Enable StructureTest to work as a sniff
|Week 7 - July 4 | Enable ResourceTest to work as a sniff
|Week 8 - July 11 | Enable AutoLoaderTest to work as a sniff
|Week 9 - July 18 | Improve Test Suite for mediawiki phpcs standard
|Week 10 - July 25 | (continued) Improve Test Suite for mediawiki phpcs standard
|Week 11 - August 1 | Feature freeze, strengthen unit testing, bug fixing
|Week 12 – August 8 | Bug fixing, strengthen documentation
| |**FINAL EVALUATION**
##Participation
I'm at ease using Git , so I've got the basic code review workflow and collaboration aspect pretty well established.
While I'll be working on this project, I'll submit my code for review daily to Gerrit. I like to keep things backed up, and doing this daily ensures that other developers will be able to keep track of my work much better.
Also, these are the additionnal means I plan to use to communicate progress:
- IRC: I'll stay online on freenode in #mediawiki-dev as billm during my working hours
- I will post all weekly summaries and reports on my User Page at https://www.mediawiki.org/wiki/GSoC_2016_-_Improve_Static_Analysis_tools_for_mediawiki?venotify=created
##About you
**Education **
I'm a computer networks undergrad in my fourth year at the Catholic University Institute of Buea, Cameroon.
**How did you hear about Google Summer of Code? **
I heard it from a friend that is in the Google developers group in my community but at the time I didn't know how to code and it looked like a great experience. Last year I went to a conference where it was mentioned, but I was on an internship and it was already past the student application deadline. So here I am this year ;)
**Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program? **
I will be involved with some course work that does not actually take more than eight hours a week and also the final exams which will be in July(date not set) will not take more than five days.
**We advise all candidates eligible to Google Summer of Code and Outreachy (previously known as FOSS Outreach Program for Women) to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?**
I apply only for the Google Summer of Code 2016
**We don't just care about your project -- you are a person, and that matters to us! What drives you? What makes you want to make this the most awesomest wiki enhancement ever? **
What initially sparked my interest for this particular project was that when I cloned the MediaWiki code base some months ago and I wanted to start making little contributions, hovering over some parts of the code base rendered me a little confused and I couldn't make any significant contribution. When I saw this project I saw it as a good fit for helping any newbie (or any new developer in the community) to follow the consistency of the core code base and the extensions and to code without having to worry about the styling.
**Past experience **
Since I started coding, I have helped a team coming out with these two projects: http://selfconsult.org/ and http://www.gojamaa.com/
While I haven't worked on any major open source projects yet, I'm confident that my prior work experience will serve me well. Having already worked as a freelance developer makes me even more confident that I am able to give it my all during the entire summer. The patches that I have already worked on are:
https://gerrit.wikimedia.org/r/#/c/269771/
https://gerrit.wikimedia.org/r/#/c/257311/
##Other info
I also have a Github but stuff there was mostly used for educational purposes when I started programming. For the curious only ;)
###Microtasks submitted
https://gerrit.wikimedia.org/r/277557