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

Community Bonding: Planning the solution

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:

  1. Fedora magazine
  2. Fedora social
  3. Carousel

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,

Conclusion

What tasks were accomplished

Task Planned Completed
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
Notifications from FMN
Carousel on the home page
Fedora Podcasts
Links in custom browser tabs

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

  • We are still leaving behind our friends using Apple devices. We wish to port our app to iOS as early as possible.

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