---
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">
  <div class="ml-container">
    <div class="col col-12 content-group content-group--medium-bottom-margin">
      <h2>{{ site.data.project.name }} Documentation</h2>
      <p>Documentation such as programming guides, reference guides, and API docs is available online for each version of SystemML below:</p>
      <ul>
        <li><a href="http://apache.github.io/systemml/">Latest</a></li>
        <li><a href="docs/1.2.0/index.html">1.2.0</a></li>
        <li><a href="docs/1.1.0/index.html">1.1.0</a></li>
        <li><a href="docs/1.0.0/index.html">1.0.0</a></li>
        <li><a href="docs/0.15.0/index.html">0.15.0</a></li>
        <li><a href="docs/0.14.0/index.html">0.14.0</a></li>
        <li><a href="docs/0.13.0/index.html">0.13.0</a></li>
        <li><a href="docs/0.12.0/index.html">0.12.0</a></li>
      </ul>
    </div>
  </div>
</section>
