<?php
/**
 * Copyright (c) 2019 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
 */
?>
<div id="maincontent">
  <div id="midcolumn">
    <p>
      <strong>DRAFT - Not yet approved.</strong>
    </p>
    <p>Version 2.2. Revision History at the end</p>
    <h2>Vision and Scope</h2>
    <p><img src="assets/images/wg_sparkplug-logo.png" align="left" class="padding-right-10">

      The <strong>Eclipse Sparkplug Working Group</strong> will drive the evolution and broad
      adoption of the Eclipse Sparkplug protocol and related technologies that enable the creation
      of open, interoperable, Industrial IoT (IIoT) solutions.
    </p>
    <p>In particular, the Working Group will encourage the definition of technical specifications
      and associated implementations that rationalize access to industrial data, improve the
      interoperability and scalability of IIoT solutions, and provide an overall framework for
      supporting Industry 4.0.</p>
    <p>The Working Group will:</p>
    <ul>
      <li>Promote the &quot;Eclipse Sparkplug&quot; brand and its value in the marketplace.</li>
      <li>Provide vendor neutral marketing and other services to the Eclipse Sparkplug ecosystem.</li>
      <li>Define and manage a specification process to formalize the specifications that are defined
        within the scope of this working group.</li>
      <li>Define compatibility rules and a compatibility and branding process for implementations of
        these specifications to ensure application portability.</li>
      <li>Define licensing and intellectual property flows that encourage community participation,
        protect community members, and encourage usage.</li>
      <li>Manage the overall technical and business strategies its related open source projects.</li>
      <li>Establish and drive a funding model that enables this working group and its community to
        operate on a sustainable basis.</li>
      <li>Manage the overall technical and business strategies for Eclipse Tahu and related projects.</li>
    </ul>
    <p>All Members must be parties to the Eclipse Foundation Membership Agreement, including the
      requirement set forth in Section 2.2 to follow the Bylaws and then-current policies of the
      Eclipse Foundation, including but not limited to the Intellectual Property and Antitrust
      Policies.</p>
    <h2>Governance and Precedence</h2>
    <h3>Applicable Documents</h3>
    <ul>
      <li><a href="/org/documents/eclipse_foundation-bylaws.pdf">Eclipse Bylaws</a></li>
      <li><a href="/org/workinggroups/industry_wg_process.php">Industry Working Group Process</a></li>
      <li><a href="/org/documents/eclipse_membership_agreement.pdf">Eclipse Membership Agreement</a></li>
      <li><a href="/org/documents/Eclipse_IP_Policy.pdf">Eclipse Intellectual Property Policy</a></li>
      <li><a href="/org/documents/Eclipse_Antitrust_Policy.pdf">Eclipse Antitrust Policy</a></li>
      <li><a href="/projects/dev_process/development_process.php">Eclipse Development Process</a></li>
    </ul>
    <p>In the event of any conflict between the terms set forth in this Working Group&#39;s Charter
      and the Eclipse Foundation Bylaws, Membership Agreement, Eclipse Development Process, Eclipse
      Industry Working Group Process, or any policies of the Eclipse Foundation, the terms of the
      Eclipse Foundation Bylaws, Membership Agreement, process, or policy shall take precedence.</p>
    <h2>Membership</h2>
    <p>
      With the exception of Guest members as described below, an entity must be at least a <a
        href="/membership/become_a_member/membershipTypes.php#solutions"
      >Solutions Member</a> of the Eclipse Foundation, have executed the Eclipse Sparkplug
      Participation Agreement once defined, and adhere to the requirements set forth in this Charter
      to participate.
    </p>
    <p>There are three classes of Eclipse Sparkplug working group membership - Strategic,
      Participant, and Guest. Each of these classes is described in detail below.</p>
    <p>The participation fees associated with each of these membership classes is shown in the
      tables in Schedule A. These are annual fees, and are established by the Eclipse Sparkplug
      Steering Committee, and will be updated in this charter document accordingly.</p>
    <p>
      The fees associated with membership in the Eclipse Foundation are separate from any working
      group membership fees, and are decided as described in the <a
        href="/org/documents/eclipse_foundation-bylaws.pdf"
      >Eclipse Bylaws</a> and detailed in the <a
        href="/org/documents/eclipse_membership_agreement.pdf"
      >Eclipse Membership Agreement</a>.
    </p>
    <h2>Classes of Eclipse Sparkplug Membership</h2>
    <h3>Strategic members</h3>
    <p>Strategic Members are organizations that view IIoT standards and technologies as strategic to
      their organization and are investing significant resources to sustain and shape the activities
      of this working group.</p>
    <p>Strategic Members of the Eclipse Sparkplug working group must be at least a Solutions Member
      of the Eclipse Foundation, and have a minimum of 3 developers participating on Eclipse
      Sparkplug projects, and made at least one accepted commit or pull request to a Sparkplug
      project within the last 12months.</p>
    <h3>Participant members</h3>
    <p>Participant Members are typically organizations that deliver products or services based on
      open IIoT standards and technologies, or view IIoT standards and technologies as strategic to
      their organization. These organizations want to participate in the development and direction
      of an open IIoT ecosystem.</p>
    <p>Participant Members of the Eclipse Sparkplug working group must be at least Solutions Members
      of the Eclipse Foundation.</p>
    <h3>Guest members</h3>
    <p>Guest Members are organizations which are Associate members of the Eclipse Foundation who
      have been invited for one year, renewable, by the Steering Committee to participate in
      particular aspects of the activities of the Working Group. Typical guests include R&amp;D
      partners, universities, academic research centers, etc. Guests may be invited to participate
      in committee meetings at the invitation of the respective committee, but under no
      circumstances do Guest members have voting rights. Guest members are required to execute the
      Eclipse Sparkplug Participation Agreement once defined.</p>
    <h2>Membership Summary</h2>
    <table class="table table-bordered">
      <thead>
        <tr>
          <th>&nbsp;</th>
          <th>Strategic Member</th>
          <th>Participant Member</th>
          <th>Guest Member</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Member of the Steering Committee</td>
          <td>Appointed</td>
          <td>Elected</td>
          <td>N/A</td>
        </tr>
      </tbody>
    </table>
    <h2>Governance</h2>
    <p>This Eclipse Sparkplug working group is designed as:</p>
    <ul>
      <li>a member driven organization,</li>
      <li>a means to foster a vibrant and sustainable ecosystem of components and service providers,</li>
      <li>a means to organize the community of each project or component so that users and
        developers define the roadmap collaboratively.</li>
    </ul>
    <p>In order to implement these principles, the Steering Committee has been defined (also
      referred to as the &quot;Body&quot; below) as described below:</p>
    <h2>Steering Committee</h2>
    <h3>Powers and Duties</h3>
    <p>Steering Committee members are required to:</p>
    <ul>
      <li>Define and manage the strategy of the working group.</li>
      <li>Define and manage which Eclipse Foundation projects are included within the scope of this
        working group. This will require acceptance of the specification process by these projects.</li>
      <li>Define and manage the roadmaps.</li>
      <li>Review and approve this charter.</li>
      <li>Review and approve the participation agreement.</li>
      <li>Define and approve the specification process to be used by the Sparkplug specifications.</li>
      <li>Ensure that all Specification Projects operate in an open, transparent, and vendor-neutral
        fashion in compliance with the Specification Process.</li>
      <li>Approve specifications for adoption by the community.</li>
      <li>Work with the Eclipse IoT Project Management Committee (IoT PMC) to ensure that the
        specification process is complied with by all Sparkplug specification projects.</li>
      <li>Review and approve the trademark policy to ensure compatibility of independent
        implementations of specifications.</li>
      <li>Define the trademark policy and Trademark Usage Guidelines to be used by the Sparkplug
        specifications.</li>
      <li>Ensure the consistency of logo usage and other marketing materials.</li>
      <li>Define the budget and fees for all classes of working group membership each year.</li>
      <li>Invite Guest members to participate in the working group.</li>
    </ul>
    <h3>Composition</h3>
    <ul>
      <li>Each Strategic Member of the working group has a seat on the Steering Committee.</li>
      <li>Two seats are allocated to Participant Members. Participant Member seats are allocated
        following the Eclipse &quot;Single Transferable Vote&quot;, as defined in the Eclipse
        Bylaws.</li>
    </ul>
    <h3>Meeting Management</h3>
    <p>The Steering Committee meets at least twice a year.</p>
    <h2>Common Dispositions</h2>
    <p>The dispositions below apply to all governance bodies for this working group, unless
      otherwise specified. For all matters related to membership action, including without
      limitation: meetings, quorum, voting, electronic voting action without meeting, vacancy,
      resignation or removal, the terms set forth in Section 6 of the Eclipse Foundation Bylaws
      apply.</p>
    <h3>Good Standing</h3>
    <p>A representative shall be deemed to be in Good Standing, and thus eligible to vote on issues
      coming before the Body they participate in, if the representative has attended (in person or
      telephonically) a minimum of three (3) of the last four (4) Body meetings (if there have been
      at least four meetings). Appointed representatives on the Body may be replaced by the Member
      organization they are representing at any time by providing written notice to the Steering
      Committee. In the event a Body member is unavailable to attend or participate in a meeting of
      the Body, they may send a representative and may vote by proxy, which shall be included in
      determining whether the representative is in Good Standing. As per the Eclipse Foundation
      Bylaws, a representative shall be immediately removed from the Body upon the termination of
      the membership of such representative&rsquo;s Member organization.</p>
    <h3>Voting</h3>
    <p>For actions (i) requesting that the Eclipse Foundation Board of Directors approve a
      specification license; (ii) approving specifications for adoption; (iii) amending the terms of
      the working group&rsquo;s Participation agreement; (iv) approving or changing the name of the
      working group; and (v) approving changes to annual Member contribution requirements; any such
      actions must be approved by no less than two-thirds (2/3) of the representatives in Good
      Standing represented at a committee meeting at which a quorum is present.</p>
    <h3>Term and Dates of elections</h3>
    <p>All representatives shall hold office until their respective successors are appointed or
      elected, as applicable. There shall be no prohibition on re-election or re-designation of any
      representative following the completion of that representative&rsquo;s term of office.</p>
    <h4>Strategic Members</h4>
    <p>Strategic Members Representatives shall serve in such capacity on committees until the
      earlier of their removal by their respective appointing Member organization or as otherwise
      provided for in this Charter.</p>
    <h4>Elected representatives</h4>
    <p>Elected representatives shall each serve one-year terms and shall be elected to serve from
      April 1 to March 31 of each calendar year, or until their respective successors are elected
      and qualified, or as otherwise provided for in this Charter. Procedures governing elections of
      Representatives may be established pursuant to resolutions of the Steering Committee provided
      that such resolutions are not inconsistent with any provision of this Charter.</p>
    <h3>Meetings Management</h3>
    <h4>Place of meetings</h4>
    <p>All meetings may be held at any place that has been designated from time-to-time by
      resolution of the corresponding Body. All meetings may be held remotely using phone calls,
      video calls or any other means as designated from time-to-time by resolution of the
      corresponding Body.</p>
    <h4>Regular meetings</h4>
    <p>No Body meeting will be deemed to have been validly held unless a notice of same has been
      provided to each of the representative in Good Standing at least thirty (30) calendar days
      prior to such meeting, which notice will identify all potential actions to be undertaken by
      the Body at the Body meeting. No representative will be intentionally excluded from Body
      meetings and all representatives shall receive notice of the meeting as specified above;
      however, Body meetings need not be delayed or rescheduled merely because one or more of the
      representatives cannot attend or participate so long as at least a quorum of the Body is
      represented at the Body meeting. Electronic voting shall be permitted in conjunction with any
      and all meetings of the Body the subject matter of which requires a vote of the Body to be
      delayed until each such representative in attendance thereat has conferred with his or her
      respective Member organization as set forth in Section Voting above.</p>
    <h4>Actions</h4>
    <p>The Body may undertake an action only if it was identified in a Body Meeting notice or
      otherwise identified in a notice of special meeting.</p>
    <h3>Invitations</h3>
    <p>The Body may invite any member to any of its meetings. These invited attendees have no right
      of vote.</p>
    <h3>Sparkplug Working Group Annual Participation Fees Schedule A</h3>
    <p>The following fees have been established by the Sparkplug Steering Committee. These fees are
      in addition to each participant&rsquo;s membership fees in the Eclipse Foundation.</p>
    <h4>Sparkplug Strategic Member Annual Participation Fees</h4>
    <p>Strategic members are required to execute the Sparkplug Participation Agreement.</p>
    <p>Strategic members are required to commit to three (3) years of membership.</p>
    <table class="table table-bordered">
      <thead>
        <tr>
          <th>Corporate Revenue</th>
          <th>Annual Fees</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Annual Corporate Revenues greater than $1 billion</td>
          <td>$20,000</td>
        </tr>
        <tr>
          <td>Annual Corporate Revenues greater than $500 million but less than or equal to $1
            billion</td>
          <td>$15,000</td>
        </tr>
        <tr>
          <td>Annual Corporate Revenues greater than $100 million but less than or equal to $500
            million</td>
          <td>$10,000</td>
        </tr>
        <tr>
          <td>Annual Corporate Revenues greater than $10 million but less than or equal to $100
            million</td>
          <td>$5,000</td>
        </tr>
        <tr>
          <td>Annual Corporate Revenues less than or equal to $10 million</td>
          <td>$1,500</td>
        </tr>
      </tbody>
    </table>
    <h4>Sparkplug Participant Member Annual Participation Fees</h4>
    <p>Participant members are required to execute the Sparkplug Participation Agreement.</p>
    <table class="table table-bordered">
      <thead>
        <tr>
          <th>Corporate Revenue</th>
          <th>Annual Fees</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Annual Corporate Revenues greater than $1 billion</td>
          <td>$10,000</td>
        </tr>
        <tr>
          <td>Annual Corporate Revenues less than or equal to $1 billion but greater than $10
            million</td>
          <td>$5,000</td>
        </tr>
        <tr>
          <td>Annual Corporate Revenues less than or equal to $10 million</td>
          <td>$500</td>
        </tr>
      </tbody>
    </table>
    <h4>Sparkplug Guest Member Annual Participation Fees</h4>
    <p>Guest members pay no annual fees, but are required to execute the Sparkplug Participation
      Agreement.</p>
    <hr />
    <p>Charter Version History</p>
    <ul>
      <li>v1.0 created Nov 27, 2018.</li>
      <li>v2.0 created Dec 5, 2018</li>
      <li>v2.1 created Dec 14, 2018</li>
      <li>v2.2 created Feb 13, 2019</li>
    </ul>
  </div>
</div>