Page MenuHomePhabricator

[Gsoc 2018] Proposal for Toolforge webservice command Improvement
Closed, DeclinedPublic


Project Title
Improvements for the Toolforge 'webservice' command

Personal Information

Name: Fotso Fono Kevin Larry
IRC Nick: djff
Location: Cameroon
Github: Github Profile Page

Project Mentors
Andrew Bogott @Andrew,
Bryan Davis @bd808,
Madhu @madhuvishy

Synopsis / Project summary
Every tool in toolforge can have a dedicated web server running on either job grid or kubernetes. /usr/local/bin/webservice is a python application used by toolforge users to start and stop the web services for their tools. However, The experience using this application so far is not close to ideal due to the presence of a significant amount of bugs and lack of key interactive features with the users. This project seeks to address the issue at hand by solving all major identified issues, and adding new features to the application to ensure users get the best experience from using the webservice application.

Prerequisite work

  • Register for developer access.
  • Read the Gerrit tutorial and set my local environment
  • Clone the project repository from gerrit
  • Read over the source code and documented how `webservice --backend kubernetes {start, stop} functions
  • Submitted a patch of the above documentation following the gerrit tutorial
  • Added BryanDavis, Madhuvishy, and Andrew Bogott as reviewers for my submitted patch which can be found here

Project Goals (Verifiable Deliverables)

  • Resolve all bugs related to the webservice application outlined in this Task
  • Implement new features outlined in the above task
  • If time permits work on any issue/ implement any new feature which might arise during the internship period.

Detailed project description


Currently, the webservice command provides some functionality that allow users run their web service on either a grid engine or kubernetes cluster. However, the user experience with this command is not optimal because of the presence of bug and absence of features which can help in optimizing the experience.

Proposed Implementation Approach

To implement this project, I need to start by reproducing the bugs and do code testing, however, it is very difficult to setup a local testing environment for the webservice command since it requires an environment which include the grid engine and kubernetes clusters. With this in mind, as of now, there are two possible methods I am exploring to ensure I can test the code while its been enhanced.

  • Creating a seperate copy of the webservice application which I can use for development and live testing.
  • Setting up a testing project like toolsbeta from which will be able to do the tests of the script locally.

    After setting up a suitable testing channel, we will process by reproducing each bug to track its origin, then devise and implement the most appropriate approach to solve it.

Development Schedule / Timeline

April 23 - May 13 (3 weeks)

  • Discussion with mentors to further understand the bugs/ requested features.
  • Creating relevant tasks on phabricator for specific discussions
  • Setting up some sort of testing environment to track and reproduce the bugs.
  • Familiarize myself with the official python kubernetes client
  • Document and report findings so as to decide of the final priority of each bug/feature

May 14 - May 25 (1.5 weeks)

  • T148872: Make webservice command read default cli arguments from ~/.webservicerc (combined with T154504)
  • T107878: Limit webservice manifest restarts
  • T158244: Improve webservice status output. (This will be iteratively implemented through the whole internship)
  • Testing. (Testing will be done each week throughout the internship period but will highly depend on which testing method we stick with during the community bonding period)
  • Weekly Evaluation with mentors

May 26 - June 2 (1.1 weeks)

  • T95097: webservice and webservice-runner have no man pages
  • T183436: Add memory limit configuration for Kubernetes pods
  • T154506: Make webservice backend for lighttpd default to kubernetes
  • Weekly Evaluation with mentors

June 3 - June 10 (1 weeks)

  • T159892: Make tools-webservice use the official kubernetes python client rather than pykube
  • Weekly Evaluation with mentors

June 11 - June 15 (4 days)

  • First Evaluation (Phase I).

June 16 - July 26 (1.5 weeks)

  • T156626: k8s webservice restart failure with ValueError: get() more than one object; use filter
  • T140415: webservice restart does not always wait for service to stop before trying to start again
  • Weekly Evaluation with mentors

June 27 - July 4 (1 week)

  • T164245: Webservice stuck in failed restart loop because of corrupt service.manifest
  • T122515: Possible race condition in webservice HSET/HDEL
  • Weekly Evaluation with mentors

June 5 - July 10 (1 week)

  • T169695: Run non-interactive commands on labs kubernetes webservices ( I will start the implementation of this task, not very certain to complete it in 1 week)
  • Weekly Evaluation with mentors

June 9 - July 13 (4 days)

  • Second Evaluation (Phase II).

July 14 - July 25 (1.5 weeks)

  • Continue Implementing T169695: Run non-interactive commands on labs kubernetes webservices
  • T141572: Add a nice and simple perl5 webservice type based on modern perl5 principles
  • Weekly Evaluation with mentors

July 25 - August 14 (2.5 weeks)

  • T174769: Make it less cumbersome to bootstrap and update python webservices (Can be related to T169695)
  • Weekly Evaluation with mentors

Work after GSoC 2017 on the project
I am still very new to opensource organizations and I wish to have a contribution that will impact people positively. So I intend to see through this projects continuity by improving on the webservice command given the feedback from my mentors and the community, even after the internship period.

Time Availability during GSoC
I would put in at least 40 hours per week (4am-8am and 3pm-9pm per day UTC +1:00) on this project and will be coding during weekends (occasionally), regularly informing my mentors on my progress and regularly updating my wiki report page or phabricator ticket of the project (reporting). I will probably be programming in the evenings during weekends (Saturdays and/or Sundays). I will always be available to respond to my mentors messages with a max delay time of (15 - 30 mins).
We have a 4 month academic internship every year which runs from May to August every year and counts as credits towards our graduation. So this internship will be a good boost to fulfill the academic internship requirement for this year.

Why Wikimedia Foundation (WMF)?
I heard of Wikimedia Foundation from a fellow friend who did GSoC last two years and started a started a movement for wikimedia Cameroon which I decided to join. I am an advocate of openness and this organisation aligns with my principles and focuses on encouraging grown and distribution of free content to help the world in general and my continent in particular. Hence I am highly motivated to provide my knowledge and technical know how to contribute in my own way to the movement.

Some Past Experience
Trounce flow, Worked with a UK based startup as a freelancer to extract, process and visualize financial data from bloomberg api.
Contact Directory, used to manage all sorts of contacts on the cloud and can be access via mobile.
Facial Recognition, Facial recognition using openCV for school attendance system.

My Programming skills
Programming Language: Javascript (good), Python(Very good), Perl(Very basic).
Frameworks / Tools: Django (Excellent) , Flask(Good), git/Github/gitlab, SSH.
Operating system: Linux, Windows

About Me
Currently pursuing a degree in Actuarial Science and Data Science at ALU Rwanda.
I am a member of the GDG Buea (Google Developer Group Buea) and like to promote women in tech by organizing PL/meetups for girls in high school.
Was a mentor of the programming language(PL) meetup event organized by the GDG Buea in 2016 to help non techies have an introduction to programming class for free.
I am an advocate of Openness and have taken part in local Open conferences to promote openness in the society. More about my personal attributes Plum Test.

Event Timeline

djff triaged this task as Medium priority.Mar 26 2018, 4:12 PM
djff created this task.
djff updated the task description. (Show Details)

hello @bd808 , @madhuvishy , @Andrew , Please I will like to have your input for improvements to my proposal. Thank you.

Place request for account on tool labs

Don't you have it already?

Thank you for the application!