Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/_includes/components/footer.liquid
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
<li>
<a href="/documents/">Documents</a>
</li>
<li>
<a href="/media-room/">Media room</a>
</li>
<li>
<a href="/user-research-agreement/">User research agreement</a>
</li>
Expand Down
6 changes: 4 additions & 2 deletions src/_includes/components/navbar.liquid
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,14 @@
</ul>
</li>

<li class="menu-item has-dropdown {% if page.url == '/documents/' or page.url == '/papers/privacy/' %}active{% endif %}">
<li class="menu-item has-dropdown {% if page.url == '/documents/' or page.url == '/papers/privacy/' or page.url == '/media-room/' %}active{% endif %}">
<a href="#" aria-haspopup="true">Resources<span class="dropdown-arrow" aria-hidden="true"></span></a>
<ul class="dropdown">
<li class="{% if page.url == '/papers/privacy/' %}active{% endif %}">
<a href="/papers/privacy/">Privacy paper</a>
</li>
<li class="{% if page.url == '/documents/' %}active{% endif %}"><a href="/documents/">Documents</a></li>
<li class="{% if page.url == '/media-room/' %}active{% endif %}"><a href="/media-room/">Media room</a></li>
</ul>
</li>

Expand Down Expand Up @@ -78,7 +79,7 @@
</ul>
</details>
</li>
<li class="navbar-menu-item has-dropdown {% if page.url == '/documents/' %}active{% endif %}">
<li class="navbar-menu-item has-dropdown {% if page.url == '/documents/' or page.url == '/papers/privacy/' or page.url == '/media-room/' %}active{% endif %}">
<details
{% if page.url == '/documents/' %}
open
Expand All @@ -90,6 +91,7 @@
<a href="/papers/privacy/">Privacy paper</a>
</li>
<li class="{% if page.url == '/documents/' %}active{% endif %}"><a href="/documents/">Documents</a></li>
<li class="{% if page.url == '/media-room/' %}active{% endif %}"><a href="/media-room/">Media room</a></li>
</ul>
</details>
</li>
Expand Down
6 changes: 3 additions & 3 deletions src/_includes/paper.liquid
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
layout: base
---
<div class="bg-gradient-paper-header">
<section id="paper-header">
<div class="{% if hero == 'blue' %}bg-gradient-agreement-header{% else %}bg-gradient-paper-header{% endif %}">
<section id="paper-header"{% if hero == 'blue' %} class="hero-light"{% endif %}>
<div class="container">
<div class="grid">
<div class="column col-s-12 col-m-10 col-m-offset-2">
Expand All @@ -21,7 +21,7 @@ layout: base
{% endif %}
{% if pdf %}
<p class="text-center mt-32">
<a href="{{ pdf }}" class="button button-outline-light" target="_blank" rel="noopener noreferrer">
<a href="{{ pdf }}" class="button {% if hero == 'blue' %}button-outline{% else %}button-outline-light{% endif %}" target="_blank" rel="noopener noreferrer">
Download PDF
{% include 'svg/arrow_outward.svg' %}
</a>
Expand Down
6 changes: 6 additions & 0 deletions src/_includes/svg/download.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 9 additions & 1 deletion src/assets/css/components/footer.css
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,22 @@
flex: 1;
list-style: none;
padding: 0;
margin: 0;
margin: 24px 0 0;
display: flex;
align-items: center;
justify-content: flex-end;
justify-content: center;
flex-wrap: wrap;
gap: 16px;
}

@media (min-width: 768px) {
.footer-header ul {
margin: 0;
justify-content: flex-end;
}
}

.footer-header ul li a {
text-decoration: none;
color: var(--primary-text-color);
Expand Down
80 changes: 80 additions & 0 deletions src/assets/css/pages/paper.css
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,27 @@
}
}

#paper-header.hero-light {
color: var(--primary-text-color);
}

#paper-header.hero-light .meta {
color: var(--primary-text-color);
}

