Bump yangtools to 13.0.0
[mdsal.git] / README.md
1 [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.opendaylight.mdsal/mdsal-artifacts/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.opendaylight.mdsal/mdsal-artifacts)
2 [![Javadocs](https://www.javadoc.io/badge/org.opendaylight.mdsal/mdsal-docs.svg)](https://www.javadoc.io/doc/org.opendaylight.mdsal/mdsal-docs)
3 [![License](https://img.shields.io/badge/License-EPL%201.0-blue.svg)](https://opensource.org/licenses/EPL-1.0)
4
5 # MD-SAL
6
7 ## Overview
8
9 The Model-Driven Service Adaptation Layer (MD-SAL) is message-bus inspired
10 extensible middleware component that provides messaging and data storage
11 functionality based on data and interface models defined by application developers
12 (i.e. user-defined models).
13
14 The MD-SAL:
15
16 * Defines a *common-layer, concepts, data model building blocks and messaging
17    patterns* and provides infrastructure / framework for applications and
18    inter-application communication.
19
20 // FIXME: Common integration point / reword this better
21 * Provide common support for user-defined transport and payload formats, including
22    payload serialization and adaptation (e.g. binary, XML or JSON).
23
24 The MD-SAL uses *YANG* as the modeling language for both interface and data
25 definitions, and provides a messaging and data-centric runtime for such services
26 based on YANG modeling.
27
28 The MD-SAL provides two different API types (flavours): +
29
30 Binding:: 
31   MD-SAL APIs which extensively uses APIs and classes generated
32   from YANG models, which provides compile-time safety and allows developers
33   to use more natural way to work with data.
34 DOM::
35   (Document Object Model) APIs which uses DOM-like
36   representation of data, which makes them more powerful, but provides less
37   compile-time safety.
38
39 NOTE: Model-driven nature of the MD-SAL and *DOM*-based APIs allows for
40 behind-the-scene API and payload type mediation and transformation
41 to facilitate seamless communication between applications - this enables
42 for other components and applications to provide connectors / expose different
43 set of APIs and derive most of its functionality purely from models, which
44 all existing code can benefit from without modification.
45 For example *RESTCONF Connector* is an application built on top of MD-SAL
46 and exposes YANG-modeled application APIs transparently via HTTP and adds support
47 for XML and JSON payload type.
48
49 ## Contributing
50
51 MD-SAL is part of [OpenDaylight Project](https://opendaylight.org), where we
52 use [Gerrit](https://git.opendaylight.org) for incoming patch reviews.