<?php
/*******************************************************************************
 * Copyright (c) 2015, 2018 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Christopher Guindon (Eclipse Foundation) - Initial implementation
 *******************************************************************************/
?>
<div class="col-md-14 col-lg-16">
  <h1><?php print $pageTitle;?></h1>
  <p>There are five types of membership to the Eclipse Foundation, four for organizations, and one for individuals.</p>

   <ul class="circles-list margin-top-25 padding-top-10">

    <li><a href="#strategic">Strategic Members</a> are organizations that view Eclipse as a strategic
    platform and are investing developer and other resources to further develop the Eclipse technology.
    </li>

    <li><a href="#enterprise">Enterprise Members</a> are organizations that rely heavily on
    Eclipse technology as a platform for their internal development projects and/or act strategically
    building products and services built on, or with, Eclipse. These organizations want to influence and
    participate in the development of the Eclipse ecosystem.</li>

    <li><a href="#solutions">Solutions Members</a> are organizations that view Eclipse as an important
    part of their corporate and product strategy and offer products and services based on, or with,
    Eclipse. These organizations want to participate in the development of the Eclipse ecosystem.
    </li>

    <li><a href="#associate">Associate Members</a> are organizations that participate in,
    and want to show support for, the Eclipse ecosystem.</li>

    <li><a href="#committer">Committer Members</a> are individuals that are the core developers
    of the Eclipse projects and can commit changes to project source code.
    </li>

  </ul>

  <h2 id="strategic">Strategic Members</h2>
  <p>There are two types of strategic members: Strategic <em>Developers</em> and Strategic <em>Consumers</em>.
  Strategic <em>Developers</em> are major contributors of technology to Eclipse. Each strategic developer
  will lead an Eclipse Foundation open source project and have at least eight developers assigned full time to developing Eclipse technology and
  contribute annual dues of 0.12% of revenue (minimum $25K, maximum $250K).
  Strategic <em>Consumers</em> are major users of Eclipse technology. They contribute annual dues of
  0.2% of revenues (minimum $50K, maximum $500K) but can reduce the dues by contributing one
  or two developers to Eclipse projects, reducing their dues by $125K for each developer,
  to the minimum of $50K.</p>

  <p>Each strategic member has a representative on the Eclipse Foundation Board of Directors
  allowing them direct influence over the strategic direction of Eclipse.</p>

  <p>Strategic Developer members have representation on the Eclipse Planning and
  Architecture Councils. This allows Strategic Developers to have direct input into the
  development processes and architecture of the Eclipse Foundation project community.</p>

  <p>See the current <a href="/membership/exploreMembership.php#tab-strategic">Strategic Members.</a></p>
  <hr/>

  <h2 id="enterprise">Enterprise Members</h2>
  <p>Enterprise Members are generally larger organizations (>1,000 employees) that rely heavily on
  Eclipse technology as a platform for internal development projects and/or act strategically
  with products and services built on, or with, Eclipse. These organizations want to
  influence and participate in the development of the Eclipse ecosystem. .</p>

  <p>Enterprise Members are looking for:</p>
  <ul class="fa-ul">
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Access to detailed intellectual property data and policies to foster further trust and use of open source</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Help with starting and participating Open Source projects and working groups relevant to their industries</li>
  </ul>

  <p>The annual membership fee for Enterprise Members is tiered based on revenue (all values USD):</p>
   <ul class="fa-ul">
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Less Than $1 million, and less than 10 employees and contractors - Fee: 25,000</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Less Than $10 million - Fee: 37,500</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Less Than $50 million - Fee: 50,000</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Less Than $100 million - Fee: 62,500</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Less Than $250 million - Fee: 75,000</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Greater Than $250 million - Fee: 100,000</li>
  </ul>

  <p>Enterprise membership is $50,000 for non-for-profit organizations, standards bodies, universities, research institutes,
  media and publishing, government and other organization types as defined by the Eclipse Foundation board of directors.</p>

  <p>See the current <a href="/membership/exploreMembership.php#tab-enterprise">Enterprise Members.</a></p>
  <hr/>

  <h2 id="solutions">Solutions Members</h2>
  <p>The Eclipse ecosystem is a vibrant community of major software vendors, small innovative
  software start-ups, leading information and publishing organizations, education and service
  providers and influential research and standards organizations. The community works to develop
  the complementary products, services and information, and market specific solutions that have
  been critical to the success of the Eclipse Platform. Being a member of this community allows
  organizations to benefit from the success of Eclipse.</p>

  <p>A number of special programs, discounts and services are provided to Solutions Members
  (and Enterprise, Strategic). For example, discounts towards EclipseCon Sponsorship, providing
  Foundation quotes for product releases, participation in special sponsorship events.</p>

  <p>Solutions Members are organizations that will: </p>
  <ul class="fa-ul">
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Express public support for the Eclipse Foundation
    and the Eclipse Platform. Either in the form of a press release, listing on your website, blog entry,
    or other public statement.</li>

    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Plan to make available a commercial Eclipse-based
    offering within 12 months of joining the Eclipse Foundation, <em>or plan to use an Eclipse Project
    in the development of a commercial offering</em> within 12 months of joining the Eclipse Foundation.
    A commercial offering can either be a product (built using Eclipse tools, or on top of Eclipse projects)
    or service (such as training, consulting, or a hosted web service).</li>

  </ul>

  <p>The annual membership fee for Solutions Members is tiered based on revenue (all values USD):</p>
  <ul class="fa-ul">
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Less Than $1 million, and less than 10 employees and contractors - Fee: 1,500</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Less Than $10 million - Fee: 5,000</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Less Than $50 million - Fee: 7,500</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Less Than $100 million - Fee: 10,000</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Less Than $250 million - Fee: 15,000</li>
    <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Annual Corporate Revenue Greater Than $250 million - Fee: 20,000</li>
  </ul>

  <p>Solutions membership is $5,000 for non-for-profit organizations, standards bodies, universities, research institutes,
  media and publishing, government and other organization types as defined by the Eclipse Foundation board of directors.</p>

  <p>See the current <a href="/membership/exploreMembership.php#tab-solutions">Solutions Members.</a></p>
  <hr/>

  <h2 id="associate">Associate Members</h2>

  <p>Associate Membership is non-voting, but as members, Associates can submit requirements, participate
  in all project reviews and participate fully in the Annual Meeting of the Membership at Large,
  as well as any scheduled quarterly update meetings of the same. This provides a unique advantage
  to understand plans, directions, and to network with the full Eclipse ecosystem</p>

  <p>Associate membership is free for non-for-profit organizations, standards bodies, universities,
  research institutes, media and publishing, government and other organization types as defined by
  the Eclipse Foundation board of directors. All other organizations, including for-profits,
  may also become Associate Members with annual dues of $5,000USD per year.
  </p>

  <p>See the current <a href="/membership/exploreMembership.php#tab-associate">Associate Members.</a></p>
  <hr/>

  <h2 id="committer">Committer Members</h2>

  <p>As noted in the <a href="/projects/dev_process/development_process.php">Eclipse Development Process</a>,
  <strong>committers</strong> are those people who through a process of
  <a href="/projects/dev_process/development_process.php#2_1_Open_Source_Rules_of_Engagement">meritocracy</a>
  are able to contribute and commit code to their Eclipse projects. Committers may be members by virtue
  of working for a member organization, or may choose to complete the membership process independently
  if they are not. For further explanation and details, see the
  <a href="committer.php">Committer Membership</a> page.</p>

</div>
<?php require_once('../content/en_sidebar.php');?>