<?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
 */
?>

<div id="midcolumn">

    <h1>Commercial Support</h1>

    <p>
        Commercial support for Jetty is available directly from the developers through <a
                href="https://webtide.com">Webtide</a>.
    </p>

    <h1>Open Source Support</h1>

    <h3>Mailing Lists</h3>
    <div class="paragraph">
        <p>Mailing lists are a wonderful way to interact with the community at large and for a certain class of issue
            have the best chances of achieving resolution. There are a number of mailing lists available within the
            Jetty project. A good rule of thumb when choosing between the developer and user lists is to ask yourself who the audience is. If
            your question is broadly interesting to the community, use the users list, and if narrowly focused on Jetty
            internals or minutiae, then the dev list might be a better option.</p>
    </div>
    <div class="ulist">
        <ul>
            <li>
                <p>Jetty Developers List</p>
                <div class="ulist">
                    <ul>
                        <li>
                            <p>Join - <a href="https://dev.eclipse.org/mailman/listinfo/jetty-dev" class="bare">https://dev.eclipse.org/mailman/listinfo/jetty-dev</a>
                            </p>
                        </li>
                        <li>
                            <p>Archives - <a href="http://dev.eclipse.org/mhonarc/lists/jetty-dev/" class="bare">http://dev.eclipse.org/mhonarc/lists/jetty-dev/</a>
                            </p>
                        </li>
                    </ul>
                </div>
            </li>
            <li>
                <p>Jetty Users List</p>
                <div class="ulist">
                    <ul>
                        <li>
                            <p>Join - <a href="https://dev.eclipse.org/mailman/listinfo/jetty-users" class="bare">https://dev.eclipse.org/mailman/listinfo/jetty-users</a>
                            </p>
                        </li>
                        <li>
                            <p>Archives - <a href="http://dev.eclipse.org/mhonarc/lists/jetty-users/" class="bare">http://dev.eclipse.org/mhonarc/lists/jetty-users/</a>
                            </p>
                        </li>
                    </ul>
                </div>
            </li>
            <li>
                <p>Jetty Announcements List</p>
                <div class="ulist">
                    <ul>
                        <li>
                            <p>Join - <a href="https://dev.eclipse.org/mailman/listinfo/jetty-announce" class="bare">https://dev.eclipse.org/mailman/listinfo/jetty-announce</a>
                            </p>
                        </li>
                        <li>
                            <p>Archives - <a href="http://dev.eclipse.org/mhonarc/lists/jetty-announce/" class="bare">http://dev.eclipse.org/mhonarc/lists/jetty-announce/</a>
                            </p>
                        </li>
                    </ul>
                </div>
            </li>
        </ul>
    </div>

    <h3>StackOverflow</h3>
    <div class="paragraph">
        <p>From a simple support perspective it is hard to beat <a href="http://stackoverflow.com">StackOverflow</a> for
            interacting with a Jetty community. Numerous users have asked and had answered their questions on the
            platform
            by other users and developers alike.</p>
    </div>
    <div class="ulist">
        <ul>
            <li>
                <p>Check out the general <a href="https://stackoverflow.com/questions/tagged/jetty">Jetty</a> tag!</p>
            </li>
            <li>
                <p>The <a href="https://stackoverflow.com/questions/tagged/embedded-jetty">Embedded-Jetty</a> tag is also popular for questions on Jetty internals.</p>
            </li>
        </ul>
    </div>

    <h3>Github: Issues and Features</h3>
    <div class="paragraph">
        <p>While not necessarily a support channel for solving a specific user problem, the issue tracker for Eclipse
            Jetty
            is a great location for addressing issues or suggesting features you want to see (or ideally contribute) in
            Jetty.</p>
    </div>
    <div class="paragraph">
        <p>When you file a Github Issue in the Eclipse Jetty project there are a number of <strong>labels</strong>
            available
            and we encourage to you use them appropriately.</p>
    </div>
    <div class="ulist">
        <ul>
            <li>
                <p><a href="http://github.com/eclipse/jetty.project">Issues at Github</a>.</p>
            </li>
        </ul>
    </div>
    <div class="paragraph">
        <p>We have additionally identified and labeled a number of issues that may be appropriate for users of different
            levels of expertise that might want to contribute to Jetty but not have a specific goal or issue in
            mind.</p>
    </div>
    <div class="ulist">
        <ul>
            <li>
                <p>
                    <a href="https://github.com/eclipse/jetty.project/issues?q=is%3Aopen+is%3Aissue+label%3A%22Help+Wanted%22">Help
                        Wanted</a></p>
            </li>
        </ul>
    </div>



</div>