Page tree
Skip to end of metadata
Go to start of metadata

Project Name

  • Proposed project name: YangForge
  • Proposed repository name: yangforge
  • Project Category: Collaborative Development

Project Description

YangForge is an open-source toolkit and development framework designed to greatly simplify YANG data model driven application SDLC. This project provides easy-to-use CLI commands to work with YANG schema files and contains a number of built-in dynamic interface generators to dynamically create interfaces such as REST/JSON via a single command.

The primary target use cases are as follows:

  • Enable Information Model designers/architects to test/validate YANG schemas
  • Enable Developers to easily attach event-driven control logic to data models
  • Enable Collaborators to build/sign/publish and share YANG modules
  • Enable Operators to deploy/manage YANG modules in runtime
  • Enable Users to rapidly prototype implementations and integrate components

This project is a spin-out from Resource Management (Promise) project. While working on the implementation track for the Promise project (which required comprehensive data modeling of the ResourceElements across the entire Virtualized Infrastructure), a general tooling development initiative was kicked off and the YangForge toolkit was created as a result.

This project has been open-sourced on 7/17/2015 and currently averaging ~500 downloads per week.

Following the general availability of YangForge several weeks ago, this project has been presented to the ETSI TST working group as well as to other OPNFV project leads in order to introduce and collect feedback for applicability in helping to accelerate their own respective requirements driven projects that can benefit by leveraging this toolkit for model-driven implementation. Based on the collective positive feedback and recommendations, we decided to initiate a separate stand-alone project within OPNFV for increasing visibility to the wider community and serving as a general tooling project for supporting other requirements driven projects within OPNFV.

The following OPNFV projects have expressed their support for YangForge:

Scope

The YangForge project is currently available for download/use. To check out current capabilities and usage documentation, please visit YangForge on Github. For more information on how it's being utilized for the Promise project, please visit Promise on Github.

This project's primary goal is to streamline and accelerate realization of requirements driven projects by abstracting away complexity and simplifying workflows. As such, it aims to encapsulate many of the traditional SDLC phases by enabling users to exercise these stages within a converged toolkit environment. The hope is to foster greater collaboration by providing a forum for exchanging model driven implementation outputs and building on top of existing modules to create new capabilities.

To attain such ends, the following are a number of new features/enhancements planned for improving the YangForge toolkit:

  • Lifecycle management of modules
    • implement init/build/config/deploy/sign/publish commands
    • provide hosting of public registry of modules
  • Complete coverage of YANG version 1.0 RFC-6020 language extensions
    • currently ~80% coverage of schema language statements (out of 64 total)
  • Bundle additional YANG schema modules
    • currently supports: ietf-yang-types, ietf-inet-types, iana-crypt-hash, complex-types
    • plan is to support all IETF and other standards approved YANG schemas
  • Additional interface generators
    • currently supports: cli, express, restjson
    • autodoc - Automatic Documentation Generator
    • explorer - Web-based data model browser and editor
    • restconf - IETF RESTCONF Draft
    • storage - Data persistence layer to support various databases
    • websocket - Support for websocket I/O
    • xmpp - Support for XMPP transactions between components

As the project evolves and collaborates closely with various other projects, we expect to identify many more requirements and features that will be synthesized into the project roadmap. Although there are future possibilities for this project to reach outside the OPNFV community (the current download stats indicate wider external community interest), the current plan for the remainder of 2015 is to primarily focus on supporting the OPNFV community initiated projects and their requirements.

The OPNFV Promise project will be the primary flagship reference implementation utilizing YangForge for requirements actualization as we prepare for initial implementation delivery in the upcoming Brahmaputra release.

Documentation

The primary documentation will be hosted on the Github project page link below.

Dependencies

Committers and Contributors

Project Lead: Peter K. Lee plee@clearpathnet.com

We are currently seeking active participation from anyone interested in joining this project as a Committer or a Contributor. Although YangForge will be in perpetual software development mode, we welcome any participation from the community ranging from architects, designers, modelers, to developers and end users.

For participation on the software development track, YangForge is written in Coffeescript/Javascript and runs on NodeJS. The current project plan also includes creating web-based application(s) so UI design/implementation background will be very handy as well.

Anyone interested in becoming a founding member of the project upon creation, please send an e-mail to plee@clearpathnet.com indicating your interest. We will be finalizing this section prior to submission to the TSC for approval.

Planned Deliverable

YangForge is delivered as open-source software that can be downloaded from Github here and can also be installed using npm (NodeJS package manager) from the npm public registry here.

Planned Release Schedule

YangForge has an ambitious near-term release schedule targeting monthly release milestones until the end of 2015. The current plan is to align with OPNFV Brahmaputra release with the YangForge 1.0 release at the beginning of 2016.

  • 0.9.x - available now
  • 0.10.x - October 2015
  • 0.11.x - November 2015
  • 0.12.x - December 2015
  • No labels