<?php
/**
 * Copyright (c) 2020 Eclipse Foundation.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 * Eric Poirier (Eclipse Foundation) - Initial implementation
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<h1><?php print $pageTitle;?></h1>
<ol>
  <li><a href="#q_1">Why has the Eclipse Foundation moved to Europe?</a></li>
  <li><a href="#q_2">What is the status of the Eclipse Foundation&rsquo;s move to Europe?</a></li>
  <li><a href="#q_3">What does this move mean for Members of the Foundation?</a></li>
  <li><a href="#q_4">Are the fees for membership changing?</a></li>
  <li><a href="#q_5">What does this mean for my participation in working groups?</a></li>
  <li><a href="#q_6">What does this move mean for Committers?</a></li>
  <li><a href="#q_7">Which agreements have changed? And what agreements must I execute?</a></li>
  <li><a href="#q_8">What are the major differences between the new Belgian Bylaws and the existing US Bylaws?</a></li>
  <li><a href="#q_9">Have the Bylaws and Membership Agreement for the existing US organization changed?</a></li>
  <li><a href="#q_10">Why did the Solutions membership class change to Contributing membership? Are there other changes to the classes of membership?</a></li>
  <li><a href="#q_11">What rights and benefits of membership, with respect to governance, have changed as a result of this restructuring?  And do the rights of Committers change in any way? </a></li>
  <li><a href="#q_12">I am a Committer employed by a Member Company - do I have to do anything?</a></li>
  <li><a href="#q_13">I am a contributor to one or more Eclipse projects, do I have to do anything?</a></li>
  <li><a href="#q_14">I have questions not listed here, who do I contact?</a></li>
  <li><a href="#q_15">Has the address of the Eclipse Foundation changed?</a></li>

</ol>
<p id="q_1">
  <strong>Q. Why has the Eclipse Foundation moved to Europe?</strong>
</p>
<ol type="A">
  <li>
    <p>
    The move of the corporate governance of Eclipse Foundation to Europe has been done to provide global stakeholders more choice for their strategic open source initiatives. We believe that more choice and greater diversity will be of benefit to both the global open source communities, and for the industries that rely upon and collaborate with them. The Eclipse Foundation aspires to be a truly global institution, now with a new European home.  
    </p>
    <p>To an extent, this move is merely confirmation of the Foundation’s current reality and global growth trajectory. The Eclipse Foundation is already the largest open source organization in Europe as measured in staff, projects, developers, and members. One hundred seventy members and over nine hundred committers are based in Europe and we have operated our subsidiary Eclipse Foundation Europe GmbH for more than seven years. </p>
    <p>By moving our legal residence from the United States to Europe, our goal is to create a global institution that builds on our existing membership base, active developer community, and strong institutional relationships, and helps to enable the free flow of open innovation throughout the entire world.</p>
  </li>
</ol>
<p id="q_2">
  <strong>Q. What is the status of the Eclipse Foundation&rsquo;s move to Europe?</strong>
</p>
<ol type="A">
  <li>
    <p>
    The Eclipse Foundation AISBL has now been created as an international nonprofit association under Belgian law.  Its Board of Directors has been established, with all of the Board members of the existing Eclipse Foundation, Inc. now serving as Board members of Eclipse Foundation AISBL, as well as now having a representative from Daimler TSS who have joined the Belgian entity as a Strategic member.  Key policies and processes, including the Intellectual Property (IP) Policy, Antitrust Policy, Eclipse Foundation Development Process, etc. all remain, and have been adopted by the new Belgian organization. The existing Eclipse Foundation, Inc. continues to operate, with the existing Board in place. 
    </p>
    <p>Going forward, companies now wishing to join the Eclipse Foundation will be directed to join the new Belgian organization. Over the coming weeks and months we will be reaching out to member organizations to have them migrate their membership to the new Belgian entity.</p>
  </li>
</ol>
<p id="q_3">
  <strong>Q. What does this move mean for Members of the Foundation?</strong>
</p>
<ol type="A">
  <li>
    <p>
    In terms of the day-to-day interactions with the Eclipse Foundation, nothing has changed. The operations of our projects and working groups continue as is, and the IP Policy and Antitrust Policy of the new entity are identical to those of the previous US organization.
    </p>
    <p>The main difference is that you will soon be asked to join our new Belgian international nonprofit organization, and concurrently, to resign your membership in the existing US organization.</p>
    <p>If you are an individual Committer Member you will be asked to execute the new Belgian membership agreement. We will reach out to you later this year to effect this change. There remain no fees for Committer membership.</p>
  </li>
</ol>
<p id="q_4">
  <strong>Q. Are the fees for membership changing?</strong>
</p>
<ol type="A">
  <li>
    <p>
    In anticipation of the move to Europe, we restated our membership dues effective October 1, 2020 for both the Beligan-based Eclipse Foundation AISBL and the existing Eclipse Foundation, Inc. in euros while retaining the same numeric value, e.g. if you were previously paying $20,000 in membership fees, your dues effective October 1, 2020 are now  €20.000. To help mitigate the increase in fees resulting from the change in currency, all members who renew between October 1, 2020 and September 30, 2021 have their euro-based membership fees discounted by 10%. So, to continue this example, if your membership fee in 2020 was $20,000, your fee will be €18.000 in 2021, and €20.000 in 2022 and beyond.
    </p>
    <p>As a reminder, this modest fee increase was the first in almost 15 years - we hope that members appreciate the merit of stating all fees in Euros as part of completing this transition.</p>
    <p>Note that working group fees have not changed as a result of the move, and will remain in USD. Each working group’s Steering Committee, as part of its fiscal responsibilities, will evaluate whether they should change their fees to be stated in euros and/or to adjust the fees based on such a change. Should the working group choose to take this action, any change will be communicated in advance of enacting the change.</p>
  </li>
</ol>
<p id="q_5">
  <strong>Q. What does this mean for my participation in working groups?</strong>
</p>
<ol type="A">
  <li>
    <p>
    Existing working groups will remain under the current governance structures, and Members’ participation in existing working groups are not impacted by the move of the overall corporate governance to Europe. Each working group’s Steering Committee will be updating their charter to accommodate the new governance structure, but this change will not impact the operation of the working groups, including no change in scope, governance structure, program plans, or fees.
    </p>
    <p>We will, however, be asking members to assign their Working Group Participation Agreements to the new Belgian entity at the same time as they execute the new Membership Agreement.</p>
    <p>Existing working group fees are also not impacted directly by this corporate change, including that the membership fees will remain stated in USD.</p>
  </li>
</ol>
<p id="q_6">
  <strong>Q. What does this move mean for Committers?</strong>
</p>
<ol type="A">
  <li>
    <p>
    In terms of the day-to-day interactions with the Eclipse Foundation, nothing has changed. The operations of our projects and working groups continue as is, and the Eclipse Foundation Development Process, Eclipse Foundation Specification Process, and Eclipse Foundation IP Policy of the new entity are identical to the current one. 
    </p>
    <p>The main difference is that for Individual Committer members, your Committer Agreement will eventually have to be updated to a new version with Eclipse Foundation AISBL; we will be contacting you to do this over the coming months.</p>
    <p>If you are an employee or a consultant of a member company who has a Member Committer and Contributor Agreement (MCCA) your employer will be asked to execute the new MCCA, and no actions will be required on your part. </p>
  </li>
</ol>
<p id="q_7">
  <strong>Q. Which agreements have changed? And what agreements must I execute?</strong>
</p>
<ol type="A">
  <li>
    <p>
    As a new organization, Eclipse Foundation AISBL has new versions of all of our legal agreements. This includes new Bylaws, Membership Agreement, and Member Committer and Contributor Agreement, and Working Group Participation Agreements.  As part of the migration, we will be directly contacting all members to join the new Belgian organization, Eclipse Foundation, AISBL. For those wishing to begin the review process now, the new Bylaws and Membership Agreement for the new Belgian Eclipse Foundation AISBL can be found on our <a href="https://www.eclipse.org/org/documents/">governance page</a>.
    </p>
    <p>We expect the migration of members will take a few months, as we intend to contact each member directly with the specific agreements we require them to execute, and to provide a detailed explanation of the changes.</p>
    <p>All members are free to wait until we contact you directly; however, if you have business reasons to migrate your membership to the new Belgian organization sooner, feel free to email our <a href="mailto:membership.coordination@eclipse-foundation.org">membership coordination team</a>.</p>
  </li>
</ol>

<p id="q_8">
  <strong>Q. What are the major differences between the new Belgian Bylaws and the existing US Bylaws?</strong>
</p>
<ol type="A">
  <li>
  <p>There are a number of differences between the two bylaws. Of course, the most significant difference is they are based on different laws. That is, the <a href="https://eclipse.org/org/documents/eclipse-foundation-be-bylaws-en.pdf">new Bylaws</a> are explicitly governed under Belgian law. Related, the Bylaws are officially defined in French, as is required by Belgian law. But the English translation may be relied upon for all matters, and all other documents including the membership agreement, etc. are all defined in English.</p>
  <p>The new Belgian bylaws, by law, have a few very distinctive differences relating to the rights and responsibilities of the Membership At-Large. Specifically, under Belgian law, the total group of members is referred to as the General Assembly, rather than the Membership At-Large. Also as defined in Belgian law, the General Assembly must approve the Foundation’s annual budget, must select the Foundation’s auditors, and approve the Foundation’s audited financial statements.  This is a change to our current rules, which leaves these decisions with the Board of Directors. As a result, we expect to hold a minimum of two General Assembly meetings annually.</p>
  <p>There are differences in the rights associated with Committer membership that we want to draw attention to. First, the thing that does not change is that our committers all have the ability to become Committer Members, and that our Committer Members continue to have Board representation based on exactly the same formula as today. This is significant, as over the years, this has proven to be invaluable to the health of our Foundation, and has led to the Board making much better decisions as a result of this committer representation. What is changing is that Committer members under the new Belgian bylaws do not have the right to vote in the General Assembly. As noted above, there are significantly more decisions that must be ratified by the General Assembly than under our existing rules, including approving the budget, appointing auditors, and approving the audited financial statements. Because we have significantly more Committer members than corporate members, their class of membership would be  heavily weighted for these financial decisions at the General Assembly. This weighting was appropriate in our current bylaws, as the only matters brought before the Membership At-Large were related to changes to the Bylaws and membership agreement. But given the General Assembly of the Belgian organization explicitly approves significant financial matters, it was felt these are matters better voted on by those companies that are contributing the funds.</p>
  <p>That the General Assembly votes on financial matters is a new “feature” for the Eclipse Foundation, and is based on the requirements of Belgian law. The net result of the change as compared to the current bylaws is that Committer Members lose their ability to directly approve future changes to the Bylaws or membership agreement of Eclipse Foundation AISBL. Approvals of such future changes will, however, be voted on by the elected directors representing the Committer Members on the Board. Committer Members are encouraged to participate in General Assembly meetings, and of course their representatives on the Board continue to actively participate and contribute.</p>
  <p>There are minor differences in the governance structure at the Board level. As defined in Belgian law, nominations to Board committees must be made by Board members, and those committees must have directors report on their work, as opposed to the Executive Director doing it on their behalf. The role of Treasurer is also defined somewhat differently, with the Treasurer reporting directly to the Board’s finance committee, as opposed to the Executive Director.</p>
  <p>We encourage all members to review the new Bylaws and to ask further questions related to the specifics of the bylaws.</p>
  </li>
</ol>

<p id="q_9">
  <strong>Q. Have the Bylaws and Membership Agreement for the existing US organization changed?</strong>
</p>
<ol type="A">
  <li>
  <p>Yes. In order to accommodate the transition, both the Bylaws and the Membership Agreement for the existing US organization were modified effective October 1, 2020. These changes were approved unanimously by the Board of Directors, and were also approved by a vote of the Membership At-Large by a margin of 97%. At a high level, the changes being made are to keep the two organizations in sync with respect to classes of membership, membership fees, etc., and to ensure the governance of the US organization aligns with the new Belgian organization.</p>
  <p>Of note, a new class of membership called Strategic Foundation Member was introduced into the bylaws of the existing US organization. By doing this, the new Belgian foundation is now an active member of the US organization, and will participate in its governance by having seats on the US organization’s Board. We would describe this as an “implementation detail”, and would be happy to provide more detail should you have questions about it. </p>
  </li>
</ol>

<p id="q_10">
  <strong>Q. Why did the Solutions membership class change to Contributing membership? Are there other changes to the classes of membership?</strong>
</p>
<ol type="A">
  <li>
    <p>
    We changed the name of the Solutions membership level to Contributing membership to better reflect the current, diverse group of organizations that make up our membership base. These organizations participate and contribute to the development of the Eclipse ecosystem in many ways, including, but not limited to, leading and contributing to Eclipse Foundation projects, and offering products and services based on Eclipse technologies.
    </p>
    <p>The Strategic, Committer, and Associate membership classes all remain. Finally, regarding what has changed, we have also eliminated the Strategic Consumer and Enterprise classes of membership. These have not been used for many years, and do not reflect how our members participate.</p>
  </li>
</ol>
<p id="q_11">
  <strong>Q. What rights and benefits of membership, with respect to governance, have changed as a result of this restructuring? And do the rights of Committers change in any way?</strong>
</p>
<ol type="A">
  <li>
    <p>
    As a result of the corporate restructuring, the changes to the rights, benefits, and obligations of membership with respect to governance are as described in the tables below.  Note that any changes introduced under the new Belgian bylaws are bolded.
    </p>
    <p>As explained in a separate question above regarding changes included in the Belgian bylaws, the rights of Committer members has changed somewhat. Committer members are non-voting members of the General Assembly, similar to Associate members. But unlike Associate Members, Committer Members do retain representation on the Board of Directors using exactly the same formula as previously. As a result of this change, only Strategic and Contributing members are voting members of the General Assembly. This change was introduced in recognition of we have significantly more Committer members than corporate members, that would have weighted their class of membership for decisions at the General Assembly. Given the General Assembly has ultimate responsibility for the financial decisions of the Foundation, it was felt these are matters better voted on by those companies that are contributing funds. Committer Members are still encouraged to participate in General Assembly meetings, and of course their representatives on the Board continue to actively participate and contribute.</p>
  </li>
</ol>

<p>
  <strong>Strategic Member - Rights, Benefits and Obligations</strong>
</p>
<div>
  <table class="table table-stripped">
    <thead>
      <tr>
        <th>
          <p>Benefit</p>
        </th>
        <th>
          <p>Eclipse Foundation, Inc.</p>
        </th>
        <th>
          <p>Eclipse Foundation AISBL</p>
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>
          <p>Representation on Board of Directors</p>
        </td>
        <td>
          <p>Appointed</p>
        </td>
        <td>
          <p>Appointed</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on Foundation budget, audited financial statements, etc.</p>
        </td>
        <td>
          <p>Board representative has vote</p>
        </td>
        <td>
          <p>Board representative has vote</p>
          <p>Member has vote in General Assembly</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on changes to IP Policy, Eclipse Development Process, etc.</p>
        </td>
        <td>
          <p>Board representative has vote</p>
        </td>
        <td>
          <p>Board representative has vote</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on changes to the Bylaws and membership agreement</p>
        </td>
        <td>
          <p>Board representative has vote</p>
        </td>
        <td>
          <p>Board representative has vote</p>
          <p>Member has vote in General Assembly</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Participate in meetings of the Membership At-Large / General Assembly</p>
        </td>
        <td>
          <p>Voting participation in meetings</p>
        </td>
        <td>
          <p>Voting participation in meetings</p>
        </td>
      </tr>
    </tbody>
  </table>
</div>
<p>
  <strong>Contributing Member - Rights, Benefits and Obligations</strong>
</p>
<div>
  <table class="table table-stripped">
    <thead>
      <tr>
        <th>
          <p>Benefit</p>
        </th>
        <th>
          <p>Eclipse Foundation, Inc.</p>
        </th>
        <th>
          <p>Eclipse Foundation AISBL</p>
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>
          <p>Representation on Board of Directors</p>
        </td>
        <td>
          <p>Elected representation</p>
        </td>
        <td>
          <p>Elected representation</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on Foundation budget, audited financial statements, etc.</p>
        </td>
        <td>
          <p>Elected representative on Board has vote</p>
        </td>
        <td>
          <p>Elected representative on Board has vote</p>
          <p>Member has vote in General Assembly</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on changes to IP Policy, Eclipse Development Process, etc.</p>
        </td>
        <td>
          <p>Elected representative on Board has vote</p>
        </td>
        <td>
          <p>
            Elected representative on Board has vote
          </p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on changes to the Bylaws and membership agreement</p>
        </td>
        <td>
          <p>Elected representative on Board has vote</p>
        </td>
        <td>
          <p>
            Elected representative on Board has vote<br /> Member has vote in General Assembly
          </p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Participate in meetings of the Membership At-Large / General Assembly</p>
        </td>
        <td>
          <p>Voting participation in meetings</p>
        </td>
        <td>
          <p>Voting participation in meetings</p>
        </td>
      </tr>
    </tbody>
  </table>
</div>
<p>
  <strong>Committer Member - Rights, Benefits and Obligations</strong>
</p>
<div>
  <table class="table table-stripped">
    <thead>
      <tr>
        <th>
          <p>Benefit</p>
        </th>
        <th>
          <p>Eclipse Foundation, Inc.</p>
        </th>
        <th>
          <p>Eclipse Foundation AISBL</p>
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>
          <p>Representation on Board of Directors</p>
        </td>
        <td>
          <p>Elected representation</p>
        </td>
        <td>
          <p>Elected representation</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on Foundation budget, audited financial statements, etc.</p>
        </td>
        <td>
          <p>Elected representative on Board has vote</p>
        </td>
        <td>
          <p>Elected representative on Board has vote</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on changes to IP Policy, Eclipse Development Process, etc.</p>
        </td>
        <td>
          <p>Elected representative on Board has vote</p>
        </td>
        <td>
          <p>Elected representative on Board has vote</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on changes to the Bylaws and membership agreement</p>
        </td>
        <td>
          <p>Elected representative on Board has vote</p>
        </td>
        <td>
          <p>Elected representative on Board has vote</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Participate in meetings of the Membership At-Large / General Assembly</p>
        </td>
        <td>
          <p><strong>Voting</strong> participation in meetings</p>
        </td>
        <td>
          <p><strong>Non-voting</strong> participation in meetings</p>
        </td>
      </tr>
    </tbody>
  </table>
</div>
<p>
  <strong>Associate Member - Rights, Benefits and Obligations</strong>
</p>
<div>
  <table class="table table-stripped">
    <thead>
      <tr>
        <th>
          <p>Benefit</p>
        </th>
        <th>
          <p>Eclipse Foundation, Inc.</p>
        </th>
        <th>
          <p>Eclipse Foundation AISBL</p>
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>
          <p>Representation on Board of Directors</p>
        </td>
        <td>
          <p>None</p>
        </td>
        <td>
          <p>None</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on Foundation budget, audited financial statements, etc.</p>
        </td>
        <td>
          <p>None</p>
        </td>
        <td>
          <p>None</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on changes to IP Policy, Eclipse Development Process, etc.</p>
        </td>
        <td>
          <p>None</p>
        </td>
        <td>
          <p>None</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Vote on changes to the Bylaws and membership agreement</p>
        </td>
        <td>
          <p>None</p>
        </td>
        <td>
          <p>None</p>
        </td>
      </tr>
      <tr>
        <td>
          <p>Participate in meetings of the Membership At-Large / General Assembly</p>
        </td>
        <td>
          <p>Non-voting participation in meetings</p>
        </td>
        <td>
          <p>Non-voting participation in meetings</p>
        </td>
      </tr>
    </tbody>
  </table>
</div>

<p id="q_12">
  <strong>Q. I am a Committer employed by a Member Company - do I have to do anything?</strong>
</p>
<ol type="A">
  <li>
    <p>
    That depends. For Committers whose employer has executed the Member Committer and Contributor Agreement, then there is nothing for you to do. But if you have previously executed an Individual Committer Agreement with the Eclipse Foundation as an individual, we will reach out to you when it is time to re-execute the new version of that agreement.
    </p>
    <p>In either case, there is no action for you to take at this time. Rather, the Foundation will contact either you or your employer to execute the new agreements with the Belgian organization.</p>
  </li>
</ol>
<p id="q_13">
  <strong>Q. I am a contributor to one or more Eclipse projects, do I have to do anything?</strong>
</p>
<ol type="A">
  <li>
    <p>
    No, you do not. The Eclipse Contributor Agreement (“ECA”) has been updated to reference our new Belgian legal entity. However, your existing ECA will continue to be effective.
    </p>
  </li>
</ol>

<p id="q_14">
  <strong>Q. I have questions not listed here, who do I contact?</strong>
</p>
<ol type="A">
  <li>
    <p>
    Please send an email to <a href="mailto:eclipse-europe@eclipse.org">eclipse-europe@eclipse.org</a>.
    </p>
  </li>
</ol>
<p id="q_15">
  <strong>Q. Has the address of the Eclipse Foundation changed?</strong>
</p>
<ol type="A">
  <li>
    <p>The official address of the new Eclipse Foundation AISBL is now Rond Point Schuman 11 Brussels 1040 Belgium. This address will be included in all official documents and formal agreements with the Foundation.</p>
    <p>However, the operating address for the Foundation staff and its administrative base of operations remains 2934 Baseline Road, Suite 202, Ottawa, ON Canada.</p>
  </li>
</ol>
