The NDN Project Team will use this page to publish project ideas that can be worked on by individuals or groups.
Each project is assigned a mentor who can be contacted for details regarding the project and the specific deliverables.
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.
Remote participation is invited!
Interested participants can register here.
More details about the Programs and the accepted hacks will be published here soon.
Table of Contents
Introduction
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 publishing new project ideas in this page and invite interested participants to works on these with the mentors specified across each project.
The participants will also be given the privilege to contact other project members in case additional information or guidance is required.
Useful Background Information
- Repo overview – https://redmine.named-data.net/projects/repo-ng/wiki/Repo_Protocol_Specification
- NFD Developer’s guide – https://named-data.net/publications/techreports/ndn-0021-10-nfd-developer-guide/
- Hello world examples – https://github.com/named-data/ndn-cxx/tree/master/examples
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 and specific deliverables.
- For each project, a list of prerequisites, description of programming skills needed, and estimation of difficulty level.
- A list of potential mentors.
- The current state of the project
- 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: | |
|
|
Learning Objectives for student developers:
|
|
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: | |
|
|
Useful Links: | https://conferences.sigcomm.org/acm-icn/2019/proceedings/icn19-31.pdf |
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:
|
|
Primary Deliverables: | |
|
|
Learning Objectives for student developers: | |
|
|
Useful Links: | NDNCERT: https://github.com/named-data/ndncert |
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: | |
|
|
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 |
|
Primary Deliverables: | |
|
|
Learning Objectives for student developers | |
|
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.