== Information about me ==
**Name: **Aashaka Shah
**IRC nick:** aashaka
**Github profile:** https://github.com/aashaka
**Location:** Roorkee, Uttarakhand, India
**Typical Working Hours:**
Till July 15: 10 am - 1 pm, 3 pm - 6 pm, 10 pm - 12 midnight
After July 15: 6 am - 9 am, 6 pm - 11 pm
**Time Zone:** IST (Indian Standard Time) (UTC +05:30)
**Preferred pronoun:** She
**Do you meet the eligibility requirements outlined at https://wiki.gnome.org/Outreachy#Eligibility? ** Yes, I meet the requirements.
== Synopsis ==
PHPCS is a code sniffer for PHP language which raises errors or warnings on encountering deviation in coding standards. It is also used by Mediawiki to sniff out coding convention malpractices and errors. The aim of the project is to make especially Mediawiki development easier and improve the quality of development. Code Sniffs more related to Mediawiki code can be added. They will give error on using deprecated code structure, and also provide a fix to change the code where coding convention was breached into convention conforming code.
Possible mentors: Ebernhardson, Legoktm
== Deliverables ==
# Proper Documentation
# Weekly Reports
# Involvement of Community in identifying Sniffs
# Thorough testing
|Week | Duration |Task
|0 |23 April - 23 May |Community Bonding Period and Prerequisite Work
|1 - 3 |23 May - 12 June | Code easy sniffs
|4 - 8 | 13 June - 17 July |Code more complex sniffs
|9 - 11 | 18 July - 07 Aug | Convert some structure tests into sniffs
|12|08 Aug - 14 Aug|Close obsolete Phabricator tasks
|13|15 Aug - 23 Aug|Pencil Down Stage.
**Week 0 ( 23 April - 23 May ) :**
- Prepare a list of sniffs by taking suggestions from the Wikimedia community.
- List out sniffs which are feasible from the wish list after discussions with the mentors
- Sort them according to the difficulty of implementation.
- Keep understanding the Mediawiki code conventions.
**Week 1 - 3 ( 23 May - 12 June ) :**
- Pick up the easy sniffs one by one.
- Code, test, possibly document, and push changes.
- Add ability to automatically fix each error/ warning the sniff generates.
**Week 4 - 8 ( 13 June - 17 July ) :**
- Start with the more complex sniffs.
- Repeat similar process as above.
**Week 9 -11 (18 July - 07 Aug ) :**
- Identify the structure tests to be converted into sniffs.
- Do the needful in a similar process.
**Week 12 ( 08 Aug - 14 Aug ) :**
- Continue work of week 11.
- Close obsolete Phabricator tasks.
**Week 13 ( 15 Aug - 23 Aug ) :**
- Pencil down stage. Finish documentation of the project.
I will be in contact with my mentors daily via IRC. I will also be in touch with my mentors weekly or biweekly by mail or video call, when we can discuss work already done, and to be done that week. To keep a record, I will also keep https://en.wikipedia.org/wiki/User:Aashaka/Weekly-Report updated with weekly progress reports. I shall also maintain a blog for sharing the weekly report, along with my experiences while working on this project. I plan to push my code for review to gerrit on a regular basis. In case I come across a roadblock, my first step would be to Google it. In case I still remain stuck after some efforts, I will ask questions on IRC to my mentors and other community members. If that doesn't work out, I will float a mail to wikimedia-tech and my mentors.
I have found the Wikimedia Community to be a helpful group of people, willing to answer questions. I pushed my first patch on gerrit after asking a few questions on IRC. Once I submitted it for review, I could feel people on IRC who had helped me, join the celebration of me having submitted my first patch. Since then, I have tried to be online on IRC in channels #mediawiki and #wikimedia-dev whenever circumstances permitted.
== About you ==
If I were to describe myself in just a few sentences, I would say that I believe in giving the best to whatever I do. I don't believe in giving up or backing out of anything. I am excited by how code makes things work. I have experience in working with PHP, C++, and Java. I have worked on projects having an MVC architecture and am familiar with it.
The first Phabricator task which I resolved, T105648, involved passing an IContextSource as a parameter to a function to prevent the use of a global variable. I had thought that something which warns a developer that they are using a global variable, when something else could be used, would be really nice. T89682: Improving static analysis of Mediawiki aims to do something like that and more! A project like this will make the process of contribution and reviewing them easier for developers and reviewers, respectively. This project will also remove a chunk of old phabricator bugs. This is something I will take demonic pleasure in doing. Also, it will help new contributors get over the feeling of getting it wrong because of strict code conventions. The project will also help in following good conventions.
I am currently a Sophomore student pursuing B.Tech in Computer Science and Engineering at Indian Institute of Technology, Roorkee.
**How did you hear about this program?**
I heard about this program from a senior, who was previously an Outreachy intern in Mediawiki.
**Will you have any other time commitments, such as school work, exams, research, another job, planned vacation, etc., between May 23 and August 23, 2016? Please provide exact dates for these commitments and the number of hours a week these commitments take.**
I do not plan on having any other commitment apart from working on this project till July 15. I will be able to work more than 42 hours a week. After that, I will have academic commitments due to opening of college. I will still be able to give a lower limit of 40 hours, as the intern will only overlap with the initial one month of college, during which I would have completed a major part of the project, and the academic load would also be light. For any two days, between 15 July - 20 July, I would be traveling from home to college. Thus I might not be able to be active for these couple of days. The contact hours for college are 23 hours per week.
**If a student, please list the courses you will be taking between May 23 and August 23, 2016, how many credits you will be taking, and how many credits a full-time student normally takes at your school. Please provide a link or upload your school's academic calendar.**
|Data Base Management Systems|4|4
|Theory of Computation|4|4
|Computer Networks Laboratory|2|2
The next semester's Academic calendar is not out yet, but it will be almost similar to the last year's calendar:
**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)?**
Yes. I will be applying for both GSoC and Outreachy. I plan to focus only on this particular project (Improving static analysis of Mediawiki) of Wikimedia.
== Past experience ==
**Please describe your experience with any other FOSS projects as a user and as a contributor:**
I am pretty new to the Open Source Community. Wikimedia is the first FOSS project that I have contributed to. I also participated in a Mediawiki hackathon which was organized at Indian Institute of Technology, Roorkee on March 12. Apart from this, I am a frequent user of Wikipedia. I like the idea of open source, hackable software and feel that I will continue to enjoy contributing to FOSS like I am now. I use the GNU Compiler Collection for compiling C, C++ and Java code, GNU/Linux as my primary OS (current distributon: Ubuntu with Gnome as the Desktop Environment) and Mozilla Firefox as my primary web browser.
**Please describe any relevant projects that you have worked on previously and what knowledge you gained from working on them (include links):**
I have worked on quite a few developmental projects:
# I was involved in the development of [[https://www.backdoor.sdslabs.co| Backdoor]], a website which hosts Capture the Flag style problems year-long. Its backend is written in PHP. I implemented pagination of the Backdoor leaderboard. Instead of the normal GET request to the server, I used AJAX to move to the next/previous page of the leaderboard. I also implemented a badge notification system using Symfony's event dispatcher component for the website.
# I was a part of a team of 4 students who made an application to categorize One Drive files into appropriate folders. We used One Drive Api to get the files and Monkeylearn API for machine learning. I was responsible for the major backend of the app. It came first in a 24-hour hackathon, Code.Fun.Do conducted by Microsoft in October 25. Link to the project: [[https://github.com/jaindeepali/code.fun.do| Github]]
**What project(s) are you interested in (these can be in the same or different organizations)?**
T89682: Improving static analysis tools of Mediwiki
**Do you have any past experience working in open source projects (MediaWiki or otherwise)? If so, tell us about it! If you have already written a feature or bugfix in a Wikimedia technology such as MediaWiki, link to it here; we will give strong preference to candidates who have done so.**
Some of the bugfixes I have done in Mediawiki are:
T105648:ChangeTags::formatSummaryRow needs a context (Merged in master)
T128718: Cite allows block content inside a span (Patch-For-Review)
T117743: Convert Special:ListFiles to OOUI (In-Code-Review)
T51086: Title::moveTo depends on $wgUser (In-Code-Review)
I am currently working on: T115433 as well as on getting my previous changes merged.