===Profile Information
Name: Vemuri Sowjanya
IRC nickname on Freenode: Sowjanya
Web Profile: https://vemurisowjanya.github.io/
Resume (optional): https://drive.google.com/file/d/0Bz5JMnlMlWVhbXlmZWlvWFItZE0/view?usp=sharing
Location (country or state): India
Typical working hours (include your timezone): 2pm to 12am (UTC +5:30)
===Synopsis
Toolforge is one of the products of Wikimedia Cloud Services(WMCS) which is a hosting environment for developers for running webservices, doing data analysis, creating tools, etc. It provides a 'webservice' command that can be used by the Toolforge members to start/stop/restart or check the status of the webserver of a tool. This project aims to improve this 'webservice' command by fixing some bugs and providing some feature requests to make this command more user friendly and also to ease the onboarding process of new developers onto Toolforge and Cloud Services.
=====Mentors:@Andrew, @bd808, @madhuvishy
======Have you contacted your mentors already?
Yes
===Deliverables
Describe the timeline of your work with deadlines and milestones, broken down week by week. Make sure to include time you are planning to allocate for investigation, coding, deploying, testing and documentation
|**Duration** |**Tasks**|
|Nov9 - Nov23 |Get familiar with Wikimedia community. Understand all the tasks of the project clearly and get to know the priority of each of the tasks(bugs/features) in toolforge. Fix small bugs related to the codebase that will be closely worked upon during the project.|
|Nov24 - Nov30|Continue to work on small bug fixes. Bonding period continues. Create a documentation for objectives and key results of the project which also contains a link to the tentative timeline of the project.|
|Dec5 - Dec12|Fix the bug T156626, webservice restart command failure with an error message `ValueError: get() more than one object; use filter`. Brainstorming discussions. Validation of the solution.
|Dec13 - Dec19|Fix the bug T164245, webservice restart failure due to tampered service/manifest. Fix the bug T140415, unreliable functionality of webservice restart. Trace the possible paths of failures. Explore various solutions and code the best one among them.|
|Dec20 - Dec27|Fix the bug T122515, possible race condition in webservice HSET/HDEL. Investigate all possible ways of achieving deadlock. Come up with some measures to avoid deadlocks. Perform rigorous testing on the obtained solution.|
|Dec29 - Jan7| Work on T158244, better 'webservice status' output for better understanding of developers of their webservices. Look over the variables that are needed for developers running webservice. Work on T148872, read default CLI arguments from a config file. Incorporate the changes in taking the input for running a webservice.|
|Jan8 - Jan15|Work on T107878, limiting on number of webservice restarts. Investigate the cause for incorrect error.log when restarted with an interval of 15s. Either try to eliminate the failure or determine the threshold on number of restarts using heuristic based or deterministic approaches.|
|Jan16 - Jan23|Midpoint Evaluation and request for midpoint feedback. Revisit all the documentation/timeline and make appropriate changes. Work on T95097, man pages for webservice, webservice-runner. Collect information for man pages and present the information in a standard layout.|
|Jan24 - Jan31|Work on T159892, transition from pykube to official kubernetes python client for webservice. Work on T154506, webservice backend for lighttpd default to kubernetes. Familiarize with the relevant code and make transitions.|
|Feb1 - Feb8|Work on T154504, make webservice backend default to kubernetes. Modifications to default backend settings. Work on T141572, add a nice and simple perl5 webservice type based on modern perl5 principles. Modifications to the code for the perl5 webservice type to be validated.|
|Feb9 - Feb16|Work on T169695, run non-interactive commands on labs kubernetes webservices. Explore ways to run non-interactive commands on labs webservices. Work on T174769, make it less cumbersome to bootstrap and update python webservices. Think of ways to make bootstrap and update look simple for the developer to use them. |
|Feb17 - Feb24|Update the documentation. Code reviews, linting. Unanticipated delay in any of the tasks can be compensated. Work on any stretch goals of the project if available.|
|Feb25 - Mar5|Final Evaluation. Work on any stretch goals of the project if available. Request for final feedback from mentors.|
===Participation
Describe how you plan to communicate progress and ask for help, where you plan to publish your source code, etc
- In need of any help, communicate with the mentors via IRC channel or comment on the tasks in Phabricator or mail the mentor if possible. And also in my typical working hours, I'll try to make sure that I'm online in IRC.
- To communicate the progress, create a Google Doc for progress and a sheet that has pending and finished labels for the tasks in the project for every week. Here's a [[ https://docs.google.com/document/d/1bZLaiE_TpVUNjyIdY5iI67pUeCVGgPaJtfVmzPfk10E/edit?usp=sharing | sample doc made for the project ]] and a [[ https://docs.google.com/spreadsheets/d/1EE0yDHqkfLJCk-dq4GycIf94tY3IFckXZTr_enZ5NxU/edit?usp=sharing | sample sheet for status of the tasks in the project:]]
- Achieving the tasks set for a week and trying to have some stretch goals if possible.
- Source code to be published in Gerrit(http://gerrit.wikimedia.org/).
- Request feedback from mentors once/twice a week on the performance as it would help in getting better at work.
- Attentive to the comments on the previous patches and making appropriate changes.
- Understand the bugs clearly and also trace the path that leads to this failure. Come up with a solution for the bug and make changes accordingly and submit it for reviews.
===About Me
Tell us about a few:
- Your education (completed or in progress)
I am pursuing my Dual degree(B.Tech + M.Tech) in Computer Science and Engineering department, Indian Institute of Technology, Madras. I am currently in my fourth year and my expected year of graduation is 2019. I'm passionate about math and coding.
- How did you hear about this program?
I have heard about the Outreachy program from a past Outreachy intern and got inspired by her work, experience she had last year.
- Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
In my school, the winter vacation commences before Dec 5, 2017 and my last date of enrollment for semester is Jan18. So, I would be having 7 weeks free from full-school time and hence will be eligible to apply for Outreachy.
- We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?
No, because there's no GSoC in December.
- What does making this project happen mean to you?
By contributing to this project, I'll surely be delighted on it's impact as it eases the work for developers who use the 'webservice' command for running their dedicated webservices on the tools. Also, this will remove a lot of fatal errors in running webservice commands faced by developers. This will certainly boost my skills in Python and will also be a great head start to Open Source Development.
===Past Experience
Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them. Describe any open source projects you have contributed to as a user and contributor (include links). If you have already written a feature or bugfix for a Wikimedia technology such as MediaWiki, link to it here; we will give strong preference to candidates who have done so
- **//Software Development Internship at Google Bangalore, 2017//**
The aim of the project is to automate the frontend code for the Google platform team. It solved a problem specific to large scale multi team frontends which is primarily aimed towards internal developers. I have identified and designed an interface to solve the problem that automates the frontend code with help of the mentors. I have learned about new frameworks used in the team for large scale projects which serves millions of users. Most frequently used programming language in the project was Python and hence it was good opportunity for me to enhance my skills in Python.
- **//Software Development Internship at Google Bangalore, 2016//**
The aim of the project is to support the opening of password protected Office documents in Google Apps like Gmail, Drive. It included the decryption of the encrypted Office documents and converting the Microsoft Office formats to Google formats like Docs, Sheets, Slides. I have also explored the algorithms used for encryption of Office documents of different formats like Excel, Presentation, Word and their evolution through the years. Both the internships taught me the importance of linting, code reviews, documentation for working in a community. And also, the significance of bonding with the peers in the project for a good progress and success.
Phabricator link to the microtask: https://phabricator.wikimedia.org/T176624
Phabricator link to a small bug fix: https://phabricator.wikimedia.org/T177439
===Any Other Info
Add any other relevant information such as UI mockups, references to related projects, a link to your proof of concept code, etc