Page MenuHomePhabricator

Outreachy 2021-22 Proposal - Create MediaWiki-Docker documentation for all repositories with Selenium tests
Closed, DeclinedPublic

Description

Profile Information

Name : Agha Saad Fraz
Zulip Nick: @AghaSaad04
LinkedIn : AghaSaad04
Email : agha.saad04@gmail.com
Github: AghaSaad04
Location : Pakistan
Timezone : UTC + 5

Synopsis

MediaWiki is a free and open-source Wiki software. MediaWiki helps you collect and organize knowledge and make it available to people. It is powerful, multilingual, free and open, extensible, customizable, reliable, and free of charge. Delivery of optimal quality software is always a top priority. However, without testing software components, one cannot guarantee the software would work as expected or not. Therefore, different testing strategies are performed to test each and every software component. To increase the efficiency of the testing process and to maximize test coverage, automation is imperative. Automation not only improves the quality of testing but also makes it faster and reduces the cost involved. For automation this project involves selenium. Primarily, selenium is for automating web applications for testing purposes.

The main objective of this Outreachy internship is to update the MediaWiki-Docker documentation for repositories so that all test suites get passed.

Deliverables

  • Updated documentation of MediaWiki-Docker extensions.
  • Pastes of test suites

Todos

Repositories

Project Timeline

Total Weeks: 13

Steps to upgrade Documentation of a repository

I will work in iterative fashion and plan to do the following for every repository:

  • Read the changelog of newer version for the specific repository.
  • Read the MediaWiki-Docker documentation for the specific repository
  • Set up the repository on my machine.
  • Run Selenium tests.
  • Read the repository documentation.
  • Go through the repository’s source code.
  • Update test cases if found any error.
  • Contact developers of the repository/extension if needed.
  • Update the repository documentation.
  • Create paste for output of test cases
  • Get the updated documentation reviewed by mentor.
  • After approval, link the paste with the respective task and mark it as done
  • Think of some new test cases for better coverage of that extension, discuss with mentors and implement ,if required.
Week: 1

Task: Get familiarity with the repositories to be documented and their test suites
Time: 1 Week
Methodology:
During this week, I will get aligned with my mentor and discuss about the repositories that needs to be documented. I will find out if any extension is dependent on another, and devise an order on which extensions should be documented. I will fix already documented repositories including grammar, references and links.

Week: 2-3

Task: Update documentation for AbuseFilter and CodeMirror
Time: 2 Weeks
Methodology:
During these weeks, I will update documentation of both repositories (AbuseFilter and CodeMirror) in the same iterative fashion that I have mentioned earlier in my timeline. I will follow the same template and format of documentation that is already being used in other documented repositories of MediaWiki-Docker. These extensions look a bit easier, so I might be able to save some days in these two weeks which I can use for another extension. Current documentation and other references including paste can be found from the following tasks created for the repositories:
https://phabricator.wikimedia.org/T293090
https://phabricator.wikimedia.org/T293093

Week: 4-5

Task: Update documentation for CirrusSearch
Time: 2 Weeks
Methodology:
My strategy would be same through out the internship. During these weeks, I will update documentation of CirrusSearch repository. As per mentor, this repository is a bit complex. I will try to complete this within two weeks I will follow the same iterative fashion and format of documentation that is already being used in other documented repositories of MediaWiki-Docker. Current documentation and other references including paste can be found from the following task created for the repository:
https://phabricator.wikimedia.org/T294644

Week: 6

Task: Update documentation for AdvancedSearch
Time: 1 Week
Methodology:
During this week, I will update documentation of AdvancedSearch repository. I will be doing this later than CirrusSearch as I think AdvancedSearch depends on CirrusSearch. I will follow the same iterative fashion that I have mentioned earlier in my timeline. Current documentation and other references including paste can be found from the following task created for the repository:
https://phabricator.wikimedia.org/T293092

Week: 7-8

Task: Update documentation for CentralNotice and ElectronPdfService
Time: 2 Weeks
Methodology:
During these weeks, I will update documentation of both repositories (CentralNotice and ElectronPdfService) in the same iterative fashion that I have mentioned earlier in my timeline. Current documentation and other references including paste can be found from the following tasks created for the repositories:
https://phabricator.wikimedia.org/T294643
https://phabricator.wikimedia.org/T294645

Week: 9-11

Task: Update documentation for FileImporter, TemplateWizard, GrowthExperiments
Time: 3 Weeks
Methodology:
During these weeks, I will update documentation of FileImporter, TemplateWizard, and GrowthExperiments extensions in the same iterative fashion that I have mentioned earlier in my timeline. Current documentation and other references including paste can be found from the following tasks created for the repositories:
https://phabricator.wikimedia.org/T293095
https://phabricator.wikimedia.org/T294647
https://phabricator.wikimedia.org/T294646

Week: 12-13

