---
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-5">
    		<h3>User Documentation<br /></h3>
    		<p>User Guides, including installation instructions, by version:</p>
		<p>
		  <ul>
		    <li>
		      <a href="guide/111/about_geode.html">Apache Geode 1.11 User Guide</a>
		    </li>
		    <li>
		      <a href="guide/110/about_geode.html">Apache Geode 1.10 User Guide</a>
		    </li>
		    <li>
		      <a href="guide/19/about_geode.html">Apache Geode 1.9 User Guide</a>
		    </li>
		    <li>
		      <a href="guide/18/about_geode.html">Apache Geode 1.8 User Guide</a>
		    </li>
		    <li>
		      <a href="geode-native/dotnet/111/about-client-users-guide.html">Apache Geode Native .NET Client 1.11 Guide</a>
		    </li>
		    <li>
		      <a href="geode-native/cpp/111/about-client-users-guide.html">Apache Geode Native C++ Client 1.11 Guide</a>
		    </li>
		    <li>
		      <a href="geode-native/110/about-client-users-guide.html">Apache Geode Native Client 1.10 User Guide</a>
		    </li>
		    <li>
		      <a href="geode-native/19/about-client-users-guide.html">Apache Geode Native Client 1.9 User Guide</a>
		    </li>
		    <li>
		      <a href="geode-native/18/about-client-users-guide.html">Apache Geode Native Client 1.8 User Guide</a>
		    </li>
		  </ul>
		</p>
	    </div>
	    <div class="col-md-4">
	    	<h3>API Docs</h3>
	    	<p><a href="http://geode.apache.org/releases/latest/javadoc/index.html" style="color: #1275ff;">Apache Geode API Reference</a></p>
                <p><a href="http://geode.apache.org/releases/latest/cppdocs/index.html" style="color: #1275ff;">Apache Geode Native Client C++ API Reference</a></p>
                <p><a href="http://geode.apache.org/releases/latest/dotnetdocs/index.html" style="color: #1275ff;">Apache Geode Native Client .NET API Reference</a></p>
	    </div>
	    <div class="col-md-3">
	    	<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>
