diff --git a/foundation/reports/2012_annual_report.php b/foundation/reports/2012_annual_report.php
index b89dfea..ff65d76 100644
--- a/foundation/reports/2012_annual_report.php
+++ b/foundation/reports/2012_annual_report.php
@@ -543,6 +543,7 @@
     <div class="sideitem">
       <h6 id="a_15">Related Links</h6>
       <ul>
+	  <li><a href="2020_annual_report.php">2020 Annual Report</a></li>
       <li><a href="2019_annual_report.php">2019 Annual Report</a></li>
       <li><a href="2018_annual_report.php">2018 Annual Report</a></li>
       <li><a href="2017_annual_report.php">2017 Annual Report</a></li>
diff --git a/foundation/reports/2013_annual_report.php b/foundation/reports/2013_annual_report.php
index 0c884c6..a9d666e 100644
--- a/foundation/reports/2013_annual_report.php
+++ b/foundation/reports/2013_annual_report.php
@@ -33,6 +33,7 @@
     <div class="sideitem">
       <h6 id="a_15">Related Links</h6>
       <ul>
+	  <li><a href="2020_annual_report.php">2020 Annual Report</a></li>
       <li><a href="2019_annual_report.php">2019 Annual Report</a></li>
       <li><a href="2018_annual_report.php">2018 Annual Report</a></li>
       <li><a href="2017_annual_report.php">2017 Annual Report</a></li>
diff --git a/foundation/reports/2014_annual_report.php b/foundation/reports/2014_annual_report.php
index 1f3e3e3..21fa760 100644
--- a/foundation/reports/2014_annual_report.php
+++ b/foundation/reports/2014_annual_report.php
@@ -33,6 +33,7 @@
     <div class="sideitem">
       <h6 id="a_15">Related Links</h6>
       <ul>
+	  <li><a href="2020_annual_report.php">2020 Annual Report</a></li>
       <li><a href="2019_annual_report.php">2019 Annual Report</a></li>
       <li><a href="2018_annual_report.php">2018 Annual Report</a></li>
       <li><a href="2017_annual_report.php">2017 Annual Report</a></li>
diff --git a/foundation/reports/2015_annual_report.php b/foundation/reports/2015_annual_report.php
index fbfb489..35485e6 100644
--- a/foundation/reports/2015_annual_report.php
+++ b/foundation/reports/2015_annual_report.php
@@ -33,6 +33,7 @@
     <div class="sideitem">
       <h6 id="a_15">Related Links</h6>
       <ul>
+	  <li><a href="2020_annual_report.php">2020 Annual Report</a></li>
       <li><a href="2019_annual_report.php">2019 Annual Report</a></li>
       <li><a href="2018_annual_report.php">2018 Annual Report</a></li>
       <li><a href="2017_annual_report.php">2017 Annual Report</a></li>
diff --git a/foundation/reports/2016_annual_report.php b/foundation/reports/2016_annual_report.php
index 87adfc9..87a8489 100644
--- a/foundation/reports/2016_annual_report.php
+++ b/foundation/reports/2016_annual_report.php
@@ -34,6 +34,7 @@
     <div class="sideitem">
       <h6 id="a_15">Related Links</h6>
       <ul>
+	  <li><a href="2020_annual_report.php">2020 Annual Report</a></li>
       <li><a href="2019_annual_report.php">2019 Annual Report</a></li>
       <li><a href="2018_annual_report.php">2018 Annual Report</a></li>
       <li><a href="2017_annual_report.php">2017 Annual Report</a></li>
diff --git a/foundation/reports/2017_annual_report.php b/foundation/reports/2017_annual_report.php
index aa8ac5b..2d74137 100644
--- a/foundation/reports/2017_annual_report.php
+++ b/foundation/reports/2017_annual_report.php
@@ -33,6 +33,7 @@
     <div class="sideitem">
       <h6 id="a_15">Related Links</h6>
       <ul>
+      <li><a href="2020_annual_report.php">2020 Annual Report</a></li>
       <li><a href="2019_annual_report.php">2019 Annual Report</a></li>
       <li><a href="2018_annual_report.php">2018 Annual Report</a></li>
       <li><a href="2017_annual_report.php">2017 Annual Report</a></li>
diff --git a/foundation/reports/2018_annual_report.php b/foundation/reports/2018_annual_report.php
index b023ae0..00786bf 100644
--- a/foundation/reports/2018_annual_report.php
+++ b/foundation/reports/2018_annual_report.php
@@ -33,6 +33,7 @@
     <div class="sideitem">
       <h6 id="a_15">Related Links</h6>
       <ul>
+      <li><a href="2020_annual_report.php">2020 Annual Report</a></li>
       <li><a href="2019_annual_report.php">2019 Annual Report</a></li>
       <li><a href="2018_annual_report.php">2018 Annual Report</a></li>
       <li><a href="2017_annual_report.php">2017 Annual Report</a></li>
