<!doctype html>

<!--[if lt IE 7]><html lang="en-US" class="no-js lt-ie9 lt-ie8 lt-ie7"><![endif]-->
<!--[if (IE 7)&!(IEMobile)]><html lang="en-US" class="no-js lt-ie9 lt-ie8"><![endif]-->
<!--[if (IE 8)&!(IEMobile)]><html lang="en-US" class="no-js lt-ie9"><![endif]-->
<!--[if gt IE 8]><!-->
<html lang="en-US" class="no-js">
    <!--<![endif]-->

    <head>
        <meta charset="utf-8">

        <meta http-equiv="X-UA-Compatible" content="IE=edge">

        <title>Download - Apache Spot</title>

        <meta name="HandheldFriendly" content="True">
        <meta name="MobileOptimized" content="320">
        <meta name="viewport" content="width=device-width, initial-scale=1"/>

        <link rel="apple-touch-icon" href="../library/images/apple-touch-icon.png">
        <link rel="icon" href="../favicon.png">
        <!--[if IE]>
        <link rel="shortcut icon" href="http://spot.incubator.apache.org/favicon.ico">
        <![endif]-->
        <meta name="msapplication-TileColor" content="#f01d4f">
        <meta name="msapplication-TileImage" content="../library/images/win8-tile-icon.png">
        <meta name="theme-color" content="#121212">

        <link rel='dns-prefetch' href='//fonts.googleapis.com' />
        <link rel='dns-prefetch' href='//s.w.org' />
        <link rel="alternate" type="application/rss+xml" title="Apache Spot &raquo; Feed" href="../feed/" />

        <link rel='stylesheet' id='googleFonts-css'  href='http://fonts.googleapis.com/css?family=Lato%3A400%2C700%2C400italic%2C700italic' type='text/css' media='all' />
        <link rel='stylesheet' id='bones-stylesheet-css'  href='../library/css/style.css' type='text/css' media='all' />
        <!--[if lt IE 9]>
        <link rel='stylesheet' id='bones-ie-only-css'  href='http://spot.incubator.apache.org/library/css/ie.css' type='text/css' media='all' />
        <![endif]-->
        <link rel='stylesheet' id='mm-css-css'  href='../library/css/meanmenu.css' type='text/css' media='all' />
        <script type='text/javascript' src='../library/js/libs/modernizr.custom.min.js'></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
        <script type='text/javascript' src='../library/js/jquery-migrate.min.js'></script>
        <script type='text/javascript' src='../library/js/jquery.meanmenu.js'></script>

		<script>
		  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
		  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
		  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
		  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

		  ga('create', 'UA-87470508-1', 'auto');
		  ga('send', 'pageview');

		</script>
    </head>

    <body class="page download">

        <div id="container">
            <header class="header">

                <div id="inner-header" class="wrap cf">

                    <p id="logo" class="h1" itemscope itemtype="http://schema.org/Organization">
                        <a href="http://spot.incubator.apache.org/" rel="nofollow"><img src="../library/images/logo.png" alt="Apache Spot" /></a>
                    </p>

                    <nav>
                        <ul id="menu-main-menu" class="nav top-nav cf">
                            <li id="menu-item-129" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-129 menu-item-has-children">
                                <a href="../get-started">Get Started</a>
                                <ul class="sub-menu">
                                  <li><a href="../get-started">Get Started</a></li>
                                  <li><a href="../get-started/supporting-apache/">Supporting Apache</a></li>
                                  <li><a href="../get-started/environment">Environment</a></li>
                                  <li><a href="../get-started/architecture">Architecture</a></li>
                                  <li><a href="../get-started/demo">Demo</a></li>
                                </ul>
                            </li>
                            <li id="menu-item-5" class="active menu-item menu-item-type-custom menu-item-object-custom menu-item-5">
                                <a href="../download">Download</a>
                            </li>
                            <li id="menu-item-130" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-130">
                                <a href="../community">Community</a>
                                <ul class="sub-menu com-sm">
                                	<li class="dropmenu-head">Get in Touch</li>
                                	<li><a href="../community" class="mail">Mailing Lists</a></li>
                                	<li class="divider"></li>
                                	<li><a href="../community/committers">Project Committers</a></li>
                                	<li><a href="../community/contribute">How to Contribute</a></li>
                                	<li class="divider"></li>
                                	<li class="dropmenu-head">Developer Resources</li>
                                	<li><a href="https://github.com/apache/incubator-spot" target="_blank" class="github">Github</a></li>
                                	<li><a href="https://issues.apache.org/jira/browse/SPOT/" target="_blank" class="jira">JIRA Issue Tracker</a></li>
