GSoC NDN 2019 Report
Android App Improvement
Introduction
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.
Work
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 withMemorycache
class which usesMemoryContentCache
(from thejNDN
library). -
Aimd pipelining in Segment fetcher (#24) : Updated
SegmentFetcher.java
from thejndn
library to useAIMD
pipe-lining in place of thefixed
window fetching. Ran some tests on minindn to compare these strategies among thejNDN
and 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
Exif
metadata and transformed to ground address usingGeocoder
class. -
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.
GSoC contribution
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
These PRs spans accross NpChat, jndn and android-identity-manager
TODO
- Publishing the app to Play Store.
- Adding ECDH key encryption to android-identity-manager.
Challenges
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.
Future Works
I plan to continue working on the NDN concept, developing and contributing to open-source application and utilities, in the days to come.