diff --git a/foundation/reports/2019_annual_report.php b/foundation/reports/2019_annual_report.php
index 529e8d7..c57d38d 100644
--- a/foundation/reports/2019_annual_report.php
+++ b/foundation/reports/2019_annual_report.php
@@ -33,6 +33,7 @@
     <div class="sideitem">
       <h6 id="a_15">Related Links</h6>
       <ul>
+      <li><a href="2020_annual_report.php">2020 Annual Report</a></li>
       <li><a href="2019_annual_report.php">2019 Annual Report</a></li>
       <li><a href="2018_annual_report.php">2018 Annual Report</a></li>
       <li><a href="2017_annual_report.php">2017 Annual Report</a></li>
diff --git a/foundation/reports/2020_annual_report.php b/foundation/reports/2020_annual_report.php
index bbb1e80..d109f5b 100644
--- a/foundation/reports/2020_annual_report.php
+++ b/foundation/reports/2020_annual_report.php
@@ -34,6 +34,7 @@
     <div class="sideitem">
       <h6 id="a_15">Related Links</h6>
       <ul>
+      <li><a href="2020_annual_report.php">2020 Annual Report</a></li>
       <li><a href="2019_annual_report.php">2019 Annual Report</a></li>
       <li><a href="2018_annual_report.php">2018 Annual Report</a></li>
       <li><a href="2017_annual_report.php">2017 Annual Report</a></li>
