---
title: Documentation
---
<!-- 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. -->

<!-- <div id="map-canvas" style="width: 100%;"></div> -->

<section class="bf-tagline">
    <div class="container">
    	<div class="row">
        <br/>
    	    	<h2>Apache Geode Documentation</h2>
	</div>
    </div>
</section>

<section class="bf-docs">
    <div class="container">
	<div class="row">
	    <div class="col-md-4">
	    		<h3 style="color: #1275ff;">User Documentation<br /></h3>
	    		<p>Installation instructions, User Guide, and other product docs</p>
          <p>
            <ul>
              <li>
                <a href="guide/17/about_geode.html">Apache Geode 1.7 User Guide</a>
              </li>
              <li>
                <a href="guide/16/about_geode.html">Apache Geode 1.6 User Guide</a>
              </li>
              <li>
                <a href="guide/15/about_geode.html">Apache Geode 1.5 User Guide</a>
              </li>
              <li>
                <a href="guide/14/about_geode.html">Apache Geode 1.4 User Guide</a>
              </li>
              <li>
                <a href="guide/13/about_geode.html">Apache Geode 1.3 User Guide</a>
              </li>
              <li>
                <a href="guide/12/about_geode.html">Apache Geode 1.2 User Guide</a>
              </li>
              <li>
                <a href="guide/11/about_geode.html">Apache Geode 1.1 User Guide</a>
              </li>
              <li>
                <a href="guide/10/about_geode.html">Apache Geode 1.0 User Guide</a>
              </li>
            </ul>
          </p>
	    </div>
	    <div class="col-md-4">
	    		<h3><a href="http://geode.apache.org/releases/latest/javadoc/index.html" style="color: #1275ff;">Javadocs</a></h3>
	    		<p>API Reference in conventional Javadoc format<p>
	    </div>
	    <div class="col-md-4">
	    		<h3><a href="https://cwiki.apache.org/confluence/display/GEODE/Index" style="color: #1275ff;">Wiki</a></h3>
	    		<p>Community contributions on various topics<p>
	    </div>
	</div>
    </div>
</section>
