<!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>2015 Annual Eclipse Community Report</title>

</head>

<body lang="EN-US">

<div id="maincontent">
	<div id="midcolumn">
	
		<h1>2015 Annual Eclipse Community Report</h1>
		<br/><strong>Published June 2015</strong><br/><br/>

<p>Welcome to the fourth annual Eclipse Foundation Community Report.
Comments and feedback on the style and content would be appreciated
at emo@eclipse.org.</p>
<p>Except where noted this report will cover the period April 1, 2014
to March 31, 2015. 
</p>
<h2>Who We Are</h2>
<p>Our Bylaws define the Eclipse Foundation in this way:</p>
<p style="margin-left: 2cm"><i>The Eclipse technology is a
vendor-neutral, open development platform supplying frameworks and
exemplary, extensible tools (the &quot;Eclipse Platform&quot;).
Eclipse Platform tools are exemplary in that they verify the utility
of the Eclipse frameworks, illustrate the appropriate use of those
frameworks, and support the development and maintenance of the
Eclipse Platform itself; Eclipse Platform tools are extensible in
that their functionality is accessible via documented programmatic
interfaces. The purpose of Eclipse Foundation Inc., (the &quot;Eclipse
Foundation&quot;), is to advance the creation, evolution, promotion,
and support of the Eclipse Platform and to cultivate both an open
source community and an ecosystem of complementary products,
capabilities, and services.</i></p>
<p>This makes the
Eclipse community a unique open source community. Not only are we
interested in building open source code, 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>
<p style="margin-left: 2cm"><i>To be the leading community for
individuals and organizations to collaborate on commercially-friendly
open source software </i>
</p>
<h2>Strategy</h2>
<p>The following are the strategic goals of the Eclipse Foundation
for 2015, as set by the Board of Directors.</p>
<ol>
	</li>
<p><b>Be the developer platform of
	choice.</b> The goal of Eclipse is to define a development platform
	that is freely licensed, open source and provides 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. 
	</p>
	</li>
<p><b>Promote the Eclipse community
	as the place to collaborate in emerging technology domains.
	</b>Obviously this is an ambitious goal, as new technology domains
	and trends are constantly evolving. The Eclipse Foundation staff and
	leading members of our community work steadily to recruit new
	projects in emerging technology areas. 
	</p>
	</li>
<p><b>Recruit and foster Eclipse
	projects in those domains. </b><span style="font-weight: normal">It
	is an important part of the Foundation's role to be recruiting new
	projects in areas outside of Eclipse's historical strengths in tools
	and IDEs. </span>Some recent successes would include the surge in
	new projects related to the model-driven tools for systems
	engineering, the Internet of Things (IoT), science, and
	location-aware or geospatial technologies.</p>
	</li>
<p><b>Create value for all its
	membership classes. </b>The Eclipse Foundation serves many members
	whose primary interest is leveraging Eclipse technologies in
	proprietary offerings such as products and services. The Eclipse
	Foundation will focus its energies to ensure that commercial
	opportunity exists within the Eclipse ecosystem. Look for continuous
	improvements to Eclipse Marketplace, and for other initiatives that
	benefit members. <br><br>Committers are also members of the Eclipse
	Foundation and are in many ways its backbone. The Eclipse Foundation
	and its staff will continue to look for opportunities to improve
	services to its project community throughout the year. Look for
	continuous improvements to our web, download, code management, build
	and other key components of project infrastructure in 2015. 
	</p>
	</li>
<p><b>Foster growth of our
	communities and ecosystems.</b> 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 2015 is to focus our attention on the
	creation of working groups and new Eclipse projects that focus on
	particular industry segments such as IoT, web development, mobile,
	automotive, science, and finance. 
	</p>
	</li>
<p><b>Continue to grow a diversified revenue model.</b>
	Reliance on a single source of revenue to fund the Foundation puts
	us at greater risk of being negatively impacted by industry specific
	business cycles. It is a goal of the Eclipse Foundation to ensure
	revenue sources from multiple types of organizations, and seek other
	sources such as events and sponsorships. 
	</p>
</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="http://www.eclipse.org/org/foundation/minutes.php">minutes</a>
of the Board, found on our website.</p>
<ul>
	</li>
