Page MenuHomePhabricator

Outreachy Proposal: Allow Programs & Events Dashboard to make automatic edits on connected wikis
Closed, ResolvedPublic

Description

Personal Details

Name: Medha Bansal
Email: bansal.medha@gmail.com
IRC nick: medha
Blog: https://medium.com/@Medha_Bansal
Resume: https://www.visualcv.com/q1gqnr2otdu
Github: https://github.com/medhabansal
Location: New Delhi, Delhi, India
Typical working hours: M-F 3pm-8pm & 10pm-1am IST(UTC +5:30)

Link to Outreachy proposal: https://outreachy.gnome.org/?q=view_projects&prg=8&p=1482
(I am applying under the Outreachy program as I am not eligible for the Google Summer of Code)

Synopsis

WikiEdDashboard is a Ruby on Rails/React.js based web app that supports the organization and management of assignments, courses and events for groups of Wikipedia users who are working to contribute on a common Wikipedia project. The dashboard code runs two main projects: the Wiki Education Foundation Dashboard(for programs focused on higher education in the US and Canada) and the Wikimedia Programs & Events Dashboard(for the global Wikimedia community).
While the Wiki Education Foundation Dashboard already supports open authentication based automatic edits to the English Wikipedia and mirrors the course progress/changes in the respective wiki pages, the aim of this project is to introduce and establish these wiki editing features in the Programs & Events Dashboard.

Possible Mentors: Sage Ross(@Ragesoss), J T Morgan(@Capt_Swing)

Project Timeline and Deliverables

The official internship period is from 30th May, 2017 and end 30th August, 2017. Weekly progress reports will be posted on Friday of each week. Midterm and Final reports will be posted as specified in timeline.

PeriodTask
April 28 - May 29Community bonding period
May 30 - June 5Initiation/onboarding
June 6 - July 12Work on project design and start working on the problem statement
June 13 - July 17Enable editing and create functional prototype
July 18Mid term evaluation due
July 18 - July 31Community discussion period
August 1 - August 14Testing and improvements
August 15 - August 30 Documentation and enhancements(if any)
August 30Final evaluation due
August 31 - September 6 Wrapping up loose ends

Deliverables
April 28 - May 29 : Community bonding period.

  • Improving knowledge of Rails, reading up on Object-oriented design and design patterns.
  • Understanding and interacting with the Wikimedia Community.
  • Familiarize myself with the MediaWiki API.
  • Detailed discussion with Mentors regarding project sub tasks and milestones. Fine tuning. Increasing project understanding.
  • Establishing channels of communication and creating relevant taska/sub-tasks on project.
  • Continue contributing to WikiEduDashboard, on issues with increasing complexity and also those more relevant to the project problem statement.
  • Community bonding period report.

May 30 - June 5: Initiation/onboarding

  • Bootstrapping the project.
  • Investigative learning.
  • Work on the design and propose a workflow to the mentors.
  • Improve proposed workflow based on reviews and feedback.

June 6 - June 12 : Work on project design

  • Identify types of edits that can and can’t be applied to a wiki.
  • Identify areas in code making such edits.
  • Setting up features to enable/disable automatic editing, and related functionality.

June 13 - June 26 : Start working on the problem statement

  • Design a standard form for working with templates on a per-wiki basis
  • Design a workflow for enabling wiki edits on new wikis
  • Mentor feedback and discussions regarding proposed designs.
  • Implement wiki edits functionality on a per-wiki basis.

June 27 - July 17 : Enable wiki editing

  • Response processing and error handling.
  • Make the flow as generic as possible. Translations, et al.
  • Make the prototype fully functional.

July 18 - July 31 : Community discussion period

  • Present the general design to community for discussion and feedback.
  • Development halts to make way for feedback cycles and iterative learning.
  • Focus on other project areas(to be discussed and sub-tasks to be created with mentors).
  • Work on sub-tasks, waiting for feedback results and discussions to be effective.

August 1 - August 14 : Testing and improvements

  • Start improvements/modifications/extensions based on feedback.
  • Fine tune the app through review changes and feedback.
  • Prototype testing - unit, functional and integration.

August 15 - August 28 : Documentation and enhancements

  • Add detailed documentation of all changes and newly introduced features.
  • Work on enhancements(if time permits) and extended problem statement(if extended).

August 29 - September 5 : Wrapping up loose ends

  • Tend to any tasks/changes that crop up during the course of the project/ final review.
  • Buffer time for delays and unexpected held-ups, if any.

I plan to keep adding tests and functionally testing newly introduced changes at all stages, as the project progresses. I am also willing to work on React and UI based enhancements/add-ons in this or another parrt of the project if I am finished with my initial goal in time.

Participation Details

Progress on my internship pit stops and goals would be tracked through project tasks and sub-tasks on Phabricator.

