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.

Table of Contents


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 (;

Zhaoning Kong (

Difficulty: Medium
Tags: git, Distributed ledger, NDN, Python
Skills: Networking, Python, Git
This project supports running Git over Named Data Network (NDN), replacing a centralized server with distributed GitSync instances, which sync with each other using an NDN Sync protocol. Having multiple instances allow application users to collaborate in Git without a stable Internet connection, as long as they can reach each other. The project’s goal is to develop a git server application that runs over NDN, utilize a distributed ledger system DLedger to log commits to each branch. Currently we have a prototype.
Primary Deliverables:

  • Implement a distributed git server based on DLedger which supports push and pull.
  • Sync up branches and fetch missing git objects on the background.
  • Be able to detect and reject conflict pushes.
  • Authenticate each commit. Role-based access control to branches.
Useful Links:

2. npChat

Possible Mentor(s): Jeremy Clark (;

Lan Wang (

Difficulty: Medium
Tags: Social Media/Text Messaging
Skills: Java, Android, UI/UX, Database Basics, NDN Basics
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. Currently we have an Android application prototype that was demoed at ACM ICN 2018 and NDNCOMM 2019. Our paper, Decentralized and Secure Multimedia Sharing Application over Named Data Networking was published for ICN ’19: Proceedings of the 6th ACM Conference on Information Centric Networking. Our primary goal for GSoC 2020 is to add text messaging as a feature.
Primary Deliverables:

  • User text messaging with Android notifications
  • User profiles (profile photo and personal description)
  • User groups sharing a single symmetric key (
  • Improved UI/UX
Useful Links:;

3. Apply Distributed Ledger at NDN Testbed for Certificate Management

Possible Mentor(s): Zhiyi Zhang (;

Lixia Zhang (

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

  • Trial deployment on NDN testbed. Certificate revocation on NDN testbed.
  • Visualize the ledger through visualization tools (e.g., using python graphic libs)
Useful Links: NDNCERT:


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

Possible Mentor(s): Chavoosh Ghasemi (;

Beichuan Zhang (

Difficulty: Medium
Tags: adaptive video streaming, web development, frontend, backend
Skills: JavaScript, HTML5, C/C++, NDN Basics
This project improves the current NDN-based video streaming service by adding new features to the service like browser caching and validating the correctness of the current implementation by developing unit-tests. Also, for better service administration and management, this project aims 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 in real-time
Useful Links:

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.