<p><i>Development Funding. </i>The
	Eclipse Foundation has begun to accept targeted corporate
	contributions to fund enhancements to the Eclipse Java and Java EE
	IDEs. As an initial success in January 2015 Ericsson provided the
	Eclipse Foundation the funds to enhance the Eclipse platform that
	resulted in SWT, Mac platform, GTK3, and PDE improvements available
	in the Mars release.</p>
	</li>
<p><i>FOSS4G NA. </i>Working with the LocationTech and OSGeo
	communities, the Eclipse Foundation produced FOSS4G North America,
	co-located with EclipseCon North America. Adding a fourth conference
	to our event schedule was a big undertaking for the Foundation
	staff, and we were delighted with the positive feedback we received
	from the open source geospatial community. 
	</p>
</ul>
<h2>Membership</h2>
<p>The Eclipse Foundation welcomed three new strategic members to the
Board of Directors in the past year. In June 2014, Codenvy became a
strategic member and committed to creating the Eclipse Che project to
host their cloud-based development tooling platform. In the first
quarter of 2015, CEA List and Red Hat both increased their membership
level from Solutions to Strategic Developer. CEA List leads the
Papyrus modeling project, and is deeply involved in the PolarSys
Working Group. Red Hat leads the Thym and Linux Tools projects, and
invests numerous resources in the Eclipse and Web Tools Platform
projects.</p>
<p>The Foundation finished 2014 with a total of 222 members. By the
end of March 2015, that number had increased to 230. A total of 55
companies joined as new members of the Foundation in 2014 and Q1
2015. These companies include, All4Tec, Bertrandt, BonitaSoft, BTC,
Canonical Group Limited, Canoo Engineering AG, Cluster Edit,
Codefresh, Codenvy, Commonwealth Computer Research Inc, Contrast
Security, Daimler AG, DB NETZ AG, dc-square GmbH, Deutsche Telekom,
Diamond Light Source, DocDoku, Epos Cat GMBH, ESI, Esito AS,
EUROFORUM Deutschland SE , GadgetKeeper, Gigatronics Ingolstadt GmbH,
Glob3 Mobile Inv, Gradle Inc, HighQsoft ,Industrial Internet
Consortium, IS2T, Kichwa Coders, Litmus Automation, Logi Cals GmbH,
Mapbox, Michigan State University, Mousebird Consulting, Mueller BBM
VibroAkustik Systeme GmbH, Nspyre BV, OpenHab UG, Ordnance Survey,
Peak Solution GmbH, Piterion GmbH, Planet Labs, Rapicorp, Science +
Computing, Software Quality Systems, Solair srl, Tata Motors, TECH
Advantage, Universite Joseph Fourier, University of Calgary, Uppsala
University, UT-Battelle, Vaadin, Volkswagon of America, Inc, WSO2 Inc
and Zeligsoft.</p>

<h3>Working Groups</h3>
<p>The recruitment of new projects and members has been greatly
assisted by the strategy of creating working groups (WG). As
participation in WGs grows, our membership has grown and diversified
into different industries such as automotive, aerospace, geospatial,
and the Internet of Things.</p>

<ul>

<li><b>Automotive.</b> Activity
	in this group has been low in the past year, but has started up
	again recently. Most notable are the activities driven by the
	Almathea4Public research project, which has led to the creation of
	the APP4MC project proposal. The APP4MC project aims to provide a
	tool chain environment and de-facto standard to integrate tools for
	all major design steps in the multi- and many-core development
	phase. The Eclipse Foundation is a partner in the Amalthea4Public
	research project, taking the responsibility to host the open source
	project and support Amalthea4Public in dissemination and outreach
	efforts. Just recently, activities have been increasing, and closer
	communication with openMDM and PolarSys have been discussed.</li>
<li><p><b>Internet of Things (IoT). </b>The
	Eclipse IoT Working Group continued to gain momentum in 2014 towards
	its goal of creating an open source community for IoT. 
	At JavaOne 2014 the
	Eclipse IoT community announced an Open IoT Stack for Java to make
	it easier for Java developers to connect and manage devices in an
	IoT solution. Based on open source and open standards, the Open IoT
	Stack for Java simplifies IoT development by allowing developers to
	re-use a core set of frameworks and services in their IoT solutions.
	The Open IoT Stack supports popular IoT standards such MQTT, CoAP
	and Lightweight M2M (LWM2M), and also provides a set of services for
	building IoT gateways.</p>