Task: Wrap up the work
Time: 2 Weeks
Methodology:
During these weeks, I will wrap up all the work. I will do a final review of documentations for all the repositories. I will also create new test cases for repositories if required.

Participation

  • Will be working around 40 hours a week.
  • Google meet will be used for weekly meetings.
  • MediaWiki extension documentation page would be used for the changes.
  • Gerrit will be used for all the changes in source code.
  • Phabricator will be used to manage tasks and paste.
  • I will be available on Zulip for communication in working hours.
  • I will write bi-weekly progress reports on medium.

About Me

  • I have been working as DevOps Engineer for more than an year. I have worked with containerization and automation using DevOps techniques and tools including Docker and selenium. I have the understanding of Docker and containerization. I have developed multiple applications using Python and selenium like Instagram bots which perform different functionality. I have developed Instagram bots using Python, selenium, BeautifulSoup.
  • I am also an experienced technical writer. I have been writing high quality software documentation, user-guides, manuals, algorithm analysis, project documentation, research paper. I believe in good documentation. Here is a link to the documentation that I have done for some of my projects: Technical Writing Portfolio

Past Experience

  • As a user, I have been using the Wikimedia web application for more than six years. I have used different projects and chapters of Wikimedia. I have consulted Wikipedia for my assignments. I have used Wikidata in Natural Language Processing. This gives me the user experience.
  • When I found out about Wikimedia, I knew I had found the organization I want to contribute to. I loved the idea of bringing free educational content to the world. I really want to contribute to this amazing initiative of Wikimedia.
  • I started using the Wikimedia web application as soon as I came to know about this organization. Meanwhile, I started to build the setup on my local system so that I can start contributing. When I was able to build the system, I knew all the issues that I faced and kept a log of them. Later. I contributed to the Zulip channel so that other users don’t face the same problem. I still have the log of all the problems that I faced during installation and I will try to figure out if there could be some other ways to make it easier for the new users to build the environment.
  • I have been reading the documentation of repositories for a month. I have made contribution in couple of minor tasks that are related to Wikimedia Introduction, Account creation, Zulip introduction.
  • I have updated documentation for multiple repositories including Popups, CodeMirror. I added their dependencies. Now, a user or developer will be able to get test cases passed after following the documentation.
  • While I was solving these issues, I was able to figure out what issues a new contributor faces while contributing.
  • My overall experience comprises of nervousness, excitement, happiness, confidence, frustration, learning, competing, solving different challenges, understanding the project, learning new concepts, and much more. This is the month where even my weekends were productive. Mentor and other members are always helping and motivating, celebrate even a small achievement not making us feel dumb at all. My experience is great up till now. I’m looking forward to contributing more.

Past Experience with other communities

  • I started using Ubuntu Linux 3 years back and now use Windows only if necessary because of the many advantages that Linux has over Windows. My Linux experience has been amazing because of how easily things are done.
  • I have used Arduino libraries in my IoT projects. I have also contributed to Arduino by documenting its top-most downloaded libraries.
  • I have used the OpenRefine web application. I used reconciliation functionality and also converted my messy data into organized.I also contributed to OpenRefine by actively participating in their Gitter channel and solving their issues of GitHub repository. My contributions can be seen in their GitHub repository.
  • Apache Camel is an open-source framework for message-oriented middleware with a rule-based routing and mediation engine. I have contributed to their GitHub repository and my contributions are related to the website.
  • I joined the Google Tesseract OCR community a year ago when I started implementing the OCR feature in my final year project. I joined their tesseract-dev and tesseract-OCR Google groups that allow us to participate in the community. I am still a part of that community and it has been a good experience.
  • I have been part of PhpMyAdmin as a user for the past 4 years when I started web development. It provides support for most MySQL features. It provides a list of resources and information if anything is not working which is of great help to us. I also contribute to the PhpMyAdmin by actively participating in their Gitter channel and solving their issues of Github repository. My contributions can be seen in their Github repository.
  • I joined the TensorFlow community when I had to use the TensorFlow Lite object detection model for my project. It is an open-source platform for machine learning. All the technical support is provided through Stack Overflow and GitHub issues. It has been a great learning experience.
  • I started using LibreOffice when I switched to Linux since it is the default office suite for Linux distributions. I have always used this for my documents, spreadsheets, and presentations. It also supports the file formats of most other major office suites, including Microsoft Office.
  • I have been using Mozilla for quite a long time now which is free and open-source. I find it more efficient, responsive, and secure than other browsers.
  • All these communities have greatly helped me in enhancing my technical knowledge and skills. Also, by interacting with more and more people of these communities, I have been able to greatly improve my soft skills as well.

MICROTASKS

No.Patch/Paste
1Made a minor change in TemplateWizard extension source code (Patch 736725 )
2Updated documentation for Popup repository
3Updated documentation for CodeMirror repository
4Ran Selenium test suites of RelatedArticles repository. Paste can be found here
5Ran Selenium test suites of MediaWiki-Docker. Paste can be found here