Google Summer of Code 2019

Please note that we are in the process of applying as an organization in Google Summer of Code 2019. Students may start applying if we are selected.

Table of Contents

Introduction

Through Google Summer of Code (GSoC), Google provides an opportunity to open source organizations to discover new talent and grow their organization. Named-Data Networking (NDN) is a project that aims to develop a new Internet architecture based on content centric communication. Since its inception in 2010, we have developed open source libraries and software which we deploy and test on our global testbed. To grow our community further and publicize our efforts we will be applying to be an organization in GSoC 2019. We hope to focus this GSoC on NDN applications and application support.

Project Ideas

If you would like to propose your own project, you may discuss them on the ndn-interest (for very broad topics) or nfd-dev (for developement related topics) mailing lists. More information on how to join the mailing lists can be found here.

Following are the project ideas we have collected so far. Please feel free to contact the mentors directly via email or on our slack channel.

1. NDN Photo Chat (npChat)

Possible Mentor(s): Ashlesh Gawande (agawande [at] memphis.edu)
Difficulty: Medium
Tags: Fun/Peripheral
Skills: Android, Java, JNI, Basics of Networking
Description:
This is a photo and file sharing application built on Android and is inspired by Snapchat. The project’s goals are to develop a completely decentralized application that runs over the Named Data Network (NDN), use the PSync protocol, and utilize a Web-Of-Trust like model instead of the traditional NDN hierarchical model. Through this application we would like to demonstrate the benefits of NDN and provide an open source, distributed alternative to Snapchat. Currently we have a basic Android application prototype that was demoed at ACM ICN 2018.
Student will learn about Android and NDN development. The student will be responsible for the following:
  • Get familiarized with NDN by reading research papers and playing around
  • Participate in research discussions for the deliverables
  • Getting familiar with the development tools and process
  • Adding various features to the application
  • Publishing the first version of the app on Google Play Store
Deliverables:
Primary:

  • Develop feature to automatically connect to the NDN testbed
  • Implement a way to share list of friends in a decentralized way using PSync
  • Enhance friend functionality to create friends remotely
  • Implement a GPS location feed to gather public content by locality
  • Release app on Google Play Store

Secondary:

  • Access control for the content produced by a user

2. Off-the-grid Email Synchronization Application using NDN (MailSync)

Possible Mentor(s): Ju Pan (pjokk722 [at] email.arizona.edu)
Difficulty: Medium
Tags: Fun/Peripheral
Skills: Java, Android, UI/UX, Database Basics, NDN Basics
Description:
MailSync is an application for synchronizing emails between Android device and laptop. With MailSync running in the background on Android device, if the Internet is not available, emails can be synchronized from Android device to laptop. One use case is when user is on a flight but want to use laptop to work on emails. MailSync is built on top of Named Data Networking (NDN) – a future Internet architecture focusing on named data rather than numerically addressed hosts. MailSync is written in Java to support Android device. The main external libraries used are jNDN and JavaMail. MailSync utilizes Couchbase NoSQL database to store NDN data. At this stage, we have a working prototype that can be seen here.
Your responsibilities for this project will be:
  • Learning NDN basics following the tutorials we provide
  • Implementing a few key features along with unit tests
  • Improving UI/UX design
Deliverables:
Primary:

  • Data translating module (email data → NDN data) and improved database query implementation
  • Automatic NDN environment configuration using Java code
  • Unit test for each feature and the field test with a large amount of emails
  • Improved UI matching NDN color theme.

Secondary:

  • Implementation of security mechanism supporting user authentication and authorization when synchronizing

3. Decentralized Nestable media aggregation

Possible Mentor(s): Ernest McCracken (emccrckn [at] memphis.edu)
Difficulty: Easy
Tags: Fun/Peripheral
Skills: Javascript, nodeJS, mongoDB, Angular 1.x, Basics of NDN
Description:
Reddit is a web content aggregation site that supports subtopics or “subreddits”.  However, only a single level of subtopics are supported and the site itself is centralized.  With NDN we can support a naming scheme that allows nested subreddits. For example, dreddit/cars would be the cars subreddit but dreddit/cars/used would be the more specific used cars subreddit.  Higher order topics would aggregate popular posts not just within their own topic but also include popular posts from subtopics. Additionally, we want to support decentralization in which subtopics can be hosted independently of each other which fits well in the NDN architecture.  This body of work will be to allow two or more servers hosting the same or nested subreddits to be able to sync their data using Psync.
Expected Outcomes:
  • A single page website that will serve as the web portal for the application and make use of the ndnJS library for communication.  Currently a small subset of reddit like features are already implemented.
  • NDN hub discovery using NDN-FCH(Find closest hub).
  • API documentation between web client and server.
  • A back end nodeJS server running ndnJS and storing data in mongoDB.  The server will need to be able to discover other servers and sync the subreddits in which both servers provide content for.