Project updates and progress will be properly documented in the form of weekly reports at: https://www.mediawiki.org/wiki/User:Medhabansal/Outreachy_Round-14_(WikiEduDashboard)

I will remain active on all project communication channels: email, IRC, Slack, etc.

I will also regularly blog about my experience and learnings on my personal blog on Medium: https://medium.com/@Medha_Bansal

About Me

Education/Work Experience
I have a B.Tech degree in Information Technology from the Indira Gandhi Delhi Technical University for Women, Delhi. After graduating, I worked as a Software Developer in an Agile setup with a web-based startup for 2 years. In my time at the startup, I had the opportunity to work on a number of projects using technologies such as pure Ruby & REST APIs, Javascript/jQuery, AngularJS and Ruby on Rails. I also learnt about the practices and processes that are crucial to developing maintainable collaborative software, such as version control, planning and estimation, task management & issue tracking and concurrently testing all newly added code.

Motivation
I joined my first job as a junior level web developer, where I was assigned languages and technologies that I’d never worked with before. Thrown in the deep end, and with a strong desire to learn, I dived head first and tried to be as resourceful to the organization as possible. I worked hard at establishing myself as a sincere and efficient worker for the maximum part of the past two years, and am primarily self-taught. Since working on a number of technologies in this duration significantly widened my knowledge base, I recently decided to take a break, and add more depth to the knowledge I possess.
Maximum part of my skill set is comprised of Open Source technologies(Ruby, Rails, AngularjS) and I have extensively used them in this journey of mine. I have, thus, always had a strong desire to give back. I recently learnt about the Outreachy internship through Twitter. I think it is the perfect opportunity for me to utilize my skills for contributing to Open Source Software , and in the process, further enrich my knowledge under the guidance of an experienced mentor.

Time commitment and availability
If selected, I would be working full-time on the Outreachy project from May 30, 2017 to August 30, 2017. Tentatively, I might take a 4-5 day family vacation in the second half of August. If the vacation plan materializes, I will continue contributing as much as possible in the said time period. I might also take a few online courses(currently undecided) in this duration. I plan to spend a maximum of 10-15 hours/week on the coursework, if any. This time would be dedicated mostly on weekends, and would be completely outside of the 40 hours(minimum) that I plan to dedicate to Outreachy each week.

Past Experience

I have been a part of development teams on a few analytics and user-management based web applications when I worked as a web developer with Josh Technology Group, a web-based startup in the Delhi NCR. I have worked extensively with Ruby and REST APIs(backend), and AngularJS(frontend) on one of the two major projects that I worked in. I have worked on a pure Rails and JS/jQuery based app as my other major project there, and have a (> intermediate) level of experience with the same.

Apart from these, I have also interned with the Defence Research and Development Organization of India(Visual basic and C based technologies) , as well as Cisco Systems, India(Java and J2EE based technologies) after my sophomore and junior years in college, respectively.
(Resume)

I am new to the open source community, and have started my journey by making a few micro contributions to the Wiki Edu Dashboard:

  1. https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/1233
  2. https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/1239
  3. https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/1251

I must add, that the support I got from the project mentors was gratifying and helped me gain the confidence to further explore the codebase. While functionally testing my changes, I discovered a few minor issues in the related functionality, and brought them to the mentor’s notice:

  1. https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/1234
  2. https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/1219 (comment #5)

I am currently working on resolving the same issues and actively discussing them with the mentors on this project.
Through this project, I intend to expand my knowledge of both Ruby and Rails, and gain a deeper insight into the process of object oriented design. I am also interested in learning about React.js as the project UI and design uses this technology extensively and it would be great if I could work on the same.


Post Completion Summary

Milestones achieved: I started with discussing and understanding the proper scope of the project with my mentors. It was followed by around two weeks of intensive code investigation, discussions and research.
I started making my code changes the following week. It was followed by several code review cycles, interspersed with local testing at my end. We merged the changes soon after that. We zeroed down the Portuguese Wikipedia project to test our functionality and got in touch with a volunteer to help us during the testing period, create Portuguese language templates and conduct discussions with members of the community.
We have successfully deployed the project and it is now live. The Portuguese Wikipedia project was the first to come on board and some editathons have already been conducted successfully.
I also created documentation required by members to enable automatic edits for their project and are the process of enabling it for Czech Wikipedia has now begun. Hoping for more and more projects to make good use of the feature.

Next steps: Having successfully delivered my project as per the decided problem statement, I am looking at other aspects of the project now. I have learnt a lot on this project and wish to keep contributing to it. I am now looking at technologies like React, that I am less comfortable working with as opposed to Rails. I also wish to keep providing support for any help that is required of me with regard to the automatic edits feature.

Event Timeline

@Medhabansal nice work! If you're available tomorrow at 10:30 PM IST, (10AM my time), let's do a video chat. If that doesn't work, my schedule this week is pretty flexible.

@Ragesoss yes thanks! That works fine with me. Would Hangouts be okay?