diff --git a/foundation/reports/2021_annual_report.html b/foundation/reports/2021_annual_report.html
new file mode 100644
index 0000000..ec3131b
--- /dev/null
+++ b/foundation/reports/2021_annual_report.html
@@ -0,0 +1,755 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+  <head>
+    <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+    <title>2021 Annual Eclipse Community Report</title>
+    <style>
+      .member-logos img {
+        margin: 20px;
+      }
+    </style>
+  </head>
+  <body lang="EN-US">
+    <div id="maincontent">
+      <div id="midcolumn">
+        <h1>2021 Annual Eclipse Foundation Community Report</h1>
+
+        <p>
+          Welcome to the tenth 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 otherwise noted this report covers the period April 1,
+          2020 to March 31, 2021.
+        </p>
+
+        <p><strong>TABLE OF CONTENTS</strong></p>
+
+        <ul>
+          <li>
+            <a href="#a_1"
+              >Executive Director&rsquo;s Summary: A Transformative Year</a
+            >
+          </li>
+          <li><a href="#a_2">Who We Are</a></li>
+          <li><a href="#a_3">2021 Strategy</a></li>
+          <li><a href="#a_4">Key Board Decisions</a></li>
+          <li><a href="#a_5">Financials</a></li>
+          <li><a href="#a_6">Membership</a></li>
+        </ul>
+
+        <h2 id="a_1">
+          Executive Director&rsquo;s Summary: <br />
+          A Transformative Year
+        </h2>
+
+        <p>Welcome to the 2021 Eclipse Foundation Community Report!&nbsp;</p>
+
+        <p>
+          I&rsquo;ve had the pleasure of serving the Eclipse community as
+          Executive Director since its inception in 2004. Over that time, the
+          changes to the open source community at large, the Eclipse community
+          in particular, and the Foundation itself have been extraordinary. I am
+          thrilled to have had the opportunity to see the growth and evolution
+          of the Eclipse community over my 17 years with the Eclipse Foundation.
+        </p>
+
+        <p>2020-21 has been a transformative year in almost every aspect.</p>
+
+        <p>
+          Certainly, the global pandemic has had a dramatic impact on the
+          Foundation as well as all of our 300+ member organizations and our
+          thousands of committers and contributors. First and foremost, I extend
+          my best wishes to all, and hope that all in our community, and their
+          families, have been, and continue to be safe. Also, the pandemic has
+          brought to a very quick halt the opportunity for us to meet one
+          another at various conferences, meetings, and events. After this long
+          hiatus from travel, I look forward to seeing our community members
+          again in the not-too-distant future.
+        </p>
+
+        <p><strong>Important Project Milestones Achieved</strong></p>
+
+        <p>
+          I am proud of the major accomplishments achieved by our community over
+          the 2020-21 period. Many of our most visible projects have seen
+          important milestones. Notably, the Simultaneous Release of the Eclipse
+          IDE and packages continues to evolve; since switching to a cadence of
+          quarterly releases in 2018, 12 quarterly releases of the Simultaneous
+          Release have been completed on schedule, and with enhanced features
+          benefitting the IDE’s millions of users. Jakarta EE 9 was released in
+          December 2020, representing a significant milestone for the enterprise
+          Java ecosystem. Eclipse SUMO has emerged as the most active Eclipse
+          Foundation open source project. There were also major releases in our
+          IoT and edge communities, our cloud tools community, and many other
+          technical areas.
+        </p>
+
+        <p>
+          In total, 515 project releases were completed over the past 12 months.
+          As of March 2021, the Foundation has stewardship of over 260 million
+          lines of code in the Eclipse repositories. The Eclipse Foundation
+          codebase is conservatively valued at over $13 billion using the
+          industry standard COCOMO model.
+        </p>
+
+        <p>
+          We have also seen the Eclipse Foundation Specification Process (EFSP)
+          being used more widely. In addition to Jakarta EE, it is now adopted
+          by the MicroProfile, Sparkplug, and AsciiDoc specification projects.
+          Further validation of the EFSP came from the migration of OSGi
+          specifications from being overseen by the OSGi Alliance to now being
+          housed at Eclipse Foundation and using the EFSP.
+        </p>
+
+        <p><strong>Working Groups Continue to Thrive</strong></p>
+
+        <p>
+          Working groups continue to play a growing role in how members engage
+          at the Eclipse Foundation. In total, we have 17 working groups as of
+          March 31, 2021. As a proof point of the importance of these working
+          groups in bringing members together to work collaboratively in support
+          of Eclipse Foundation projects, more than 140 Member organizations now
+          participate in one or more working groups. These working groups are
+          enabling new initiatives to flourish.
+        </p>
+
+        <p>
+          To call out just two new working groups formed in early 2021, the
+          Adoptium Working Group has been formed as the successor to
+          AdoptOpenJDK, and will play a valuable role in the Java ecosystem
+          going forward. The Eclipse IDE Working Group has been formed to
+          augment the incredible work done by our Committers on the Eclipse IDE
+          and the Simultaneous Release, and to ensure the long-term vibrancy of
+          the IDE.
+        </p>
+
+        <p><strong>New Initiatives at the Foundation</strong></p>
+
+        <p>
+          Lastly with respect to our technical initiatives, many of the
+          activities emanating from Eclipse Foundation projects and working
+          groups are leading to significant, innovative services being hosted at
+          the Foundation as their vendor neutral home. For example, the
+          <a href="https://open-vsx.org/">OpenVSX Registry</a> is hosted by the
+          Eclipse Cloud Development Tools Working Group, and provides a
+          marketplace for VS Code extensions that is operated in a vendor
+          neutral, transparent manner. The
+          <a href="https://jakarta.ee/compatibility/"
+            >Jakarta EE Compatible Products</a
+          >
+          site provides a comprehensive landing area for industry and is seeing
+          widespread use. As open source continues to grow in significance in
+          the marketplace, the opportunity for the Foundation to provide
+          innovative services through our working groups will continue to
+          increase in value.
+        </p>
+
+        <p>
+          <strong>Eclipse Foundation as a European-based Association</strong>
+        </p>
+
+        <p>
+          For the Foundation and our members, a big part of our year has been in
+          redomiciling the Foundation as a European-based, international
+          nonprofit association incorporated in Belgium. This shift reflects and
+          capitalizes on our unique position as the preeminent European-based
+          open source community with global reach. This pivot of our corporate
+          structure has been a major lift in terms of both effort and positive
+          impact — and one that we see as being beneficial to all our projects
+          and members over the coming years.
+        </p>
+
+        <p>
+          In particular, I want to call out the members of the Eclipse
+          Foundation Board for the many dedicated hours they put into this
+          initiative, as well as the organizations who led this initiative, be
+          it with financial, legal, or community outreach support. This
+          redomiciling has been a unique project, one of which I’m proud and
+          from which I have certainly enjoyed the learning journey. More details
+          about the redomiciling are available
+          <a href="/europe">here</a>.
+        </p>
+
+        <p>
+          In conjunction with redomiciling, the Board and Membership at Large
+          approved updates to the Eclipse Bylaws in the fall of 2020. These
+          changes better align the Foundation with European-based not-for-profit
+          practices, as well as streamline our membership structure. Of note, we
+          now have four classes of membership (vs. the six we had previously),
+          where the predominance of our corporate members are now in the
+          Contributing Member class. What has been retained is the commitment to
+          all Committers being welcome and encouraged to be Members of the
+          Foundation. This direct, active involvement of our Committers in our
+          governance is fairly unique to Eclipse Foundation, and better ensures
+          that matters that are important to committers remain front and center
+          in governance decisions. The Board further approved updates to other
+          policies, notably the Eclipse Foundation Intellectual Property and
+          Antitrust policies. All our governance documents are available on our
+          <a href="/org/documents">governance page</a>.
+        </p>
+
+        <p><strong>A New Approach to This Report</strong></p>
+        <p>
+          We have decided to condense the format of this year’s Annual Community
+          Report. In year’s past, this report served as an encyclopedic update
+          on all things happening at the Eclipse Foundation. While a valuable
+          reference document, it seemed like the wrong forum to try and capture
+          such depth in detail and likely not as valuable to most readers. This
+          year, we are using this publication as a means to provide our
+          community members with a more succinct and (hopefully!) useful summary
+          that you can, in turn, use to communicate to your stakeholders about
+          what’s happened at the Foundation. Of course, you can continue to rely
+          on our many other marketing and communications channels to understand
+          what lies ahead.
+        </p>
+
+        <p>
+          Enjoy the report — I hope you find it useful! As always, we welcome
+          your comments and feedback. Let us know your thoughts at
+          <a href="mailto:emo@eclipse.org">emo@eclipse.org</a>
+          or on Twitter
+          <a href="https://twitter.com/EclipseFdn">@EclipseFdn</a>.
+        </p>
+
+        <h2 id="a_2">Who We Are</h2>
+        <p>The Eclipse Foundation’s mission is summarized as follows:</p>
+        <p style="margin-left: 40px">
+          <em
+            >The Eclipse Foundation’s purpose is to advance our open source
+            software projects and to cultivate their communities and business
+            ecosystems.</em
+          >
+        </p>
+
+        <p>
+          The dedication to this purpose makes the Eclipse community a unique
+          open source community. We believe the Foundation’s ongoing success
+          comes from this unique combination of a consistent interest in
+          building open source code and community, and a sustained commitment to
+          creating a commercially successful ecosystem around that code to the
+          benefit of our community.
+        </p>
+        <p>Our vision for the Eclipse community is:</p>
+        <p style="margin-left: 40px">
+          <em
+            >To be the leading community for individuals and organizations to
+            collaborate on commercially friendly open source.</em
+          >
+        </p>
+
+        <h2 id="a_3">2021 Strategy</h2>
+        <p>
+          As established by the Board of Directors, the strategic goals of the
+          Eclipse Foundation for 2021 represent a continued drive towards
+          meeting our vision for the Eclipse community.
+        </p>
+        <ol>
+          <li>
+            <strong
+              >Communicate the Eclipse Foundation’s differentiated value
+              proposition.</strong
+            >
+            The Foundation continues to flourish, and to occupy a unique
+            position in the open source world. The Eclipse IDE and the
+            Simultaneous Release continue to be a flagship set of projects, and
+            the technologies delivered by those projects continue to be used by
+            literally millions of developers worldwide. Indeed, new innovations
+            are continuously added by our developer community, and many of our
+            members recently came together to form the Eclipse IDE Working Group
+            in support of the IDE.
+            <br />
+            <br />
+            While the Eclipse IDE is well known globally, the Eclipse community
+            is much larger, broader, and richer than the IDE. We are stewards of
+            approximately 400 open source projects, and the significance of many
+            of these projects and their importance in the overall open source
+            marketplace continues to grow. Today, the value proposition of
+            bringing new projects to the Eclipse Foundation, and the ongoing
+            evolution of those projects under the Foundation’s stewardship, is
+            more compelling than ever. We continue to offer strong intellectual
+            property management services for all projects. We also offer
+            infrastructure to our projects that better ensure long-term
+            viability and vendor-neutrality, both of which are of strategic
+            importance to our members. We also provide a much richer set of
+            services around marketing and communications, telling the stories of
+            our projects and our members in a way that is of great value to
+            both. Overall, the Foundation’s clear differentiator is its focus on
+            commercial-friendly open source, and the fact that our antitrust, IP
+            policies, and governance structure all drive benefit to our
+            projects, members, and community.
+          </li>
+          <br />
+          <li>
+            <strong
+              >Establish the Eclipse Foundation as the preeminent European OSS
+              organization.</strong
+            >
+            The redomiciling of the Eclipse Foundation as a European-based,
+            international not-for-profit association has immediately positioned
+            the organization as the largest European-based open source
+            foundation when measured by projects, members, or committers. Now
+            that the governance transition is complete, we are actively working
+            as part of many major European open source initiatives that will
+            have global reach in terms of their impact. We have been pleased to
+            see the positive engagement thus far by so many of our Members,
+            including both European-based Members and others from around the
+            globe.
+          </li>
+          <br />
+          <li>
+            <strong
+              >Promote working groups as an effective model for open governance,
+              collaboration, marketing, and industry adoption.</strong
+            >
+            The Eclipse Foundation’s Working Group model, based on the Eclipse
+            Foundation Working Group Process, has evolved into an effective,
+            lightweight governance structure that enables member organizations
+            to come together to drive shared interests in Eclipse projects and
+            promotion of Eclipse technologies and open specifications. A primary
+            focus of the Foundation staff continues to be on enabling both new
+            and existing members to effectively engage and collaborate using
+            this lightweight governance structure to carry out meaningful
+            activities that drive adoption of our projects, promote
+            participation in those projects, and generally drive the business
+            value related to those open source projects.
+          </li>
+          <br />
+          <li>
+            <strong
+              >Attract and foster new projects, specifications, and working
+              groups focused on emerging technologies.</strong
+            >
+            As open source continues to become ever more strategic to our member
+            organizations, the Eclipse Foundation continues to cultivate and
+            onboard strategic and emerging industrial and commercial
+            technologies. Building on our open specifications process, we
+            continue to put a significant emphasis on attracting new open
+            specification initiatives, and now have five working groups engaged
+            in publishing open specifications under the Eclipse Foundation
+            Specification Process.
+          </li>
+          <br />
+          <li>
+            <strong
+              >Cultivate the growth of our existing projects, communities,
+              working groups, and ecosystems.</strong
+            >
+            Continuing the overall growth and vibrancy of the Eclipse community
+            is a constant focus and a key differentiator for the Foundation in
+            the marketplace. The growth of the community comes from broader
+            adoption of the technologies and enabling new ways for individuals
+            and organizations to participate. The Foundation now conducts or
+            facilitates dozens of virtual community events of all sizes. This
+            model has allowed for each individual Eclipse project community, be
+            it large or small, localized or regionally diverse, to extend its
+            reach. We have also introduced a variety of marketing and
+            communications channels, each of which is aimed at enabling more
+            people to learn about Eclipse technologies, to more effectively
+            adopt those technologies, and to participate in the community. Our
+            working groups in support of cloud native Java, IoT, edge computing,
+            automotive, etc. further advance this cultivation of growth.
+          </li>
+          <br />
+          <li>
+            <strong>
+              Continuously increase value for all its membership
+              classes.</strong
+            >
+            As part of the Foundation’s constant drive to enhance member value,
+            we recently introduced new initiatives to focus more on the economic
+            benefit of participation. We are launching a new program to
+            highlight the benefits of participation to entrepreneurs and the
+            entrepreneurial-based initiatives of our Members, providing insight
+            and guidance on leveraging the Foundation’s unique characteristics
+            that benefit these initiatives. We have also started hosting our own
+            GitLab service. Based in Europe, this service provides valuable
+            choices for hosting projects and tooling that are appealing to many
+            Members, notably to our Committers, who form a critical class of
+            membership at the Foundation that is quite unique and uniquely
+            beneficial to our ecosystem. And we are launching other initiatives
+            to better enable all of our own members to highlight, via their own
+            channels, the overall benefit of participation in the Eclipse
+            Foundation to their stakeholders.
+          </li>
+          <br />
+          <li>
+            <strong
+              >Increase and diversify our membership, contributors, and revenue
+              sources.</strong
+            >
+            Aligned with the six strategic goals listed above is an explicit
+            goal to increase and diversify our revenue sources, as well as to
+            continually diversify our membership. In 2020-2021, led by
+            participation in Jakarta EE, we have seen an increase in the number
+            of Asia-based organizations that have become members, as well as an
+            increase in participation of Java User Groups. Both of these
+            represent a broadening of Jakarta’s global community, and impact.
+            Our overall revenue growth continues to be driven largely by the
+            creation of, and participation in, working groups. We expect this
+            trend to continue for the foreseeable future.
+          </li>
+        </ol>
+
+        <h2 id="a_4">Key Board Decisions</h2>
+        <p>
+          Over the past year, the Board has made a number of strategic decisions
+          designed to enable the Foundation to achieve its objectives and
+          fulfill its mission.
+        </p>
+        <ul>
+          <li>
+            <strong
+              >Approval of steps to support the Foundation’s international
+              strategy.</strong
+            >
+            In March 2020, the Board took the strategic decision to redomicile
+            the Foundation as a European organization. Throughout 2020/21, the
+            Board executed on this strategy, culminating in the creation in
+            November 2020 of Eclipse Foundation AISBL, an international
+            not-for-profit association based in Brussels. The Board further
+            approved the creation of Eclipse Foundation Canada as a means of
+            streamlining the Foundation’s operations, recognizing that the
+            majority of the Foundation’s staff are based in Canada. All of these
+            changes were made without an impact to overall membership revenues,
+            with a number of Members that were supportive of the move
+            contributing additional funds to support the initiative, and further
+            showing their support for the strategy. More information regarding
+            the details of the Foundation’s international strategy can be found
+            at
+            <a href="https://www.eclipse.org/europe/"
+              >https://www.eclipse.org/europe/</a
+            >.
+          </li>
+          <br />
+          <li>
+            <strong> Adoption of new bylaws.</strong>
+            In support of the redomiciling of the Foundation as a Belgian-based
+            organization, the Board approved new bylaws and associated
+            membership agreement. The bylaws have been modernized to meet the
+            needs of the growing and evolving Eclipse community. The new bylaws
+            have streamlined the classes of membership from six classes to four
+            classes: Strategic, Contributing, Associate, and Committer.
+          </li>
+          <br />
+          <li>
+            <strong
+              >Approval to enable the Foundation to enter into an OpenJDK
+              Community TCK License with Oracle.
+            </strong>
+            The Board approved the Foundation to enter into an agreement with
+            Oracle that will enable the Eclipse Foundation to host and
+            distribute Java SE compatible distributions of OpenJDK. This
+            decision paved the way for the formation of the Adoptium Working
+            Group in support of this initiative. By doing so, the Foundation
+            continues to play an ever-important role in the open source Java
+            community.
+          </li>
+          <br />
+          <li>
+            <strong
+              >Approval to enable the OSGi Alliance to contribute its OSGi
+              Specifications to the Eclipse Foundation and for the Foundation to
+              become the successor organization of OSGi Alliance.</strong
+            >
+            The Board granted approval to enable the OSGi Alliance to contribute
+            its specifications under the Eclipse Foundation Specification
+            Process, and for the Foundation to be named as the successor
+            organization of OSGi Alliance. This action benefits our Members who
+            support the OSGi specifications, and ensures the long-term viability
+            of those specifications.
+          </li>
+          <br />
+          <li>
+            <strong>Updates to the Eclipse Code of Conduct.</strong>
+            As part of its ongoing drive to continually foster an open and
+            welcoming community, the Board updated the Eclipse Community Code of
+            Conduct to better match the Foundation’s project and community
+            structures.
+          </li>
+          <br />
+          <li>
+            <strong
+              >Restatement of Eclipse Foundation membership fees to be in
+              Euros.</strong
+            >
+            In further support of the redomiciling as a European-based
+            organization, the Foundation took the formal step in October, 2020
+            to have its fees be stated in Euros rather than U.S. dollars.
+          </li>
+          <br />
+          <li>
+            <strong>Approval of OpenVSX Registry.</strong>
+            The Board passed a number of resolutions that together have enabled
+            the creation and operation of the OpenVSX Registry, including
+            allowing the registry to distribute hosted content under a broad set
+            of open source licenses.
+          </li>
+        </ul>
+
+        <h2 id="a_5">Financials</h2>
+
+        <p>
+          The Eclipse Foundation’s fiscal year end is December 31. Our auditors
+          are the firm Deloitte & Touche, LLP. Our operating headquarters is
+          located in Ottawa, Canada, with the remainder of our team based in
+          various European countries and the U.S. The Eclipse Foundation is now
+          comprised of four organizations:
+        </p>
+        <ul>
+          <li>
+            Eclipse Foundation AISBL is an international not-for-profit
+            association based in Brussels
+          </li>
+          <li>
+            Eclipse.org Foundation, Inc. is incorporated in the State of
+            Delaware, USA as a 501(c)6 not-for-profit
+          </li>
+          <li>
+            Eclipse Foundation Canada is a Canadian nonprofit member-based
+            organization incorporated under the laws of Canada
+          </li>
+          <li>
+            Eclipse Foundation Europe GmbH is a wholly-owned Germany subsidiary.
+          </li>
+        </ul>
+
+        <p>
+          The Board approved the 2020 audited financial statements of the
+          Foundation at its April 21, 2021 Board meeting.
+        </p>
+        <p>
+          The Foundation continues to operate on a solid financial footing while
+          continuing to grow. Despite the challenge created by the global
+          COVID-19 pandemic, membership renewals remained strong, including the
+          renewal of all Strategic Members. The Foundation also welcomed Daimler
+          DSS as a Strategic Member, further demonstrating the importance of the
+          Foundation to the automotive industry in general.
+        </p>
+        <p>
+          Working group revenue grew in 2020, notably with the introduction of
+          the Eclipse Cloud Development Tools working group. Overall, the
+          Foundation has grown to 17 working groups, with each generating
+          revenues to meet the specific objectives of the working group, and
+          overall strengthening the Foundation’s overall ability to drive member
+          value through its initiatives.
+        </p>
+        <p>
+          Of note, the formation of the Adoptium Working Group and the Eclipse
+          IDE Working Group in early 2021 both include long-term financial
+          commitments from members to the working group model. Looking ahead to
+          the full 2021 fiscal year, the Board approved a cash-neutral budget
+          that called for an increase of revenues to $7.3M, forecasting a
+          deficit of $0.3M. The forecast approved by the Board is considered
+          conservative, based on the ongoing uncertainty surrounding the global
+          pandemic and its impact on membership.
+        </p>
+        <p>
+          As a matter of governance, management provides quarterly updates to
+          the Board’s finance committee. Further, all Members are kept up to
+          date regarding the Foundation’s budget through quarterly reports given
+          through its Member Newsletter publications.
+        </p>
+
+        <p><strong>Eclipse Foundation Income and Expenses, by Year</strong></p>
+
+        <table class="table table-stripped">
+          <thead>
+            <tr>
+              <th>
+                <p>In USD millions</p>
+              </th>
+              <th>
+                <p>2018</p>
+              </th>
+              <th>
+                <p>2019</p>
+              </th>
+              <th>
+                <p>2020</p>
+              </th>
+              <th>
+                <p>2021 Budget</p>
+              </th>
+              <th>&nbsp;</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr>
+              <td>
+                <p>Revenue</p>
+              </td>
+              <td>
+                <p>5.9</p>
+              </td>
+              <td>
+                <p>5.7</p>
+              </td>
+              <td>
+                <p>6.7</p>
+              </td>
+              <td>
+                <p>7.3</p>
+              </td>
+              <td>&nbsp;</td>
+            </tr>
+            <tr>
+              <td>
+                <p>Expenses</p>
+              </td>
+              <td>
+                <p>6.2</p>
+              </td>
+              <td>
+                <p>6.2</p>
+              </td>
+              <td>
+                <p>6.6</p>
+              </td>
+              <td>
+                <p>7.6</p>
+              </td>
+              <td>&nbsp;</td>
+            </tr>
+            <tr>
+              <td>
+                <p>Net Income</p>
+              </td>
+              <td>
+                <p>(0.3)</p>
+              </td>
+              <td>
+                <p>(0.5)</p>
+              </td>
+              <td>
+                <p>0.1</p>
+              </td>
+              <td>
+                <p>(0.3)</p>
+              </td>
+              <td>&nbsp;</td>
+            </tr>
+          </tbody>
+        </table>
+
+        <h2 id="a_6">Membership</h2>
+        <p>
+          As of March 31, 2021, the Eclipse Foundation has 14 strategic members.
+        </p>
+        <div class="member-logos">
+          <img
+            src="/org/foundation/reports/images/logos/bosch.png"
+            alt="Bosch logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/list.jpg"
+            alt="list ceatech logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/daimler_tss.png"
+            alt="Daimler TSS logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/dlr.png"
+            alt="DLR logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/fujitsu.png"
+            alt="FUJITSU logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/fraunhofer_fokus.png"
+            alt="Fraunhofer FOKUS logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/huawei.png"
+            alt="HUAWEI logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/ibm.png"
+            alt="IBM logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/iota.png"
+            alt="IOTA logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/konduit.png"
+            alt="KONDUIT logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/obeo.png"
+            alt="OBEO logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/oracle.png"
+            alt="ORACLE logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/red_hat.png"
+            alt="Red Hat logo"
+          />
+          <img
+            src="/org/foundation/reports/images/logos/sap.png"
+            alt="SAP logo"
+          />
+        </div>
+        <p>
+          Of note, the Eclipse Foundation also counts over 1,694 committers.
+          Committers are entitled to membership in the Foundation, and play a
+          valuable role in Eclipse Foundation governance, including
+          representation on the Eclipse Board and on many working group steering
+          committees.
+        </p>
+        <p>
+          As of March 31, 2021, the Foundation counts 341 organizations as
+          members. A total of 58 new companies joined as new members of the
+          Foundation from April 1, 2020 through March 31, 2021.
+        </p>
+        <p>
+          As proof of the continued importance of Eclipse working groups to our
+          membership, fully 93% of our Strategic Members participate in one or
+          more working groups, as do approximately 70% of Contributing Members.
+          Further, approximately 50% of new members that joined in 2020 did so
+          as a direct result of their involvement in one or more Eclipse
+          Foundation working groups. We believe this is proof that engagement in
+          working groups continues to be a significant value proposition for
+          participation in Eclipse Foundation membership.
+        </p>
+        <p>
+          The Foundation has continued its relationship with OpenHW Group, the
+          Canadian-based open hardware nonprofit organization dedicated to
+          fostering collaboration among global hardware and software designers
+          in the development of open source cores, related IP, tools, and
+          software. All OpenHW Group Platinum, Gold, and Silver members are also
+          Contributing Members of the Eclipse Foundation, and as of March, 2021,
+          this amounted to 49 Contributing Members.
+        </p>
+        <p>
+          A full list of our members can be seen on our
+          <a href="membership/exploreMembership.php#allmembers"
+            >Explore Our Members</a
+          >
+          page.
+        </p>
+
+        <p><strong>New Members of the Eclipse Foundation</strong></p>
+        <p>
+          The new members that have joined the Eclipse Foundation between April
+          2020 and March 2021 include:
+        </p>
+        <img
+          style="width: 100%; margin-bottom: 40px"
+          src="/org/foundation/reports/images/2021/new-members.jpg"
+          alt="Bosch logo"
+        />
+      </div>
+      <hr />
+      <p style="color: #656668; font-size: 12px; margin-bottom: 40px">
+        © 2021 Eclipse Foundation - 2021 Annual Community Report
+      </p>
+    </div>
+  </body>
+</html>
diff --git a/foundation/reports/2021_annual_report.php b/foundation/reports/2021_annual_report.php
new file mode 100644
index 0000000..1701eef
--- /dev/null
+++ b/foundation/reports/2021_annual_report.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Copyright (c) 2005, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Eric Poirier (Eclipse Foundation)
+ */
+
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+
+$App = new App();
+$Nav = new Nav();
+$Theme = $App->getThemeClass();
+
+include ($App->getProjectCommon());
+
+$pageTitle = "2021 Annual Community Report";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("eclipse, foundation, community, annual report, 2021, vision, mission, eclipse vision, eclipse foundation mission, eclipse mission");
+$Theme->setPageAuthor("Mike Milinkovich");
+
+
+ob_start();
+include ("2021_annual_report.html");
+$html = ob_get_clean();
+$html .= <<<EOHTML
+
+  <div id="rightcolumn">
+    <div class="sideitem">
+      <h6 id="a_15">Related Links</h6>
+      <ul>
+      <li><a href="2020_annual_report.php">2020 Annual Report</a></li>
+      <li><a href="2019_annual_report.php">2019 Annual Report</a></li>
+      <li><a href="2018_annual_report.php">2018 Annual Report</a></li>
+      <li><a href="2017_annual_report.php">2017 Annual Report</a></li>
+      <li><a href="2016_annual_report.php">2016 Annual Report</a></li>
+      <li><a href="2015_annual_report.php">2015 Annual Report</a></li>
+      <li><a href="2014_annual_report.php">2014 Annual Report</a></li>
+      <li><a href="2013_annual_report.php">2013 Annual Report</a></li>
+      <li><a href="2012_annual_report.php">2012 Annual Report</a></li>
+      </ul>
+    </div>
+  </div>
+EOHTML;
+
+
+$Theme->setNav($Nav);
+$Theme->setHtml($html);
+$Theme->generatePage();
+
diff --git a/foundation/reports/annual_report.php b/foundation/reports/annual_report.php
index 9024221..0ae2622 100644
--- a/foundation/reports/annual_report.php
+++ b/foundation/reports/annual_report.php
@@ -13,5 +13,5 @@
  * SPDX-License-Identifier: EPL-2.0
  */
 
