---
layout: page
title: Documentation
description: Project Documentation Page
group: nav-right
---
<!--
{% comment %}
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
{% endcomment %}
-->

<!-- Hero  -->
<section class="full-stripe full-stripe--subpage-header clear-header">
  <div class="ml-container ml-container--horizontally-center">
    <div class="col col-12 content-group content-group--center-content content-group--center-align">
      <h1>{{ site.data.project.name }} Documentation</h1>
    </div>
  </div>
</section>
<!-- Publish website test -->
<section class="full-stripe full-stripe--alternate hero">
  <div class="ml-container ml-container--three-column">
    <div class="col col-4">
      <p>Documentation such as programming guides, reference guides, and API docs is available for SystemDS below:</p>
      <a class="button button-primary" href="{{ site.data.project.docs }}">Latest</a>
      <p></p>
      <a class="button button-primary" href="docs/2.1.0/index">2.1.0</a>
      <a class="button button-primary" href="release-notes/systemds-release-notes-2.1.0">ReleaseNotes</a>
    </div>
    <div class="col col-4">
      <p>each released version of SystemML/DS:</p>
      <ul>
        <li><a href="docs/2.0.0/index">2.0.0</a>, <a href="release-notes/systemds-release-notes-2.0.0">ReleaseNotes</a></li>
        <li><a href="docs/1.2.0/index">1.2.0</a>, <a href="release-notes/systemml-release-notes-1.2.0">ReleaseNotes</a></li>
        <li><a href="docs/1.1.0/index">1.1.0</a>, <a href="release-notes/systemml-release-notes-1.1.0">ReleaseNotes</a></li>
        <li><a href="docs/1.0.0/index">1.0.0</a>, <a href="release-notes/systemml-release-notes-1.0.0">ReleaseNotes</a></li>
        <li><a href="docs/0.15.0/index">0.15.0</a>, <a href="release-notes/systemml-release-notes-0.15.0">ReleaseNotes</a></li>
        <li><a href="docs/0.14.0/index">0.14.0</a>, <a href="release-notes/systemml-release-notes-0.14.0-incubating">ReleaseNotes</a></li>
        <li><a href="docs/0.13.0/index">0.13.0</a>, <a href="release-notes/systemml-release-notes-0.13.0-incubating">ReleaseNotes</a></li>
        <li><a href="docs/0.12.0/index">0.12.0</a>, <a href="release-notes/systemml-release-notes-0.12.0-incubating">ReleaseNotes</a></li>
      </ul>
    </div>
  </div>
</section>
