Introducing NDNts, Named Data Networking libraries for the Modern Web
I'm creating a new Named Data Networking (NDN) client library, NDNts.
The initial NPM release, v0.0.20191223-beta.1
, was uploaded yesterday.
This article explains why I'm doing this, and why you should consider using my library.
Motivation
I've been developing Named Data Networking (NDN) for several years. Although my specialty is in the forwarding plane, I occasionally build NDN applications, such as a home surveillance camera. A common ingredient of every NDN application is some sort of client libraries, which provides APIs that allow the application to encode/decode NDN packets and communicate over NDN networks in accordance with the NDN protocol. One of these client libraries is the NDN Common Client Libraries (NDN-CCL), which provide a consistent API across several programming languages.
I adopted ndn-js, the JavaScript variant of NDN-CCL, in several projects, and was unhappy about it:
- The API feels like Java, not JavaScript.
- Callbacks everywhere, leading to callback hell.
- The library inserts over 50 symbols to the browser's global scope, causing name conflicts.
- All features are bundled into a single file that weighs over 500KB.
- There's no unit testing for the most part, let alone continuous integration.