<?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 Working Groups,
    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>

  <p class="text-highlight">Member companies and their employees also get access to the monthly <a href="https://www.eclipse.org/community/newsletter/" title="Membership Newsletter">Member Newsletter</a>.</p>

</div>
<?php include_once 'en_sidebar.php';?>
