Android Authenticator GSoC 2020 Workflow

Project: Android Authenticator

Jira Tracker link

Design link

Xwiki GSoC page link

The following features are expected to be completed in the GSoC period:
Note: P1 means target for GSoC Phase 1(June1 - June29)

  • (P1) Continuous Integration(CI):
    The CI will take care of the following things:
    1. Cloning the master branch
    2. Building the project using Gradle
    3. Running Unit tests
    4. Running Android tests.
      Currently Github Actions is recommended(by Thomas) and experimentation needs to be done using it. Alternatively, Jenskins Pipeline can also be used(suggested by Aleksei). So, we will attempt integrating Github Actions first, and if for some reason, there are problems, we will go with Jenkinsfile(jenskins pipeline).
  • (P1) Deployment to F-Droid:
    The project is ready to be deployed to F-Droid(similar to Google Play Store) Jira link
  • Refactor the codebase:
    Currently the application works just fine as an android authenticator. So it will be a great idea to make this as an android library by refactoring the codebase, so that we can create utility functions/classes for other apps to use. Other 3rd party apps can extend our library to use some specific features from their XWiki instance or use potential library as is with opportunities as in the current authenticator application. The refactoring will make sure that the library is flexible enough for the dependents (who have extended this library) to get the functionalities of the current application.
  • Integrate Xwiki Notifications:
    Integrating the xwiki notifications with android notifications. The implementation is unclear till now, and needs to be discussed with my mentors.
  • (P1) Add Shimmer Effect to RecyclerViews:
    Shimmer is standard animation to display Lists. Jira link
  • (P1) Add more Landscape layouts:
    The current layout in select account page and edit contact page can be improved in it’s landscape mode. Jira link1 link2
  • (P1) Improve Encapsulation in RecyclerView Adapters:
    In every recyclerview adapters, we can improve encapsulation by creating method inside viewholders and provide items to this method instead of doing everything in onBindViewHolder(). This will also make sure that click listener is set up once for whole holder. Jira link
  • Improve performance of RecyclerViews:
    DiffUtil callback can be used to improve the performance of RecyclerViews. Some of the adapters have not used this technique yet.
  • Improve Pagination and Add more filter options
  • Add Unit and Android tests
  • (optional) Search User Feature:
    In Sync settings activity, we are finding all available groups and performing sync group operation. An additional improvement can be to have a search feature first, to determine the groups in which the user participates and showing them in the group list, instead of showing all available groups.
  • (optional) Xwiki Signup within the app:
    Currently webview is used for the signup process in the app which is not a good practice. According to the documentation, https://xwiki.org/xwiki/bin/view/XWiki/RealRegistration is used to register new users. We can use this method(parsing XML) in android to implement this idea(similar to how login is implemented within the app).
  • (optional) Codebase Improvements:
    Use MVVM architecture throughout the codebase. Also use Navigation Components instead of intents.
  • (optional) Add Github Bots:
    This bots will help to achieve particular objectives like validating semantic pull request, checking quality of Pull Requests, checking for updated dependencies etc.

Thank You.