#paper-header.hero-light h1 {
border-bottom-color: var(--grey-color);
}

#paper-header.hero-light .button svg #arrow_outward_2 {
fill: var(--primary-text-color);
transition: fill .18s ease-in-out;
}

#paper-header.hero-light .button:hover svg #arrow_outward_2 {
fill: var(--light-grey-color);
}

#paper {
padding-top: 40px;
padding-bottom: 80px;
Expand Down Expand Up @@ -126,3 +147,62 @@
margin-top: -16px;
font-size: 14px;
}

#paper .content blockquote {
margin: 32px 0;
padding: 20px 28px;
border-left: 3px solid var(--primary-color);
border-radius: 0 12px 12px 0;
background: var(--secondary-background-color);
}

#paper .content blockquote p {
margin-bottom: 8px;
font-size: 20px;
font-weight: 500;
color: var(--primary-text-color);
}

#paper .content blockquote p:last-child {
margin-bottom: 0;
font-size: 14px;
font-weight: 500;
color: var(--secondary-text-color);
}

#paper .content table {
width: 100%;
border-collapse: collapse;
margin-top: 24px;
margin-bottom: 24px;
font-size: 16px;
font-weight: 300;
color: var(--secondary-text-color);
}

#paper .content th,
#paper .content td {
padding: 14px 20px;
text-align: left;
vertical-align: top;
border-bottom: 1px solid var(--light-grey-color);
}

#paper .content th:first-child,
#paper .content td:first-child {
border-right: 1px solid var(--grey-color);
}

#paper .content thead th {
font-weight: 500;
color: var(--primary-text-color);
border-bottom: 2px solid var(--grey-color);
}

#paper .content tbody tr:nth-child(even) {
background-color: var(--light-grey-color);
}

#paper .content tbody tr:last-child td {
border-bottom: none;
}
114 changes: 114 additions & 0 deletions src/assets/css/pages/press-kit.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/* Media room / press kit */
#press-kit-intro {
padding-top: 150px;
padding-bottom: 50px;
}

#press-kit-intro p.subtitle {
color: var(--dark-grey-color);
font-size: 24px;
font-weight: 300;
}

#press-kit-about {
padding-top: 32px;
padding-bottom: 32px;
}

@media (min-width: 768px) {
#press-kit-about {
padding-top: 96px;
}
}

#press-kit-downloads {
padding-top: 32px;
padding-bottom: 32px;
}

@media (min-width: 768px) {
#press-kit-downloads {
padding-top: 64px;
padding-bottom: 96px;
}
}

#press-kit-downloads .download-card {
position: relative;
display: flex;
flex-direction: column;
height: 100%;
padding: 24px;
padding-right: 48px;
border-radius: 16px;
border: 1px solid rgba(237, 236, 237, 0.8);
background: rgba(237, 236, 237, 0.5);
color: inherit;
text-decoration: none;
outline: none;
transition: background-color 0.2s ease;
}

@media (min-width: 768px) {
#press-kit-downloads .download-card {
padding: 32px;
padding-right: 64px;
}
}

#press-kit-downloads .download-card:hover,
#press-kit-downloads .download-card:focus-visible {
background: rgba(237, 236, 237, 0.9);
}

#press-kit-downloads .download-card svg {
position: absolute;
top: 24px;
right: 16px;
}

#press-kit-downloads .download-card svg #arrow_outward_2,
#press-kit-downloads .download-card svg rect {
fill: var(--primary-text-color);
}

@media (min-width: 768px) {
#press-kit-downloads .download-card svg {
top: 32px;
right: 32px;
}
}

#press-kit-downloads .download-card h3 {
font-size: 20px;
font-weight: 500;
margin-bottom: 12px;
padding-right: 32px;
color: var(--primary-text-color);
}

#press-kit-downloads .download-card p {
margin: 0;
font-size: 15px;
font-weight: 300;
color: var(--secondary-text-color);
}

