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:
- Personalization of app features
- Providing an offline first experience
- Providing native experience where possible
- Improving integration with Fedora Infra apps
- Notifying the user for new posts, calendar events, etc on an opt-in basis
- Providing deeper integration of apps like FedoCal and system calendar
- 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:
- Investigating the requirements, designing the solution (during community bonding)
- Upgrading the tooling, improving code quality and automated test setup.
- Implementing features
- 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:
- Fedora magazine
- Fedora social
- 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
- Reactive programming and RxJS
- Two hard things in CS – cache invalidation and naming things
- API Authentication strategies – OAuth, OpenID
- 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
Recent Comments