<?php
/*******************************************************************************
 * Copyright (c) 2019 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 *    Martin Lowe (Eclipse Foundation) - added membership prospectus HTML version
 *******************************************************************************/
 ?>

<div class="col-md-24">
    <h2>Who We Are</h2>
    <p>The Eclipse Foundation provides our global community of individuals and organizations with a mature, scalable, and business-friendly environment for open source software collaboration and innovation. The Foundation is home to the Eclipse IDE, Jakarta EE, and over 375 open source <a href="/projects/">projects</a>, including runtimes, tools, and frameworks for cloud native enterprise applications, the Internet of Things, automotive, geospatial, systems engineering, and many other technology domains.</p>
    <p>The Eclipse Foundation is a 501(c)(6) not-for-profit organization supported by over 300 <a href="/membership/exploreMembership.php">members</a> who value the Foundation’s governance framework, open innovation processes, collaborative <a href="/org/workinggroups/">Working Group</a> model, and <a href="http://events.eclipse.org/">community-building events</a>. Our members include industry leaders who have embraced open source as a <a href="/org/value">key enabler for business strategy</a>.</p>
    <h2>Our Unique Approach</h2>
    <p>Our value proposition is simple and unique. We are community-driven, code-first, and commercial-ready. Over more than 15 years, we have earned our community-driven and business-friendly reputation by providing a home for open source projects proven to deliver high quality, scalable, and sustainable code that enterprises can use to build commercial products, grow revenues and drive market adoption. Business value and profits can then be reinvested in Eclipse projects and our developer community. </p>
    <p>The key to our approach are our Eclipse Working Groups, which provide an open and vendor-neutral governance framework for individuals and organizations to engage in collaborative development for specific technology domains. </p>
    <h2>The Opportunity</h2>
    <p>Organizations join the Eclipse Foundation because they want to take an active role in supporting sustainable, commercializable open source technologies that benefit all and to demonstrate the value of those open source technologies to the success of their businesses. </p>
    <p>Our members:</p>
    <ul>
        <li><strong>Participate</strong> in a thriving developer community and provide contributions to <a href="/projects/">Eclipse projects</a> and <a href="/org/workinggroups/">Eclipse Working Groups</a></li>
        <li><strong>Protect</strong> your strategic investments by signaling your support for advancing the technologies you care about</li>
        <li><strong>Share</strong> costs and innovation while focusing resources on rapidly building differentiated features that customers value most</li>
        <li><strong>Benefit</strong> from strong governance, solid intellectual property management, and inclusive open source community development</li>
        <li><strong>Prosper</strong> by sharing open source commercialization best practices with industry peers</li>
        <li><strong>Promote</strong> accomplishments and good corporate citizenship through contributions to open source projects</li>
    </ul>
    <h2>The Eclipse Foundation Governance Model</h2>
    <p>The Eclipse community consists of individual developers and organizations spanning many industries. The community participates in Eclipse open source projects, organized under top-level projects that provide oversight and guidance. Each top-level project has a charter and scope and is governed by a Project Management Committee. </p>
    <p>Eclipse Working Groups extend the best practices of the Eclipse Foundation’s collaborative open source development model to specific technology domains. In addition, Eclipse Working Groups enable collaboration on business functions important to the broader open source initiative, including the shared development of requirements, specifications, marketing strategy, and security policies. These unique industry collaborations span a variety of innovation areas, including cloud native enterprise Java, IoT, Edge Computing, the connected automotive mobility ecosystem, and other emerging technology domains. Explore all of our Working Groups <a href="/org/workinggroups/explore.php">here</a>.</p>
    <p>The Eclipse Foundation is funded by annual dues from our <a href="/membership">members</a> and governed by a <a href="/org/foundation/directors.php">Board of Directors</a>. The Foundation employs a full-time <a href="/org/foundation/staff.php">professional staff</a> to provide services to the community.</p>
    <h2>Key Services of the Eclipse Foundation</h2>
    <h3><a href="/org/#Development">Development Process</a></h3>
    <p>The Eclipse community has a well-earned reputation for providing high-quality software, reliably and predictably. The Eclipse Foundation provides services and support to help projects consistently achieve their goals. Our staff assists new projects in implementing the Eclipse development process, a set of procedures and rules that form our best practices.</p>
    <h3><a href="/org/#IP_Management">IP Management</a></h3>
    <p>We focus on enabling the use of open source technology in commercial software products and services. All Eclipse projects are licensed under OSI approved license including the <a href="/legal/epl-2.0/">Eclipse Public License</a> (EPL). In addition, the Eclipse Foundation due diligence process helps to validate the pedigree of the intellectual property contained in Eclipse projects.</p>
    <h3><a href="/org/#Ecosystem">Ecosystem Development and Marketing</a></h3>
    <p>The Eclipse Foundation’s strategic marketing programs promote Eclipse community engagement, drive awareness and discoverability of Eclipse technologies, and increase the commercial adoption of Eclipse technologies. We organize a number of activities, including cooperative marketing events with member companies, virtual events, conferences, local events, and annual members meetings.</p>
    <h3><a href="/org/#IT">IT Infrastructure</a></h3>
    <p>The Eclipse Foundation provides vendor-neutral, reliable and scalable services for Eclipse technology developers and users. IT infrastructure services delivered to the Eclipse community include source code repositories, build infrastructure, development-oriented mailing lists and newsgroups, a <a href="/downloads/">downloads</a> site, and project and working group websites.</p>
    <h3>Membership at the Eclipse Foundation</h3>
    <p>The Foundation offers four levels of membership: Strategic, Solutions, Associate, and Committer. Collectively, these levels of membership comprise the Eclipse Membership-at-Large. </p>
    <h4>Strategic Members</h4>
    <p>Strategic Members play an integral role in the Eclipse Foundation ecosystem. Strategic members are organizations that view participation in Eclipse projects as strategic to their business and are investing significant developer and other resources to further drive Eclipse Foundation technology. Typically, Strategic Members lead one or more top-level projects. Strategic membership benefits include:</p>
    <ul>
        <li>A seat on Board of Directors of Eclipse Foundation</li>
        <li>A seat on Foundation councils, including the Architecture Council</li>
        <li>The opportunity to attend and vote at all meetings of the Membership At-Large</li>
        <li>Access to a number of Strategic Members-Only Programs such as banner and logo promotion on <a href="http://eclipse.org">eclipse.org</a> and <a href="/downloads">eclipse.org/downloads</a></li>
        <li>Ad hoc Intellectual Property analysis and reporting</li>
        <li>Help to launch open source initiative(s)</li>
        <li>Direct influence through board voting rights on key aspects of the Eclipse ecosystem, including licensing, governing policy development, and amendments to Membership Agreement and bylaws</li>
        <li>Discounts towards sponsorship and attendance of Eclipse Foundation events </li>
        <li>Access to Eclipse Foundation marketing and <a href="https://outreach.eclipse.foundation/advertise">advertising programs</a></li>
        <li>Opportunity to lead in the establishment of Eclipse Working Groups</li>
        <li>Opportunity to join and participate on all Eclipse Foundation public mailing lists</li>
        <li>Opportunity to show support for Eclipse Foundation by displaying the Eclipse Foundation member logo</li>
    </ul>
    <h4>Solutions Members</h4>
    <p>Solutions Members are organizations that view Eclipse Foundation technologies as important to their corporate and product strategy and offer products and services based on, or with, Eclipse Foundation technologies. These organizations want to participate in the development of the broad Eclipse Foundation ecosystem. Most members join initially as Solutions Members. Solutions membership benefits include:</p>
    <ul>
        <li>Solutions Members are represented on the Board of Directors, and thus have influence over decisions relating to licensing, governing policy development, and amendments to Membership Agreement and bylaws</li>
        <li>Opportunity to stand for election as the representative of all Solutions Members on the Board of Directors. Elections are held annually in the first quarter.  </li>
        <li>The opportunity to attend and vote at all meetings of the Membership At-Large</li>
        <li>Discounts towards sponsorship and attendance of Eclipse Foundation run events </li>
        <li>Access to Eclipse Foundation marketing and <a href="https://outreach.eclipse.foundation/advertise">advertising programs</a></li>
        <li>Opportunity to participate in Eclipse Working Groups, including as a Strategic Member of those working groups</li>
        <li>Opportunity to join and participate on all Eclipse Foundation public mailing lists</li>
        <li>Opportunity to show support for the Eclipse Foundation by displaying the Eclipse Foundation Member logo </li>
    </ul>
    <h4>Associate Members</h4>
    <p>Associate Members are organizations that participate in and want to show support for the Eclipse Foundation ecosystem. Many research and educational institutions choose to join as an Associate member. Associate membership benefits include:</p>
    <ul>
        <li>Opportunity to join and participate on all Eclipse public mailing lists, and to attend Members meetings</li>
        <li>Ability to join select Eclipse Working Groups as a Guest Member</li>
        <li>The opportunity to attend all meetings of the Membership At-Large</li>
        <li>Opportunity to show support for Eclipse Foundation by displaying the Eclipse Foundation Member logo</li>
    </ul>
    <h4>Committer Members</h4>
    <p>Eclipse Foundation’s governance model provides individual committers with the ability to become full members and includes representation on the Eclipse Board of Directors. Committer Members are individuals that are the core developers of the Eclipse projects and can commit changes to project source code. Committer membership benefits include:</p>
    <ul>
        <li>Committer Members are represented on the Board of Directors, and thus have influence over decisions relating to licensing, governing policy development, and amendments to Membership Agreement and bylaws</li>
        <li>Opportunity to stand for election as the representative of all Committer Members on the Board of Directors. Elections are held annually in the first quarter.  </li>
        <li>The opportunity to attend and vote at all meetings of the Membership At-Large</li>
    </ul>
    <p>Additional details regarding the various membership levels in the Eclipse Foundation are available <a href="/membership/become_a_member/membershipTypes.php#strategic" >here</a>.</p>
    <h2>Membership Fees</h2>
    <p>The Membership-at-Large Annual Fee Comparison Chart based on membership levels is provided below for illustration purposes only. Please see the Eclipse Membership Agreement for full details.</p>
    <div>
        <table class="table table-striped">
            <thead>
                <tr>
                    <th rowspan="2">Annual Corporate Revenue</th>
                    <th class="text-center" colspan="3">Annual Eclipse Foundation Membership-at-Large Fees*</th>
                </tr>
                <tr>
                    <th>Strategic **</th>
                    <th>Solutions</th>
                    <th>Associate</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>&gt; $250 million</td>
                    <td>$250,000</td>
                    <td>$20,000</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>$100 million - $250 million</td>
                    <td>$150,000</td>
                    <td>$15,000</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>$50 million - $100 million</td>
                    <td>$100,000</td>
                    <td>$10,000</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>$10 million - $50 million</td>
                    <td>$50,000</td>
                    <td>$7,500</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>&lt; $10 million</td>
                    <td>$25,000</td>
                    <td>$5,000</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>&lt; $1 million, &lt; 10 employees</td>
                    <td>$25,000</td>
                    <td>$1,500</td>
                    <td>N/A</td>
                </tr>
                <tr>
                    <td>Govt, academics, NGOs, etc.</td>
                    <td>$25,000</td>
                    <td>$5,000</td>
                    <td>$0</td>
                </tr>
                <tr>
                    <td>Academic, Research or Publishing Organizations, etc</td>
 					<td>$25,000</td>
                    <td>$5,000</td>
                    <td>$0</td>
                </tr>
            </tbody>
        </table>
        <div>
            <p class="small">*There is no cost to being a Committer member of the Foundation</p>
        </div>
    </div>
    <h2>How to Join as a Member of the Eclipse Foundation</h2>
    <p>Once you have chosen the level of membership (e.g., Strategic, Solutions, Associate, Committer):</p>
    <ul>
        <li>Complete and sign the <a href="/membership/documents/membership-information-form.pdf">Membership Information Form</a></li>
        <li>Complete and sign the <a href="/org/documents/eclipse_membership_agreement.pdf">Membership Agreement</a></li>
        <li>Complete and sign the <a href="/legal/committer_process/EclipseMemberCommitterAgreement.pdf" >Member Committer and Contributor Agreement</a> (optional, but recommended)</li>
        <li>Email us the signed documents, including the Membership Agreement, the Membership Application, and optionally, the Member Committer and Contributor Agreement</li>
    </ul>
    <p>Note: Membership in an Eclipse Working Group requires the execution of that Working Group’s Participation Agreement. A list of the current Eclipse Working Groups is <a href="/org/workinggroups/explore.php">here</a>.</p>
    <h2>Join Us!</h2>
    <p>To learn more about the benefits of Eclipse Foundation membership, or how Eclipse Working Groups enable community-driven industry collaborations, please contact the Membership Coordination Team at membership@eclipse.org.</p>
</div>