Page MenuHomePhabricator

Develop features for Wiki Loves Monuments App
Closed, ResolvedPublic

Description

IMPORTANT: Make sure to read the Outreachy participant instructions and communication guidelines thoroughly before commenting on this task. This space is for project-specific questions, so avoid asking questions about getting started, setting up Gerrit, etc. When in doubt, ask your question on Zulip first!

Approved license

I assert that this Outreachy internship project will released under either an OSI-approved open source license that is also identified by the FSF as a free software license, OR a Creative Commons license approved for free cultural works:

  • Yes

No proprietary software:

I assert that this Outreachy internship project will forward the interests of free and open source software, not proprietary software:

  • Yes

How long has your team been accepting publicly submitted contributions?

  • 0-2 months

How many regular contributors does your team have?

  • 1-2 people

Brief summary

Wiki Loves Monuments is an international photographic competition held every year by the Wikimedia community. Since 2022, an interactive map application is being developed to improve user experience when participating in the competition, specifically with submitting their photographs to Wikimedia Commons, a free licensed media repository that feeds all Wikimedia projects, including Wikipedia.

The app can serve as a base map app for the 30+ countries that hold local Wiki Loves Monuments and other geography-focused photographic competitions. The application is written in Python using a Flask framework, which facilitates collaborative development and can be forked if necessary, which gives more autonomy to the organizers.

The application is intended to be responsive, bandwidth friendly and intuitive. Based on the feedback of consultants and participants, in this project you will use and expand Javascript and Python scripts in the Flask framework in order to create a responsive dashboard of the participant’s and the competition’s statistics within Wiki Loves Monuments editions, one of the main features suggested by the consultants. That feature aims to bring gamification elements to the competition in order to improve the user experience.

This project is mentored by Éder Porto. SPARQL, Python and Javascript knowledge are advantage perks, but can be learnt during the project as well. Visual sense and product design knowledge and techniques will be useful, but are not essential.

Minimum system requirements

You will need a computer with a working Python 3 installation; you can install flask and other useful frameworks and modules using standard package systems.

How can applicants make a contribution to your project?

You will start understanding how Wikimedia Commons and Wikidata works, then you will learn how to get information from those projects via APIs and SPARQL queries (tutorial on SPARQL: https://wdqs-tutorial.toolforge.org/). After you are familiarized with those concepts, you will code functions to gather information about a user's contributions to the Wiki Loves Monuments competition and create a dynamic and responsive dashboard to present this information.

You will need to create an account on Wikipedia (if you don’t already have one), install python, flask and other packages (https://github.com/WikiMovimentoBrasil/wikilovesbrasil/blob/main/requirements.txt). I can provide guidance for each specific starting task (tbd), and you are welcome to ask questions through Outreachy, by email, or at https://www.wikidata.org/wiki/User_talk:EPorto_(WMB).

Repository

https://github.com/WikiMovimentoBrasil/wikilovesbrasil

Issue tracker

https://github.com/WikiMovimentoBrasil/wikilovesbrasil/issues

Tasks

T318451 - Look through a category of media files and identify what information can be gathered and quantified
T318452 - Explore the Wikimedia Commons API and match the API calls with the information obtained
T318453 - Set up Python on your computer, write a function to get the informations using the Wikimedia Commons API

Application and timeline

The Outreachy positions are assessed solely on the contributions and the application you submit for the project; the best things you can do are to do well with the contributions, and include all relevant information in your application. Contributions are evaluated based on their completeness, coding style, and any additional work beyond the core task.
When filling in your application, you will be asked about a timeline for the work during the project. I encourage you to draft a rough timeline yourself, bearing in mind:
You should split the timeline into periods, e.g., weekly or two-weekly, and write a short summary of what you expect to be doing in that period;
The aim of the project is to build a dynamic dashboard for Wiki Loves Monuments participants, but this will be done in stages (e.g., gathering the informations; presenting the statistics; testing usability and responsiveness; getting and answering feedback);
Essential skills and knowledge that you do not master will need a period of learning, and you should include time for that;
Be realistic about what you think you will be able to achieve during the internship!
If you are accepted, we will work together to revise the timeline as the work progresses - it doesn't have to be perfect!
There are no community specific questions to answer in your application for this project. If you can demonstrate general knowledge of the community, or previous python coding activities in your application, that will be really helpful.
Also, please bear in mind that I can only accept one intern for this project, so I would strongly recommend contributing to multiple Outreachy projects (particularly those with few applicants) to increase your chances of getting an internship.

Benefits

  • You will learn or improve your knowledge of Python coding.
  • You will gain familiarity with API calls on the Wikimedia projects and SPARQL queries.
  • You will develop front-end and responsive development skills.

Community benefits

Improvement of user experience, especially to newcomers, can also improve user retention on Wiki Loves photographic competitions.

Questions?

Please feel free to ask questions in this phabricator task, or in the subtasks. You can also email me if you want (my address is available via Outreachy)

Event Timeline

@Ederporto Happy to see this project, overall a nice proposal :)

I've got a few comments and questions:

  • In the project description, you have mentioned that the project will be to "..use and expand Javascript and Python scripts in the Flask framework to create a responsive dashboard of the participant's and the competition's statistics within Wiki Loves Monuments editions, one of the main features suggested by the consultants..'. This is an apt description; still, I wonder if you could provide a reference link here of an existing tool or a graphic that explains what this dashboard would ultimately look like and other features you expect to be developed/integrated with the dashboard as part of the project.
  • I see that there are no issues listed here: https://github.com/WikiMovimentoBrasil/wikilovesbrasil/issues. Do you have some ideas for small tasks that potential applicants can work on during the contribution phase? Could you also integrate them with the project description?
  • Is there a co-mentor willing to help mentor this project w/ you? Ideally, we prefer two people to mentor on the project, atleast one holding technical skills.

I'm assuming this is your first time mentoring in Outreachy, so welcome :) You might find this resource helpful during the various phases of the program https://www.mediawiki.org/wiki/Outreachy/Mentors. Also, as soon as we finalize projects, I'll create a channel for all mentors, where you might as well benefit by asking questions and getting a response from folks who frequently mentor.

@srishakatux I can co-mentor this, I've already registered to do so on Outreachy. I'm not planning on proposing any of my own projects this round.

@Mike_Peel @Ederporto Could you help answer a few questions I have raised above so I can approve the request made via the Outreachy portal?

@Ederporto Happy to see this project, overall a nice proposal :)

