<?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 the Eclipse projects they rely on</li>
        <li><strong>Protect</strong> their strategic investments by participating in defining priorities for advancing the technologies they care about, avoiding leaving the features, quality, and sustainability of important technologies to others or to chance</li>
        <li><strong>Share</strong> costs and innovation, especially on projects that represent core capabilities “below the value line”, while focusing their resources on rapidly building differentiated features that customers value most</li>
        <li><strong>Benefit</strong> from ensuring they comply with antitrust laws while sharing intellectual property and embedding clean intellectual property into their commercial products</li>
        <li><strong>Prosper</strong> by sharing open source commercialization best practices with industry peers </li>
        <li><strong>Promote</strong> their accomplishments and demonstrate their 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 supports to help projects consistently achieve their goals. Our staff assists new projects in implementing the <a href="/projects/dev_process/">Eclipse Development Process</a>, 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 the <a href="/legal/epl-2.0/">Eclipse Public License (EPL)</a>, a commercial friendly, OSI approved license. 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, conferences, local events, and quarterly 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 download site, and website.</p>
    <h3>Membership at the Eclipse Foundation</h3>
    <p>The Foundation offers five levels of membership: Strategic, Enterprise, 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 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 technology. Typically, Strategic Members lead one or more top-level project. Strategic membership benefits include:</p>
    <ul>
        <li>A seat on Board of Directors of Eclipse Foundation</li>
        <li>A seat on Foundation councils, including both the Planning and Architecture councils</li>
        <li>Access to a number of Strategic Members Only Programs such as banner and logo promotion on eclipse.org and eclipse.org/downloads</li>
        <li>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, project reviews, and amendments to Membership Agreement and Bylaws</li>
        <li>Significant discounts towards sponsorship and attendance of Eclipse Foundation run events such as:</li>
        <li>EclipseCons Access to Eclipse Foundation marketing and advertising programs</li>
        <li>Ability to lead in the establishment of Working Groups</li>
        <li>Access to Information (mail lists, attend members-only meetings)</li>
        <li>Show of support (logo exchange, etc.)</li>
    </ul>
    <h4>Enterprise Members</h4>
    <p>Enterprise Members are organizations that rely heavily on Eclipse technologies for their internal development projects and/or act strategically building products and services built on, or with, Eclipse technologies. Enterprise membership benefits include:</p>
    <ul>
        <li>Intellectual Property Analysis and Reporting</li>
        <li>Help to launch Open Source initiative(s)</li>
        <li>Voting rights for board representation, project reviews, and amendments to Membership Agreement and Bylaws</li>
        <li>Significant discounts towards sponsorship and attendance of Eclipse Foundation run events such as EclipseCons</li>
        <li>Access to Eclipse Foundation marketing and advertising programs</li>
        <li>Ability to participate in Working Groups</li>
        <li>Access to Information (mail lists, attend members-only meetings)</li>
        <li>Show of support (logo exchange, etc.)</li>
    </ul>
    <h4>Solutions Members</h4>
    <p>Solutions Members are organizations that view Eclipse technologies as important to their corporate and product strategy and offer products and services based on, or with, Eclipse technologies. These organizations want to participate in the development of the Eclipse ecosystem. Solutions membership benefits include:</p>
    <ul>
        <li>Voting rights for board representation, project reviews, and amendments to Membership Agreement and Bylaws</li>
        <li>Significant discounts towards sponsorship and attendance of Eclipse Foundation run events such as EclipseCons</li>
        <li>Access to Eclipse Foundation marketing and advertising programs</li>
        <li>Ability to participate in Working Groups</li>
        <li>Access to Information (mail lists, attend members-only meetings)</li>
        <li>Show of support (logo exchange, etc.)</li>
    </ul>
    <h4>Associate Members</h4>
    <p>Associate Members are organizations that participate in and want to show support for, the Eclipse ecosystem. Many research and educational institutions choose to join as an Associate member. Associate membership benefits include:</p>
    <ul>
        <li>Access to Information (mail lists, attend members-only meetings)</li>
        <li>Ability to join select Eclipse Working Groups as a Guest member </li>
        <li>Show of support (logo exchange, etc.)</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. </p>
    <p>Learn more about Committer membership in the Eclipse Foundation <a href="/membership/become_a_member/committer.php" >here</a>.</p>
    <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="4">Annual Eclipse Foundation Membership-at-Large Fees*</th>
                </tr>
                <tr>
                    <th>Strategic **</th>
                    <th>Enterprise</th>
                    <th>Solutions</th>
                    <th>Associate</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>&gt; $250 million</td>
                    <td>$250,000</td>
                    <td>$100,000</td>
                    <td>$20,000</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>$100 million - $250 million</td>
                    <td>$120,000 - $250,000</td>
                    <td>$75,000</td>
                    <td>$15,000</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>$50 million - $100 million</td>
                    <td>$60,000 - $120,000</td>
                    <td>$62,500</td>
                    <td>$10,000</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>$10 million - $50 million</td>
                    <td>$25,000 - $60,000</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>$37,500</td>
                    <td>$5,000</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>&lt; $1 million, &lt; 10 employees</td>
                    <td>$25,000</td>
                    <td>$25,000</td>
                    <td>$1,500</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>Govt, academics, NGOs, etc.</td>
                    <td></td>
                    <td>$50,000</td>
                    <td>$5,000</td>
                    <td>$5,000</td>
                </tr>
                <tr>
                    <td>Academic, Research or Publishing Organizations, etc</td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td>$0</td>
                </tr>
            </tbody>
        </table>
        <div>
            <p class="small">**Strategic membership fees are illustrative; exact fees are as defined in the Eclipse Membership Agreement</p>
            <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, Enterprise, 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>