<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <title>Apache ARIA TOSCA</title>

  
  
  

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- Place favicon.ico and apple-touch-icon.png in the root directory -->

  <!-- CSS -->
  <link rel="stylesheet" href="/css/owl.carousel.css">
  <link rel="stylesheet" href="/css/bootstrap.min.css">
  <link rel="stylesheet" href="/css/font-awesome.min.css">
  <link rel="stylesheet" href="/css/style.css">
  <link rel="stylesheet" href="/css/ionicons.min.css">
  <link rel="stylesheet" href="/css/animate.css">
  <link rel="stylesheet" href="/css/responsive.css">

  <!-- Js -->
  <script src="/js/vendor/modernizr-2.6.2.min.js"></script>
  <script src="/js/vendor/jquery-1.10.2.min.js"></script>
  <script>window.jQuery || document.write('<script src="/js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
  <script src="/js/bootstrap.min.js"></script>
  <script src="/js/owl.carousel.min.js"></script>
  <script src="/js/plugins.js"></script>

  <script src="/js/min/waypoints.min.js"></script>
  <script src="/js/jquery.counterup.js"></script>






  <script src="/js/main.js"></script>
  <script src="/js/plugins/jquery.mixitup.min.js"></script>


</head>

  <body id="js-body">
    <!--[if lt IE 9]><div class="upgrade notice-warning"><strong>Your browser is quite old!</strong> Why not <a href="http://whatbrowser.org/">upgrade to a newer one</a> to better enjoy this site?</div><![endif]-->

    <!-- Header Start -->
<header>
<div class="container">
  <div class="row">
    <div class="col-md-12">
      <!-- header Nav Start -->
      <nav class="navbar navbar-default">
        <div class="container-fluid">
          <!-- Brand and toggle get grouped for better mobile display -->
          <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="/">
              <img src="/images/aria-logo.png" alt="Apache ARIA TOSCA">
            </a>
          </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">

              <nav role="navigation" class="menu top-menu">
                  <ul class="nav navbar-nav navbar-right">
	<li class="home"><a href="/">Apache ARIA TOSCA</a></li>
	
    
    <li><a href="/about/" >About</a></li>
  
    
    <li><a href="/community/" >Community</a></li>
  
    
    <li><a href="/getting-started/" >Getting Started</a></li>
  
    
    <li><a href="/roadmap/" >Roadmap</a></li>
  
</ul>

              </nav>
            </div><!-- /.navbar-collapse -->
          </div><!-- /.container-fluid -->
        </nav>
      </div>
    </div>
  </div>
</header><!-- header close -->

    

    <div id="page-wrapper">
      <div id="main" role="main">			
	<div class="wrap">
		
		<div class="page-title">
			<h1></h1>
			
		</div>
		<div class="archive-wrap">
			<div class="page-content">
				<!-- Slider Start -->
<section id="slider">
	<div class="container">
		<div class="row">
			<div class="col-md-10 col-md-offset-2">
				<div class="block">
					<h1 class="animated fadeInUp">Apache ARIA TOSCA <br /> ORCHESTRATION ENGINE</h1>
					<p class="animated fadeInUp"> Embeddable lightweight library and command line tool<br />
					For NFV and Hybrid Cloud Orchestration</p>
				</div>
			</div>
		</div>
	</div>
</section>

<!-- Wrapper Start -->
<section id="intro">
	<div class="container">
		<div class="row">
			<div class="col-md-7 col-sm-12">
				<div class="block">
					<div class="section-title">
						<h2>About Apache ARIA TOSCA</h2>
						<p></p>
					</div>
					<p>ARIA TOSCA is an open, light, CLI-driven library of orchestration tools that other open projects can consume to easily build TOSCA-based orchestration solutions. ARIA is now an incubation project at the Apache Software Foundation.</p>
				</div>
			</div><!-- .col-md-7 close -->
			<div class="col-md-5 col-sm-12">
				<div class="block">
					<img src="images/aria-logo-large.png" alt="Img" />
				</div>
			</div><!-- .col-md-5 close -->
		</div>
	</div>
</section>

<section id="feature">
	<div class="container">
		<div class="row">
			<div class="col-md-6 col-md-offset-6">
				<h2>Open Source, Open Governance</h2>
				<p>OASIS TOSCA offers a vendor neutral standard for modeling cloud based applications, ARIA is an open implementation of the TOSCA specification, allowing complete visibility and free use of all it’s source code https://github.com/apache/incubator-ariatosca</p>
				<p>AIRA is an Apache Software Foundation project in incubation process, aiming to become an independent project governed by it’s active contributors following a meritocratic model. Committers of project will be leading the project’s direction and influencing thought contribution.</p>
				<a href="https://www.apache.org/foundation/how-it-works.html" class="btn btn-view-works">Learn More</a>
			</div>
		</div>
	</div>
</section>
<!-- Call to action Start -->
<section id="call-to-action">
	<div class="container">
		<div class="row">
			<div class="col-md-12">
				<div class="block">
					<h2>Get Started with Apache ARIA TOSCA</h2>
					<p></p>
					<a class="btn btn-default btn-call-to-action" href="/getting-started">Get Started Now</a>
				</div>
			</div>
		</div>
	</div>
</section>

			</div><!-- /.page-content -->
		</div class="archive-wrap"><!-- /.archive-wrap -->
	</div><!-- /.wrap -->
</div><!-- /#main -->
      

<!-- Wrapper Start -->
<section id="intro" style="padding-top:30px; padding-bottom:30px">
	<div class="container">
		<div class="row">
			<div class="col-md-10 col-sm-12">
				<div class="block">
					<p>
						Apache ARIA TOSCA 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>
				</div>
			</div><!-- .col-md-7 close -->
			<div class="col-md-2 col-sm-12">
				<div class="block" valign="middle" style="vertical-align: middle;">
					<img src="/images/incubator_power_ring.png" alt="ARIA Podling"  >
				</div>
			</div><!-- .col-md-5 close -->
		</div>
	</div>
</section>

<footer>
	<div class="container">
		<div class="row">
			<div class="col-md-12">
				<div class="footer-manu">

					<ul class="menu-item">
					
			      
						<li><a href="/about/" >About</a></li>
					
			      
						<li><a href="/community/" >Community</a></li>
					
			      
						<li><a href="/getting-started/" >Getting Started</a></li>
					
			      
						<li><a href="/roadmap/" >Roadmap</a></li>
					
					</ul>
				</div>

				<p> Copyright © 2017 The Apache Software Foundation. Licensed under the Apache License, Version 2.0. <br />
				    Apache, the Apache Feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.</p>
			</div>
		</div>
	</div>
</footer>

    </div>

    <script src="/js/vendor/jquery-1.10.2.min.js"></script>
    <script src="/js/plugins/jquery.mixitup.min.js"></script>
    <script src="/js/owl.carousel.min.js"></script>
    <script src="/js/jquery.counterup.js"></script>

    <script src="/js/main.js"></script>

  </body>

</html>