<p>In the past year, there were 16 different open source projects that were focused on
IoT, including six new projects:</p>
<ul>
	<li>Ignite|IoT - a methodology for
			implementing IoT solutions
			</li>
	<li>RISE V2G - an implementation
			of the IEC 15118 standard that defines the communication between an
			electrical vehicle and a charging station.
			</li>
	<li>Leshan - an implementation of
			the Lightweight M2M standard from the Open Mobile Alliance
			</li>
	<li>Vorto - a toolset and
			repository to enable IoT device integration
			</li>
	<li>4DIAC - an open source
			infrastructure for distributed Industrial Process Measurement and
			Control Systems (IPMCS) based on the IEC 61499 standard
			</li>
	<li>tinydtls - a light-weight
			implementation of the DTLS protocol that can be used in devices
			with tight memory constraints</li>
</ul>
<p>The membership of
the IoT working group grew to 20 members, including IBM, Eurotech,
Sierra Wireless, Bosch, Cannocial, itemis, SMB, openHab, Actuate,
Cisco, IS2T, 2lemetry, Deutsche Telekom, ibh Systems, bitreactice,
M2M Alliance, DC Square, Gadget Keeper, Litmus Automation and
LAS-CNRS. 
</p>
</li>
<li><p><b>LocationTech. </b>LocationTech
	is a large, active, and fast growing community focused on developing
	advanced location aware technologies. The working group has
	continued to grow during its second year, reaching 14 projects and
	more than 45 committers. The group is supported by 17 member
	organizations. LocationTech has become the community of choice for
	big geo data technologies including the GeoTrellis, GeoMesa,
	GeoJinni, and GeoWave projects. It is also home to important
	libraries such as JTS Topology Suite, Spatial4J, and
	libspatialindex. LocationTech hosts a range of applications (uDig,
	GeoGig and GeoScript) along with user interface projects Geo Fast
	Forward (GEOFF) and Mobile Map Technology. Applications include
	GeoGig, GeoScript an uDig. The current LocationTech technology base
	is approximately two million
	lines of code.</p>
<p>New LocationTech
members in the last year include Ordnance Survey, the United
Kingdom&rsquo;s National Mapping Agency, Mapbox, and the University
of Calgary.</p>
<p>The LocationTech
community has been active, participating in over 40 events. These
included conferences, meetups, code sprints, intern programs, and
work with Universities. The 2014 LocationTech tour was the largest
yet with more than 1,200 people participating in a federated series
of events around the world. 
</p>
<p>LocationTech
project mentors worked with over 50 university student proteges in
2015. These interns added useful features to the participating
projects. Thank you to them, and special thanks to the Facebook Open
Academy and Google Summer of Code programs for their support.</p>
<p>New technologies
that joined the group in 2014 include:</p>
<ul>
	<li>GeoWave - a scalable
			spatio-temporal database that provides query capabilities on very
			large datasets using cloud platforms.</li>
	<li>SFCurve - a Scala library for
			the creation, transformation, and querying of space-filling curves.
			This is an important component for services which store and process
			spatial data.</li>
	<li>Libspatialindex - a C/C++
			library for implementation of spatial indexes.</li>
	<li>TeamENGINE - a framework that
			provides a test harness for tests that check conformance of
			implementations to OGC standards.</li>
</ul>
</li>
<li><p><b>Long Term Support. </b>The
	LTS Working Group introduced a trial membership for service
	providers in 2014. With this program we were able to sign up new
	members such as Bredex, Xored, itemis, CodeTrails and Obeo. In
	addition, an Eclipse Marketplace category for long-term support was
	added. The participating companies now provide good support coverage
	for many Eclipse projects. The LTS website has been reworked and a
	form for support requests has been added. However, the current
	number of support requests is below expectations. The group is
	reaching out to potential customers to explain the value of the
	offering.</p>
</li>
<li><p><b>OpenMDM. </b>The
	openMDM Working Group was founded in July 2014, and is focused on
	providing tools, systems, qualification kits, and adapters for
	standardized and vendor independent management of measurement data
	in accordance with the ASAM ODS standard. The founding members were
	the German car makers Audi, BMW and Daimler together with Canoo
	Engineering, Gigatronik, HighQSoft GmbH Peak Solution GmbH and
	science + computing ag.</p>
	<p>Throughout the
	year and in early 2015, more companies joined the working group and
	two projects were created, providing access to the ODS server in the
	platform components project as well as client interfaces through web
	and rich client technologies. The group is planning to provide
	demonstrators based on the new implementation for the technology in
	the second half of 2015.</p>
