
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>The Apache Cassandra Project</title>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  <meta name="robots" content="index,follow" />
  <meta name="language" content="en" />  
  <meta name="description" content="Cassandra Web Site" />
  <meta name="keywords"
      content="cassandra, distributed storage, key value store, scalability, bigtable, dynamo" />

  <link rel="stylesheet" href="/media/css/blueprint/screen.css" type="text/css" 
      media="screen, projection" />
  <link rel="stylesheet" href="/media/css/cassandra.css" type="text/css" media="screen, projection" />
  <link type="text/css" href="/media/css/jquery-ui/custom-theme/jquery-ui-1.7.2.custom.css"
      rel="stylesheet" />

  <script type='text/javascript'
      src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  <script type='text/javascript'
      src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
  <script type='text/javascript' src="/media/js/jquery.curvycorners.min.js"></script>
  <script type='text/javascript' src="/media/js/cassandra.js"></script>
</head>
<body id="cassandra-home">
<div id="wrapper">
  <div id="header" class="container">
  <h1 class="clearfix">Cassandra</h1>
</div><!-- end header -->

  <div id="nav" class="container">
  <ul class="">
    <li><a href="/">Home</a></li>
    <li><a href="/download/">Download</a></li>
    <li><a href="http://wiki.apache.org/cassandra/GettingStarted">Getting Started</a></li>
    <li><a href="http://www.planetcassandra.org">Planet Cassandra</a></li>
    <li><a href="http://wiki.apache.org/cassandra/HowToContribute">Contribute</a></li>
  </ul>
</div><!-- end nav -->

  <div id="body" class="container">
    
<div id="privacy" class="container span-24">
  <h2 class="hdr">Privacy Policy</h2>
  <p>Information about your use of this website is collected using server
   access logs and a tracking cookie. The collected information consists of
   the following:</p>

  <ol>
    <li>The IP address from which you access the website;</li>
    <li>The type of browser and operating system you use to access our site;
        </li>
    <li>The date and time you access our site;</li>
    <li>The pages you visit; and</li>
    <li>The addresses of pages from where you followed a link to our site.</li>
  </ol>

  <p>Part of this information is gathered using a tracking cookie set by
  the <a href="http://www.google.com/analytics/">Google Analytics</a> service
  and handled by Google as described in their 
  <a href="http://www.google.com/privacy.html">privacy policy</a>. See your
  browser documentation for instructions on how to disable the cookie if you
  prefer not to share this data with Google.</p>

  <p>We use the gathered information to help us make our site more useful
  to visitors and to better understand how and when our site is used. We do
  not track or collect personally identifiable information or associate
  gathered data with any personally identifying information from other
  sources.</p>

  <p>By using this website, you consent to the collection of this data in
  the manner and for the purpose described above.</p>
</div>

  </div>
</div><!-- end wrapper -->

<div id="footer" class="prepend-top">
  <div class="container">
    <div id="copyright" class="span-20">
      <p>
      Copyright &copy; 2009 <a href="http://www.apache.org/licenses/">The Apache Software Foundation</a>.
      Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks
      of The Apache Software Foundation.
      <a href="/privacy.html">Privacy Policy</a>.
      </p>
    </div>
  </div>
</div><!-- end footer -->


<script type="text/javascript">
  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
  try {
    var pageTracker = _gat._getTracker("UA-11583863-1");
    pageTracker._trackPageview();
  } catch(err) {}
</script>

</body>
</html>

