<?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
        25th of December 2010 (Yes, the Christmas release :-)). 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>