I've got a few comments and questions:

  • In the project description, you have mentioned that the project will be to "..use and expand Javascript and Python scripts in the Flask framework to create a responsive dashboard of the participant's and the competition's statistics within Wiki Loves Monuments editions, one of the main features suggested by the consultants..'. This is an apt description; still, I wonder if you could provide a reference link here of an existing tool or a graphic that explains what this dashboard would ultimately look like and other features you expect to be developed/integrated with the dashboard as part of the project.
  • I see that there are no issues listed here: https://github.com/WikiMovimentoBrasil/wikilovesbrasil/issues. Do you have some ideas for small tasks that potential applicants can work on during the contribution phase? Could you also integrate them with the project description?
  • Is there a co-mentor willing to help mentor this project w/ you? Ideally, we prefer two people to mentor on the project, atleast one holding technical skills.

I'm assuming this is your first time mentoring in Outreachy, so welcome :) You might find this resource helpful during the various phases of the program https://www.mediawiki.org/wiki/Outreachy/Mentors. Also, as soon as we finalize projects, I'll create a channel for all mentors, where you might as well benefit by asking questions and getting a response from folks who frequently mentor.

Hello, @srishakatux ! Sorry for the delay, My email was sending these to the spam folder and I was overwhelmed last week.

Answering your first question: There is no tool that executes such thing yet. But our most approximate correspondent would be the Wiki Loves Competitions Tools. The user should be able to see not only statistics of the contest editions, but select their statistics as well, such as number of images contributed in each year, number of images used and filter it by project, a map (such as WikiMap).

To the second question: Yes, I'm working on creating those this week. I think they begin with query buiding and API calls, as they are the basis of all features related to this.

And the third @Mike_Peel answered!

Thank you and again, sorry for the delay!

@Ederporto That sounds great! I've approved the project. I will add you on a mentors chat channel soon once we have all the project details finalized and will ping you back here.

@Caseyy0000 Hello! I didn't see any other task related to your project, so I am assigning this to you. As it's been a few weeks since the internship started, I am asking all interns to share a few updates (in 3-4 sentences) on their project progress in a comment on the relevant Phabricator task. I'd encourage you to do the same. For other reminders, please see my message on Zulip. cc @Ederporto @Mike_Peel

@Caseyy0000 I'd appreciate your help in adding final project outcomes here: https://www.mediawiki.org/wiki/Outreachy/Past_projects#Round_25 and help resolve this task if you consider it as done now that the internship is over. Thank you :) cc @Ederporto @Mike_Peel