<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>2018 Annual Eclipse Community Report</title>
  </head>
  <body lang="EN-US">
    <div id="maincontent">
      <div id="midcolumn">
        <h1>2018 Annual Eclipse Foundation Community Report</h1>
        <p><strong>Published June 2018</strong></p>
        <p>Welcome to the seventh annual Eclipse Foundation Community Report. Comments and feedback on the style and content would 
          be appreciated at <a href="mailto:emo@eclipse.org">emo@eclipse.org</a>.
        </p>
        <p>Except where noted this report will cover the period April 1, 2017 to March 31, 2018.</p>
        <h2>Who We Are</h2>
        <p>The Eclipse Foundation&rsquo;s mission is summarized as follows:</p>
        <blockquote>The Eclipse Foundation&rsquo;s purpose is to advance our open source software projects and to 
          cultivate their communities and business ecosystems.
        </blockquote>
        <p>This makes the Eclipse community a unique open source community. Not only are we interested in building open 
          source code and community, but we are equally committed to creating a 
          commercially successful ecosystem around that code. This 
          combination of interests has been a key part of Eclipse's success.
        </p>
        <p>In short, our vision for the Eclipse community is</p>
        <blockquote>To be the leading community for individuals and organizations to collaborate on commercially-friendly open source.</blockquote>
        <h2>Strategy</h2>
        <p>The following are the strategic goals of the Eclipse Foundation for 2018, as established by the Board of Directors.</p>
        <ol>
          <li><strong>Be a leading open source community for emerging technologies. </strong>This remains as one of the continuous objectives of the Foundation.  
            The Eclipse Foundation staff and leading members of our community seek to attract projects and members in emerging technology domains.
          </li>
          <li><strong>Cultivate the growth of our projects, communities, and ecosystems.</strong> The creation of a large community of commercial and open 
            source organizations that rely on and/or complement Eclipse technology has been a major factor in the success of Eclipse. 
            Each time Eclipse technology is used in the development of a product, service, or application, the Eclipse community is 
            strengthened. Our goal in 2018 is to continue to focus our attention on the success of our working groups and on new Eclipse 
            projects that focus on particular industry segments such as IoT, web development, mobile, automotive, science, and finance. 
            The decision announced in September 2017 by Oracle to move the Java EE platform to Eclipse Foundation represents a significant 
            contribution to the Foundation.  In total, more than 40 new projects are in the process of being migrated to the Foundation; 
            this migration includes the engagement of a wide cross-section of both existing and new members.  
          </li>
          <li><strong>Create value for all its membership classes. </strong>The Eclipse Foundation serves many members whose 
            primary interest is leveraging Eclipse technologies in proprietary offerings such as products and services. 
            The Eclipse Foundation continues to focus its energies to ensure that commercial opportunity exists within the 
            Eclipse ecosystem. Committers are also members of the Eclipse Foundation and are in many ways its backbone.  
            Over the past year, improvements to the common build infrastructure (CBI) have been undertaken to provide 
            more robust and extensible build infrastructure to the key projects of interest to our members.  
            Improvements and enhancements have also been made to our development and intellectual management 
            processes, and the Foundation&rsquo;s Architecture Council has recently begun a major review of the 
            Eclipse Development Process, which is the cornerstone used by all our projects.
          </li>
          <li><strong>Be the leading community for developer tools.</strong> A goal of the Eclipse 
            Foundation is to define development platforms that are freely licensed and open source, and 
            that provide support for the full breadth of the application lifecycle in many disparate problem 
            domains and across the development and deployment platforms of choice, including embedded, desktop, 
            and the web.  Increasingly, support for multiple languages has also become a focal point.  
            The Eclipse community is best known for its desktop IDEs such as the Eclipse Java development 
            tools (JDT) and the C/C++ development tools (CDT). However, under the leadership of the Eclipse Cloud
            Development top-level project, the Eclipse Che, Eclipse Dirigible, Eclipse Orion, and just recently 
            Eclipse Theia projects are working on new tooling platforms for cloud-based and web development. 
          </li>
          <li><strong>Increase our membership revenue.</strong> Aligned with the four strategic goals listed above 
            is an explicit goal to increase the revenue generated directly from membership.  Specifically, 
            the goal is to both increase the number of new members as well as to increase the revenues from 
            existing members by demonstrating to members the value to them of increasing their level of membership.  
            In early 2018, the Jakarta EE Working Group was established, and has led to three new strategic memberships in the Foundation.  
            There is also a renewed effort to engage more enterprise organizations as members.  Also related to membership, 
            the Foundation introduced in late 2017 <a href="/org/workinggroups/mfi_program.php">Member Funded Initiatives</a> as a means for members, either directly or in 
            collaboration with other members, to engage with the Foundation to fulfill specific objectives of importance to the member(s).
          </li>
        </ol>
        <h2>Some Key Decisions</h2>
        <p>Over the past year, the Board has made a number of strategic decisions that will impact how Eclipse evolves in the future. A brief summary of these
          is listed below. More details can be found in the <a href="/org/foundation/minutes.php#board">minutes of the Board</a>, found on our website.
        </p>
        <ul>
          <li><i>Approval and adoption of Eclipse Public License 2.0.</i> In August, 2017, the Board approved 
            the <a href="/legal/epl-2.0/">Eclipse Public License 2.0</a>, and also approved the adoption of 
            the EPL v2.0 as the Foundation&rsquo;s default software license. The EPL v2.0 was also certified as a free 
            and open source license by the Free Software Foundation and the Open Source Initiative. 
          </li>
          <li><i>Updates to the Foundation&rsquo;s Anti-Trust Policy.</i>  In October, 2017, the Foundation made 
            updates to the <a href="/org/documents/Eclipse_Antitrust_Policy.pdf">Anti-Trust Policy</a>.  
            All members are encouraged to ensure they are familiar with the terms of this Policy.
          </li>
          <li><i>Creation of EE4J Top Level Project</i>.  The Board approved the creation of the 
            <a href="https://projects.eclipse.org/projects/ee4j/charter">Eclipse Enterprise for Java (EE4J) top 
            level project </a>in October, 2017.  This top level project is the top level project for the 40+ projects 
            being brought to the Foundation as part of the donation by Oracle of Java EE to the Foundation.  
            The Executive DIrector subsequently approved the creation of the <a href="https://jakarta.ee/about/">Jakarta EE Working Group</a> 
            in March, 2018, which is the working group focused on the successful transition of Java EE to the Foundation, and to drive the 
            new Jakarta EE brand forward.
          </li>
          <li><i>Adjustment of Annual Enterprise Membership Fees</i>.  In January, 2018, the Board adjusted the 
            <a href="/membership/become_a_member/membershipTypes.php">annual membership fees</a> associated with 
            the Enterprise Membership in the Foundation.  The move was made to make the Enterprise Membership 
            level of membership more attractive to Enterprises.
          </li>
          <li><i>Adoption of CloudBees Jenkins Enterprise</i>.  In February, 2018, the Board supported the EMO&rsquo;s 
            proposal to adopt CloudBees Jenkins Enterprise for use by staff and project committers.  
            The adoption of this technology paves the way for the Foundation to improve and enhance its 
            Common Build Infrastructure, and is expected to be rolled out in the third quarter of 2018. 
          </li>
        </ul>
        <h2>Membership</h2>
        <p>As of April 30, 2018, the Eclipse Foundation has twelve (12) strategic members, including CA Technologies, CEA List, 
          Fujitsu, IBM, itemis AG, Obeo, Oracle, Payara Services, Red Hat, Robert Bosch GmBH, SAP, and Tomitribe.  
        </p>
        <p>Of note, the Eclipse Foundation also counts over 1500 committers.  Committers are entitled to membership in 
          the Foundation, and play a valuable role in the Eclipse Foundation governance, including representation on the 
          Eclipse Board and many working group steering committees.   
        </p>
        <p>The Foundation finished 2017 with 270 member companies. By the end of April 2018, that number 
          increased to 274 member companies. A total of 34 new companies joined as new members of the Foundation 
          from May 1, 2017 through April 30, 2018, including
        </p>
        <p>ADLINK Technology Inc., Astraea Inc, Baloise Holding AG, BTC Business Technology Consulting AG, 
          Calypso Networks Association, Castalia Solutions, CloudBees Inc., Cloudera Inc, Contact Software GmbH,
          Enalean SAS, Fujitsu Limited, GFOSS - Open Technologies Alliance, Hazelcast Inc, InfluxData, JavaPro, 
          JNBridge, LLC, Kynetics, Lightbend Inc, M3S Research Unit at the University of Oulu, Merantix GmbH, 
          Mindus SARL, Nanjing Glaway Software Co. Ltd, Orange S.A., Pacific Northwest National Laboratory (PNNL), 
          Paranor Engineering AG, PRFC, Skymind Inc., The University of York, toem GmbH, Tomitribe Corporation, 
          TUEV SUED Auto Service GmbH, University of L' Aquila, University of Zagreb Faculty of Electrical Engineering and Computing (FER), V2COM. 
        </p>
        <h3>Working Groups</h3>
        <p>The recruitment of new projects and members has been greatly assisted by the strategy of creating <a href="/org/workinggroups/">Eclipse working groups</a>. 
          As participation in working groups grows, our membership has grown and diversified into different industries such as automotive, aerospace, 
          geospatial, and the Internet of Things. 
        </p>
        <p><strong>Internet of Things (IoT) </strong>The Eclipse IoT Working Group is a community of organizations and individuals building 
          open source technology that is used to build IoT solutions. Eclipse IoT has 34 different open source projects and 42 working group members. 
          The technology portfolio include technology for embedded constrained devices, IoT gateways, and IoT cloud platforms.
        </p>
        <p>New members of the Eclipse IoT Working Group in the past 12 months include: ADLINK Technology, Cloudera, CONTACT Software, 
          DB Systel, InfluxData, Intel, Kichwa Coders, Nokia, Orange, SAP, V2COM
        </p>
        <p>A number of new projects joined the Eclipse IoT community in the past year, including</p>
        <ul>
          <li>Eclipse Mita, a new programming language for embedded IoT devices;</li>
          <li>Eclipse Thingweb, an implementation of the Web of Things standard from the World Wide Web Consortium (W3C);</li>
          <li>Eclipse Cyclone DDS, an implementation of the OMG Data Distribution Service (DDS) standard;</li>
          <li>Eclipse Duttile, an open and shared Agile/Lean methodology that links the tools and utilities available in the Eclipse IoT ecosystem;</li>
          <li>Eclipse Kuksa, a cloud platform that interconnects a wide range of vehicles to the cloud via in-car and internet connections;</li>
          <li>Eclipse HIP, a Hierarchical IoT Protocol (HIP) designed to increase the scalability and interoperability of large scale IoT deployments;</li>
          <li>Eclipse fog05, a project that aims at providing an open source, scalable, fog computing platform, to virtualize concerns 
            like &ldquo;compute,&rdquo;  &ldquo;storage,&rdquo; and &ldquo;communication.&rdquo;
          </li>
        </ul>
        <p>In an effort to provide integrated &ldquo;stacks&rdquo; of IoT frameworks and runtimes, a new sub-committee of the 
          IoT Working Group focusing on integration topics was formed at the end of 2017. It is tasked with facilitating 
          cross-project communication and synchronization of the Eclipse IoT projects&rsquo; roadmaps and APIs.
        </p>
        <p>The Eclipse IoT Working Group continues to undertake a number of community outreach and development programs, including the following:</p>
        <ul>
          <li>In April 2017, Eclipse IoT launched a new &ldquo;<a href="https://iot.eclipse.org/testbeds/">Open IoT Testbeds</a>&rdquo; program. 
            These testbeds are collaborations between vendors and open source communities such as Eclipse to demonstrate and 
            test commercial and open source components needed to create specific industry solutions. Two testbeds (Asset Tracking Management, 
            and Production Performance Management) were released in 2017, and it is expected more testbeds will be created in 2018.
          </li>
          <li>Eclipse IoT Days were hosted in San Jose, USA; London, UK; Ludwigsburg, Germany; and Grenoble, France.</li>
          <li>The Open IoT Challenge attracted 78 proposals to build IoT solutions based on open source and open standards.</li>
          <li>In April 2017, the WG published the results of the third <a href="https://www.slideshare.net/IanSkerrett/iot-developer-survey-2016">IoT Developer Survey</a>. 
            The results of this survey have been viewed over 45,000 times on Slideshare. Like in previous years, the survey is
            often referenced and quoted in the industry. 
          </li>
          <li>The Eclipse IoT Working Group published a new white paper titled 
            <a href="https://iot.eclipse.org/resources/white-papers/Eclipse%20IoT%20White%20Paper%20-%20Open%20Source%20Software%20for%20Industry%204.0.pdf">Open Source Software for 
            Industry 4.0</a>.
          </li>
          <li>Eclipse IoT supported and promoted its members through participation at several trade shows, including: IoT Solutions World Congress, 
            Red Hat Summit, IoT World, Bosch Connected World, etc.
          </li>
          <li>Two new <a href="https://iot.eclipse.org/case-studies/">case studies</a> were published, showcasing what companies are building 
            with Eclipse IoT Technology.
          </li>
        </ul>
        <p><strong>LocationTech, </strong>hosted by the Eclipse Foundation, is a working group developing technologies with spatial awareness. 
          Now in its fifth year, <a href="https://www.locationtech.org/">LocationTech</a> includes 18 members and 13 projects.  
          During the past 12 months, a number of major milestones were achieved, besides significant releases by a 
          number of projects, a first simultaneous release was made.
        </p>
        <p>Strategic members of the LocationTech working group include Boundless, IBM, Oracle, and Red Hat. Participant solutions 
          members include: Astraea (joined as new member), Azavea, CCRi, OGC, Planet, RadiantSolutions, SensorUp, Terranado, and VividSolutions.
        </p>
        <p>Alll key projects (LocationTech GeoWave, LocationTech GeoGig, LocationTech GeoTrellis, LocationTech GeoMesa and LocationTech JTS) 
          were incorporated in the first LocationTech simultaneous release in November 2017.
        </p>
        <p>LocationTech was prominently represented at FOSS4G Global 2017 in Boston, the largest global open geospatial conference. 
          The working group and its members and projects were represented in all aspects of the program: talks, BOFs, workshops, code sprint, 
          exhibition area, and B2B sessions. On a regional level, LocationTech co-organized with URISA the CalGIS 2017 conference in May in 
          Oakland, in support of its members and community. A large part of the program was dedicated to featuring the various LocationTech projects.
        </p>
        <p>The <strong>Science Working Group</strong> (SWG), hosted by the Eclipse Foundation, works to solve the problems of making 
          science software interoperable and interchangeable. It was founded in June 2014 and is now in its third year of operation. 
          The <a href="https://science.eclipse.org/">Science working group</a> has grown to 15 members and 10 projects. 
          This report covers the period from March 2016 to March 2017.
        </p>
        <p>The group has the following members:</p>
        <ul>
          <li>Steering Committee members: Diamond Light Source, IBM, Itema, Kichwa Coders and Oak Ridge National Laboratory</li>
          <li>Participating members: Airbus, Clemson University, IFP Energies Nouvelles, iSencia Belgium, Lablicate, Open Analytics, 
            Skymind (new member), Soleil Synchrotron, Tech&rsquo;Advantage Group, The Facility for Rare Isotope Beams and Uppsala University
          </li>
        </ul>
        <p>In its fourth year, the following projects joined the working group:</p>
        <ul>
          <li>Eclipse Apogy provides a set of frameworks, Eclipse EMF models and Graphical User Interface components that simplify the 
            creation of the software required to operate a physical system.
          </li>
          <li>Eclipse Deeplearning4J provides a core set of components for building applications that incorporate AI and targets enterprises 
            looking to implement deep learning technologies.
          </li>
          <li>Eclipse XACC is a programming framework and specification enabling quantum acceleration in existing classical computing in a 
            manner that is language and hardware agnostic.
          </li>
        </ul>
        <p>The group hosted an Unconference at EclipseCon France in June 2017 with a special workshop dedicated to the Eclipse January 
          project. During the conference eight talks for the Science track were presented.
        </p>
        <p>Also in October 2017, the group coordinated their annual common release for some of its projects. The aim was to make 
          the working group more visible and ensure that some of the projects depending on each other were synchronized. 
          A joint press statement was released by the Eclipse Foundation and Oak Ridge National Labs on the topic of the release.
        </p>
        <p>At EclipseCon Europe 2017, Tracy Miranda gave an overview of the activities and projects of the Eclipse 
          Science Working Group under the title &ldquo;Science@Eclipse.&rdquo; The group also participated in the Unconference prior to the conference.
        </p>
        <p>In August 2017 the XACC project was featured in the Eclipse Newsletter.</p>
        <p>The <strong>Eclipse Long-Term-Support Working Group</strong> has become inactive. It is the Foundation&rsquo;s intention
          to dismantle the Eclipse Foundation hosted LTS infrastructure in the second quarter of 2018.
        </p>
        <p>The Eclipse <strong>openMDM</strong> (measured data management) Working Group wants to foster and support an open and 
          innovative ecosystem providing tools and systems, qualification kits, and adapters for standardized and vendor independent 
          management of measurement data in accordance with the ASAM ODS standard.
        </p>
        <p>Since May 2017, the <a href="https://www.openmdm.org/">openMDM working group</a> has changed its development 
          effort. The Eclipse Foundation has been tasked to contract a product manager as well as a standing development team funded by 
          the working group. While a few IP issues and code refactoring was holding up the team, good progress has been made. Regular 
          milestone releases are taking place and the working group is targeting a major release in the summer of 2018. The ASAM ODS 
          based software stack is now tested by various German OEMs and product companies and is likely to go into productive environments in 2018.
        </p>
        <p>openMDM technology is expected to become part of the <a href="https://wiki.eclipse.org/OpenADx">Eclipse openADx</a> initiative.</p>
        <p>The <a href="https://www.polarsys.org/">PolarSys Working Group</strong></a> focuses on providing 
          open source development solutions for Software and Systems Engineering. It has 25 members and 18 projects hosted on the PolarSys forge. 
          New members in the period include Glaway Software, PRFC, Malardalen University and University of York.
        </p>
        <p>During the past 12 months, PolarSys members continued to improve the <a href="https://www.polarsys.org/solutions">PolarSys 
          established solutions</a> (Capella and Papyrus) with a focus on product management and usability. PolarSys participated to 
          several conferences, including <a href="https://www.incose.org/symp2017/home">Incose Symposium</a>, 
          <a href="https://www.cs.utexas.edu/models2017/home">Models 2017</a>, and Euroforum in order to promote these solutions. 
        </p>
        <p>Airbus submitted a new project, PolarSys libIMS, the reference implementations of a standard middleware that serves as a guide for 
          interconnection of modules (software or hardware) with avionic test benches.  Polarsys B612, the open source font designed for readability, 
          received the Industry award from &ldquo;L&rsquo;Observeur du design&rdquo; and was references by several font referencing websites. 
          OpenCert and CHESS benefited from new efforts in the context of the AMASS european research project to create an open platform for safety 
          assurance and certification processes.
        </p>
        <p>During the year, PolarSys members dedicated some effort to improve SWTBot, and to start the definition of a PolarSys 
          release train as a way to enable medium-term support (~3 years) for the PolarSys solutions.
        </p>
        <p>This period was also the second year of operation of the <a href="https://www.polarsys.org/papyrus-ic/">Papyrus Industry Consortium</a>, 
          a PolarSys hosted industry consortium (IC) of 15 members dedicated to the advancement of the Papyrus ecosystem. The 
          Papyrus IC sponsored exhibit booths at different conferences including EclipseCon France, <a href="https://www.cs.utexas.edu/models2017/home">Models 2017</a>, 
          EclipseCon Europe, and Euroforum. All the committees of the Papyrus IC were active this year including the Steering Committee, 
          the Architecture Committee, the Product Management Committee, and the Research Committee. 
          The Product Management Committee continued its effort to organize <a href="https://www.polarsys.org/papyrus-ic/products">Papyrus Industry consortium Product Line</a> 
          and to design streamlined version of the Papyrus tool platform; the <a href="https://wiki.eclipse.org/Papyrus_for_Information_Modeling">Papyrus for Information Modeling</a> was 
          improved, and the plans for Papyrus UML Light and Papyrus SysML were defined. Finally, the consortium decided to fund the support of UML2 to make sure 
          that this foundation component is included in Eclipse Photon, and to ensure a transition to a management of this component by a larger part of the community.
        </p>
        <p>In June 2017, PolarSys members created the <a href="http://polarsys.org/capella/industry-consortium.html">Capella Industry Consortium</a> 
          to foster the development of the Capella ecosystem. The Capella IC has 6 members and welcomed Glaway Software, the first 
          PolarSys member from Asia in January 2018. During the predio, the Capella IC participated to several events, including a 
          Capella Day (co-located with EclipseCon France) as a launch event, <a href="https://www.incose.org/symp2017/home">Incose Symposium</a>, 
          Euroforum, and ERTS. The Capella IC also organized several <a href="https://www.youtube.com/channel/UCfgwbb2h10V3tgJ59sbGBnQ">webinars</a> 
          that attracted more than 350 participants from more than 130 organizations. 
        </p>
        <p>The Eclipse <strong>openPASS Working Group</strong> was initiated in August 2017 by 
          three German car manufacturers: BMW, Daimler, and Volkswagen. 
        </p>
        <p>The rise of advanced driver assistance systems and partially automated driving functions 
          leads to the need of virtual simulation to assess these systems and their effects. This especially refers, 
          but is not limited, to safety effects in traffic. There are various methods and tools for prospective 
          evaluation of safety systems with respect to traffic safety. Implementing the methodology by creating and 
          maintaining the SIM@openPASS platform will support reliability and transparency of results obtained by simulation. 
          The growing number, complexity, and variety of those vehicle functions make simulation an essential part in research, 
          development, testing, public rating, and homologation and is thus, directly or indirectly, required by all stakeholders 
          in vehicle safety, including manufacturers, suppliers, insurance companies, legislators, consumer advocates, academia.
        </p>
        <p>The <a href="https://wiki.eclipse.org/OpenPASS-WG">Eclipse openPASS Working Group</a> is the driving force behind 
          related development of core frameworks and modules. The Eclipse openPASS WG endeavors to make sure that 
          openPASS related Eclipse projects are in line with external important developments. The goal is a broad availability of different modules.
        </p>
        <p>Work on the related <a href="https://projects.eclipse.org/proposals/simopenpass">Eclipse simopenpass project</a> started 
          immediately after the creation of the working group and was mostly executed by the fourth founding member, 
          the Munich based company ITK Engineering GmbH. While there are still issues with the existing code base, the 
          car manufacturers have started installing and using the code base. A milestone release is now available, and 
          development and contributions from various company continue.
        </p>
        <p>For the future, we expect code consolidation and growth of the related ecosystem.</p>
        <p>In January 2018, the German T&Uuml;V S&uuml;d joined the openPASS Working Group.</p>
        <p>openPASS technology is expected to become part of the <a href="https://wiki.eclipse.org/OpenADx">Eclipse openADx</a> initiative.</p>
        <h2>Conferences and Events</h2>
        <p>The EclipseCon conferences, Eclipse Days, and DemoCamps are the primary events that the Eclipse Foundation supports to help foster 
          the strong personal relationships in the community that only face-to-face contact can create. We highly 
          encourage all Eclipse community members to participate in one or more of these events.
        </p>
        <p>EclipseCon France was held in June 2017 and had 250 attendees. The conference returned to its 
          original format as a full two-day event.  The Unconference, always well attended at EclipseCon France, 
          was held at a new location, and again was well attended. The conference was held during a significant heat wave in Toulouse, 
          and was run at the same time as the annual F&ecirc;te de la Musique festival that runs throughout Toulouse.   
        </p>
        <p>EclipseCon Europe celebrated its twelfth anniversary in October 2017, with 609 people in attendance.
          This event was co-located with the OSGi Community Event, and included a great collection of technical sessions, 
          BoFs, the IoT Playground, and included a fascinating talk by Roberto Di Cosmo of INRIA about their project to build &ldquo;a universal software knowledge base&rdquo;. 
          The conference also hosted a number of dedicated events, including the IoT Day, the CDT Summit, and Project Quality Day. 
          Feedback from the conference from both attendees and sponsors continues to be very strong, 
          with many stating this was the best EclipseCon conference yet.
        </p>
        <h2>Financials</h2>
        <p>The Eclipse Foundation&rsquo;s fiscal year end is December 31. Our auditors are the firm Deloitte &amp; Touche, LLP. The 
          Eclipse Foundation is incorporated in the State of Delaware, USA as a 501(c)6 not-for-profit. Our headquarters are located in Ottawa, Canada.  
          The Eclipse Foundation also has a wholly-owned German subsidiary, Eclipse Foundation Europe GmbH.  
        </p>
        <p>
          Membership renewals remained strong, and working group revenue and website advertising were both steady compared to 2016. 
          The organization continues to be on a solid financial footing, and the migration of Java EE to the Eclipse Foundation represents an 
          opportunity for new membership growth.  The financial impact of strategic membership is always significant to the Foundation. 
          We were pleased to have Fujitsu, Payara Services, and Tomitribe all join as strategic members in the first four months of 2018, 
          largely due to their participation in the new Jakarta EE working group.  This counterbalanced the impact of Ericsson 
          changing their membership from Strategic to Solutions members, and Codenvy&rsquo;s ceasing as a strategic member due to
          their acquisition by Red Hat in June, 2017.
        </p>
        <p>Looking forward to 2018, the Board has approved a budget forecasting a $0.2M loss.</p>
        <table class="table text-center">
          <tr>
            <th class="text-left">In US $ millions</th>
            <th class="text-center">2014</th>
            <th class="text-center">2015</th>
            <th class="text-center">2016</th>
            <th class="text-center">2017</th>
            <th class="text-center">2018 Budget</th>
          </tr>
          <tr>
            <td class="text-left">Revenue</td>
            <td>4.3</td>
            <td>4.9</td>
            <td>5.4</td>
            <td>5.6</td>
            <td>6.5</td>
          </tr>
          <tr>
            <td class="text-left">Expenses</td>
            <td>4.7</td>
            <td>4.0</td>
            <td>5.6</td>
            <td>5.7</td>
            <td>6.7</td>
          </tr>
          <tr>
            <td class="text-left">Net Income</td>
            <td>(0.4)</td>
            <td>0.0</td>
            <td>(0.2)</td>
            <td>(0.1)</td>
            <td>(0.2)</td>
          </tr>
        </table>
        <h2>Marketing and Brand Management</h2>
        <p>Oxygen Launch</p>
        <ul>
          <li>A new <a href="https://www.eclipse.org/oxygen/">Oxygen landing page</a> was created to promote the 12th annual simultaneous release from the Eclipse community.</li>
          <li>As part of the launch, six webinars were produced and recorded to promote some of the projects included in the Oxygen release. The series was well 
            received with over 30,000 Youtube views from launch in June 2017 to March 2018. 
          </li>
        </ul>
        <p>Eclipse Foundation Brand Evolution</p>
        <ul>
          <li>The Eclipse Foundation conducted a community brand perception survey in Q2 2017. The goal was to test the perceived 
            meaning of the Eclipse brand within our community and the greater developer community. The results were presented to the 
            Board and the general membership meeting.
          </li>
          <li>A new Eclipse Foundation logo was produced in March 2018 to create a visual identity distinct from 
            the Eclipse projects, notably the Eclipse Platform and Eclipse JDT. The logo was unveiled in April 2018.
            <br/><img class="img-responsive center-block padding-20" src="/images/reports/2018_eclipse_foundation_logo.png" />
          </li>
          <li>In conjunction with the introduction of the new Eclipse Foundation logo, a redesigned 
            <a href="https://www.eclipse.org/">www.eclipse.org</a> website was launched in April 2018. 
            The scope of work completed included an updated look and feel for the site, as well as new content 
            focused on better explaining the Foundation&rsquo;s overall mission and the role of working groups within the Eclipse ecosystem.
          </li>
        </ul>
        <p>Jakarta EE</p>
        <ul>
          <li>The Foundation and Jakarta EE working group developed and executed a major press and analyst relations campaign to 
            promote the Jakarta EE brand including a new Jakarta EE logo, the formation of the Jakarta EE working group, and the 
            results of an enterprise Java developer survey conducted by the Foundation. The Foundation engaged Flak42, an 
            expert press and analyst firm, to assist in the campaign.  
          </li>
          <li>The <a href="https://jakarta.ee/">jakarta.ee</a> website was launched on April 24, 2018, 
            and is intended to be the primary site for all activities related to the Jakarta EE community, as well as the working group.
          </li>
          <li>The Jakarta EE name was chosen through a community vote that saw over 7,000 votes cast.  The graphic for the logo was also chosen by
            community vote that saw over 2,000 votes cast. Both of these participation rates were significant, and the relatively fewer votes 
            seen for the graphic are largely attributed to the voting process was more involved as there were additional choices to be made. <br/>
            <img class="img-responsive center-block padding-20" src="/images/reports/2018_jakarta_ee_logo.png" width="300"/> 
          </li>
        </ul>
        <p>Simultaneous Releases for both Science and LocationTech Working Groups</p>
        <ul>
          <li>Both the Science and LocationTech working groups implemented simultaneous releases of their projects in September and November, 2017 respectively. 
            Both working groups used these simultaneous releases as a focal point for driving awareness and interest in key projects. 
            Both plan on making this an annual activity, similar to the Eclipse IDE&rsquo;s annual release.  
          </li>
        </ul>
        <p>Ongoing Marketing Research </p>
        <ul>
          <li>The Marketing team has been working to engage the community on behalf of our member organizations to find out insights on the marketplace. </li>
          <li>A <a href="https://jakarta.ee/news/2018/04/24/jakarta-ee-community-survey/">survey of over 1,800 Jakarta EE developers</a> was carried out, with results aligning with 
            the objectives and vision statement of the Jakarta EE working group.
          </li>
          <li>The fourth annual <a href="https://blog.benjamin-cabe.com/2018/04/17/key-trends-iot-developer-survey-2018">IoT developer survey</a> was conducted. The survey of over 500 individuals
            yielded insights on IoT solution trends, challenges and opportunities.
          </li>
        </ul>
        <p>Webinars</p>
        <ul>
          <li>The <a href="https://www.meetup.com/Virtual-Eclipse-Community-MeetUp/">Virtual Eclipse Community Meetup</a> (vECM) series was launched and was well received. 
            The vECM recordings received over 32,367 views from April 2017 to March 2018.
          </li>
        </ul>
        <p>Social Media</p>
        <ul>
          <li>Our <a href="https://www.youtube.com/channel/UCej18QqbZDxuYxyERPgs2Fw">YouTube channel</a> experienced strong growth with total views up by 
            53% from April 2017 to March 2018. During the same period, YouTube subscribers grew by 27%. 
          </li>
          <li>The Foundation&rsquo;s presence on Twitter, Facebook, and LinkedIn experienced positive growth over the year: 
            Twitter Followers +29%, Facebook Likes +2% and LinkedIn Group Members +3%.
          </li>
        </ul>
        <p>Eclipse Newsletter</p>
        <ul>
          <li>The <a href="https://www.eclipse.org/community/eclipse_newsletter/">Eclipse Community Newsletter</a> continues to grow in popularity. 
            The total number of subscribers grew by 26% to reach 233,000 total subscribers in March 2018.
          </li>
        </ul>
        <h2>Intellectual Property Management</h2>
        <p>During the time period spanning April 1, 2017 to March 31, 2018, the Eclipse Foundation received 2,926 requests for intellectual property review and 
          completed 2,499 reviews. This represents a massive spike in the demands made on the Eclipse IP Team over the previous period (1,933 and 1,894 respectively).
        </p>
        <p>The Eclipse Intellectual Property Policy was updated in 2016 to include two types of IP Due Diligence for the third-party software 
          used by open source projects hosted by the Eclipse Foundation. Type A Due Diligence involves a license certification only and 
          Type B Due Diligence provides our traditional license certification, provenance check, and code scan for various sorts of anomalies. 
          Prior to this change, project teams would have to wait until the full application of what we now call Type B Due Diligence was 
          complete before issuing a release. Now, a project team can opt to push out a Type A release after having all of their 
          third-party libraries license certified.
        </p>
        <p>Project teams appear to be enthusiastically taking advantage of this new type of due diligence. The rate by which 
          requests for Type B reviews arrive appears to have dropped somewhat over the last two reporting periods, but still 
          remains very strong (the statistical trend is still upwards) while the adoption of Type A is spiking.
        </p>
        <div class="thumbnail background-white text-center">
          <img class="img-responsive" src="/images/reports/2018_type-a_type-b.png" />
          <div class="caption">
            <p>Third party review requests (CQs) created by report year (April to March) </p>
          </div>
        </div>
        <p>As of the end of March 2018, we have 59 projects using Type A IP Due Diligence. All new projects are being directed to employ 
          Type A Due Diligence for all incubation releases and encouraged to defer the decision whether or not to switch to Type B 
          (license certification, provenance check, and code scan) until graduation. There is, of course, no specific 
          requirement to switch at graduation or ever, but we are actively encouraging project teams to defer the decision of 
          whether or not to switch from Type A until at least that point.
        </p>
        <div class="thumbnail background-white text-center">
          <img class="img-responsive" src="/images/reports/2018_top_usres_of_type-a.png" />
          <div class="caption">
            <p>Top users of Type A Third Party Due Diligence (Apr 2017 to Mar 2018)</p>
          </div>
        </div>
        <p>The Eclipse IoT and Technology Top Level Project together accounted for more half of the intellectual property 
          reviews initiated between April 1, 2017 and March 31, 2018. This aligns well with the rates of new project creation
          in those Top Level Projects (approximately 65% of all new projects created in in that time frame were created under 
          Eclipse Technology and Eclipse IoT Top Level Projects).
        </p>
        <div class="thumbnail background-white text-center">
          <img class="img-responsive" src="/images/reports/2018_cq_created_by_tlp.png" />
          <div class="caption">
            <p>CQ Created by Top Level Project between April 1, 2017 and March 31, 2018)</p>
          </div>
        </div>
        <p>As the primary incubator for new projects, it&rsquo;s natural that the Eclipse Technology Top Level Project is the 
          leading source of requests for intellectual property review. The breakdown by project shows a great deal more diversity 
          than in previous years (while the Eclipse Technology Top Level Project accounts for most of the IP reviews, 
          only two Eclipse Technology Projects are in the top top ten consumers).The Eclipse Keti (IoT) project stands out as
          the high consumer of intellectual property resources. The rapid growth of the IoT project space continues to 
          translate into high individual project representation in the &ldquo;top-ten&rdquo; consumers of intellectual property resources.
        </p>
        <div class="thumbnail background-white text-center">
          <img class="img-responsive" src="/images/reports/2018_cqs_created_by_projects.png" />
          <div class="caption">
            <p>CQs created by Projects between April 1, 2017 and March 31, 2018</p>
          </div>
        </div>
        <h2>Innovation</h2>
        <h3>Photon Simultaneous Release</h3>
        <p>In June 2017 the Eclipse community shipped Eclipse Oxygen, its twelfth annual simultaneous release. Including previous 
          releases of the Eclipse Platform, this was the fourteenth release that was shipped on time, to the day. A total of 83 
          projects participated in the Oxygen simultaneous release. The release comprises 71 million lines of code produced by 
          283 committers from 46 member companies, with contributions from 417 non-committer contributors.
        </p>
        <div class="thumbnail background-white text-center">
          <img class="img-responsive" src="/images/reports/2018_simultaneous-release-metrics.png" />
          <div class="caption">
            <p>Simultaneous Release Metrics (current year final numbers pending)</p>
          </div>
        </div>
        <p>Six projects joined the Eclipse Photon Simultaneous Release: the Eclipse aCute and Eclipse TM4E projects add support for C# 
          language and TextMate&reg; grammars to the Eclipse IDE; the Eclipse RedDeer project adds new options for testing SWT and 
          RCP applications; and the Eclipse Collections, EclipseLink, and Eclipse Yasson projects add new runtimes.
        </p>
        <p>The project teams from Eclipse EGerrit, Eclipse Sphinx, Eclipse Orion, and Eclipse Subversive SVN Team Provider 
          decided to drop out of the simultaneous release. Perhaps the biggest implication of this list of dropped projects is 
          that it is no longer possible to provide out-of-the-box support for SVN. In practice, none of our packages include
          this support anyway, so developers who require that functionality must go to Eclipse Marketplace to add it; these 
          developers will likely find an alternative such as SubClipse.
        </p>
        <p>This predictable release schedule has been a key part of the Eclipse Community's success over the years, 
          and is an important part of the success of the Eclipse ecosystem.
        </p>
        <h3>Other</h3>
        <p>The number of proposals that we receive year-after-year is on an upward trend. We&rsquo;re off 
          to a very good start in 2018, having received 27 new project proposals in 2018Q1.
        </p>
        <div class="thumbnail background-white text-center">
          <img class="img-responsive" src="/images/reports/2018_project-proposals-by-year.png" />
          <div class="caption">
            <p>New Project Proposals by Year</p>
          </div>
        </div>
        <p>The following projects were proposed at the Eclipse Foundation in 2017:</p>
        <ul>
          <li><strong>Eclipse Ditto</strong> provides a ready-to-use functionality to manage the state of Digital Twins.</li>
          <li><strong>Eclipse XACC</strong> provides the software interfaces and infrastructure required by domain computational scientists 
          to offload computationally intractable work to an attached quantum accelerator.</li>
          <li><strong>Eclipse aCute</strong> project provides development tools for C# and .NET Core applications in the Eclipse IDE.</li>
          <li><strong>Eclipse BaSys 4.0</strong> develops a basic system (similar to AUTOSAR) for production plants that implements the efficient 
          reconfiguration of production processes.</li>
          <li><strong>Eclipse Bridge.IoT</strong> enables harmonization across IoT platforms, along with an IoT marketplace for platforms 
          and services as providers to trade available resources.</li>
          <li><strong>Eclipse Ceylon</strong> encompasses development of the Ceylon language itself, the compiler frontend, the compiler
           backends for Java and JavaScript, the module system, the command-line tooling, the SDK, and the Eclipse-based IDE.</li>
          <li><strong>Eclipse CogniCrypt</strong> produces  a set of Eclipse Platform plug-ins that assist developers with the generation 
          of secure crypto-integration code; perform static analysis of existing crypto-integration code; suggest better/more secure 
          integrations via quick fixes; and alert developers of security breaches of cryptographic algorithms.</li>
          <li><strong>Eclipse Cyclone</strong> implements the OMG Data Distribution Service (DDS) specification and the related 
          specifications for interoperability. </li>
          <li><strong>Eclipse Deeplearning4J</strong> facilitates building deep learning applications covering the whole 
          lifecycle of building deep learning products from data preprocessing to deployment.</li>
          <li><strong>Eclipse Duttile</strong> produces a shared Agile/Lean methodology that links the tools and utilities 
          available in the Eclipse IoT ecosystem.</li>
          <li><strong>Eclipse eLogbook@openK</strong> provides a digital logbook for Distribution System Operators (DSO).</li>
          <li><strong>Eclipse Grizzly</strong> NIO framework has been designed to help developers to take advantage of the Java&trade; NIO API.</li>
          <li><strong>Eclipse IoT-Testware</strong> supports conformance, interoperability, robustness, and security testing of IoT devices
           and services via TTCN-3 test suites and cases.</li>
          <li><strong>Eclipse Jersey</strong> is a REST framework that provides the reference implementation for JAX-RS, and extends the 
          toolkit with additional features and utilities to further simplify RESTful service and client development.</li>
          <li><strong>Eclipse Kuksa</strong> unifies technologies across the vehicle, IoT, cloud, and security domains in order to provide 
          an open source ecosystem to developers addressing challenges of the electrified and connected vehicle era.</li>
          <li><strong>Eclipse Mita</strong> provides a new programming language for the embedded IoT including editor/IDE, compiler 
          and an extensive test-suite.</li>
          <li><strong>Eclipse Mojarra</strong> is the Reference Implementation for JavaServer Faces (JSF), a Java specification for
           building component-based user interfaces for web applications. </li>
          <li><strong>Eclipse OpenJ9</strong> is a high performance, enterprise calibre, flexibly licensed, openly governed cross 
          platform Java Virtual Machine.</li>
          <li><strong>Eclipse OpenMQ</strong> (Open Message Queue) is a complete message-oriented middleware platform, offering 
          high quality, enterprise-ready messaging.</li>
          <li><strong>Eclipse Ozark</strong> provides an implementation of action-based MVC specified by MVC 1.0 (JSR-371). 
          It builds on top of JAX-RS and currently contains support for RESTEasy, Jersey, and CXF with a well-defined SPI for other implementations.</li>
          <li><strong>Eclipse Picasso</strong> provides a web application written in Python for rendering standard 
          visualizations useful for training convolutional neural networks.</li>
          <li><strong>Eclipse Project for JAX-RS</strong> provides a Java programming language API spec that
           provides support in creating web services according to the Representational State Transfer (REST) architectural pattern.</li>
          <li><strong>Eclipse Project for JMS</strong> (Java Message Service) provides a Java Message Oriented 
          Middleware API for sending messages between two or more clients.</li>
          <li><strong>Eclipse Project for JSON Processing</strong> (JSON-P) is an API to process (e.g. parse, 
          generate, transform, and query) JSON documents. </li>
          <li><strong>Eclipse Project for WebSocket</strong> specifies the API that Java developers can use when 
          they want to integrate WebSockets into their applications.</li>
          <li><strong>Eclipse SCAVA</strong> assembles a knowledge base of data collected from open-source 
          repositories (code version management systems, issue trackers, continuous integration systems, and 
          discussion forums in natural language) that is used to query for specific answers when the programmer is confronted with (a) 
          a design decision or (b) a code or design smell. </li>
          <li><strong>Eclipse SUMO</strong> provides an open microscopic and mesoscopic traffic simulator.</li>
          <li><strong>Eclipse TEA</strong> is a tasking orchestration engine that can be run from within the 
          Eclipse IDE or headlessly.</li>
          <li><strong>Eclipse Thingweb</strong> provides an open-source toolkit for the Web of Things ecosystem with 
          modular implementations of the technological building blocks standardized by the W3C.</li>
          <li><strong>Eclipse Tyrus</strong> provides a reference implementation for Java API for WebSocket.</li>
          <li><strong>Eclipse Xpect</strong> supports testing Xtext languages and the process of designing such languages.</li>
          <li><strong>Eclipse Xsemantics</strong> provides a DSL for writing rules for languages implemented in Eclipse Xtext.</li>
          <li><strong>Eclipse GEMOC Studio</strong> offers a framework for designing and integrating EMF-based modeling languages. </li>
          <li><strong>PolarSys LibIMS</strong> provides a fully open-sourced reference implementation of the Eurocae ED-247 specification.</li>
          <li><strong>Eclipse RedDeer</strong> is an extensible framework used for development of automated SWT/Eclipse RCP 
          tests that interact with application&rsquo;s user interface.</li>
          <li><strong>Eclipse sensiNact</strong> builds a software platform enabling the collection, processing, and 
          redistribution of data relevant to improving the quality of life of urban citizens.</li>
          <li><strong>Eclipse SystemFOCUS</strong> is an IDE that targets fast and meticulous development of embedded software.</li>
        </ul>
        <h2>Research</h2>
        <p>Since 2013, the Foundation increased its collaboration with academics, researchers, and industries by 
        participating in several European projects. The Foundation&rsquo;s main objective in these projects is to 
        help the consortium engaged in each project build an open source platform and community around their respective EU research project.</p>
        <p>The positive side effects are</p>
        <ul>
          <li>Eclipse Foundation&rsquo;s recognition as an expert in building open source communities </li>
          <li>The opportunity to bring new academic and industrial members to the Foundation</li>
          <li>The opportunity to promote and disseminate existing Eclipse projects into such international consortia</li>
        </ul>
        <p>As of March, 2018, Eclipse Foundation Europe is a research partner in seven large European research projects.</p>
        <ul>
          <li>Amalthea4Public: Started in fall 2013.  This project is implementing an Open Platform for Embedded Multicore Systems. 
          This project will be winding up in the fall of 2018.  </li>
          <li>AGILE-IoT: Started in January 2016. This implementation is building an Adaptive &amp; Modular Gateway for 
          the Internet of Things (IoT).</li>
          <li>AMASS: Started in April 2016. This project is creating an open tool platform, ecosystem, and self-sustainable 
          community for assurance and certification of Cyber-Physical Systems (CPS) in the largest industrial vertical markets 
          including automotive, railway, aerospace, space, energy.</li>
          <li>BaSys 4.0: Started in fall 2016. The goal of BaSys 4.0 is the creation of an Industry 4.0 base system for factories 
          to ensure efficient transformations in the production processes.</li>
          <li>Crossminer: Started in January 2017. CROSSMINER enables the monitoring, in-depth analysis, and evidence-based 
          selection of open source components, and facilitates knowledge extraction from large open-source software repositories.</li>
          <li>RobMoSys: RobMoSys envisions an integrated approach built on top of the current code-centric robotic platforms,
           by applying model-driven methods and tools.</li>
          <li>Appstacle: Started in April 2017. APPSTACLE stands for open standard APplication Platform for carS and 
          TrAnsportation vehiCLEs. Appstacle aims to establish a standard car-to-cloud connection, open for external 
          applications and the use of open source software wherever possible without compromising safety and security. </li>
        </ul>
        <p>Eclipse Foundation Europe also created a research consortium named GEMOC. This open and international 
        initiative aims to coordinate and disseminate the research results regarding the support of the coordinated use 
        of various modeling languages that will lead to the concept of the globalization of modeling languages.</p>
        <h2>Committer and Project Community</h2>
        <p>Our number of committers grew past 1,500 in early 2018.</p>
        <div class="thumbnail background-white text-center">
          <img class="img-responsive" src="/images/reports/2018_community.png" />
        </div>
        <p>The EMO is committed to providing a robust and dependable server and software infrastructure, including professional support staff 
        to assist projects and working groups in achieving their goals effectively and efficiently, as well as steadily 
        improving services to the Eclipse committers and the projects they work on. Here is a sampling of some 
        infrastructure metrics, plus some improvements we've put into place over the past year.</p>
        <ul>
          <li><strong>Servers and Infrastructure: </strong>Core service availability (Git, www.eclipse.org, and Bugzilla) for 2017 
          was 99.983%, up from 99.958% in 2016. A recurring pattern of rapid incoming download requests, every Tuesday night, 
          transformed itself into a non-malicious DDoS attack and exposed the age, and capability limits of our load balancers 
          and firewalls. New hardware has been acquired and will be provisioned in 2018. Also, stability issues with Nexus and 
          our database systems were addressed early in the year.</li>
          <li><strong>Common Build Infrastructure:</strong> In 2017 we began phasing out Hudson in favour of Jenkins as the CI
           tool of choice. We&rsquo;ve also planned for the deployment of clusterized and pipelined CI/CD, with Cloudbees Jenkins 
           Enterprise, running on Red Hat OpenShift. The Platform/SWT native fragment builds have moved to Eclipse CBI.</li>
          <li><strong>Bandwidth and performance</strong>: Our bandwidth cap was increased significantly, from 250 Mbps to 350 Mbps, 
          in 2016. In 2017, a new transparent mirroring system was put in place to allow retrieving files from local mirrors even 
          when a request is made to the Eclipse download servers directly. With this change, we&rsquo;ve reduced our bandwidth cap 
          back to 250 Mbps, thus reducing costs.</li>
          <li><strong>Developers, Developers, Developers:</strong> Eclipse&rsquo;s account database now sits at 380,000 accounts, 
          with an average growth rate of approximately 5000 new accounts each month (up from an average of 3000/mo in 2017).</li>
        </ul>
      </div>
    </div>
  </body>
</html>