<?php
/*******************************************************************************
 * Copyright (c) 2015 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://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Christopher Guindon (Eclipse Foundation) - initial API and implementation
 *******************************************************************************/
 ?>

<div class="col-md-14 col-lg-16">


  <h2 class="h3 padding-top-20">Organizations that join the Eclipse Foundation<br/>can benefit in the following ways:</h2>

  <ul class="fa-ul fa-ul-2x">
    <li><i class="fa-li fa-2x fa fa-check-circle orange"></i>Ability to join and participate in the Eclipse Foundation <a href="/org/workinggroups">Working Groups</a>,
    industry collaborations that develop new open source software platforms.</li>

    <li><i class="fa-li fa-2x fa fa-check-circle orange"></i>Take advantage of marketing programs that target the Eclipse developer
    community, including advertising on eclipse.org, preferential listing on
    Eclipse Marketplace, exposure for commercial products on Eclipse Marketplace
    Client, organizing Eclipse Demo Camps, plus other programs.</li>

    <li><i class="fa-li fa-2x fa fa-check-circle orange"></i>The right to participate in the Eclipse Board of Directors and guide the strategy
    of the Eclipse Foundation, through a direct seat for Strategic Members and elected seat for Sustaining Members.</li>

    <li><i class="fa-li fa-2x fa fa-check-circle orange"></i>Discounts on sponsorship and registration fees for Eclipse Foundation events,
    including EclipseCon North America, EclipseCon Europe and EclipseCon France.
    </li>

    <li><i class="fa-li fa-2x fa fa-check-circle orange"></i>Networking opportunities with other member organizations through Foundation run events
    and one-on-one introductions by Foundation staff.</li>

    <li><i class="fa-li fa-2x fa fa-check-circle orange"></i>The ability to use the Eclipse Foundation member logo on your own site and have your logo
    listed on our members’ page and in other promotional material.</li>
  </ul>

  <h2>Resources</h2>
  <div class="row text-center margin-bottom-50">
    <div class="col-sm-8">
      <div class="background-white padding-20 match-height-item">
        <a href="/membership/documents/membership-prospectus.pdf"><i class="fa fa-file-text-o brand-primary margin-bottom-15" style="font-size:42px;"></i></a>
        <p><a href="/membership/documents/membership-prospectus.pdf">Membership Prospectus</a></p>
        <p class="small">Learn about Eclipse Foundation membership, and how you can become a member.</p>
      </div>
      <div class="background-primary padding-10"></div>
    </div>
    <div class="col-sm-8">
      <div class="background-white padding-20 match-height-item">
        <a href="/membership/documents/eclipse-foundation-overview.pdf"><i class="fa fa-file-powerpoint-o brand-primary margin-bottom-15" style="font-size:42px;"></i></a>
        <p><a href="/membership/documents/eclipse-foundation-overview.pdf">Overview Presentation</a></p>
        <p class="small">An introductory overview presentation of the Eclipse Foundation and Eclipse community for new and prospective members.</p>
      </div>
      <div class="background-primary padding-10"></div>
    </div>
    <div class="col-sm-8">
      <div class="background-white padding-20 match-height-item">
        <a href="/community/newsletter/" title="Membership Newsletter"><i class="fa fa-newspaper-o brand-primary margin-bottom-15" style="font-size:42px;"></i></a>
        <p><a href="/community/newsletter/" title="Membership Newsletter">Eclipse Member Newsletter</a></p>
        <p class="small">The Monthly Member Newsletter is available to Member companies and their employees.</p>
      </div>
      <div class="background-primary padding-10"></div>
    </div>
  </div>
</div>
<?php include_once 'en_sidebar.php';?>
