Google Summer of Code 2020

NDN Project as an organization is applying to be a part of Google Summer of Code 2020!

The NDN Project team had the privilege to host two projects as an organization in GSoC 2019.

Hackathon Announcement

The NDN Project team will host the 10th Named Data Networking (NDN) Hackathon on March 14 – 15, 2020 at The University of Arizona.
Potential GSoC students are invited to participate in this event.
More details about the Programs and the accepted hacks will be published here soon.

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 information 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 2020. The NDN Project team had the privilege to host two projects as an organization in GSoC 2019.

We hope to focus this GSoC on NDN applications and application support.

Useful Background Information

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 development related topics) mailing lists. More information on how to join the NDN mailing lists can be found here.

Project ideas when proposed should have the following information:

  • Brief descriptions of projects that can be completed in about 12 weeks.
  • For each project, a list of prerequisites, description of programming skills needed, and estimation of difficulty level.
  • A list of potential mentors.
  • Please do NOT simply link to the bug tracker to describe your proposed idea.

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. GitSync

Possible Mentor(s): Xinyu Ma (xinyuma@g.ucla.edu);

Zhaoning Kong (jonnykong@cs.ucla.edu)

Difficulty: Medium
Tags: git, Distributed ledger, NDN, Python
Skills: Networking, Python, Git
Description:
This projects supports running Git over Named Data Network (NDN), replacing a centralized server with distributed GitSync instances.
Git is distributed by nature, but current practice relies on a centralized server for storage and synchronization. Our project suggests a new approach to run git, breaking one centralized server into daemon processes running on each peer. This allows application users to collaborate in Git without a stable Internet connection, as long as they can reach each other. To store the commits distributed, we plan to utilize a distributed ledger, DLedger, to log commits to each branch. Conflict detecting and branch protection also need to be done in a distributed way. The high level design is under discussion now.
Git invokes remote helpers to exploit different network protocols. Students also need to write a git remote helper to communicate with git, but this helper only needs to deal with push and fetch. Other git commands are taken care by git.
The project’s goal is to develop a git peer application that runs over NDN. Currently we have a prototype.
Primary Deliverables:
  • Implement a git daemon program that stores repos.
  • Implement a git remote helper so users can use normal git push/pull to fetch objects from the daemon program.
  • The daemon maintains a ledger on each repo to store references to commits, keeps synchronized with other peers and tries to fetch missing objects in the background.
  • Whenever a user pushes to the daemon program, it puts the new commit into the ledger if there is no conflict.
  • Every push request should be signed and authenticated.
Learning Objectives for student developers:

  • Basic ideas of NDN and building distributed applications.
Useful Links: https://github.com/JonnyKong/GitSync

2. npChat

Possible Mentor(s): Jeremy Clark (jrclark2@memphis.edu);

Lan Wang (lanwang@memphis.edu)

