<!--
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 class="jumbotron">
  <h1>Apache Airavata WebUI</h1>
  <p>Connect to a registry to begin.</p>
</div>
<div class="container" style="padding-left:35px;">
  <section class="row">
    <p>Apache Airavata is a software framework for executing and managing computational jobs and workflows on distributed computing resources including local clusters, supercomputers, national grids, academic and commercial clouds. Airavata is dominantly used to build Web-based science gateways and assist to compose, manage, execute, and monitor large scale applications (wrapped as Web services) and workflows composed of these services.</p>
    <p>Airavata, (pronounced <em>I-rAa-Va-Thah</em>) is a mythical multi-tasked elephant with three heads and six ivory tusks, it is often depicted at the Gateway to Clouds. Airavata is choosen as the name for this multifaceted software which builds gateways to clouds and grids.</p>
  </section>
  <section class="row">
    <h3 id="airavata-in-1000-words">Airavata in 1000 words</h3>
    <div class="container"><img alt="Airavata Overview" src="http://airavata.apache.org/images/airavata_overview.png" title="Airavata Overview" class="img-thumbnail"></div>
  </section>
</div>