#press-kit-news {
padding-top: 32px;
padding-bottom: 64px;
}

@media (min-width: 768px) {
#press-kit-news {
padding-bottom: 96px;
}
}

#press-kit-news .news-header {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 24px;
}
1 change: 1 addition & 0 deletions src/assets/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,5 @@
@import "pages/projects.css";
@import "pages/blog.css";
@import "pages/paper.css";
@import "pages/press-kit.css";
@import "pages/404.css";
47 changes: 47 additions & 0 deletions src/media-room/annual-report-factsheet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
layout: paper
hero: blue
lead: "Media & press resource · Swiss non-profit stiftung"
title: "2025 Annual Activity Report: Factsheet"
description: "Growth stats, operational maturation highlights, and engineering milestones from the foundation's inaugural annual report."
pdf: /assets/documents/annual-report-2025-11-jun-2026.pdf
noindex: true
---

## Headline figures

- **CHF 8.84M total revenue:** Generated through commercial licensing partnerships and independent donations.
- **2.28M+ active households:** Home Assistant installations grew 28% year-over-year globally.
- **52 salaried staff:** Over 60% of total revenue is invested directly into human resources, engineering continuity, and operational security.
- **250+ governed open source projects:** Standards, drivers, and platforms protected from corporate buy-outs.

## Inaugural annual report: Building an open source alternative to Big Tech

Following its launch in 2024, the Open Home Foundation has released its inaugural annual report, documenting its first full year operating as an independent Swiss non-profit stiftung. The report outlines how the foundation established its core operational structure, and is investing in people to help fulfill its mission to build a smart home ecosystem with privacy, choice, and sustainability at its heart.

### Engineering milestones & ecosystem wins

The foundation expanded its software portfolio, hardware references, and core open standards to accelerate interoperability across the smart home landscape:

- **High-profile project stewardship:** Accepted full ownership and governance of major community projects, including *Music Assistant*, *HACS*, *Z-Wave JS*, *matter.js*, and *microWake Word*.
- **Sendspin audio protocol:** Initiated development of this open source, multi-room audio standard designed to offer a local-control alternative to closed systems like Apple AirPlay and Google Cast.
- **Official Matter certification:** Earned official Connectivity Standards Alliance Matter certification for Home Assistant and the Open Home Foundation Matter Server.
- **Open hardware reference designs:** Co-developed and released the Home Assistant Connect ZWA-2 (Z-Wave) and ZBT-2 (Zigbee/Thread) USB adapters with commercial partner Nabu Casa.
- **Smart home device database:** Initiated the development of a community-driven "Wiki" of smart home devices to help consumers make privacy-friendly purchases.

### Community engagement & industry advocacy

Beyond software development, the foundation deepened ties with its community, established core advocacy bodies, and funded external open-source infrastructure:

- **Global Community Day:** Hosted the inaugural event with 82 local, community-led meetups and more than 1,600 registered attendees worldwide.
- **Policy & Principles Working Group:** Established an independent internal watchdog answering to the Board, and published the landmark position paper *"Privacy in the Smart Home."*
- **Open source infrastructure grants:** Awarded €24,000 in direct grants (€8,000 each) to foundational open source infrastructure projects: *aio-libs*, *Alpine Linux*, and *Buildroot*.
- **Open Community Syncs:** Initiated major internal project planning sessions to the public, giving volunteers and users a direct line into development roadmap discussions.

### 2026 strategic priorities

Looking ahead, the foundation is directing its operational momentum and financial surplus toward community infrastructure and transparent co-development:

- **Dedicated Community Department:** Expanding a formal internal team to deepen integration, recognition, and support for volunteer contributors and non-technical users.
- **Building in the Open:** Focusing on transparent co-development practices between salaried staff, volunteer developers, and general consumers, with a roadmap that is available to all.
- **Surplus reserve allocation:** Directing financial surplus from 2025 into a dedicated reserve fund for 2026 community initiatives, events, and open source grants.
Loading