<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
  ~  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.
  -->

<document>

  <properties>
    <title>Release Downloads</title>
  </properties>

<body>

<section name="Releases">

    <p>The Apache Synapse team is proud to announce the availability of the 2.0.0 release on the
        7th of January 2011. This release contains a lot of new features and fixes.
    </p>

<table class="bodyTable">
  <tbody>
    <tr class="a">
      <th>Version</th>
      <th>Date</th>
      <th>Description</th>
    </tr>
    <tr class="b">
      <td><a
        href="download/2.0.0/download.cgi">2.0.0</a></td>
      <td>30-Nov-2010</td>
      <td>2.0.0 Release (Mirrored)</td>
    </tr>
    <tr class="b">
      <td><a
        href="download/1.2/download.cgi">1.2</a></td>
      <td>9-Jun-2008</td>
      <td>1.2 Release (Mirrored)</td>
    </tr>
    <tr class="b">
      <td><a
        href="download/1.1.1/download.cgi">1.1.1</a></td>
      <td>28-Jan-2008</td>
      <td>1.1.1 Release (Mirrored)</td>
    </tr>
    <tr class="b">
      <td><a
        href="download/1.1/download.cgi">1.1</a></td>
      <td>12-Nov-2007</td>
      <td>1.1 Release (Mirrored)</td>
    </tr>
    <tr class="b">
      <td><a
        href="download/1.0/download.cgi">1.0</a></td>
      <td>08-Jun-2007</td>
      <td>1.0 Release (Mirrored)</td>
    </tr>
  </tbody>
</table>

    <p>Note that if you are upgrading from an older release, you should carefully read the
    <a href="upgrading.html">upgrade guide</a> before starting to use a new release.</p>

</section>

</body>
</document>
