Title:     Apache Taverna (incubating)
Notice:    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.
jsonld: {
    "@context" : "http://schema.org",
    "@type" : ["Product", "SoftwareApplication"],
    "@id": "https://taverna.incubator.apache.org/",
    "url": "https://taverna.incubator.apache.org/",
    "name" : "Apache Taverna (incubating)",
    "description" : "Taverna is an open source and domain-independent Workflow Management System – a suite of tools used to design and execute scientific workflows and aid in silico experimentation",
    "brand" : {
      "@type" : "Brand",
      "name" : "Apache Taverna",
      "logo" : "https://taverna.incubator.apache.org/img/taverna-logo-145x134.png"
    },
    "publisher" : { "@type" : "Organization",
                    "url" : "http://www.apache.org/",
                    "name" : "The Apache Software Foundation (ASF)" },
    "downloadUrl" : "https://taverna.incubator.apache.org/download"
  }

<div class="alert alert-info" role="alert"><p><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>

Taverna has transitioned
to the Apache Incubator. This website is for the Apache Taverna project.
</p>
<p>
You might still find links to the earlier <a class="alert-link" href="http://www.taverna.org.uk/">taverna.org.uk</a>
website which is not affiliated with Apache and provided for archive purposes only.
</div>

<div class="alert alert-success" role="alert">
<p>
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
Apache Taverna Server <a class="alert-link" href="https://taverna.incubator.apache.org/download/server/">3.1.0</a> has been released.
</p>
</div>



<div class="jumbotron">
  <h1>
  <img class="hidden-xs hidden-sm" src="/img/apache-taverna-logo.svg.png" alt="" title="Apache Taverna (incubating) logo">
  Taverna Workflow System</h1>
    <p class="lead">
Powerful, scalable, open source & domain independent tools for
designing and executing workflows. Access to 3500+ resources.
</p>
    <p><a class="btn btn-lg btn-success" href="/download" role="button">Download</a>
       <a class="btn btn-lg btn-primary" href="/community" role="button">Follow</a>
</p>
</div>


<div class="row marketing">
   <div class="col-lg-6">
          <h4>Build scientific workflows</h4>
          <p><strong>Taverna</strong> is an open source and domain-independent
Workflow Management System
 &#8211; a suite of tools used to design and execute <em>scientific workflows</em> and aid
<em>in silico</em> experimentation.
</p>
  </div>

 <div class="col-lg-6">
<h3>Taverna has moved to the Apache Incubator</h3>
<p>Taverna has been accepted as an Apache Incubator project.
In short, this means:</p>
<ul>
<li>Taverna 2.5.0 was the last non-Apache release from <a href="http://www.taverna.org.uk/">taverna.org.uk</a></li>
<li><a href="https://www.apache.org/foundation/how-it-works.html#management">Open Development</a> process - anyone can contribute</li>
<li>Development infrastructure hosted by <a href="http://www.apache.org/">apache.org</a></li>
<li><a href="/community/#mailing-lists">Taverna mailing lists</a> have moved to @taverna.incubator.apache.org</li>
<li><a href="/download/code">Source code</a> moved to
git.apache.org, with
<a href="https://github.com/apache/?utf8=%E2%9C%93&query=incubator-taverna">GitHub mirrors</a></li>
</ul>
<p>For further details, see the presentation
<a href="http://dev.mygrid.org.uk/wiki/display/developer/Taverna+as+an+Apache+Incubator+project">Taverna
as an Apache Incubator project</a> and sign up to
the <a href="community/lists#devtaverna">dev@taverna.incubator.apache.org</a>
mailing list.</p>


 </div>
</div>


## Disclaimer

Apache Taverna is an effort undergoing incubation at
[The Apache Software Foundation (ASF)](http://apache.org/)
sponsored by the [Apache Incubator PMC](http://incubator.apache.org/).
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](http://incubator.apache.org/projects/taverna.html)
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.

<a href="http://incubator.apache.org/"><img src="https://incubator.apache.org/images/egg-logo2.png" width="229" height="57"/></a>
