**PROFILE INFORMATION**
__**Profile Information**__
-------------------------------------
**Name** : Udokaku Ugochukwu
**Email**: UdokakuUgochukwu@gmail.com
**Github**: [[ https://github.com/UdokaVrede | UdokaVrede ]]
**IRC nickname on Freenode** : Udokaku Ugochukwu
**Location (country or state)** : Rivers, Nigeria
**Time Zone** : (UTC + 01:00) West Central Africa
**Typical working hours (include your timezone) :**: 10 AM - 6 PM (UTC + 01:00) West Central Africa
**Project Task**: [[ https://phabricator.wikimedia.org/T263678 | T263678 ]]
**Synopsis**==== __**Synopsis**__
Wikipedia’s vision of a world in which everyone can share in the sum of all knowledge, however this goal has not been fully achieved, as achieving this goal requires multiple language editions Wikipedia contents have to be shared. Having more contributors would mean more content for more people in their different languages.
At the time of writing this, Wikipedia has about **54 million** articles written in **309** different languages, but there is an underlying problem of divergence of information between different editions of the Wikipedia content, which is could be due to:
- Ideological bias of the contributors.
- Community with lesser contributors and more content to handle, requiring more time to provide contents. e.t.c
Wikipedia proposed an architecture for a system that would bring solutions to these existing problems by separating this goal into 2 projects:
- **Abstract Wikipedia**: a project that provides natural language independent encyclopedic content for items in Wikipedia in abstract notation, allows for creating, editing and maintaining content.
- **Wikilamba**: a project that houses functions, algorithms and linguistic knowledge required for encoding abstract content from Abstract Wikipedia to natural language.
Abstract Wikipedia is therefore built on Wikilamba.
Wikipedia Info-boxes This will lead to the creation of an open, widely usable, and well tested natural language generation library on the Web,covering many different languages.
The [[ https://meta.wikimedia.org/wiki/Abstract_Wikipedia | goal of Abstract Wikipedia ]] is to let more people share more knowledge in more languages. Abstract Wikipedia is an extension of Wikidata. Abstract Wikipedia, requires functions that take abstract content as the input and return natural language text as the output, and this is expected to be done multilingual and requires a rich environment to create and maintain function, and at the same time allow more people to contribute knowledge and reach more people with their contributions, no matter what their respective language background.
**Wikipedia Info-boxes **are tools placed at the top-right corner in desktop view and at the top in mobile view of a Wikipedia article that gives an overview or summary of the information in an article.
On Wikipedia, an info-box is transcluded into an article by enclosing its name and attribute–value pairs within a double set of braces. The MediaWiki software on which Wikipedia operates then parses the document, for which the info-box and other templates are processed by a template processor. This is a template engine which produces a web document and a style sheet used for presentation of the document.
This project aims to **Analyze community authored functions that build Wikipedia info-boxes ** and centralizing community authored functions to achieve the Abstract Wikipedia purpose, "to create and maintain the content of Wikipedia for all languages only once, then render it in the preferred natural language of the reader using Wikilamba functions , which would lead to more coverage and accuracy between articles and also make available more knowledge for readers provided by more contributors". To achieve this, I would;
# Fetch the different community authored functions on the wikis, and determine their usage in articles and how many page views use each community authored function.
# Analyze the similarity between the community authored functions hosted across different projects, highlighting redundant or similar code.
# Determine whether there are segments of code that can be turned into pure functions in the wiki of functions.
==== __**Current State**__
Currently, Wikipedia community authored programming functions are used on different language editions of Wikipedia and require users to go through the tedious processes of searching for the community authored programming function then copy and paste it to their Wikipedia language edition. This process is error prone, can lead to code duplication, and worse, improvements to functions on one language edition may not ever make their way to other language editions, it would only reflect on the improved function and not automatically across all Wikipedias.
==== __**Why is your proposed solution an improvement to the current solution?**__
Wikipedia’s vision is a world in which everyone can share in the sum of all knowledge.The proposed solution will re-structure the community functions into a harmonious whole, and provide more efficient ways of contributing and maintaining Wikipedia functions, To achieve this goal,and in conjunction with the Wikilamba functions deliver high quality contents globally. it seperates this goal in two parts: creating and maintaining content in an abstract notation within a project called Abstract Wikipedia,As opposed to the current solution with challenges as stated in !!Current State!! and creating an infrastructure called Wikilambda that can translate this notation to natural language,and are driven by Wikimedia’s vision to work towards a world where every single human being can freely share in the sum of all knowledge.section above.
==== __**How will the proposed project benefit Wikimedia projects?**__
The goal of [[ https://meta.wikimedia.org/wiki/Abstract_Wikipedia| Abstract Wikipedia ]] is to let more people share more knowledge in more languagesis is a work-in-progress project being developed to achieve a Wikipedia in which everyone can share in the sum of all knowledge. Abstract Wikipedia is an extension of Wikidata.This will help ensure high quality concurrent and accurate articles when developed, Abstract Wikipedia, requires functions that take abstract content as the input and return natural language text as the output, and this is expected to be done multilingual and requires a rich environment to create and maintain function, and at the same time allow more people to contribute knowledge and reach more people with their contributions,thereby making available more content to more people around the world their language background notwithstanding.
==== __**Do you see any risks/concerns involved in implementing the planned features?**__
Centralizing community authored functions creates a single point of failure. no matter what their respective language backgroundInstead of having hundreds of independent Wikipedia functions.
This project aims to Analyze community authored functions that build Wikipedia info-boxes and centralizing community authored functions.Given the number of functions we need to gather information from, Thisthe major proposal covers the following:blem I see has to do with latency.
==== __**About Me**__
1. Fetch the different community authored functions on the wikisI have a National Diploma in Computer Science from Federal Polytechnic Nekede, Owerri, and determine their usage in articles and how many page views use each community authored functionNigeria.
2. Analyze the similarity between the community authored functions hosted across different projectsMy journey in tech started during the lock-down when I applied for a training with She Codes Africa in April,2020. As a requirement and for the first time, I created a GitHub account and start familiarizing with the environment.May, 2020, I got accepted into She Codes Africa program to learn python for Data science, this was my first try and it was a breaking point for me, because, getting to understand more about tech,listening to people share their success story and writing simple programs piqued my interests and challenged me to go further.This program lasted for 3 months where I went through series of training, attended workshops and webinars. During the course of this program, I was introduced to W.O.S.C.A, a women initiative that introduces Africans to open source. At the time, I could not participate in their activities as I was short of resources. Mid-August, I had gotten resources and launched into making open source contributions, and by August, 24th, I made my [[ https://github.com/layer5io/meshery-tanzu-sm/pull/25 | first open source contribution ]] to Layer 5, an organization centered around cloud native computing.
- **Datasist:** a python package providing fast, quick, and an abstracted interface to popular and frequently used functions or techniques relating to data analysis, visualization, data exploration, feature engineering, Computer, NLP, Deep Learning, modeling, model deployment, highlighting redundant or similar codehere is a [[ https://github.com/risenW/datasist-doc/pull/12 | link ]] to my merged contribution on this project.
3. Determine whether there are segments of code that can be turned into pure functions in the wiki of functions
**Mentor** - I also wrote a [[ https://github.com/JamBot3000/Hacktober-Challenges/pull/63 | simple calculator using python and tkinter ]] in the JamBot3000 repository on GitHub.
- Contributions I made to some other open source projects can be viewed [[ https://github.com/pulls?q=is%3Apr+author%3AUdokaVrede+archived%3Afalse+is%3Aclosed | here ]].
Currently, I am a member of the Eddie Jaoude community, a community that gives people an excellent hand-holding on-boarding experience into open source.
The training was a whole rebranding process for me from which I learnt a lot, and I believe that the knowledge gained will be beneficial to this project, and look forward to getting accepted as an intern for this project.
==== __**Past Experience**__
Asides making open source contributions, I am a python developer and technical writer with experience in HTML, CSS, Python, Git, currently acquiring skills in data science.
Birthdays are one of my favorite days, this motivated me to design a desktop application, “[[ https://github.com/UdokaVrede/CREST | CREST ]]”, that keeps track of birthdays. In designing this application, I made use of python, SQlite3 for the database and the tkinter library for the GUI.
I am a member of Open-source Community Africa (OSCA), Facebook Developers Community(DevC) and Andela Learning Community (ALC).
==== __**Deliverables**__
| **PERIOD** | **TASK** |
|---------------------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **November 1st to November 23rd** | Within this period, I intend to continue contributing to tasks on Wikimedia. I would also continue honing my skills in Python and Data Analysis |
| **December 1st - December 7th** | Community Bonding period Get to know more about the community and also implement the [[ https://www.mediawiki.org/wiki/Outreachy/Participants#Community_bonding_period | guidelines for the community bonding period ]] on MediaWiki |
| **December 8th - December 15th** | Get more information on the project and how the tasks are expected to be done. Access the community authored functions. List out community authored functions to be analyzed. Ask questions about the confusing parts of the features to be implemented and get information on any additional task that might be needed. Layout plans and designs for the final implementation and share with my mentor to get feedback |
| **December 16th - January 5th ** | Fetch the different community authored functions on the wikis, analyze and determine their usage in articles. |
| **January, 6th - January, 19th** | Work on the feature to count the page views used by each community authored functions and send in my report for review. |
| **January 20th - February, 9th** | Analyze the similarity between the community authored functions hosted across different projects |
|** February, 10th - February, 23rd** | Following the guide on [[ https://en.wikipedia.org/wiki/Help:Creating_a_bot | building Wikipedia bots ]], I intend to build a bot that would highlight redundant or similar code within the community authored functions and returns redundant codes, then seek feedback from my mentor on the next steps to take with my findings if there exists redundant code. |
| **February, 24th - March, 2nd** | Analyze and determine segments of code to be turned into pure functions in the wiki of functions. Finalize, review, organize, get feedback and wrap up the project. |
==== __**Other Deliverables**__
- Blog post on my progress every week
- Regular communication with my mentor(s) and other community members
- Attend program-related meetings.
- Follow any guidelines to get involved with the community and process.
==== __**Participation**__
- I will be online on IRC in my working hours (10 am - 6 pm UTC+1) to collaborate with mentors and community members.
- I will use Phabricator as well as Github for managing bugs and subtasks.
- I will be available on Gmail to be contacted when needed in the non-working hours.
- I would keep effective communication with my mentor during the internship period.
- Wikimedia contributions
=== __**Microtask**__
Adam Baso [[ https://phabricator.wikimedia.org/p/dr0ptp4kt/ | @drOptp4kt]]- [x] Fetched all of the source code on English Wikipedia in the [[ https://en.wikipedia.org/wiki/Special:PrefixIndex?prefix=&namespace=828 | Module: "namespace" ]] .
- [x] Generated a summary report.
- [[ https://github.com/UdokaVrede/Wikimedia-Microtask | Wikimedia-Microtask]]
==== __**Other Wikimedia Contributions**__
**Have you contacted your mentors already?Pywikibot**: T265128 - **Replaced all occurrences of “basestring” to “str” and migrated from epytext type hint to annotation type hint.**
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634201 | Merged ]]
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634216 | Merged ]]
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634344 | Merged ]]
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634348 | Merged ]]
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634785 | Merged ]]
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634285 | Merged ]]
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634351 | Merged ]]
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634327 | Merged ]]
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634735 | Merged ]]
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/635380 | Merged ]]
**Pywikibot**: T264721 - **Rewrite scripts using new option handler**.
- [[ https://gerrit.wikimedia.org/r/c/636022 | In progress ]]
- [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/636025 | In Progress ]]
Yes I have - [[ https://gerrit.wikimedia.org/r/c/pywikibot/core/+/636028 | In Progress ]]
==== __**What does making this project happen mean to you?**__
Wikimedia aims to make available content to everyone around the globe, As I anticipate my acceptance to this internship round with this Wikimedia project, contributing to this projects, would mean adding my quota to making the available content to people around the world, this would be elating and a rewarding experience for me, knowing I helped create solutions to not only the people’s needs but also to the progress of the Wikimedia vision.
Career-wise, I would be exposed to a well-structured organizational procedure in achieving goals, and different patterns to achieving goals. I would also meet and build a formidable network with more experienced software engineers and broaden both my knowledge set and skills. It would also accelerate my growth and experience in the technology industry.