</li>

<li><p><b>PolarSys. </b>In the
	past year the PolarSys Working Group has continued to create
	comprehensive toolchains for the development of embedded systems.
	The working group membership continues to grow, with an average of
	one new member joining per quarter. In 2014, new members included
	Artal Group, Zeligsoft, ESI Group
	and Airbus Helicopters.</p>
<p>PolarSys members
initiated a number of new projects over the past year that
significantly improve the capabilities offered by PolarSys.</p>
<ul>
	<li>Chess
			(created in February 2014) - a Papyrus customization for component
			based development of high integrity systems	</li>
	<li>Gendoc
			(created in February 2014) - migrated from the Topcased community
			to provide capabilities to generate documentation from models	</li>
	<li>Reqcycle
			(created in February 2014) - addresses both requirement management
			and requirement traceability in the tool chain	</li>
	<li>Kitalpha
			(created in April 2014) - a modeling component that implements the
			ISO/IEC 42010 standard for system description in system and
			software engineering</li>
	<li>Titan
			(created in August 2014) - the TTCN-3-based test toolset widely
			used within Ericsson, providing Eclipse-based and command line user
			interfaces, and multi-platform support</li>
	<li>Trace
			Compass (created in September 2014) - a tool for viewing and
			analyzing both logs and traces</li>
	<li>Capella
			(created in September 2014) - a model driven engineering solution
			based on a graphical modeling workbench for engineers developing
			systems, software and hardware architectures</li>
	<li>COTSAQ
			(created in October 2014) - provides a web based solution for
			managing Intellectual Property of software and systems</li>
	<li>Eclipse
			Safety Framework (created in February 2015) - provides a set of
			tools that enable both modelling and analysis of safety concerns in
			the context of modelling standards such as SysML and MARTE</li>