4. NDN Repo Dynamic Fetching Pattern

Possible Mentor(s): Tianxiang Li (tianxiang [at] cs.ucla.edu)
Difficulty: Medium
Tags: Core development
Skills: C++, JSON, Basics of NDN
Description:
Persistent in-network storage repository (repo for short) has been an important part of the NDN architecture. Repo ensures data availability in the network, and facilitates the peer-to-peer asynchronous communication model. One of the important components of repo is to populate its local storage by fetching data from certain producers. There can be different “patterns” for data fetching depending on application’s specific need (name prefix, fetching period, frequency, etc. ). Different applications may have different data generation patterns, for example, applications such as peer-to-peer file sharing, focus on the exchange of already generated data files. To this end, repo needs to perform an one-time fetching of files that consist of multiple data packets. Other applications may involve continuous generation of data, such as IoT sensors with periodic measurements. As a result, repo needs to continuously fetch measurement data based on data generation frequency. Currently, the fetching pattern of repo is hard-coded, the goal of this project is to provide an interface for applications to specify the fetching pattern of repo, and convey this information to repo through the transmission of Command Interest.
Expected Outcomes:
  • Allowing application to specify repo’s fetching pattern, generate command Interest containing “pattern” information
  • Repo interprets the pattern information contained in the command Interest
  • Enable update of fetching pattern
  • Enable termination of fetching pattern

5. BIRB (Distributed Social Media Application over NDN)

Possible Mentor(s): Saurab Dulal (sdulal [at] memphis.edu)

Ashlesh Gawande (agawande [at] memphis.edu)

Difficulty: Easy
Tags: Fun/Distributed
Skills: Javascript, nodeJS, mongoDB, Basics of NDN, ndn-js
Description:
Security, privacy and access control are the biggest challenges in today’s social media applications. Most of the data shared across these applications are used by some centralized authority (e.g. Facebook, Instagram, Twitter) for generating revenue by targeting specific advertisements, and can go beyond (e.g. Cambridge Analytica Data Scandal). Mostly, centralized data servers storing users data, absence of the user’s role in data privacy, and access control contribute to an insecure social media.

Birb is a distributed “Twitter-like” social media application developed on top of NDN aiming to solve the above-mentioned challenges. The data shared across the Birb network are stored only on the local device of a user eliminating the need of a centralized server, and also ensuring data privacy and access control. It uses NDNs inbuild security to provide end-to-end data security and utilizes In-network caching ability for data distribution – making the content delivery process much faster. Currently, we have developed a basic version of the application  for desktop capable of sharing data between two users using local NFD. The main aim of this project is to develop a prototype application that will use current NDN testbed for remote communication.

The students will learn about the basics of NDN (specifically ndn-js), Node.js, electron-js, and mongo-db and they will be responsible for the following:
  • Learn about the basics of NDN through research papers and code base
  • Developing some simple application using ndn-js for insights.
  • Understanding the deliverables and participating in R&D
  • Enhancing the core features and user interface.
Deliverables:
Primary:

  • POC providing communication between users using local NFD
  • Enhance the application for remote communication using NDN testbed
  • Develop a peer discovery mechanism to detect peers availability – currently we use a centralized server
  • Release the first version of the application (Linux/MacOS)

Secondary:

  • Implement access control and privacy policy on the locally stored data.
  • Implement group creation and communication by using Psync protocol

Student proposal guidelines

Students may contact mentors directly to get feedback on their proposals and if they need any help with gathering more background information about the project. Most publications about NDN are available here and under the Publications header on top right. It is best if the projects are selected from those listed here, but self proposed project are acceptable if student has some previous experience with NDN or ICN (Information Centric Networking) in general.

Project proposals must contain the following information:

  • Name, Affiliation, email, and any other relevant contact information
  • Year/classification of study, Timezone
    • Details of availability during the summer
  • Relevant skills, Relevant courses and work
    • You can share your GitHub profile etc.
  • A short summary of how you plan to work on the proposal, including any background work/research you have done so far. This should also include why you would like to work on this project.
  • A rough timeline of the proposed work based around GSoC’s phases.