-include '2020_annual_report.php';
+include '2021_annual_report.php';
 ?>
diff --git a/foundation/reports/images/2021/new-members.jpg b/foundation/reports/images/2021/new-members.jpg
new file mode 100644
index 0000000..58c1d9d
--- /dev/null
+++ b/foundation/reports/images/2021/new-members.jpg
Binary files differ
diff --git a/foundation/reports/images/logos/bosch.png b/foundation/reports/images/logos/bosch.png
new file mode 100644
index 0000000..7ce225e
--- /dev/null
+++ b/foundation/reports/images/logos/bosch.png
Binary files differ
diff --git a/foundation/reports/images/logos/daimler_tss.png b/foundation/reports/images/logos/daimler_tss.png
new file mode 100644
index 0000000..e78b27c
--- /dev/null
+++ b/foundation/reports/images/logos/daimler_tss.png
Binary files differ
diff --git a/foundation/reports/images/logos/dlr.png b/foundation/reports/images/logos/dlr.png
new file mode 100644
index 0000000..2ba3f0b
--- /dev/null
+++ b/foundation/reports/images/logos/dlr.png
Binary files differ
diff --git a/foundation/reports/images/logos/fraunhofer_fokus.png b/foundation/reports/images/logos/fraunhofer_fokus.png
new file mode 100644
index 0000000..937631d
--- /dev/null
+++ b/foundation/reports/images/logos/fraunhofer_fokus.png
Binary files differ
diff --git a/foundation/reports/images/logos/fujitsu.png b/foundation/reports/images/logos/fujitsu.png
new file mode 100644
index 0000000..2d019c5
--- /dev/null
+++ b/foundation/reports/images/logos/fujitsu.png
Binary files differ
diff --git a/foundation/reports/images/logos/huawei.png b/foundation/reports/images/logos/huawei.png
new file mode 100644
index 0000000..922d4e5
--- /dev/null
+++ b/foundation/reports/images/logos/huawei.png
Binary files differ
diff --git a/foundation/reports/images/logos/ibm.png b/foundation/reports/images/logos/ibm.png
new file mode 100644
index 0000000..049ba75
--- /dev/null
+++ b/foundation/reports/images/logos/ibm.png
Binary files differ
diff --git a/foundation/reports/images/logos/iota.png b/foundation/reports/images/logos/iota.png
new file mode 100644
index 0000000..181a5f6
--- /dev/null
+++ b/foundation/reports/images/logos/iota.png
Binary files differ
diff --git a/foundation/reports/images/logos/konduit.png b/foundation/reports/images/logos/konduit.png
new file mode 100644
index 0000000..2175fe7
--- /dev/null
+++ b/foundation/reports/images/logos/konduit.png
Binary files differ
diff --git a/foundation/reports/images/logos/list.jpg b/foundation/reports/images/logos/list.jpg
new file mode 100644
index 0000000..12a7b0a
--- /dev/null
+++ b/foundation/reports/images/logos/list.jpg
Binary files differ
diff --git a/foundation/reports/images/logos/obeo.png b/foundation/reports/images/logos/obeo.png
new file mode 100644
index 0000000..7e1bc9e
--- /dev/null
+++ b/foundation/reports/images/logos/obeo.png
Binary files differ
diff --git a/foundation/reports/images/logos/oracle.png b/foundation/reports/images/logos/oracle.png
new file mode 100644
index 0000000..b34ce0c
--- /dev/null
+++ b/foundation/reports/images/logos/oracle.png
Binary files differ
diff --git a/foundation/reports/images/logos/red_hat.png b/foundation/reports/images/logos/red_hat.png
new file mode 100644
index 0000000..23e7b18
--- /dev/null
+++ b/foundation/reports/images/logos/red_hat.png
Binary files differ
diff --git a/foundation/reports/images/logos/sap.png b/foundation/reports/images/logos/sap.png
new file mode 100644
index 0000000..84f8ca9
--- /dev/null
+++ b/foundation/reports/images/logos/sap.png
Binary files differ