<li><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=SPOT&title=Apache+Spot+%28Incubating%29+Home" target="_blank" class="">Confluence Site</a></li>                                	<li class="divider"></li>
                                	<li class="dropmenu-head">Social Media</li>
                                	<li><a href="https://twitter.com/ApacheSpot" target="_blank" class="twitter-icon">Twitter</a></li>
                                </ul>
                            </li>
                            <li id="menu-item-106" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-106">
                                <a href="../doc">Documentation</a>
                            </li>
                            <li class="menu-item menu-item-has-children">
                                <a href="#">Project Components</a>
                                <ul class="sub-menu">
                                	<li><a href="../project-components/ingestion">Ingestion</a></li>
                                	<li><a href="../project-components/machine-learning">Machine Learning</a></li>
                                  <li><a href="../project-components/suspicious-connects-analysis">Suspicous Connects Analysis</a></li>
                                	<li><a href="../project-components/visualization">Visualization</a></li>
                                  <li class="under-dev">Under Development</li>
                                  <li><a href="../project-components/open-data-models">Open Data Models</a></li>
                                </ul>
                            </li>
                            <li id="menu-item-13" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-13">
                                <a href="../blog">Blog</a>
                            </li>
                        </ul>
                    </nav>

                </div>

            </header>

            <div id="mobile-nav"></div>

            <div id="content">

              <div class="wrap cf">

                <p class="center">
                  <img src="../library/images/download-logo.png" alt=""  /><br />
                  <img src="../library/images/download.png" alt=""  />
                </p>

                <p class="center">Apache Spot 1.0 is the latest release. The current version is Apache Spot 1.0</p>

                <div class="content-wrap">
                  <p><strong>1.0</strong></p>
                  <ul>
                    <li>Released August 7, 2017.</li>
                    <li><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12320637&version=12340668" target="_blank">Release Notes.</a></li>
                    <li><a href="http://apache.org/dyn/closer.cgi/incubator/spot/1.0-incubating/apache-spot-1.0-incubating.tar.gz" target="_blank">Download Apache Spot.</a></li>
                    <li>Verify this release using 1.0 signatures and checksums[<a href="http://www-eu.apache.org/dist/incubator/spot/1.0-incubating/apache-spot-1.0-incubating.tar.gz.asc" target="_blank">PGP</a>, <a href="http://www-eu.apache.org/dist/incubator/spot/1.0-incubating/apache-spot-1.0-incubating.tar.gz.sha512" target="_blank">SHA-512</a>, <a href="http://www-eu.apache.org/dist/incubator/spot/1.0-incubating/apache-spot-1.0-incubating.tar.gz.md5" target="_blank">MD5</a>] with project release <a href="http://www-eu.apache.org/dist/incubator/spot/KEYS" target="_blank">KEYS</a>.</li>
                  </ul>
                </div>

                <div class="content-wrap">
                  <p><strong>Apache Spot Source Code Management</strong></p>
                  <p>If you are interested in working with the newest under-development code or contributing to Apache Spot development, you can also check out the master branch from <a href="https://github.com/apache/incubator-spot" target="_blank">GITHUB</a> by typing:</p>
                  <code>git clone https://github.com/apache/incubator-spot.git</code>
                  <p><strong>Validate Build:</strong></p>
                  <ul>
                    <li>Download the tarball.</li>
                    <li>Decompress the tarball. Instruction:
                      <span class="indent"><strong>tar -zxvf apache-spot-1.0-incubating.tar.gz</strong></span>
                    </li>
                    <li>Change directory. Instruction:
                      <span class="indent"><strong>cd apache-spot-1.0-incubator</strong></span>
                    </li>
                  </ul>
                  <p>Apache Spot (incubating) is composed of more than one module or sub-projects. Since some of them are Python or Javascript code, they don’t need compilation.</p>

                  <p>For more instructions about how to install each module please read below instructions.</p>
                  <ul>
                    <li>You should see the content of the folder</li>
                    <li>Decompressed tarball content should be the same with the content located in:<br />
                        <a href="https://github.com/apache/incubator-spot/tree/v1.0-incubating" target="_blank">https://github.com/apache/incubator-spot/tree/v1.0-incubating</a>
                    </li>
                    <li>To install the properly component please follow this guide:<br />
                      <a href="../doc/#installation">http://spot.apache.org/doc/#installation</a>

                      <p>
                        Spot-ingest, Spot-setup, Spot UI and Spot-OA have specific requirements to install manually.<br />
                        <a href="../doc/#configuration">http://spot.apache.org/doc/#configuration</a><br />
                        <a href="../doc/#ingest">http://spot.apache.org/doc/#ingest</a><br />
                        <a href="../doc/#oa">http://spot.apache.org/doc/#oa</a><br />
                        <a href="../doc/#ui">http://spot.apache.org/doc/#ui</a>
                      </p>

                    </li>
                    <li>Spot-ML is the only component to build the binary files using <strong>sbt assembly</strong> commands.<br />
                      Please follows these instructions.<br />
                    <a href="../doc/#ml">http://spot.apache.org/doc/#ml</a>
                    </li>

                  </ul>
                </div>

              </div><!--/.wrap-->

            </div><!--/#content-->

            <div id="more-info">
                <div class="wrap cf">

                    <p>
                        <a href="https://github.com/apache/incubator-spot" class="y-btn" target="_blank">More Info</a>
                    </p>

                    <p style="margin-top:50px;"><img src="../library/images/apache-incubator.png" alt="Apache Incubator" />
                    </p>

                    <p class="disclaimer">
                        Apache Spot is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
                    </p>

                    <p class="disclaimer">
                        The contents of this website are © 2020 Apache Software Foundation under the terms of the Apache License v2. Apache Spot and its logo are trademarks of the Apache Software Foundation.
                    </p>
                </div>
            </div>

            <footer class="footer" role="contentinfo" itemscope itemtype="http://schema.org/WPFooter">

                <div id="inner-footer" class="wrap cf">

                    <p class="source-org copyright" style="text-align:center;">
                        &copy; 2020 Apache Spot.
                    </p>

                </div>

            </footer>

        </div>
		<a href="#0" class="cd-top">Top</a>
        <script type='text/javascript' src='../library/js/scripts.js'></script>

    </body>

</html>
