.. This work is licensed under a Creative Commons Attribution 4.0
   International License. http://creativecommons.org/licenses/by/4.0
   Copyright 2017 AT&T Intellectual Property.  All rights reserved.
   Copyright 2018-2020 by ONAP and contributors.

.. _doc_release_notes:

Release Notes
=============

This document provides the release notes for the documentation project.


Release Data
------------

+--------------------------------------+--------------------------------------+
| **Project**                          | Documentation                        |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release name**                     | Frankfurt                            |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release version**                  | Frankfurt 6.0.0                      |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release date**                     | June 11th 2020                       |
|                                      |                                      |
+--------------------------------------+--------------------------------------+

New features
------------

- Improved end to end user guides.
- A refined release note template to be used by all projects in ONAP. To ensure
  a common way of how to provide the release notes from a content such a look
  and feel perspective.
- In addition the documentation project is continuously working with improving
  processes and tools for documentation. Enabling the community to as easy as
  possible document all the aspects of the ONAP platform. During the Frankfurt
  release cycle we have started the work to clean up available content, both on
  the wiki and readthedocs (docs.onap.org) as well as moving the
  documentation away from submodules according to the LFN documentation
  strategy.

All JIRA tickets for the Frankfurt release can be found
`ONAP Documentation Jira`_

.. _`ONAP Documentation Jira`: https://jira.onap.org/browse/DOC-617?jql=project%20%3D%20DOC%20AND%20fixVersion%20%3D%20%22Frankfurt%20Release%22%20
