diff --git a/site/_data/menu.yml b/site/_data/menu.yml index 6095edc2..78ab6950 100644 --- a/site/_data/menu.yml +++ b/site/_data/menu.yml @@ -11,6 +11,8 @@ about: href: /#our-projects - title: Our Sponsors href: /about/sponsors/ + - title: Sustainability Initiative + href: /about/ossi.html - title: Foundation Bylaws href: /bylaws - title: Foundation Policies diff --git a/site/_includes/layouts/display-ossi-sponsors.vto b/site/_includes/layouts/display-ossi-sponsors.vto new file mode 100644 index 00000000..aec92cfa --- /dev/null +++ b/site/_includes/layouts/display-ossi-sponsors.vto @@ -0,0 +1,33 @@ +{{- if tier.layout == 1 }} +
+ {{- for sponsor of sponsorGroup }} + {{- set ossiHome = sponsor.ossi.home || sponsor.display.home }} + {{- set ossiDescription = sponsor.ossi.description || sponsor.display.description }} +
+ {{ include "layouts/display-logo.vto" { name: sponsor.name, display: sponsor.display, rel: "sponsored" } }} +
+

{{ sponsor.name }}

+ {{- if sponsor.ossi.role === 'founder' }} + + {{- /if }} +

{{ ossiDescription |> md(true) }}

+
+
+ {{- /for }} +{{- else if tier.layout == 2 }} +
+ {{- for sponsor of sponsorGroup }} + {{- set ossiHome = sponsor.ossi.home || sponsor.display.home }} + {{- set ossiDescription = sponsor.ossi.description || sponsor.display.description }} +
+ {{ include "layouts/display-logo.vto" { name: sponsor.name, display: sponsor.display, rel: "sponsored" } }} +
+ {{- if sponsor.ossi.role === 'founder' }} + + {{- /if }} +

{{ ossiDescription |> md(true) }}

+
+
+ {{- /for }} +{{ /if -}} +
diff --git a/site/about/_data.ts b/site/about/_data.ts index 243c0dc0..72bfb91e 100644 --- a/site/about/_data.ts +++ b/site/about/_data.ts @@ -62,6 +62,11 @@ interface Sponsor { display?: Display; inKind?: Display; reps: AdvisorContact[]; + ossi?: { + role: 'founder' | 'partner'; + home?: string; + description?: string; + }; } interface GroupedSponsors { [key: string]: Sponsor[]; @@ -250,6 +255,22 @@ function tier(tier: string): SponsorTier { return tiers[tier]; } +function ossiSponsors(): GroupedSponsors { + const result: GroupedSponsors = {}; + for (const [key, sponsors] of Object.entries(groupedSponsors)) { + if (key === 'inKind') continue; + const ossi = sponsors.filter(s => s.ossi); + if (ossi.length === 0) continue; + // founders first, then partners, otherwise preserve order + result[key] = ossi.sort((a, b) => { + if (a.ossi?.role === 'founder' && b.ossi?.role !== 'founder') return -1; + if (a.ossi?.role !== 'founder' && b.ossi?.role === 'founder') return 1; + return 0; + }); + } + return result; +} + function members(): User[] { return Object.values(USER_DATA) .filter((user: User) => user.groups?.includes(MEMBERS) && user.groups?.length === 1); @@ -272,5 +293,6 @@ export { filteredTiers, inKind, members, - supporters + supporters, + ossiSponsors } diff --git a/site/about/ossi.md b/site/about/ossi.md new file mode 100644 index 00000000..dcf1ab97 --- /dev/null +++ b/site/about/ossi.md @@ -0,0 +1,84 @@ +--- +title: Open Source Sustainability Initiative +description: Our Open Source Sustainability Initiative and Partners +templateEngine: [vto] +index: true +metas: + robots: true +cssclasses: +- projects +- sponsors +scripts: +- /assets/random-sponsor.js +--- +

The Commonhaus Foundation Open Source Sustainability Initiative (OSSI) recognizes organizations +that take responsibility for the security and stability of open source software beyond its end-of-life (EOL). +For organizations that depend on EOL software but cannot yet upgrade, OSSI partners provide continued security support and compatibility fixes.

+ +

Explore our partners below, or learn more about the initiative and how to join.

+ +
+ +{{- set ossiSponsors = page.data.ossiSponsors() }} +{{- set tiers = page.data.filteredTiers(ossiSponsors) }} +{{- if Object.keys(ossiSponsors).length == 0 }} +

Coming soon 🚀

+{{ else }} +{{- for key, tier of tiers }} +{{- if ossiSponsors[key] }} +{{- set sponsorGroup = ossiSponsors[key] }} +

{{ tier.name }} Initiative Partners

+{{ include "layouts/display-ossi-sponsors.vto" { tier: tier, sponsorGroup: sponsorGroup } }} +{{ /if -}} +{{ /for -}} +{{ /if }} + +
+ +

About the Initiative

+ +

Legacy codebases, compliance requirements, and complex dependency chains can make immediate upgrades impractical. +Our OSSI partners bridge that gap, providing ongoing support for EOL software so that project maintainers can focus on what's next.

+ +

Commonhaus projects are expected to clearly identify end-of-life and unsupported releases and link to this initiative as a resource for users seeking continued support.

+ +
+ +

Partner commitments

+ +

Each OSSI partner determines which software and versions it supports. Inclusion in OSSI does not mean that every partner supports every Commonhaus project or every EOL release.

+ +

For the software a partner does support, you can expect them to:

+ + + +
+ +

Joining the Initiative

+ +

Participation is open to organizations that meet all of the following requirements:

+ + + +

To apply, see our sponsorship tiers and benefits and contact us at sponsors@commonhaus.org.

+ +
+ +

Governance and independence

+ +

OSSI operates within the Commonhaus Foundation's existing governance structure. +Participation does not grant governance rights, authority over project roadmaps or technical direction, or endorsement beyond inclusion in this initiative. +Foundation governance and project stewardship remain defined by the bylaws and policies.

+ +

Services listed here are provided by the named partners directly, not by the Commonhaus Foundation. +Each partner determines the specific software they support — the Foundation makes no guarantees about coverage or availability. +Use of Commonhaus project names and logos must comply with Foundation trademark guidelines.

diff --git a/site/static/images/sponsors/herodevs-Logo-Gradient-Dark.png b/site/static/images/sponsors/herodevs-Logo-Gradient-Dark.png new file mode 100644 index 00000000..88774a75 Binary files /dev/null and b/site/static/images/sponsors/herodevs-Logo-Gradient-Dark.png differ diff --git a/site/static/images/sponsors/herodevs-Logo-Gradient-Light.png b/site/static/images/sponsors/herodevs-Logo-Gradient-Light.png new file mode 100644 index 00000000..60b52efb Binary files /dev/null and b/site/static/images/sponsors/herodevs-Logo-Gradient-Light.png differ