Jump to content

Grants:Project/Commons app/Commons app Android v4/Midpoint

From Meta, a Wikimedia project coordination wiki

Report accepted
This midpoint report for a Project Grant approved in FY 2019-20 has been reviewed and accepted by the Wikimedia Foundation.
  • To read the approved grant submission describing the plan for this project, please visit Grants:Project/Commons app/Commons app Android v4.
  • You may still review or add to the discussion about this report on its talk page.
  • You are welcome to email projectgrants(_AT_)wikimedia.org at any time if you have questions or concerns about this report.

Welcome to this project's midpoint report! This report shares progress and learning from the first half of the grant period.


In a few short sentences or bullet points, give the main highlights of what happened with your project so far.

  • v3.1 of the app was released on Google Play and F-Droid in early September, containing basic integration of Wiki Loves Monuments.
  • As of October, the app has 8,077 active installs, test coverage of 45.6%, and a crash rate of 0.28%.
  • Next steps involve finishing the remaining few features for v4 release, and publicity initiatives.

Methods and activities[edit]

How have you setup your project, and what work has been completed so far?

Describe how you've setup your experiment or pilot, sharing your key focuses so far and including links to any background research or past learning that has guided your decisions. List and describe the activities you've undertaken as part of your project to this point.

Planning and implementation[edit]

Hiring a contractor[edit]

In order to fulfill the additional requests from WMF, we had to hire a new contractor at the start of the grant. We put out calls on our GitHub page and on social media, and received several applications, which we shortlisted and interviewed. Our eventual decision was to split the role between two equally promising candidates, Ujjwal Agrawal and Madhur Gupta. Both were our previous/current GSoC students and had contributed significantly to our codebase before being hired.

Ujjwal found out a few weeks into the grant that he was not able to keep up this job alongside his other personal commitments, so Madhur agreed to take on the entire role.

Communication with WLM organizers[edit]

Communication with WLM organizers (both international and national) was a top priority for us - the most important goal for our minimum viable product was that the organizers' needs were taken care of.

Fortunately the WLM mailing list provided a convenient way to communicate with all of them at the same time, and we posted regularly on the mailing list, especially close to the release date. (Unfortunately, through these communications we realized that different countries had different needs - but more on that later.) Below are the threads that we started on the mailing list; some of them turned out to be fairly long discussions.

We also:

  • Had a Google Meet call with the international organizers at the start of our grant
  • Created a planning page at the start to facilitate discussions on the mailing list, as advised by the international organizers
  • Conducted a WLM Office Hour with the international team to answer questions from national organizers
  • Communicated via email with international and national organizers
  • Created an outcome page at the end of the implementation process when the alpha release was out, which we linked to in the WLM mailing list. In this page, we also added a section for custom requests from national organizers (for reasons that are mentioned in the next section).
  • Posted on various other mailing lists (wikitech-l, mobile-l, commons-l) when the public beta was released.

Considerations/challenges and how they were handled[edit]

Choice of data set[edit]

As per our very first mailing list discussion, based on the input of the majority, we decided to go with Wikidata as the data set that the implementation will be based on. The other main contender was the monuments database - however, Jean-Frédéric (the co-maintainer of that database) suggested that we should not build new tools on that database, as it was maintained largely to support legacy projects and that the goal was for everyone to transition to Wikidata where possible.

Handling different Wikidata properties[edit]

As we eventually found out, there is no Wikidata property identifier that uniformly denotes what is or isn't a "monument", it differs based on country. A volunteer offered to create a .json file for us with the desired property for each country, but unfortunately they were eventually not able to do it. Therefore we eventually followed the strategy used by the Monumental tool, which is fairly well-received by the community. This strategy involves filtering for certain properties everywhere, and displaying the union of it. The properties used were P1435, P2186, P1459, P1460, P1216, P709, P718, and P5694. We offered custom requests in case a national organizer wanted us to add any property that we had missed.

Attaching relevant templates and monument IDs to uploads[edit]