Difficulty: Medium
Tags: Social Media/Text Messaging
Skills: Java, Android, UI/UX, Database Basics, NDN Basics
Description:
npChat 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), uses the PSync protocol, and utilizes 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. Our primary goal for GSoC 2020 is to add text messaging as a feature and to update the UI to include visual indicators of received messages, photos, and friend requests. In order to achieve these tasks, the selected student should already be comfortable with Android development and the MVVM architecture and will be expected to develop a understanding of how NDN and PSync work and how to use the PSync Android and jNDN libraries.
Primary Deliverables:
  • User text messaging with Android notifications
  • User profiles (profile photo and personal description)
  • User groups sharing a single symmetric key (https://redmine.named-data.net/issues/5019)
  • Improved UI/UX
Useful Links: https://conferences.sigcomm.org/acm-icn/2019/proceedings/icn19-31.pdf

https://named-data.net/doc/PSync/0.1.0/index.html

https://github.com/agawande/psync-android

3. Apply Distributed Ledger at NDN Testbed for Certificate Management

Possible Mentor(s): Zhiyi Zhang (zhiyi@cs.ucla.edu);

Lixia Zhang (lixia@cs.ucla.edu)

Difficulty: Medium
Tags: Distributed Ledger, Certificate, Security
Skills: C++ and basic knowledge on PKI (public key, certificate, certificate authority)
Description:
Adapt the idea of Graph-based Distributed Ledger — DLedger to the certificate management on NDN testbed and evaluate its scalability, usability, and effectiveness.
Prerequisites:

  • Read DLedger paper and get familiar with the DLedger codebase (we will have that by the summer)
  • Get familiar with NDNCERT
Primary Deliverables:
  • Setup hosts that connected to the testbed to run DLedger peers.
  • Set up an NDN multicast group
  • Trial deployment of DLedger with fake input
  • Add a revocation interface in NDNCERT which will insert new records to DLedger peers
  • Add a library function in NDNCERT to query the status of certificate by checking the DLedger peers
  • Evaluate the blockchain size, latency, and system overhead. Optionally visualize the ledger through visualization tools (e.g., using python graphics libs)
Learning Objectives for student developers:
  • NDN concepts and NDN codebases
  • Concepts and use of Distributed Ledger in non-cryptocurrency scenarios
  • Use of PKI in new Internet architecture NDN
Useful Links: NDNCERT: https://github.com/named-data/ndncert

DLedger: https://arxiv.org/abs/1902.09031

4. Improving NDN-based Video Streaming Service (a.k.a iViSA)

Possible Mentor(s): Chavoosh Ghasemi (chghasemi@cs.arizona.edu);

Beichuan Zhang (bzhang@cs.arizona.edu)

Difficulty: Medium
Tags: adaptive video streaming, web development, system monitoring, system management
Skills: JavaScript, TypeScript, HTML5, C/C++, NDN Basics
Description:
iViSA is an adaptive video streaming service that allows Internet users to enjoy watching videos over NDN. This is the first public NDN-based service/application that allows daily Internet users to use NDN technology without installing any software/plugin or manual configuration. Since late-2019 the official website of NDN project (https://named-data.net) started to serve all its videos to users all around the world, using this service. iViSA is very young and is growing and we continuously work on improving its performance and developing a better management/monitoring system. This GSoC project aims to improve iViSA service by adding new features to it like browser caching and validating the current implementation by developing different unit-tests. Also, for better service management, this project tries to implement a webpage to show real-time and historical statistical information of the service like the number of active consumers and their locations, the cache hit/miss ratio of each testbed hub, and the status of video servers.
Primary Deliverables:
  • New features for more efficient video streaming service over NDN
  • A unit-test bundle to validate the current source code
  • A webpage to show the status of the video streaming service, including real-time and historical information
Useful Links: https://ivisa.named-data.net

https://github.com/chavoosh/ndn-mongo-fileserver

https://github.com/chavoosh/ndn-video-frontend

https://github.com/yoursunny/NDNts

https://named-data.net https://github.com/google/shaka-player

5. High-performance Disk Repository over NDN

Possible Mentor(s): Susmit Shannigrahi (sshannigrahi@tntech.edu)

Chengyu Fan (chengyu.fan [at] colostate.edu)

Difficulty: Medium
Tags: Storage, Database, Networking
Skills: Databases, Networking, C++, Python
Description:
This project will attempt to create a high-performance, NDN-based interface to exiting disk-based storage utilized by the science
communities. The NDN data objects will be mapped to existing data that will eliminate the need to create multiple copy of the same data.
These objects will either be stored in the memory and/or in a high-performance database that will facilitate a fast response to NDN
interests. A generic interface will also allow the users to copy the data into in-network databases for future usage. Finally, the project
will explore how to use these in-network storage as a secondary cache.

We will reuse a lot of architectural designs (and possibly code) from the previous implementations such as repo-ng and producer/consumer
applications from NDN for high-energy particle physics projects. This product will potentially be used in production big-data workflows very
shortly. The student is not expected to protocol research, only coding and perform performance benchmarks.

Primary Deliverables:
  • Implement high speed read/write interfaces with the storage system
  • Interface pilot applications with NDN forwarding pipeline
  • Implement protocols for mirroring network data into in-network databases
  • Deploy the code in an actual testbed, test, and benchmark the implementation
Learning Objectives for student developers
  • Get familiarized with NDN by creating prototypes and studying the code
  • Getting familiar with NDN development tools and process
  • Adding various features to the application
  • Publishing the first version of the application on GitHub

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 on NDN are available here. It is best if the projects are selected from those listed in the above section. However, self-proposed projects are acceptable if the 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.