Android App Improvement
NpChat is a photo and file-sharing application built on Android and is inspired by Snapchat. It runs over the Named Data Network (NDN) and focuses on decentralised information sharing architecture. It stands as one of the best examples of Android application developed on the new Internet architecture.
The project description can be found here. During Google Summer of Code 2019, I contributed to the project and developed several features to improve the NpChat app, its supporting library(Jndn) and the Identity Manager.
During the GSoC period, I worked on the following,
Replaces FaceProxy with Memorycache (#132) : Replaced
FaceProxy(which used to store and serve data for interests) class with
Memorycacheclass which uses
Aimd pipelining in Segment fetcher (#24) : Updated
jndnlibrary to use
AIMDpipe-lining in place of the
fixedwindow fetching. Ran some tests on minindn to compare these strategies among the
jNDNand ndn-cxx libraries, the most recent of the results can be found here. After a long review period and a list of changes, it was successfully merged.
Introduce MVVM architecture (#161) : The state of the code at that point was more or less ad-hoc with things like memory and network access specific code placed and used in the view itself against the encouraged application architecture patterns like MVVM. This Pull Request moved and reorganised the code to single Activity multiple Fragment MVVM architecture, with operation logics separated and organised into classes and packages.
Add location co-ordinates to pictures (#162) : Added a feature to let user geo-tag a picture. Once Geo-tagged, the location is shared by adding the co-ordinates into the
Exifmetadata and transformed to ground address using
File sharing (#163) : Improved the pictures sharing and file browsing experience and separated them into status and files, to be viewed differently.
NDNCert java client (#1): For the users to have a namespace, they must have a certificate for it. Previously, a self-signed certificate was used to verify the ownership. This PR updates the Android Identity Manager to get signed certificates of the namespace using NDNCERT. This will be used to prove the ownership using the trust agent.
Here is a list of all contribution made during the GSoC period.
- (#132) Replaces FaceProxy with Memorycache
- (#134) Removes publishData code from FilesActivity
- (#154) Replace Log with Timber
- (#155) Add AboutActivity
- (#161) Introduce MVVM architecture
- (#162) Add location co-ordinates to pictures
- (#163) Picture selection
- (#24) Aimd pipelining in Segment fetcher
- (#25) Fix null object error in AIMD SegmentFetcher
- (#1) Ndncert java
- Publishing the app to Play Store.
- Adding ECDH key encryption to android-identity-manager.
As a part of the project, I faced some challenges, which gave me experiences in new fields
- Moving to decentralised from the popular centralised server model.
- The nature of the work (pretty much new and unprecedented).
- Establishing and updating development environments and NDN dependencies.
- Trying to establish ECDH key exchange.
I plan to continue working on the NDN concept, developing and contributing to open-source application and utilities, in the days to come.