CINXE.COM

Libera Chat | A next-generation IRC network for FOSS projects collaboration!

<!DOCTYPE html> <html lang="en"><head> <link rel="preload" href="/static/fonts/comfortaa-v30-subset-regular.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/static/fonts/ubuntu-v15-latin-regular.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/static/fonts/ubuntu-v15-subset-500.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/static/img/libera-color.svg" as="image" type="image/svg+xml"> <meta charset="utf-8"> <meta content="IE=edge" http-equiv="X-UA-Compatible"> <meta content="width=device-width, initial-scale=1" name="viewport"><!-- Begin Jekyll SEO tag v2.7.1 --> <title>Libera Chat | A next-generation IRC network for FOSS projects collaboration!</title> <meta name="generator" content="Jekyll v4.3.0" /> <meta property="og:title" content="Libera Chat" /> <meta property="og:locale" content="en_GB" /> <meta name="description" content="A next-generation IRC network for FOSS projects collaboration!" /> <meta property="og:description" content="A next-generation IRC network for FOSS projects collaboration!" /> <link rel="canonical" href="https://libera.chat/" /> <meta property="og:url" content="https://libera.chat/" /> <meta property="og:site_name" content="Libera Chat" /> <meta name="twitter:card" content="summary" /> <meta property="twitter:title" content="Libera Chat" /> <script type="application/ld+json"> {"description":"A next-generation IRC network for FOSS projects collaboration!","@type":"Organisation","url":"https://libera.chat/","headline":"Libera Chat","name":"Libera Chat","@context":"https://schema.org"}</script> <!-- End Jekyll SEO tag --> <link rel="alternate" type="application/atom+xml" title="Libera Chat News" href="/atom.xml"> <link rel="icon" type="image/svg+xml" href="/static/img/libera-color.svg"> <link rel="alternate icon" href="/favicon.ico"> <!-- Stylesheets --> <style>/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */ *,::after,::before{box-sizing:border-box}:root{-moz-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}body{font-family:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji'}hr{height:0;color:inherit}abbr[title]{text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}</style> <style>@font-face { /* comfortaa-regular - subset */ font-family: 'Comfortaa'; src: url('/static/fonts/comfortaa-v30-subset-regular.woff2') format('woff2'), url('/static/fonts/comfortaa-v30-subset-regular.woff') format('woff'), url('/static/fonts/comfortaa-v30-subset-regular.ttf') format('truetype'); font-style: normal; font-weight: 400; font-display: swap; /* . C L a b e h i r t */ unicode-range: U+002E, U+0043, U+004C, U+0061-0062, U+0065, U+0068-0069, U+0072, U+0074; } @font-face { /* ubuntu-regular - latin */ font-family: 'Ubuntu'; src: local(''), url('/static/fonts/ubuntu-v15-latin-regular.woff2') format('woff2'), url('/static/fonts/ubuntu-v15-latin-regular.woff') format('woff'), url('/static/fonts/ubuntu-v15-latin-regular.ttf') format('truetype'); font-style: normal; font-weight: 400; font-display: swap; } @font-face { /* ubuntu-500 - subset */ font-family: 'Ubuntu'; src: local(''), url('/static/fonts/ubuntu-v15-subset-500.woff2') format('woff2'), url('/static/fonts/ubuntu-v15-subset-500.woff') format('woff'), url('/static/fonts/ubuntu-v15-subset-500.ttf') format('truetype'); font-style: normal; font-weight: 500; font-display: swap; /* C c e n o t */ unicode-range: U+0043 U+0063 U+0065 U+006E U+006F U+0074; } :root { --header-height: 4rem; --content-inline-padding: 1.3rem; --content-max-width: 80ch; /* define our palette for all themes */ --white: #fff; --gray-100: #f3f4f6; --gray-200: #e5e7eb; --gray-300: #d1d5db; --gray-400: #9ca3af; --gray-800: #1f2937; --gray-900: #111827; --brand-purple: #5555ff; --brand-pink: #ff55dd; /* light-theme vars */ --c-bg: var(--gray-100); --c-bg-secondary: var(--white); --c-text: var(--gray-800); --c-border: var(--gray-300); --c-hl: var(--brand-pink); --c-hl-secondary: var(--brand-purple); --c-text-on-hl: var(--gray-800); --c-text-on-hl-secondary: var(--white); } @media (prefers-color-scheme: dark) { :root { --c-bg: var(--gray-800); --c-bg-secondary: var(--gray-900); --c-text: var(--gray-200); --c-border: var(--gray-400); } } * { color: var(--c-text); box-sizing: border-box; font-family: Ubuntu, sans-serif; letter-spacing: .1ch; } main *, .hero * { line-height: 1.5; } body { background-color: var(--c-bg); min-height: 100vh; display: grid; grid-template-rows: var(--header-height) min-content auto auto min-content; grid-template-columns: 1fr; grid-template-areas: "header" "hero" "main" "aside" "footer"; } a { text-decoration: underline; text-underline-offset: .05rem; } a:hover { text-underline-offset: .25rem; color: var(--c-hl); } h1, h2, h3, h4, h5, h6, p { word-break: break-word; scroll-margin-block-start: 4.5rem; } h1, h2, h3, h4, h5, h6, strong { font-weight: 500; } em { font-style: italic; } h1, h2, h3, h4, h5, h6 { margin-block-end: 0; text-wrap: balance; } h1+*, h2+*, h3+*, h4+*, h5+*, h6+* { margin-block-start: 0; } main h1 { font-size: 2.25rem; } main h2 { font-size: 1.5rem; } main h3 { font-size: 1.25rem; } main :is(h2, h3, h4, h5, h6) a { text-decoration: none; position: relative; } main :is(h2, h3, h4, h5, h6) a:hover::before { content: '#'; position: absolute; left: -1.5ch; bottom: 0; font-weight: normal; font-size: 1rem; } @media screen and (min-width: 800px) { body { grid-template-columns: min-content 8fr; grid-template-rows: 4rem min-content auto min-content; grid-template-areas: "header header" "hero hero" "aside main" "footer footer"; } } .skiplink { z-index: 9999; transform: translateY(calc(-100% - 1rem)); display: block; position: absolute; height: 4rem; padding: var(--content-inline-padding); background-color: var(--c-bg); border-inline-end: 1px solid var(--c-border); border-block-end: 1px solid var(--c-border); } .skiplink:focus { z-index: 9999; transform: translateY(0); } header { grid-area: header; height: var(--header-height); border-block-end: 1px solid var(--c-border); background-color: var(--c-bg-secondary); position: sticky; top: 0; z-index: 1000; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; } header a { text-decoration: none; } header .logo { display: flex; flex-wrap: nowrap; align-items: center; height: 100%; padding-inline-start: var(--content-inline-padding); } header .logo img { padding-block-end: .3rem; } header .logo h1 { margin: 0; margin-bottom: -.4rem; font-size: 1.7rem; line-height: 1; font-family: Comfortaa, Ubuntu, sans-serif; font-weight: bold; } header .nav-toggle { display: block; border-inline-start: 1px solid var(--c-border); padding: 0 1rem; display: flex; align-items: center; cursor: pointer; } header nav details summary, header nav a { border-block-end: 1px solid var(--c-border); padding: 1rem; display: flex; align-items: center; cursor: pointer; white-space: nowrap; } header nav details summary::before { content: "►"; padding-inline-end: .3rem; } header nav details[open] summary::before { content: "▼"; } header nav .nav-close { display: none; } header nav.show .nav-close { display: flex; } header nav { transform: translateY(calc(-100% - 1rem)); display: flex; flex-direction: column; justify-content: flex-start; position: fixed; right: 0; top: 0; bottom: 0; background-color: var(--c-bg-secondary); min-width: 20rem; max-width: 30rem; border-inline-start: 1px solid var(--c-border); z-index: 10000; } header nav.show, header nav:focus-within { transform: translateY(0); } header nav details summary.highlight, header nav a.highlight { background-color: var(--c-hl); color: var(--c-text-on-hl); font-weight: 500; } header nav details summary:hover, header nav a:hover { background-color: var(--c-bg); } header nav details summary.highlight:hover, header nav a.highlight:hover { background-color: var(--c-hl-secondary); color: var(--c-text-on-hl-secondary); } header nav details { display: flex; flex-direction: column; position: relative; } header nav details a { padding-inline-start: 2.5rem; } @media screen and (min-width: 950px) { header .nav-toggle, header .nav-close, header nav.show .nav-close { display: none; } header nav { transform: initial; display: flex; flex-direction: row; justify-content: flex-end; position: initial; background-color: initial; min-width: unset; max-width: unset; border-inline-start: none; } header nav.show, header nav:focus-within { transform: initial; } header nav details summary, header nav a { border-block-end: none; border-inline-start: 1px solid var(--c-border); border-inline-end: 1px solid var(--c-border); padding: 0 1rem; display: flex; margin-inline-start: -1px; align-items: center; height: 100%; } header nav details:last-of-type summary { border-inline-end: none; } header nav details[open] summary { border-block-end: 1px solid var(--c-border); height: calc(100% + 1px); } header nav details div { position: absolute; right: 0; } header nav details div a { background-color: var(--c-bg-secondary); border-block-end: 1px solid var(--c-border); padding: 1rem; } } main { grid-area: main; padding: 0 var(--content-inline-padding); max-width: var(--content-max-width); min-width: 0; width: 100%; margin: 2rem auto; } nav.article-nav { display: flex; flex-direction: row; justify-content: center; } nav.article-nav div { width: 33%; text-align: center; } footer { grid-area: footer; align-self: end; background-color: var(--c-bg-secondary); border-block-start: 1px solid var(--c-border); padding: .5rem var(--content-inline-padding); display: flex; flex-direction: row; flex-wrap: wrap; justify-content: space-between; } footer div { line-height: 2; } footer div .mobile-hide { display: none; } footer div a { white-space: nowrap; } footer div a:not([rel*=license]), footer div .copyright { display: block; } @media screen and (min-width: 800px) { footer div { line-height: 1.5; } footer div:last-of-type { padding-inline-start: 1rem; } footer div .mobile-hide { display: inline; } footer div a:not([rel*=license]), footer div .copyright { display: initial; } } </style> <style>.hero { grid-area: hero; background-color: var(--c-bg-secondary); min-height: 40vh; max-height: min-content; border-block-end: 1px solid var(--c-border); padding: 2rem 0; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 2fr auto auto; grid-template-areas: "logo logo" "tagline tagline" "cta cta"; justify-items: center; } .hero .logo, .hero .tagline, .hero .cta { max-width: var(--content-max-width); padding: 0 var(--content-inline-padding); } .hero .logo { grid-area: logo; justify-self: center; display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; } .hero .logo img { width: 50%; } .hero .logo picture { display: flex; justify-content: center; } .hero .logo h1 { margin: 0; font-family: Comfortaa, Ubuntu, sans-serif; font-weight: 400; font-size: 2rem; margin-block-start: -1.5rem; text-align: center; font-weight: bold; } .hero .logo h1.newyear { margin-block-start: 0rem; } .hero .tagline { grid-area: tagline; align-self: end; } .hero .cta { grid-area: cta; display: flex; flex-direction: row; flex-wrap: wrap; align-items: flex-start; justify-content: center; width: 100%; } .hero .cta a { display: block; background-color: var(--c-hl); color: var(--c-text-on-hl); cursor: pointer; text-decoration: none; font-weight: 500; padding: var(--content-inline-padding); min-width: 25ch; text-align: center; margin: calc(var(--content-inline-padding) / 2); } .hero .cta a:hover { background-color: var(--c-hl-secondary); color: var(--c-text-on-hl-secondary); } @media screen and (min-width: 800px) { .hero { grid-template-rows: 1fr 1fr; grid-template-areas: "logo tagline" "logo cta"; } .hero .logo, .hero .tagline, .hero .cta { max-width: calc(var(--content-max-width) / 1.5); } .hero .logo { justify-self: end; } .hero .logo h1 { font-size: 3.25rem; margin-block-start: -2.5rem; } .hero .logo h1.newyear { margin-block-start: -0.5rem; } .hero .tagline, .hero .cta { justify-self: start; } .hero .logo img { width: 100%; } .hero .cta { justify-content: space-around; flex-direction: column; } .hero .cta a { margin: unset; margin-inline-end: var(--content-inline-padding); } } </style> <link rel="stylesheet" href="/static/css/additional-styles.css"> <script src="/static/js/header-links.js" defer></script> </head> <body><a class="skiplink" href="#main">Skip to content</a> <header> <a class="logo" href="https://libera.chat" aria-label="Libera Chat, back to start page"> <img alt="" src="/static/img/libera-color.svg" height="48px" data-proofer-ignore> <h1>Libera.&ZeroWidthSpace;Chat</h1> </a> <a id="nav-toggle" class="nav-toggle hidden" aria-controls="main-nav"><span>Navigation</span></a> <nav class="" id="main-nav" aria-labelledby="nav-toggle" role="menubar"> <a id="nav-close" class="nav-close hidden" aria-controls="main-nav"><span>Close</span></a> <details name="main-navigation"> <summary >About</summary> <div> <a role="menuitem" href="/policies" ><span>Network Policies</span></a> <a role="menuitem" href="/guidelines" ><span>Channel Guidelines</span></a> <a role="menuitem" href="/news" ><span>Blog & News</span></a> <a role="menuitem" href="/about" ><span>About Libera Chat</span></a> <a role="menuitem" href="/bylaws" ><span>Bylaws</span></a> <a role="menuitem" href="/minutes" ><span>Meeting Minutes</span></a> <a role="menuitem" href="/annual-reports" ><span>Annual Reports</span></a> <a role="menuitem" href="/sponsors" ><span>Sponsors</span></a> </div> </details> <details name="main-navigation"> <summary >Contribute</summary> <div> <a role="menuitem" href="/contributing/donate" ><span>Donate</span></a> <a role="menuitem" href="/contributing/merch" ><span>Buy merch</span></a> <a role="menuitem" href="/contributing/sponsor" ><span>Sponsor Us</span></a> <a role="menuitem" href="/contributing/development" ><span>Development</span></a> </div> </details> <a role="menuitem" href="/chanreg"><span>Channel Namespaces</span></a> <a role="menuitem" href="/guides"><span>Guides</span></a> <a role="menuitem" href="/guides/faq"><span>FAQ</span></a> <details name="main-navigation"> <summary class="highlight" >Connect</summary> <div> <a role="menuitem" href="https://web.libera.chat" rel="noopener noreferrer" ><span>Webchat</span></a> <a role="menuitem" href="ircs://irc.libera.chat:6697" ><span>irc.libera.chat:6697 (TLS)</span></a> <a role="menuitem" href="/guides/connect" ><span>How to Connect</span></a> </div> </details> </nav> </header> <script async> const navToggle = document.querySelector('#nav-toggle') const navClose = document.querySelector('#nav-close') const mainNav = document.querySelector('#main-nav') // progressive enhancement! navToggle.classList.remove('hidden') navClose.classList.remove('hidden') navToggle.addEventListener('click', event => { event.preventDefault() mainNav.classList.toggle('show') }) navClose.addEventListener('click', event => { event.preventDefault() mainNav.classList.remove('show') }) </script> <section class="hero"> <div class="logo"> <img min-height="60px" alt="" src="/static/img/libera-color.svg" data-proofer-ignore> <h1>Libera.&ZeroWidthSpace;Chat</h1> </div> <div class="tagline"> <p> Providing a community platform for free and open-source software and peer directed projects. </p> <p> Connect by pointing your IRC client to <a href="ircs://irc.libera.chat:6697">irc.libera.chat:6697 (TLS)</a> </p> </div> <div class="cta"> <a role="button" href="/guides/clients">Choosing an IRC client</a> <a role="button" href="/chanreg">Channel Namespaces</a> </div> </section> <main id="main"><article> <h1>A belated state of the network</h1> <p class="details"> <a href="/news/belated-state-of-the-network"><time pubdate datetime="2025-02-17">17th February 2025</time></a> by el </p> <p>Happy 2025 everyone!</p> <p>We’re now a month and a half into the new year (and a quarter of the way into this century?!) and realized that we are overdue for a periodic state of the network.</p> <p>After a tumultuous 2023 where we <a href="https://libera.chat/guides/matrix">parted ways</a> with the official Matrix bridge, 2024 was much quieter on the bridges front. Over the course of the year, many projects and communities stood up their own Matrix bridges. This has proven to be a far more stable and sustainable arrangement, and we sincerely appreciate their work and cooperation.</p> <p>In July we were looped into a coordinated security response, involving various networks and IRC software maintainers, to mitigate a <a href="https://libera.chat/news/zncpsa">potentially nasty exploit</a>. We appreciated the collaboration of our peers on other networks in ensuring that the word got out, and hope to use this incident as guidance for responding to similar incidents in the future.</p> <p>Sable development is also continuing, albeit slowly. We are of course interested in welcoming new contributors to the project, so if you’re curious, check out <a href="https://github.com/Libera-Chat/sable">the repository</a> and drop into <code class="language-plaintext highlighter-rouge">#libera-dev</code>.</p> <p>We also managed to deliver some long-awaited improvements to our current stack for our users:</p> <ul> <li>Account auto-cloaking. On a rather infamous day at the start of April, we finally delivered auto-cloaking upon registration verification.</li> <li>Deprecated certificate expiry verification. As of early July, <a href="https://libera.chat/news/retiring-certfp-expiries">we no longer check the expiration of certificates</a> used for logging in. Now you won’t get locked out if you forget to make a new certificate in time.</li> </ul> <p>To celebrate the arrival of the auto-cloaking feature, we also had some fun with a <a href="https://web.archive.org/web/20240401000834/https://libera.cat/">temporary rebranding</a> of the network. If you missed out on the limited-time novelty cloak, you can still get a meowmento of the prank with <a href="https://www.freewear.org/Libera.Chat">our freewear.org merch</a>! Every purchase of merch from that freewear.org page generates a donation to help the network remain sustainable. We also have a <a href="https://liberapay.com/liberachat/donate">liberapay</a> if you want to help us without buying gear.</p> <p>While most of our resources are donated, some are not. This includes costs that ensure we will remain an independent and non-commercial platform. In this current social media climate, we think that is very important and likewise encourage the use and support of other community-run social protocols. Like numerous other projects, we have retired our use of Twitter/X and Facebook, now posting only to <a href="https://fosstodon.org/@liberachat">the Fediverse</a> and <a href="https://bsky.app/profile/libera.chat">Bluesky</a>.</p> </article> <nav class="article-nav"> <div> <a href="/news/llm-etiquette">Previous</a> </div> <div> <a href="/news">Archive</a> </div> <div> </div> </nav> </main><footer> <div> <span class="copyright">&copy; Libera Chat's contributors 2021</span> (<a rel="license noopener noreferrer" href="/LICENSE-content.txt">Content CC BY-NC-SA</a>, <a rel="license noopener noreferrer" href="/LICENSE-code.txt">Code MIT</a>) <span class="mobile-hide">/</span> <a href="/atom.xml">Feed (atom)</a> <span class="mobile-hide">/</span> <a href="/privacy">Privacy</a> </div> <div> <a rel="me noopener noreferrer" href="https://fosstodon.org/@liberachat">Mastodon</a> <span class="mobile-hide">/</span> <a href="https://github.com/Libera-Chat/libera-chat.github.io" rel="noopener noreferrer">GitHub</a> <span class="mobile-hide">/</span> <a href="https://bsky.app/profile/libera.chat" rel="noopener noreferrer">Bluesky</a> </div> </footer>

Pages: 1 2 3 4 5 6 7 8 9 10