User:Brainbuzzerme/sandbox

NetJSON is a data interchange format based on JSON designed to ease the development of software tools for computer networks.

NetJSON concepts are aimed for efficient interoperability for network centric web applications with the help of JSON.

The NetJSON Object types include NetworkRoutes(show internal information of routing protocol), NetworkGraphs(helps in visualizing network topology, collecting network topology from distance vector protocols), DeviceConfiguration(therefore for device configuration), DeviceMonitoring(monitoring data of network device), and NetworkCollection(list NetJSON objects in coherent groups).

NetJSON is heavily inspired from GeoJSON. GeoJSON started a trend of having universal format for creating configurations. This universal format allows to have interoperability. NetJSON is trying to aim Open Source software ecosystem for applications focused on networking and telecommunications.

It is also important to note that NetJSON is only data interchange format. It does not collect, publish, or send sensitive data. NetJSON follows security considerations as defined in RFC7159.

History
NetJSON is a project born as a result of long discussions on interpov-dev-mailing list. A common problem among all developers was the interoperability for community networks. The format to write configurations changed from system to sytem. Creators of NetJSON thought about a common schema to ease the development of software tools for computer networks. This idea was first noticed on mailing list in October 2014. After that, for over a year this idea was being discussed. This project was started in 2015 when the official work on RFC began.

NetJSON has partial financial aid from CONFINE EU FP7 [CONFINE] Grant.

Following are the people with significant contributions to the NetJSON project -
 * 1) Federico Capoano
 * 2) L. Aaron Kaplan
 * 3) Henning Rogge

Implementations
There are multiple projects that use NetJSON. Some of the notable mentions in configuration management are OpenWISP2 Controller (a configuration manager and controller for embedded devices and routers which run OpenWRT/LEDE), django-netjsonconfig(a configuration manager that can be used as standalone web app or can be included as part of larger project), netjsonconfig(python library for those not interested in django implementation to convert DeviceConfiguration into real router configuration).

Some Projects work as network topology visualizers. Some notable mentions in this category are netjsongraph.js(project by NetJSON creators to visualize network topology data with the help of d3.js), BGP aspath-graph(python library to convert BGP ASPATHs to NetJSON for visualizations), django-netjsongraph(an app that can be used as standalone web app or can be integrated in larger projects that comes with netjsongraph.js implementation out of the box).

OpenWISP has also added a concept of templates which allows you to store a shared block for later reuse.

Status
NetJSON can be considered in stable state as per its current condition. It has not yet reached first version. NetJSON employs some of the modern design principals like KISS(Keep It Simple, Stupid), principle of least astonishment and explicit names.

External References

 * 1) NetJSON - http://netjson.org/
 * 2) RFC - http://netjson.org/rfc.html
 * 3) Implementations - http://netjson.org/docs/implementations.html
 * 4) Github page for NetJSON - https://github.com/netjson/netjson
 * 5) IEEE Submission - http://ieeexplore.ieee.org/abstract/document/7429052/
 * 6) Scientific Paper - https://ans.disi.unitn.it/users/maccari/assets/files/bibliography/WONS2016.pdf