<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Eclipse Foundation | Olivier Goulet</title><link>http://oliviergoulet.dev/tags/eclipse-foundation/</link><description>Recent content in Eclipse Foundation on Olivier Goulet</description><generator>Hugo</generator><language>en-ca</language><lastBuildDate>Thu, 07 May 2026 16:00:00 -0500</lastBuildDate><atom:link href="http://oliviergoulet.dev/tags/eclipse-foundation/index.xml" rel="self" type="application/rss+xml"/><item><title>Introducing Solstice Components</title><link>http://oliviergoulet.dev/posts/introducing-solstice-components/</link><pubDate>Thu, 07 May 2026 16:00:00 -0500</pubDate><guid isPermaLink="true">http://oliviergoulet.dev/posts/introducing-solstice-components/</guid><description>We’ve rebuilt our component library from the ground up to be more flexible,
more stable, and easier to use. Now, whether you’re maintaining an Eclipse
project website or a Working Group site, you can integrate these components
with minimal configuration regardless of your website’s tech stack.</description><content:encoded><![CDATA[<p>We&rsquo;ve rebuilt our component library from the ground up to be more flexible,
more stable, and easier to use. Now, whether you&rsquo;re maintaining an Eclipse
project website or a website for an Eclipse Foundation Working Group, you can
integrate these components with minimal configuration regardless of your
website&rsquo;s tech stack.</p>
<h2 id="the-old-library-served-us-well---heres-why-we-built-something-better">The old library served us well - here&rsquo;s why we built something better</h2>
<p>The old component library, Solstice Assets, was built on top of a combination
of jQuery, vanilla JavaScript, LESS stylesheets, and Mustache templates. While
it served us well for many years (10+), it had several issues:</p>
<ol>
<li><strong>Portability:</strong> The legacy component library was tightly coupled to
eclipse.org’s global styles, making it difficult to reuse components on
other sites without style conflicts. It also introduced significant CSS
overhead, increasing the consumer’s bundle size.</li>
<li><strong>Distribution:</strong> Solstice Assets could be included either via NPM or by
downloading build artifacts from eclipse.org. The NPM option required a
fairly strict build setup, often forcing your tooling to be built around the
library’s Webpack configuration rather than your own, which reduced
compatibility with other tools. The downloadable artifacts lacked
versioning, leading to risk of instability when updates were made.</li>
<li><strong>Scope:</strong> The library tried to do too much. It bundled a full CSS framework
(Bootstrap 3), global styles, and a large set of components, making it
difficult to adopt selectively or use only what you actually needed. While
this worked for sites already aligned with our styles, it created friction
for those with their own independent design systems and visual identity.</li>
</ol>
<p>These issues introduced significant barriers to entry for many developers who
aren&rsquo;t front-end specialists. To better support the Eclipse community, we had
to go back to the drawing board and build something more portable, easier to
integrate, and focused purely on components. We had to build a component
library that was truly for everyone in the Eclipse community, regardless of
their technical expertise or the tech stack they were using.</p>
<h2 id="introducing-our-new-component-library">Introducing our new component library</h2>
<p>Our new library, <em><a href="https://gitlab.eclipse.org/eclipsefdn/software-dev/frameworks-and-tools/solstice-components" rel="external" target="_blank">Solstice Components</a>
</em>,
is built on Web Components, a native web platform feature that allows us to
define <em>custom</em> HTML elements. This makes the components extremely simple to
use: just drop them into your markup like any standard HTML tag. No build step
required, it works out of the box.</p>
<p>Web Components are designed to integrate into any web page, regardless of the
underlying technology. This means you can use our components in a React app, a
WordPress site, or even a plain HTML page without additional setup<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>.</p>
<p>They also benefit from style encapsulation, so component styles don’t clash
with your website’s styles. This improves portability and ease of use.</p>
<h2 id="examples">Examples</h2>
<p>To display a list of project adopters for a particular project, you can simply
add the following HTML to your webpage:</p>
<div class="highlight"><div style="color:#c0caf5;background-color:#1a1b26;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#c0caf5;background-color:#1a1b26;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#a9b1d6">1
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#c0caf5;background-color:#1a1b26;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#bb9af7">efsc-project-adopter-logo-list</span> <span style="color:#7aa2f7">projectid</span><span style="color:#9ece6a;font-weight:bold">=</span><span style="color:#9ece6a">&#34;ecd.openvsx&#34;</span>&gt;&lt;/<span style="color:#bb9af7">efsc-project-adopter-logo-list</span>&gt;
</span></span></code></pre></td></tr></table>
</div>
</div><figure class="md:-mx-24">
  <img src="http://oliviergoulet.dev/posts/introducing-solstice-components/images/adopters.webp" alt="A list of project adopters for the Open VSX project. From left to right: Broadcom, Coder, Ericsson, Gitpod, IBM, Onivim, SAP, TypeFox, VSCodium"><figcaption><p>A list of project adopters for Open VSX as of May 2026</p></figcaption></figure>

<p>If you want to display a working group&rsquo;s member organizations, you can add the
following HTML:</p>
<div class="highlight"><div style="color:#c0caf5;background-color:#1a1b26;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#c0caf5;background-color:#1a1b26;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#a9b1d6">1
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#c0caf5;background-color:#1a1b26;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#bb9af7">efsc-member-logo-list</span> <span style="color:#7aa2f7">type</span><span style="color:#9ece6a;font-weight:bold">=</span><span style="color:#9ece6a">&#34;working-group&#34;</span> <span style="color:#7aa2f7">collaboration</span><span style="color:#9ece6a;font-weight:bold">=</span><span style="color:#9ece6a">&#34;adoptium&#34;</span>&gt;&lt;/<span style="color:#bb9af7">efsc-member-logo-list</span>&gt;
</span></span></code></pre></td></tr></table>
</div>
</div><figure class="md:-mx-24">
  <img src="http://oliviergoulet.dev/posts/introducing-solstice-components/images/members.webp" alt="List of logos from member organizations for the Adoptium Working Group. From left to right: Alibaba Cloud, Bloomberg Engineering, Canonical, Fujitsu, Google, IBM, iJUG Association, Microsoft, OpenElements, Rivos"><figcaption><p>List of logos from member organizations for the Adoptium Working Group</p></figcaption></figure>

<p>To display a list of events, you can do the following:</p>
<div class="highlight"><div style="color:#c0caf5;background-color:#1a1b26;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#c0caf5;background-color:#1a1b26;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#a9b1d6">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#a9b1d6">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#a9b1d6">3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#a9b1d6">4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#a9b1d6">5
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#c0caf5;background-color:#1a1b26;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#bb9af7">efsc-collection</span> <span style="color:#7aa2f7">pagesize</span><span style="color:#9ece6a;font-weight:bold">=</span><span style="color:#9ece6a">&#34;2&#34;</span> <span style="color:#7aa2f7">autoscroll</span><span style="color:#9ece6a;font-weight:bold">=</span><span style="color:#9ece6a">&#34;true&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#bb9af7">efsc-event-filters</span>&gt;&lt;/<span style="color:#bb9af7">efsc-event-filters</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#bb9af7">efsc-event-list</span>&gt;&lt;/<span style="color:#bb9af7">efsc-event-list</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#bb9af7">efsc-pagination</span> <span style="color:#7aa2f7">maxvisible</span><span style="color:#9ece6a;font-weight:bold">=</span><span style="color:#9ece6a">&#34;5&#34;</span> <span style="color:#7aa2f7">justify</span><span style="color:#9ece6a;font-weight:bold">=</span><span style="color:#9ece6a">&#34;center&#34;</span>&gt;&lt;/<span style="color:#bb9af7">efsc-pagination</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#bb9af7">efsc-collection</span>&gt;
</span></span></code></pre></td></tr></table>
</div>
</div><figure class="md:-mx-24">
  <img src="http://oliviergoulet.dev/posts/introducing-solstice-components/images/events.webp"><figcaption><p>A list of events with the event filters and pagination components</p></figcaption></figure>

<h2 id="try-it-out">Try it out</h2>
<p>If you&rsquo;re interested in trying out the new Solstice Components, you can find
the documentation and installation instructions on our
<a href="https://webdev.eclipse.org/docs/components" rel="external" target="_blank">website</a>
.
It can be installed via NPM or you can find embeds to include the library
directly in your HTML from a CDN.</p>
<h2 id="conclusion">Conclusion</h2>
<p>This is just the beginning. We&rsquo;ve built the foundation for something better,
and we&rsquo;re counting on your feedback to keep improving it. Try the new component
library in your existing site. We think you&rsquo;ll notice the difference
immediately. And if you have ideas for new components or improvements, we&rsquo;d
love to hear you by <a href="https://gitlab.eclipse.org/eclipsefdn/software-dev/frameworks-and-tools/solstice-components/-/issues" rel="external" target="_blank">creating an issue</a>
!
This library is for the entire Eclipse community.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Web Components still require you to include the JavaScript that defines
them in the browser. In our case, they also require a small CSS theme file,
but these themes are fully compatible and designed to avoid any style
conflicts.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item></channel></rss>