Skip to content

Plans for 2018 - WMCZ proposal #865

Closed
@misaochan

Description

@misaochan

As some of you may know, Wikimedia Czech Republic has kindly offered to include us in their grant proposal for 2018 funding. :) We will need to come up with a list of improvements that we intend to implement in 2018. @VojtechDostal has informed me that their proposal is due on 1 Oct 2017, so we will need to "finalize" the list by the end of September ideally.

Feedback on the proposed improvements, as well as suggestions for new improvements, are most welcome. The scope will be for 10 months of development (most likely by the same team as the renewal proposal), starting March 2018 and ending Dec 2018. Development time must also include time needed for fixing bugs and issues with implementation, as well as for mandatory reporting.

Legend:
[HP] - High-priority improvements
[Optional] - we are currently undecided on whether we should include these

User-focused improvements

Further Nearby enhancements

Others

  • [HP for ads] Add campaign support Show news about ongoing campaigns/competitions #78 Add support for campaigns #545 - There are varying levels of "support" possible, ranging from simply displaying news/ads for ongoing campaigns, to full integration that allows users to submit photos for the competitions directly through the app. Personally I would start with the former, and wait and gauge the response before trying for the latter. While a central app for submitting WLM, WLE, etc submissions sounds great, AFAIK the winners and perhaps even most of the participants of such competitions might primarily use DSLRs and not mobile phones?

  • Peer review for images submitted by other people Peer review - review the latest pictures uploaded by other people #780 . This could help relieve the burden on Commons volunteers (and help increase our acceptance by the Commons community, which has been a long hard road thus far ;)).

  • [HP] Add limited connection mode Add limited connection mode #746 - This would be especially useful for travelers, which is a big target demographic for our app

  • [HP] Badges & light gamification Feedback on how my pictures get used: Statistics, barnstars, light gamification #85 - There were many suggestions for this during the pre-hackathon and hackathon. Badges would "gamify" uploading somewhat, thus inspiring users to upload photos because it feels more "fun". I think we want to stay away from pure quantity badges like "200 uploads" so we don't inspire bad uploads. Rather, we could offer badges for quality, like when the user maintains a 90% no deletion rate, or when their pictures are used in articles or selected as picture of the day etc. Considerations: How to keep track of this in the backend?

  • Modify desc/category/etc from within the app Modify categories/description afterwards #161

  • [HP - at least a prominent link to a web view if we can't implement the entire thing within the app] Implement user polls within the app Polling users #445 - This would be extremely useful for planning new features, in that we can easily get user input before implementing anything. Of course, there are simpler ways to create polls (in forums, external poll services or even in GitHub, etc), but IMO this is the best way to ensure that all users get a say while minimizing the extra work needed for the user (e.g. if we use GitHub, they would need to create a GitHub account to post). However, the tradeoff is that it is a lot more work for the developers (but I believe this would be worth it, especially if the app continues to grow). We would likely need to do some server-side implementation to host the results.

Finally

  • [HP] Design and develop a new main screen displaying various information Create welcome screen #568 - This can only be done at the end of 2018, after most of the previous improvements have been completed. We can display ongoing campaigns, the badges that the user collected, some contribution statistics, any recent news/polls for the app, the nearest location that needs photos... all alongside the upload from gallery/camera button(s) (which should of course be very prominent), and links to the user's recent contributions and the Nearby list/map. I personally believe this would be the best utilization of the main screen real-estate, although it is a very long-term goal.

  • [HP] Implement a walkthrough of the new UI and various features for the user - Design a first-run experience around the MaterialShowcaseView library mentioned at Add brief explanation to Nearby Places UI #706

Technical improvements

No Library Needed Library Needed
[HP] Move to JSON based WIkimedia API (formerly, 'use Retrofit'). We already include OkHttp and GSON in the build. [HP] Use Glide library instead of asynctask load of images. Glide already developed for loading images, and its support different paths for imageview (URI, URL, file path at SD card and etc). Simple use, simple result
[HP] For fragments, use newInstance pattern instead of creating new objects. Fragment newInstance() pattern prevent memory leaks [HP] Add dagger implementations to project. Dagger is dependency injection library which will help to remove many initializations of some utils/loaders/api workers and etc. For example in current project it will help to initialize SharedPreferences client once for using in many parts of app. (the runtime for Dagger is tiny, it's mostly compile-time annotation processing)
[HP] Most common sizes must be moved to dimens.xml and separated by screen-sizes folders. Too much values are hardcoded in layouts Move layouts to ConstraintLayout where its possible, it much smoother and easy to operate. (but it's a Google support library)
[HP] Move icons to SVG format instead of PNG, which will decrease APK size and improve icon multi-screen support
User shrinkResources = true in build.gradle to remove unused resources from APK file on release.
Add rxAndroid to project - it will speedup application, remove logic from main thread and provide huge possibilities make multithreading apps (already underway)
[Optional] Android data binding for activities, fragments, viewholders. Android data binding - powerful technique which simplify view code, and let you add some boilerplate logic to XML instead of some operations directly in activity, fragment, viewholder. Renderers can be replaced by Android data binding implementations
[HP] Address the very high cyclomatic complexity we are seeing from Codacy by breaking up Activities & Fragments according to one of the well-respected architectural patterns (MVP / MVVM / etc)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions