<?php
/**
 * Copyright (c) 2014, 2015, 2016, 2018 Eclipse Foundation.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 *   Christopher Guindon (Eclipse Foundation) - Initial implementation
 *   Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>

<!-- Main content area -->
<div id="midcolumn">
    <h1><?php print $pageTitle; ?></h1>

    <!--
    <h3>Eclipse Jetty</h3>
    <p>
        Eclipse Jetty Application Server provides an HTTP server and Servlet container capable of serving static and dynamic
        content either from a standalone or embedded instantiations. The Jetty server and other
        core components are hosted by the Eclipse Foundation. The project provides:
    </p>

    <ul>
        <li>Asynchronous HTTP and HTTP/2 Server</li>
        <li>JakartaEE and JavaEE based Servlet Containers</li>
        <li>Websocket Client and Server</li>
        <li>Asynchronous Client (http/1.1, http/2, websocket)</li>
        <li>JPMS support</li>
        <li>OSGI, JNDI, JMX, JASPI support</li>
        <li>Maven Jetty Plugin</li>
    </ul>
    -->

    <h2>Where has Jetty called home?</h2>

    <p>
        The Jetty project has found its home in many places over the last 20+ years.
    </p>

    <h3>Eclipse and Github</h3>
    <p>
        In 2009, the Jetty project moved its core components to be a project of the Eclipse Foundation, in order to
        improve the IP processes and broaden the licensing and community of the project. As of Jetty 9 the project has
        fully moved to the Eclipse Foundation. Additionally, in 2016 the project moved the canonical source and issue
        repository to Github.
    </p>

    <h3>Codehaus</h3>
    <p>
        In 2005, the jetty project moved to the The Codehaus for its hosting services and open source community. In
        2009, after the core components of Jetty moved to Eclipse, the Jetty @ codehaus project continued to provide
        integrations, extensions and packaging of Jetty.
    </p>

    <h3>Sourceforge</h3>
    <p>
        From 2000 to 2005, the Jetty project was hosted at sourceforge.net where versions 3.x, 4.x and 5.x were
        produced.
    </p>

    <h1>Who has funded development of Jetty?</h1>
    <p>
        The development of the Jetty project has been fully funded over the years through close collaboration with a
        great many wonderful clients. Support has been organized through the entities as
        mentioned below over the years.
    </p>

    <h2>Webtide</h2>
    <p>
        In 2015 the development of Jetty was once more taken over by Webtide when the developers split away from
        Intalio, taking full ownership of the company behind the open source project. <a
                href="https://webtide.com/">Webtide</a> now fully funds the ongoing development of the Jetty project
        through services and support on the open source version of the Jetty project.
    </p>

    <h2>Intalio</h2>
    <p>
        The role of the development of Jetty was taken over in 2009 by Intalio, Inc., who acquired both Webtide and Mort
        Bay. Intalio was a company that offered both products and services based on open source software and they
        employed many of the jetty developers and contributors in addition to other open source and closed source
        platforms.
    </p>

    <h2>Webtide</h2>
    <p>
        The role of leading the development of Jetty was taken over in 2006 by Webtide LLC, formed as a joint venture
        between Mort Bay and partners providing marketing, sales and strategic assistance to the open source project.
    </p>

    <h2>Mort Bay</h2>
    <p>
        The Java HTTP server that became Jetty was originally developed in 1995 by Greg Wilkins of Mort Bay Consulting
        as part of an issue tracking application. Versions 1.x through to 6.1.x of Jetty were developed under
        org.mortbay packaging and Mort Bay still holds the major part of the copyright on the Jetty code base. Mort Bay
        directly hosted the jetty project until version 3.x and was the prime sponsor of development until 6.x.
    </p>
    <br/>
</div>
<!-- ./end  #rightcolumn -->