Besides the standard WLM 2021 template, different countries have different templates that need to be attached to uploads, and some of these templates take different parameters. The monument ID is usually attached to these templates, however there is no universal system for a monument ID, and each country has their own system. An ideal implementation should certainly attach a custom template for each country, with the parameters needed, and obtain the monument ID using that country's system. However that would take far more resources than we have, therefore we only used the standard WLM 2021 template, and associated each upload with the relevant Wikidata QID (again following Monumental's strategy).

Attaching and displaying monument addresses[edit]

This was suggested in our planning page, and we tried it, but the vast majority of Wikidata items lack the address fields suggested (or even other address properties that we searched for). Therefore we fell back to our original system of label + description, as almost all Wikidata items have those.

Participating countries[edit]

As there is no up-to-date machine readable list of participating countries, we pulled the country codes manually from the WLM 2021 template. We were aware that countries can be added at the last minute, so we collected a first pass for our 1 September release, and we went through the list in the template again on 3 Sep and updated the app. We also offered custom requests in case a country wanted to be added at the last minute.

Competition dates[edit]

This year, the WLM dates were from 1 Sep - 31 Oct, and countries can choose a month any time between those two dates. Unfortunately, again, it is not trivial to use different dates for different countries when viewing a map (we can't handle cases where someone is viewing the map at a border between a country with WLM on and a country with WLM off, unless we reverse geocode every WLM item before displaying it on the map, which would hugely increase load times). At the request of the international organizers, we therefore restricted the dates to 1 Sep - 30 Sep, as that fits the majority of countries.

Map load time[edit]

Adding all the monuments to our existing map query increases the time for the server to return its response by a substantial amount, as there are many more items being returned. We are currently using a system where we start with a radius of 0.3km, get the response, check how many items were returned, and if there are fewer than 20 we repeat the request with an enlarged radius. We tried to adjust our parameters to hit the sweet spot between not retrieving too many items in very dense cities, but also not sending too many repeat requests for very sparse rural areas. In all of our tests in various locations, the map takes <10 sec to load, however edge cases can happen. The ideal solution should be to send multiple asynchronous queries and update the map when responses are received, but that requires overhauling our entire map implementation.

Final product[edit]


Below are screenshots from the final product (v3.1) that was released to alpha, then beta, and then finally production (by early September).

The screenshots depict the step-by-step process of a monument photo upload. From left to right:

  1. When WLM is active (1-30 Sep), our map displays WLM monuments as WLM icons, and other items as standard pins. The map is centered on the user when it loads (if they allow GPS), but otherwise they can still pan around and search different map locations. WLM monuments are only visible during the WLM period, and users can also turn off the display of WLM icons through the filter in the top card, if desired. There is a small banner with a link to the WLM 2021 page, to notify the user that it is WLM month.
  2. This is the expanded view when the user selects one monument. They can bookmark it, get directions to it, and view the relevant Wikidata, Wikipedia and Commons pages. The upload is initiated by tapping the "+" button. Uploads to monuments will follow a slightly different upload flow from standard items, but from the user's perspective the process is virtually identical, so once they complete a WLM upload via the app they should be familiar enough to upload anything else in the future.
  3. The caption and description fields are pre-filled with the item's label and description on Wikidata. The user can modify those fields if they wish, or add captions/descriptions in other languages.
  4. The "depicts" field (used for structured data) is also pre-filled with the "depicts" value that is associated with that Wikidata item (in this case, Breakfast Creek Hotel). The user can search for and add other depictions.
  5. The "categories" field is not pre-filled, but the user receives suggestions relevant to the Wikidata item's label, geolocation, selected depictions, and anything else that they search for. This is in addition to the categories added automatically, such as those generated from the WLM 2021 template.
  6. In the background, the app will be doing a reverse geocode on the monument's coordinates to obtain the country of that monument, convert the country into the country code, and check the country code against a list of codes for countries that are participating in the current year's WLM. When the user reaches this final step, if the country code is in the list, the user will be notified here that their image will be entered into the WLM 2021 contest, before they choose to submit. If they do submit it, the WLM 2021 template and the associated WLM category will be added to their upload, and the Wikidata QID of the monument will be attached. If the country code is not in the list, the WLM notification (with the WLM logo) is not shown, the upload becomes a regular upload, and no WLM templates are added.
  7. This is the contributions (main) page of the app, showing the most recent uploads. When the upload is initiated, the user will see a progress bar on this page, and when completed the image will join the list of their other uploads.
  8. The user can check the details of their upload by tapping on it and entering the media details page. This page also links to the Commons file page, if the user prefers to view it in their browser.


As usual, all of the code is freely available on our GitHub repo under the Apache 2.0 license. For a snapshot of the code released in v3.1 (the WLM release), devs should check out the 3.1-release branch.

Midpoint outcomes[edit]

What are the results of your project or any experiments you’ve worked on so far?

Please discuss anything you have created or changed (organized, built, grown, etc) as a result of your project to date.

v3.1 release[edit]

As shown above, the main feature of the midpoint outcome is the v3.1 release, with WLM 2021 integration. This was released on Google Play and F-Droid.

Active installs[edit]

The graph below displays the number of active installs (number of Android devices that have been active in the previous 30 days on which the app is currently installed) from Oct 2020 to Oct 2021. As of 2 Oct 2021, the number of active installs is 8,077 (the final goal for the end of the project is 10,000, and the number of active installs at the start of the grant was 6,131). We are quite happy with our progress, especially as we were very ambitious with our goals this time, and our main publicity push is only scheduled in the final part of the grant.

Active users Oct 2021

Uploads made through the app[edit]

The histogram below displays the number of uploads that were made through the app up to Q4 2021, as well as the number of deletions, all obtained from the Commons app stats tool (maintained by a volunteer, Yusuke). It appears that Q3 2021 was our highest quarter yet, with over 17,500 photos uploaded through our app, which was a pleasant surprise!

Uploads made through app

Code coverage[edit]

The test coverage of our codebase on 2 Oct 2021 is 45.6% (the final goal as requested by WMF is 80%, and the coverage at the start of the grant was 25%). We are also quite happy with this coverage (especially as every new feature needs to be covered in addition to the existing codebase), and our new contractor has been working hard on it.

Crash rate[edit]

The crash rate for the last 30 days on 2 Oct 2021 (i.e. the crash rate over a month for the v3.1 release) was 0.28% (the final goal as requested by WMF is 0.1%, and the crash rate at the start of the grant was 0.9%). With this continuous decrease, we are fairly confident that we are on track to hit 0.1% by the end of this grant.

Submissions made to WLM 2021 via our app[edit]

Based on this query (written by a volunteer, Martin Urbanec), the number of submissions made to WLM 2021 through our app is 84 (by 18 unique uploaders). This falls short of our goal (100 uploads) by 16. This will be discussed further in the "What are the challenges" section.


Please take some time to update the table in your project finances page. Check that you’ve listed all approved and actual expenditures as instructed. If there are differences between the planned and actual use of funds, please use the column provided there to explain them.

Then, answer the following question here: Have you spent your funds according to plan so far? Please briefly describe any major changes to budget or expenditures that you anticipate for the second half of your project.

Yes, we have spent our funds according to plan so far. There are no anticipated changes to budget or expenditures.


The best thing about trying something new is that you learn from it. We want to follow in your footsteps and learn along with you, and we want to know that you are taking enough risks to learn something really interesting! Please use the below sections to describe what is working and what you plan to change for the second half of your project.

What are the challenges[edit]

What challenges or obstacles have you encountered? What will you do differently going forward? Please list these as short bullet points.

What challenges or obstacles have you encountered?[edit]

When we started out, we did not realize how truly country-specific almost every aspect of an ideal WLM uploader would be. We did expect that there would be a few small differences that we could accommodate - we did not expect that even the choice of data set would differ from country to country, as well as how a monument is defined (in the data set), the monument ID system, the templates used, the competition dates, etc. Essentially, an ideal "mobile WLM upload app" would actually be many different uploaders, a different one for every country. If we were to do this, it would take many times more resources than we had asked for, and would probably also require a full-time team (because many things that need to be handled, such as which countries are even participating, are only decided very close to the competition date).

Due to this, we were able to implement a general-use WLM uploader for Android phones (similar to the Monumental tool for browsers), but not one that fulfilled any country's needs specifically. For instance, Wikimedia Ireland needs to display monuments with P2186 (which we did), but they needed to also NOT display P1435 (which we could not accommodate because some other countries use only P1435). Wikimedia Austria uses the monuments database instead of Wikidata. Wikimedia Italy uses a LUA module to generate their category list. So on and so forth.

The national organizers were (understandably) very concerned about getting many uploads that did not fulfill their requirements, as that would waste volunteer time. So therefore many were understandably hesitant to promote us as the uploader of choice for their campaign. Seeing this, we decided to err on the side of caution - offering an opt-out option to organizers (whereby uploads via the app from that country would not be included in the competition), setting a stringent system of checks where failing one check would exclude a photo from the competition (the photo would be uploaded if the user still wanted it, but it wouldn't have the WLM tag), and generally focusing more on just getting a minimum viable product out that didn't cause issues for organizers, rather than on publicity.

That, added to the fact that fewer countries than usual were participating in WLM due to Covid-19, is why the number of WLM uploads from our app was a disappointingly low 84.

What will you do differently going forward?[edit]

I do not know if it would ever be possible for us (as a community-based, part-time team) to create an "ideal mobile WLM upload app", after everything we learned. If such an app were to exist, the developers would need to liaise individually with each country's national organizer and discuss their requirements. The ideal implementation would likely be to detect the country the user is in (or ask the user which country they want to browse) and only display pins for that country, based on the national requirements (the data set and property identifiers used by the country, the country's WLM dates, and other country-specific conditional requirements). Then when a picture is selected for upload, they would have to use a different workflow depending on which country the monument is in (obtaining the monument ID from that country's system, implementing templates used by that country, obtaining the other requisite parameters for those templates, and categorizing based on that country's system). There is still the issue of countries participating at the last minute, but a full-time team would be better equipped to deal with the last-minute crunch.

We hope that the general-use WLM upload feature that we have in our app will still be of use to some folks, and that the lessons we have learned from these problems will benefit future iterations.

What is working well[edit]

What have you found works best so far? To help spread successful strategies so that they can be of use to others in the movement, rather than writing lots of text here, we'd like you to share your finding in the form of a link to a learning pattern.

Next steps and opportunities[edit]

What are the next steps and opportunities you’ll be focusing on for the second half of your project? Please list these as short bullet points.

  • At the moment, work is already in progress on the new features planned for v4 - allowing users to view other users' profiles/achievements, displaying existing photos on our Nearby map, and custom SPARQL filtering. These are all significantly smaller features than WLM integration, so we are confident that we should be able to complete these in the next few months.
  • After v4 has been released and polished, we intend to start on outreach and publicity tasks (exciting!). We will organize a "Nearby places that need photos" walk (depending on the Covid-19 situation at that time), and organize a competition for Nearby contributions (this will be virtual, so it doesn't depend on the Covid-19 situation). We will also publish blog posts and discuss with the Commons community acceptable ways to make app installation as an option more prominent in the Commons user experience.

Grantee reflection[edit]

We’d love to hear any thoughts you have on how the experience of being an grantee has been so far. What is one thing that surprised you, or that you particularly enjoyed from the past 3 months?

I want to thank the WLM international team, especially Lodewijk and Krishna, for all of their help and guidance. It was incredibly inspiring to have the opportunity to collaborate with another team of grantees for the first time, and to be able to see first-hand how they handle a campaign of such enormous complexity with efficiency and thoroughness, while still taking the time to answer all of our questions.

Aside from that, my dev team (Ashish, Neslihan and Madhur) have really gone above and beyond the call of duty in their work, and our advisors and volunteers have put in so much unpaid time into our project, just because they believe in it. Our app would not be possible without them.