GSoC Project Report: Improve Fedora App Backend

Fedora has an android app which lets a user browse Fedora Magazine, Fedora Ask, Fedocal etc within it. This app is build using the Ionic Framework, Angular and Cordova.

We worked to improve the existing Fedora App for Android for speed, utility, and responsiveness, introduce a deeper native integration and make the app more personal for the user.

In this project we worked on the following goals:

  1. Personalization of app features
  2. Providing an offline first experience
  3. Providing native experience where possible
  4. Improving integration with Fedora Infra apps
  5. Notifying the user for new posts, calendar events, etc on an opt-in basis
  6. Providing deeper integration of apps like FedoCal and system calendar
  7. Coordinating with the UI/UX intern to implement screens with appropriate design principles.

I worked on my GSoC project from May to August 2018. My work was divided into four phases:

  1. Investigating the requirements, designing the solution (during community bonding)
  2. Upgrading the tooling, improving code quality and automated test setup.
  3. Implementing features
  4. Performance improvements and testing

During the community bonding period, I worked on studying the API of various fedora infrastructure apps and the means to integrate them. I also submitted several patches to the applications towards improving their documentation or the API.

An important part of this phase was to coordinate my work with the UI intern. We planned our work in such a manner that we have no interdependencies and could work parallel. We chalked out our timeline on a shared excel sheet available here.

Here is the list of integrations we agreed to work on:

Coding Phase

The coding phase consisted of 3 months, in which we implemented the ideas we proposed in my GSoC Proposal.

In the first month, we mostly worked on upgrading and patching stuff to the latest and greatest versions of the SDKs. We also implemented unit testing and integration testing frameworks.

From the second month, we started working on improving and implementing the features proposed in my proposal. We completed reworking the backend for Fedora Magazine and Fedora Social. We worked on calendar sync, package search and offline caching of images and posts.

The third month was about improving and fixing the bugs we discovered in our earlier work. We reworked the storage backend with IndexedDB,

What tasks were accomplished

  • Migrating to Ionic 3 & Angular 5
  • Fedora Magazine
  • Posts from Fedora social media accounts
  • Offline caching of Fedora Magazine & Social posts
  • Offline caching for FedoCal
  • Package Search
  • Bookmarking posts
  • Syncing FedoCal meetings to system calendar
  • Offline viewing of posts
  • Carousel on the home page
  • Fedora Podcasts
  • Links in custom browser tabs
  • Notifications from FMN

Contributions

Here is the list of commits that I made to the Fedora App during 2018.

What did I learn in GSoC

  1. Reactive programming and RxJS
  2. Two hard things in CS — cache invalidation and naming things
  3. API Authentication strategies — OAuth, OpenID
  4. i18n and l10n strategies

Future engagements

Thank you bex, thelittlewonder, a2batic, and sumantrom for helping me complete the goals for GSoC 2018.

Please send in your feedback at amitosh@fedoraproject.org

Originally published at https://communityblog.fedoraproject.org on August 10, 2018.

Computer Whisperer. Open-source contributor. Find me at https://amitosh.in/

Computer Whisperer. Open-source contributor. Find me at https://amitosh.in/