</ul>
<p>The main
technical achievement is the creation of a systematic Maturity
Assessment for the PolarSys projects. This approach, which is still
under deployment, enables a better understanding of the PolarSys
projects ecosystem by interested parties who cannot invest in
becoming project committers.</p>
<p>PolarSys also
introduced the PolarSys solutions which were publicly announced
during Embedded World Conference in February 2015. With PolarSys
solutions, we want to bridge the gap between PolarSys open source
projects and the level of documentation and marketing material users
expect to typically find with an industrial tool. The main result of
this initiative is the creation of a press kit with data sheets that
introduce the Polarsys solutions (http://www.polarys.org/solutions).</p>
<p>PolarSys members
participated to two events focused on embedded systems: ERTS in
Toulouse in February 2014, and Embedded World Conference in Nuremberg
in February 2015. In order to address the North American market,
PolarSys members will participate in the INCOSE Symposium in 2015.</p>
</li>
<li><p><b>Science. </b>The
	Science Working Group (SWG), hosted by Eclipse, works to solve the
	problems of making science software inter-operable and
	interchangeable. In its first year, SWG established its charter,
	developed its first web site, and its first 11 members joined
	including Oak Ridge National Laboratory, Diamond Light Source, IBM,
	Itema, Lablicate, MARINTEK, Clemson University, The Facility for
	Rare Isotope Beams, Kichwa Coders, Uppsala University,
	Tech&rsquo;Advantage, and IFP Energies nouvelles.</p>
<p>In its first
year, the following projects joined the group:</p>
<ul>
	<li>DAWNSci -
			defines Java interfaces for data description, plotting and plot
			tools, data slicing and file loading. It defines an architecture
			oriented around OSGi services to do this. It provides a reference
			implementation and examples for the interfaces. </li>
	<li>ICE -
			provides capabilities for modeling and simulation including setting
			up the model, launching the job, analysing the results and managing
			the input and output data.</li>
	<li>ChemClipse - an Eclipse RCP
			chemistry application designed to handle analytical data from
			chromatographic/spectrometric systems like GC/MS or GC/FID. These
			systems are used e.g. to identify environmental pollutants, in
			forensics, to ensure the harmlessness of groceries or in the area
			of industrial quality control processes. </li>
</ul>
<p>The Science
Working Group participated in a number of events including Science
Day at EclipseCon, and a Science track as part of the programs at
EclipseCon France and EclipseCon Europe. An afternoon session was
held at Oak Ridge National Laboratory in December and was well
attended. The Science WG has been presented at the EGU (European
Geosciences Union General) Assembly 2015 in Vienna.</p>
</li>
</ul>
<h2>Conferences and Events</h2>
<p>The EclipseCon conferences, <a href="https://wiki.eclipse.org/Eclipse_Day">Eclipse
Day</a>s and <a href="https://wiki.eclipse.org/Eclipse_DemoCamps_Luna_2014">DemoCamps</a>
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 these events.</p>
<p>The second edition of <a href="https://www.eclipsecon.org/france2014/">EclipseCon
France</a> was held in June 2014 and had 251 attendees. EclipseCon
France introduced an Unconference that provided an opportunity for
Eclipse Working Groups to organize workshops, brainstorming sessions,
and hackathons to foster collaboration. 
</p>
<p>With a growing Eclipse ecosystem in Europe, <a href="https://www.eclipsecon.org/europe2014/">EclipseCon
Europe</a> also continues to grow. Co-located with the OSGi Community
event, we welcomed 600 attendees to the conference. We received a
very positive feedback from our sponsors, attendees and exhibitors.
EclipseCon Europe 2014 was a lot of fun with new ideas like the IoT
Playground and integrated events such as BPM Day and Project Quality
Day. 
</p>
<p><span style="font-weight: normal">In March 2015 <a href="https://www.eclipsecon.org/na2015/">EclipseCon
North America</a> and <a href="https://2015.foss4g-na.org/">FOSS4G NA</a>
were co-located in Burlingame, California. Overall attendance was
775, of which 430 were FOSS4G, making it the largest FOSS4G NA to
date. The Eclipse Foundation, on behalf of the LocationTech working
group, played a significant role in organizing FOSS4G NA, an event
featuring technologies from OSGeo, LocationTech, and others. </span><span style="font-weight: normal">Roughly
</span><span style="font-weight: normal">30 percent of FOSS4G
attende</span><span style="font-weight: normal">e</span><span style="font-weight: normal">s
were women, which was more than double the historic proportion in a
FOSS4G conference of this size. </span>
</p>
<h2>Financials</h2>
<p>The Eclipse Foundation'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. Its headquarters is located in Ottawa, Canada.</p>
<p>Membership renewals remained strong, working group revenue and
website advertising both continued to grow. Despite originally
budgeting a $0.6M loss, the Eclipse Foundation controlled expenses to
result in a reduced shortfall of $0.4M. The organization continues to
be on a solid financial footing.</p>
<table width="479" cellpadding="4" cellspacing="0">
	<col width="120">
	<col width="81">
	<col width="26">
	<col width="89">
	<col width="23">
	<col width="92">
	<tr valign="top">
		<td width="120" height="45" style="border: none; padding: 0cm">
			<p><font size="3" style="font-size: 12pt">In US $ millions </font>
			</p>
		</td>
		<td width="81" style="border: none; padding: 0cm" sdval="2012" sdnum="4105;">
			<p align="right"><font size="3" style="font-size: 12pt">2012</font></p>
		</td>
		<td width="26" style="border: none; padding: 0cm">
			<p align="right"><br/>

			</p>
		</td>
		<td width="89" style="border: none; padding: 0cm" sdval="2013" sdnum="4105;">
			<p align="right"><font size="3" style="font-size: 12pt">2013</font></p>
		</td>
		<td width="23" style="border: none; padding: 0cm">
			<p align="right"><br/>

			</p>
		</td>
		<td width="92" style="border: none; padding: 0cm" sdval="2014" sdnum="4105;">
			<p align="right"><font size="3" style="font-size: 12pt">2014</font></p>
		</td>
	</tr>
	<tr valign="top">
		<td width="120" style="border: none; padding: 0cm">
			<p><font size="3" style="font-size: 12pt">Revenue</font></p>
		</td>
		<td width="81" style="border: none; padding: 0cm" sdval="4.1" sdnum="4105;0;0.0">
			<p align="right"><font size="3" style="font-size: 12pt">4.1</font></p>
		</td>
		<td width="26" style="border: none; padding: 0cm" sdnum="4105;0;0.0">
			<p align="right"><br/>

			</p>
		</td>
		<td width="89" style="border: none; padding: 0cm" sdval="4.5" sdnum="4105;0;0.0">
			<p align="right"><font size="3" style="font-size: 12pt">4.5</font></p>
		</td>
		<td width="23" style="border: none; padding: 0cm" sdnum="4105;0;0.0">
			<p align="right"><br/>

			</p>
		</td>
		<td width="92" style="border: none; padding: 0cm" sdval="4.3" sdnum="4105;0;0.0">
			<p align="right"><font size="3" style="font-size: 12pt">4.3</font></p>
		</td>
	</tr>
	<tr valign="top">
		<td width="120" style="border: none; padding: 0cm">
			<p><font size="3" style="font-size: 12pt">Expenses</font></p>
		</td>
		<td width="81" style="border: none; padding: 0cm" sdval="4.2" sdnum="4105;0;0.0">
			<p align="right"><font size="3" style="font-size: 12pt">4.2</font></p>
		</td>
		<td width="26" style="border: none; padding: 0cm" sdnum="4105;0;0.0">
			<p align="right"><br/>

			</p>
		</td>
		<td width="89" style="border: none; padding: 0cm" sdval="4.4" sdnum="4105;0;0.0">
			<p align="right"><font size="3" style="font-size: 12pt">4.4</font></p>
		</td>
		<td width="23" style="border: none; padding: 0cm" sdnum="4105;0;0.0">
			<p align="right"><br/>

			</p>
		</td>
		<td width="92" style="border: none; padding: 0cm" sdval="4.7" sdnum="4105;0;0.0">
			<p align="right"><font size="3" style="font-size: 12pt">4.7</font></p>
		</td>
	</tr>
	<tr valign="top">
		<td width="120" style="border: none; padding: 0cm">
			<p><font size="3" style="font-size: 12pt">Net Income</font></p>
		</td>
		<td width="81" style="border: none; padding: 0cm" sdval="-0.1" sdnum="4105;">
			<p align="right" style="border-top: 1.00pt solid #000000; border-bottom: 2.60pt double #000000; border-left: none; border-right: none; padding: 0.05cm 0cm">
			-0.1</p>
		</td>
		<td width="26" style="border: none; padding: 0cm" sdnum="4105;0;0.0">
			<p><br/>

			</p>
		</td>
		<td width="89" style="border: none; padding: 0cm" sdval="0.1" sdnum="4105;">
			<p align="right" style="border-top: 1.00pt solid #000000; border-bottom: 2.60pt double #000000; border-left: none; border-right: none; padding: 0.05cm 0cm">
			0.1</p>
		</td>
		<td width="23" style="border: none; padding: 0cm" sdnum="4105;0;0.0">
			<p><br/>

			</p>
		</td>
		<td width="92" style="border: none; padding: 0cm" sdval="-0.4" sdnum="4105;">
			<p align="right" style="border-top: 1.00pt solid #000000; border-bottom: 2.60pt double #000000; border-left: none; border-right: none; padding: 0.05cm 0cm">
			-0.4</p>
		</td>
	</tr>
</table>
<h2>Intellectual Property Management</h2>
<p>During the time period spanning April 1, 2014 to March 31, 2015,
the Eclipse Foundation received 1,275 requests for code review and
completed 1,302 reviews.[1] As more Projects come on board, the need
for code review continues to grow, particularly for the Eclipse
Foundation&rsquo;s working groups. In January 2015, the backlog of
requirements reached an all time high of 307, slightly edging out the
previous high of 306 reached in 2012. The result has been an
increased delay in completing IP reviews for some projects. In an
effort to address this issue, an additional IP analyst will be hired
in 2015. 
</p>
<p><img src="/images/reports/2015_IP.png" name="IP Management" align="left" width="703" height="486" border="0"><br clear="left">As
of the time of writing, the IP team remains focused on the Mars
Release Train submissions which came in at 73, consistent with the
number of submissions received in 2014 for Luna. As of March 31, the
backlog of IP requests rests at 260. Approximately 36% of that
backlog relates to working group requirements, and 22% relates to
requirements from projects in the Technology top-level project. 
</p>
<h2>Innovation</h2>
<p>We posted 34 new projects proposals in 2014, exactly matching our
number for 2013. Reflecting a growth in the project diversity, more
than half of the new projects fall under the Technology, Tools, and
Eclipse Cloud Development top level projects. This includes ICE and
DAWNSci from the Science WG, and three projects restructured out of
existing Eclipse projects. The new Eclipse Cloud Development project
welcomed three project proposals. The IoT working group brought in
six new projects, and LocationTech and PolarSys brought in three new
projects each.</p>
<p>The past year saw two new initiatives that will have a significant
impact on innovation in the Eclipse community in the coming years.</p>
<ul>
	<li><p><b>Platform Vision. </b>A core
		leadership group within the Eclipse IDE community invested a
		significant amount of time in looking at the future of software
		development tools, and how the Eclipse platform should direct its
		investments. They arrived at the following statement:</p>
	<blockquote><p><i>Our vision is
	to build leading desktop and cloud-based development solutions, but
	more importantly to offer a seamless development experience across
	them. Our goal is to ensure that developers will have the ability to
	build, deploy, and manage their assets using the device, location and
	platform best suited for the job at hand. Eclipse projects, the
	community, and ecosystem will all continue to invest in and grow
	desktop Eclipse. Full-function cloud-based developer tools delivered
	in the browser will emerge and revolutionize software development.</i></p>
	<p><i>Continued focus
	on quality and performance, out-of-the-box experience, Java 9, and
	first class Maven, Gradle, and JVM Languages support also figure
	prominently.</i></p>
	</blockquote>
	</li>
	<li><p><b>Eclipse Cloud Development. </b>The mission of the Eclipse
		Cloud Development top-level project is to create technologies,
		platforms, and tools necessary to enable the delivery of highly
		integrated cloud development and cloud developer environments. Our
		vision is to meet the needs of both the Eclipse tool-building
		community and its users by providing a comprehensive set of
		technologies that operate on top of cloud standards, cloud
		infrastructures (AWS, etc.), and cloud platforms (CloudFoundry,
		OpenShift, Stratos).</p>
	</li>
</ul>
<p>In addition to the Automotive, IoT, LocationTech, openMDM,
PolarSys and Science projects noted above, the following projects
were proposed at Eclipse over the past year:</p>
<ul>
<li><b>Egerrit.</b> EGerrit provides a set of Eclipse plug-ins
	that provide Gerrit code review integration and capabilities in the
	Eclipse IDE.</li>
<li><b>RDF4J. </b>RDF4J is an RDF (Resource Description
	Framework) Java toolkit that provides functionality for efficient
	and scalable storage, querying, and reasoning with RDF data, and a
	vendor-neutral access API for RDF databases (a.k.a. &quot;triplestores&quot;).</li>
<li><b>Buildship. </b>The Eclipse plug-ins for Gradle provides
	Gradle developer tooling for Eclipse-based IDEs.</li>
<li><b>Package Drone.</b> Package Drone is a software artifact
	repository where OSGi bundles are first class citizens.</li>
<li><b>openK Platform. </b>The target of the openK Platform is
	to consolidate Energy and Water Infrastructure Software (EWIS) onto
	a shared technical platform, to define open interfaces and reduce or
	optimize interfaces where applicable.</li>
<li><b>Web Modeling Framework.</b> Web Modeling Framework
	provides a framework to easily develop any online model and diagram
	editor based on an EMF meta-model.</li>
<li><b>Andmore.</b> The purpose of Andmore is to provide
	Android Eclipse tooling without having to go through multiple steps.</li>
<li><b>Dirigible.</b> Dirigible provides Integrated Development
	Environment as a Service (IDEaaS) as well as runtime containers
	integration for the running applications.</li>
<li><b>Titan. </b>Titan is the TTCN-3-based test toolset widely
	used within Ericsson, providing Eclipse-based and command line user
	interfaces, and multi-platform support.</li>
<li><b>Cloud Application Management Framework.</b> The Cloud
	Application Management Framework can be promoted/adopted by any
	Cloud-related party as a tool for configuring, deploying and
	managing applications on different infrastructures in a
	vendor-neutral manner.</li>
<li><b>Che.</b> Che provides a commercial grade platform for
	building and managing SAAS developer environments.</li>
<li><b>Eclipse Advanced Scripting Environment (EASE).</b> EASE
	provides a uniform environment to create, store, modify and execute
	user generated scripts that run within the Eclipse RCP context. </li>
</ul>
<h2>Luna Simultaneous Release</h2>
<p>In June 2014 the Eclipse community shipped Luna, its ninth annual
simultaneous release. Including previous releases of the Eclipse
Platform, this was the eleventh release that was shipped on time to
the day. Seventy six projects participated in the Luna simultaneous
release, comprising 61 million lines of code, and produced by 420
committers from 54 member companies. 
</p>
<p>This predictable release schedule has been a key part of Eclipse's
success over the years, and is an important part of the success of
the Eclipse ecosystem.</p>
<p><br/>
<br/>

</p>
<p><img src="/images/reports/2015_LunaOverview.png" name="Luna Overview" align="left" width="768" height="358" border="0"><br clear="left"><br/>
<br/>

</p>
<p>Eight projects joined the simultaneous release in 2014:</p>
<ul>
	<li>EMF Client Platform</li>
	<li>EMFStore</li>
	<li>Sirius</li>
	<li>BPMN2 Modeler Project</li>
	<li>Business Process Model and
		Notation (BPMN2)</li>
	<li>Paho</li>
	<li>QVTd (QVT Declarative)</li>
	<li>XWT</li>
</ul>
<p>Three projects dropped off the simultaneous release in 2014:</p>
<ul>
	<li>Agent Modeling Platform</li>
	<li>EclipseLink Project</li>
	<li>SCA Tools</li>
</ul>
<h2>Committer and Project Community</h2>

<p>After nearing the mark for several years, the committer population
at Eclipse now exceed 1,200, ending the period at 1,208.</p>
<p><img src="/images/reports/2015_CommitterVsContributors.png" name="Committer and Contributor Population" align="left" width="605" height="340" border="0"><br clear="left"><br/>
<br/>

</p>
<p>Over the past several years, the Eclipse Foundation has been
focusing on reducing barriers to contribution to Eclipse projects.
The trend lines clearly show that this effort is bearing fruit, with
an increase of almost 200 contributors in 2014.</p>
<p><img src="/images/reports/2015_Contributors2014.png" name="Increasing Contributions" align="left" width="605" height="340" border="0"><br clear="left"><br/>
<br/>

</p>
<p>The EMO is committed to providing 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><p><b>Common Build Infrastructure.	</b>The CBI infrastructure was
		significantly expanded again this year. Committers may now
		self-administer and start/restart their own Hudson instance without
		webmaster intervention. Also, committers now have a UI to upgrade
		their instance to a newer Hudson version at their convenience.</p>
	
	<p>By mid-year, the Mac signing service had failed after sudden policy
	changes from Apple, but that service was re-engineered and is now
	stable.</p> 
	</li>
	<li><p><b>New Dashboard. </b>In
		2014, we implemented a replacement projects dashboard based on the
		open source Metrics Grimoire. The new dashboard tracks metrics for
		Git repositories, reviews via Gerrit, mailing lists, and issues via
		Bugzilla. Metrics are tracked for the Eclipse, LocationTech, and
		PolarSys forges. We have declared the old dashboard deprecated and
		will retire it at the end of 2015.</p>
	</li>
	<li><p><b>Websites. </b>Almost
		all of our core web
		properties received significant graphics and layout refreshes,
		transforming them into modern and responsive websites that work well
		on computers and mobile devices. The main www.eclipse.org website,
		as well as PolarSys, the Project Management Infrastructure and
		Marketplace are among the updated sites. </p>
		</li>
	<li><p><b>Servers and Infrastructure. </b>Core
		service availability (Git, www.eclipse.org, and Bugzilla) for 2014
		was 99.993%, our best availability ever. For the first time, our SCM
		(Git) had a perfect 100% availability for the entire year. We have
		not recorded a single minute of downtime with Git, planned or
		unplanned.</p>
		<p>This year was
		marked with numerous high-profile operating system and service
		security updates, including OpenSSL, bash and updated cartographic
		algorithms for SHA. 
		</p>
		<p>After receiving a
		significant increase in 2013, our bandwidth has returned to a state
		of saturation during most of the Eastern time zone business day (4h00
		to 18h00 Eastern). One of the contributing factors is that more
		projects are publishing Maven and other artifacts that cannot harness
		our mirror network. 
		</p>
	</li>
</ul>
	

<P><br/><br/>
</P>

	</div>
</div>

</body>

</html>