Grants:Project/Commons app/Commons Android app v3/Midpoint
Welcome to this project's midpoint report! This report shares progress and learning from the grantee's first 6 months.
In a few short sentences or bullet points, give the main highlights of what happened with your project so far.
- The current version of the app (available to users who have signed up for beta testing) is v2.12, which contains the codebase overhaul and one new feature (filters for Nearby Places).
- Our priorities now are fixing issues reported by beta testers so that v2.12 can be released to all users, improving test automation, and getting started on the rest of the new features.
- Our app currently has 5,822 active installs on Google Play; 22,155 images that were uploaded through our app have been used in Wikimedia articles; and 1,224 places that need photos have had photos added to them via the app.
Methods and activities
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.
All of the app's source code is available on GitHub, which is also used for version control, collaboration, and issue tracking. Each member of the team submits their work through pull requests, which are then reviewed and tested by a second member of the team before being merged. While GitHub is our main communication platform with volunteers and users, we also use a Google group forum, mailing lists, Facebook, and an on-wiki discussion page.
New versions of the app containing new features and bugfixes are released to Google Play on a regular basis - first to beta testing, and then if all goes well, to production (all users). Beta testing is open and anyone who wishes can register for it. Releases are also done on F-Droid (a repository for free and open source Android apps) via an automated process from our GitHub repository. User feedback helps us find bugs and issues which were not discovered in pre-release testing, and these are fixed via hotfixes (minor releases).
In order to work together and communicate as a distributed team with differing timezones, we typically rely on asynchronous team communication:
- A GitHub project to organize task assignments and details
- Zulip (open source) to communicate on a daily basis
Prior to starting implementation, we:
- Discussed detailed scope and use cases for each major feature (in GitHub task)
- Drafted mock-ups for new UI-based features and sought community feedback
We did two main app releases for the first half of this grant: v2.11 and v2.12. The main aim of these two releases was the codebase overhaul, which was an essential foundation for our goal of "a more stable Commons mobile uploader with a modern codebase, lower code complexity, higher test coverage, and fewer bugs and crashes". v2.12 also contained our first major new feature of this grant, adding "place type" and "place state" filters for Nearby.
v2.11 (released 29 Jul 2019)
- Refactored Explore feature, media details, notifications, achievements and upload flow based on MVP architecture
- Rewrote network layer to use the Wikimedia Android data client library, and migrated to RetroFit
- Refactored all AsyncTasks to use RxAndroid instead
v2.12 (released 1 Dec 2019)
- Completed Nearby feature refactor
- Completed network layer overhaul including cross-wiki calls for Wikidata edits
- Consolidated and simplified dependencies
- New feature: Filters for the Nearby Places feature, allowing users to filter places based on "place type" and "place state"
- Mentored students in completing a project for our app in GSoC and Outreachy 2019.
- Participated in the Wikimedia Hackathon 2019 and Wikimedia Tech Conference 2019.
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.
Number of active installs on Google Play
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 March 2019 (start of grant period) to Nov 2019. As of 30 Nov 2019, the number of active installs is 5,822, a growth of ~32% from the start of the grant period. We found this to be a surprisingly high growth spurt, especially considering that we have not started publicity measures yet (which are scheduled for the end of the grant).
Number of images used in Wikimedia articles
We ran a GLAMorous query to obtain the total number of images uploaded via the app that were used in Wikimedia articles. As of 3 Dec 2019, the number is 22,155 distinct images (16.75% of all images of category). For comparison, the number from Nov 2018 (when the proposal was written) was 15,167, so there was a ~46% increase.
Number of files uploaded vs files deleted per quarter
The Commons app stats tool (maintained by Yusuke) allows us to visualize the number of uploads made using our app, as well as the number of files uploaded via our app that were deleted (the blue bars and red bars respectively). The histogram below was taken on 3 Dec 2019, with the last quarter (2019 Q4) still in progress. There does not seem to have been an overall increase in uploads compared to the previous year, and interestingly, we have never managed to top the upload peak from 2018 Q2. However, the ratio of uploads to deletions appear to be improving continuously, which is good news for image quality.
Places that need photos (p18 edits)
1224 places that need photos had photos added to them via the app as of 4 Dec 2019. This was measured by querying the number of P18 edits made in Wikidata by our app (an edit is made automatically to the corresponding Wikidata entity whenever anyone uploads an image via the Nearby feature). In comparison, the total number of P18 edits in Nov 2018 was 168.
Map of p18 edits
The screenshot below displays p18 edits made via our app on a map of the world as of 4 Dec 2019, via the Wikidata Query Service. The global coverage has increased since the last time we checked, which is encouraging.
Our code coverage (unit tests) is currently 7.40%, as reported by CodeCov. We were hoping to have a higher coverage by the mid point, but we have discovered that many parts of our project are better suited to integrated tests and UI tests. In the second half of the grant we will start adding these tests as well, and configure CodeCov to calculate them (currently CodeCov is configured to only calculate unit test coverage for our repo).
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. Outreach workshops are slated for the end of the grant, so that budget item has not been spent yet.
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
What challenges or obstacles have you encountered? What will you do differently going forward? Please list these as short bullet points.
- Time estimates in general are difficult to make - the codebase overhaul took longer than expected, especially as the codebase had grown a lot since the proposal was written in Nov 2018 (we get new features by volunteers, GSoC students, at the hackathon, etc). As a result, we are quite a bit behind our planned timeline. Perhaps adding buffers to the estimated time can help in the future, however it is a tricky balancing act.
- We experienced some issues with switching to the Wikimedia data client library for our networking, but that is all sorted now.
What is working well
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
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.
- The next immediate item on our agenda is to fix the crashes and issues reported by our beta testers for v2.12, and ship the final version to production
- After that, we can finally start working in earnest on the new features we have planned! The next few on our list are implementing a bookmark system for Nearby, allowing users to modify categories and description within the app, and implementing pause/resume for uploads and a limited connection mode.
- Some classes need to be converted to WorkManagers in order to complete the refactor of content providers (the last item in our codebase overhaul). As this conversion will take time and is unlikely to affect users, we will complete it in parallel with our new features (each team member will be working on a different item).
- We also plan on improving our automated tests, to reduce the odds of issues like the pre-release upload crashes (which delayed v2.12's release) from happening again.
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?
Time and time again, I find myself blown away by the encouragement and support of our users/followers, both volunteers and staff alike. The codebase overhaul was a somewhat difficult time for our team - turning a legacy codebase into a modern one was a lot of hard (albeit necessary) work, without the "excitement" that comes from working on new features. But every time we hear words of support from a user, especially at in-person events like the hackathon and WMTC, it feels like it was all completely worth it.