Profile img

초무

@2chanhaeng@hackers.pub · 75 following · 60 followers

Fedify 1.9.0: Security enhancements, improved DX, and expanded framework support

We are excited to announce Fedify 1.9.0, a mega release that brings major security enhancements, improved developer experience, and expanded framework support. Released on October 14, 2025, this version represents months of collaborative effort, particularly from the participants of Korea's OSSCA (Open Source Contribution Academy).

This release would not have been possible without the dedicated contributions from OSSCA participants: Jiwon Kwon (@z9mb1wwj), Hyeonseo Kim (@gaebalgom개발곰), Chanhaeng Lee (@2chanhaeng초무), Hyunchae Kim (@r4bb1t톡기), and An Subin (@nyeongAn Nyeong (安寧)). Their collective efforts have significantly enhanced Fedify's capabilities and made it more robust for the fediverse community.

Origin-based security model

Fedify 1.9.0 implements FEP-fe34, an origin-based security model that protects against content spoofing attacks and ensures secure federation practices. This critical security enhancement enforces same-origin policy for ActivityPub objects and their properties, preventing malicious actors from impersonating content from other servers.

The security model introduces a crossOrigin option in Activity Vocabulary property accessors (get*() methods) with three security levels:

// Default behavior: logs warning and returns null for cross-origin content
const actor = await activity.getActor({ crossOrigin: "ignore" });

// Strict mode: throws error for cross-origin content
const object = await activity.getObject({ crossOrigin: "throw" });

// Trust mode: bypasses security checks (use with caution)
const attachment = await note.getAttachment({ crossOrigin: "trust" });

Embedded objects are automatically validated against their parent object's origin. When an embedded object has a different origin, Fedify performs automatic remote fetches to ensure content integrity. This transparent security layer protects your application without requiring significant code changes.

For more details about the security model and its implications, see the origin-based security model documentation.

Enhanced activity idempotency

Activity idempotency handling has been significantly improved with the new withIdempotency() method. This addresses a critical issue where activities with the same ID sent to different inboxes were incorrectly deduplicated globally instead of per-inbox.

federation
  .setInboxListeners("/inbox/{identifier}", "/inbox")
  .withIdempotency("per-inbox")  // New idempotency strategy
  .on(Follow, async (ctx, follow) => {
    // Each inbox processes activities independently
  });

The available strategies are:

  • "per-origin": Current default for backward compatibility
  • "per-inbox": Recommended strategy (will become default in Fedify 2.0)
  • Custom strategy function for advanced use cases

This enhancement ensures that shared inbox implementations work correctly while preventing duplicate processing within individual inboxes. For more information, see the activity idempotency documentation.

Relative URL resolution

Fedify now intelligently handles ActivityPub objects containing relative URLs, automatically resolving them by inferring the base URL from the object's @id or document URL. This improvement significantly enhances interoperability with ActivityPub servers that use relative URLs in properties like icon.url and image.url.

// Previously required manual baseUrl specification
const actor = await Actor.fromJsonLd(jsonLd, { baseUrl: new URL("https://example.com") });

// Now automatically infers base URL from object's @id
const actor = await Actor.fromJsonLd(jsonLd);

This change, contributed by Jiwon Kwon (@z9mb1wwj), eliminates a common source of federation failures when encountering relative URLs from other servers.

Full RFC 6570 URI template support

TypeScript support now covers all RFC 6570 URI Template expression types in dispatcher path parameters. While the runtime already supported these expressions, TypeScript types previously only recognized simple string expansion.

// Now fully supported in TypeScript
federation.setActorDispatcher("/{+identifier}", async (ctx, identifier) => {
  // Reserved string expansion — recommended for URI identifiers
});

The complete set of supported expression types includes:

  • {identifier}: Simple string expansion
  • {+identifier}: Reserved string expansion (recommended for URIs)
  • {#identifier}: Fragment expansion
  • {.identifier}: Label expansion
  • {/identifier}: Path segments
  • {;identifier}: Path-style parameters
  • {?identifier}: Query component
  • {&identifier}: Query continuation

This was contributed by Jiwon Kwon (@z9mb1wwj). For comprehensive information about URI templates, see the URI template documentation.

WebFinger customization

Fedify now supports customizing WebFinger responses through the new setWebFingerLinksDispatcher() method, addressing a long-standing community request:

federation.setWebFingerLinksDispatcher(async (ctx, actor) => {
  return [
    {
      rel: "http://webfinger.net/rel/profile-page",
      type: "text/html",
      href: actor.url?.href,
    },
    {
      rel: "http://ostatus.org/schema/1.0/subscribe",
      template: "https://example.com/follow?uri={uri}",
    },
  ];
});

This feature was contributed by Hyeonseo Kim (@gaebalgom개발곰), and enables applications to add custom links to WebFinger responses, improving compatibility with various fediverse implementations. Learn more in the WebFinger customization documentation.

New integration packages

Fastify support

Fedify now officially supports Fastify through the new @fedify/fastify package:

import Fastify from "fastify";
import { fedifyPlugin } from "@fedify/fastify";

const fastify = Fastify({ logger: true });
await fastify.register(fedifyPlugin, {
  federation,
  contextDataFactory: () => ({ /* your context data */ }),
});

This integration was contributed by An Subin (@nyeongAn Nyeong (安寧)). It supports both ESM and CommonJS, making it accessible to all Node.js projects. See the Fastify integration guide for details.

Koa support

Koa applications can now integrate Fedify through the @fedify/koa package:

import Koa from "koa";
import { createMiddleware } from "@fedify/koa";

const app = new Koa();
app.use(createMiddleware(federation, (ctx) => ({
  user: ctx.state.user,
  // Pass Koa context data to Fedify
})));

The integration supports both Koa v2.x and v3.x. Learn more in the Koa integration documentation.

Next.js integration

The new @fedify/next package brings first-class Next.js support to Fedify:

// app/api/ap/[...path]/route.ts
import { federation } from "@/federation";
import { fedifyHandler } from "@fedify/next";

export const { GET, POST } = fedifyHandler(federation);

This integration was contributed by Chanhaeng Lee (@2chanhaeng초무). It works seamlessly with Next.js App Router. Check out the Next.js integration guide for complete setup instructions.

CommonJS support

All npm packages now support both ESM and CommonJS module formats, resolving compatibility issues with various Node.js applications and eliminating the need for the experimental --experimental-require-module flag. This particularly benefits NestJS users and other CommonJS-based applications.

FEP-5711 collection inverse properties

Fedify now implements FEP-5711, adding inverse properties to collections that provide essential context about collection ownership:

const collection = new Collection({
  likesOf: note,  // This collection contains likes of this note
  followersOf: actor,  // This collection contains followers of this actor
  // … and more inverse properties
});

This feature was contributed by Jiwon Kwon (@z9mb1wwj). The complete set of inverse properties includes likesOf, sharesOf, repliesOf, inboxOf, outboxOf, followersOf, followingOf, and likedOf. These properties improve data consistency and enable better interoperability across the fediverse.

CLI enhancements

NodeInfo visualization

The new fedify nodeinfo command provides a visual way to explore NodeInfo data from fediverse instances. This replaces the deprecated fedify node command and offers improved parsing of non-semantic version strings. Try it with:

fedify nodeinfo https://comam.es/snac/

This was contributed by Hyeonseo Kim (@gaebalgom개발곰). The command now correctly handles various version formats and provides a cleaner visualization of instance capabilities. See the CLI documentation for more options.

Enhanced lookup with timeout

The fedify lookup command now supports a timeout option to prevent hanging on slow or unresponsive servers:

fedify lookup --timeout 10 https://example.com/users/alice

This enhancement, contributed by Hyunchae Kim (@r4bb1t톡기), ensures reliable operation even when dealing with problematic remote servers.

Package modularization

Several modules have been separated into dedicated packages to improve modularity and reduce bundle sizes. While the old import paths remain for backward compatibility, we recommend migrating to the new packages:

  • @fedify/cfworkers replaces @fedify/fedify/x/cfworkers
  • @fedify/denokv replaces @fedify/fedify/x/denokv
  • @fedify/hono replaces @fedify/fedify/x/hono
  • @fedify/sveltekit replaces @fedify/fedify/x/sveltekit

This modularization was contributed by Chanhaeng Lee (@2chanhaeng초무). The old import paths are deprecated and will be removed in version 2.0.0.

Acknowledgments

This release represents an extraordinary collaborative effort, particularly from the OSSCA participants who contributed numerous features and improvements. Their dedication and hard work have made Fedify 1.9.0 the most significant release to date.

Special thanks to all contributors who helped shape this release, including those who provided feedback, reported issues, and tested pre-release versions. The fediverse community's support continues to drive Fedify's evolution.

For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.

7
0
1

CamoLeak: GitHub Copilot의 치명적 취약점이 프라이빗 소스코드를 유출함
------------------------------
- 2025년 6월, GitHub Copilot Chat에서 *치명적인 취약점(CVSS 9.6)* 이 발견됨
- *CSP 우회와 원격 프롬프트 인젝션* 기법을 활용해 비밀 정보와 비공개 코드 유출 가능성이 확인됨
- GitHub의 *숨김 주석 기능* 을 악용해 다른 사용자의 Copilot 응답 결과를 조작할 수 있음
- GitHub의 *Camo 프록시* …
------------------------------
https://news.hada.io/topic?id=23631&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0
1
0
3
1
7

Can't count how many times i shot finger-gun myself 🫶🫶🫶🫶🫶🫶🫶 Thaaanks

4

11월 중순~11월 말 사이에 해커스펍 오프라인 밋업 Hackers' Public 두번째 모임을 진행하려고 하는데 "눈물없이 듣기 어려운 프론트엔드의 심연" 특집입니다...... 11월 1일~11월 8일 사이에 모집 공고 올릴듯????? 아직은 오피셜한 공지는 아니지만 정보만 슬쩍 흘려봅니다,,,

4

11월 중순~11월 말 사이에 해커스펍 오프라인 밋업 Hackers' Public 두번째 모임을 진행하려고 하는데 "눈물없이 듣기 어려운 프론트엔드의 심연" 특집입니다...... 11월 1일~11월 8일 사이에 모집 공고 올릴듯????? 아직은 오피셜한 공지는 아니지만 정보만 슬쩍 흘려봅니다,,,

9

YTN에서 편두통의 심각성에 대해 기사로 다뤄주시면서 인터뷰에 나오게 되었습니다. 편두통은 단순히 개인을 넘어 사회 전체에 큰 부담을 가져오는 질병입니다. 환자들이 적절한 진단을 받고 필요한 치료를 빠르게 받을 수 있는 환경이 마련되는 것이 환자 개인에게도, 주변 사람들에게도, 우리 사회 전체에 큰 이익을 가져옵니다.

기사에서는 편두통에 심각성을 주로 다뤄주셨는데 저는 잘 치료 받으면서 잘 관리하고 있습니다! 편두통은 전문 치료제를 받아서 전조가 오거나 통증이 시작될 때 빠르게 약을 먹으면 효과가 좋은 편입니다.

https://www.ytn.co.kr/_ln/0134_202510111313538858

노트북 스티커로 같이 나온 펍냥이
11
0
0
1
1
1
1
2
3

React 재단 출범 : React와 React Native의 새로운 보금자리
------------------------------
- Meta가 *10년 넘게 오픈소스로 운영해온 React* 를 오픈소스 커뮤니티 중심의 *새로운 거버넌스 체계* 로 전환하기 위해 React Foundation을 설립
- 웹뿐 아니라 *모바일·데스크톱·콘솔·혼합현실 기기* 까지 확장된 React 생태계를 지속적으로 지원할 계획
- 새로운
React Foundation 은 *Linux Foundatio…
------------------------------
https://news.hada.io/topic?id=23572&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

1

예제가 최고의 문서임
------------------------------
- 개발자들이 문서를 검색할 때 *95%는 간단한 예제만으로 충분* 하지만, 공식 소스에서 예제를 찾을 수 있는 경우는 5%에 불과
- 공식 기술 문서는 기본적으로 *해당 생태계에 깊이 몰입한 사람을 대상* 으로 작성되어, 여러 프로젝트와 언어를 오가는 개발자들에게는 *컨텍스트 복원에 상당한 정신적 에너지* 가 필…
------------------------------
https://news.hada.io/topic?id=23571&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0
1
1
1
1

私見(사견)으로는 漢字(한자) 敎育(교육)基本的(기본적)語彙力(어휘력)을 갖추는 데에는 必要(필요) 없고, 高級(고급) 語彙(어휘)를 갖추는 데에나 效果(효과)가 있다고 생각. 그런데 語彙力(어휘력) 이슈가 나올 때는 普通(보통) 前者(전자)問題(문제)이기 때문에, 漢字(한자) 敎育(교육)은 엉뚱한 方案(방안)이 되는 거고.

그리고 點心(점심)이든 中華料理(중화요리)漢字(한자)로도 【중식】은 【中食(중식)】이라, 이런 케이스에는 漢字(한자) 敎育(교육)을 해도 解決(해결)이 안 됨.

https://bsky.brid.gy/r/https://bsky.app/profile/did:plc:sbhczrmqu43gq2hyns36lmzw/post/3m2skod7pas2y

2
1

오는 11() 8() 光云大學校(광운대학교)에서 開催(개최)되는 FOSS for All 컨퍼런스 2025에서 제가 〈야크 셰이빙: 새로운 오픈 소스의 原動力(원동력)〉이라는 主題(주제)基調演說(기조연설)을 하게 되었습니다!

올해 처음 열리는 FOSS for All 컨퍼런스는 “Free and Open Source Software for All”이라는 슬로건 아래, 모두를 ()한 오픈 소스 컨퍼런스를 目標(목표)로 하는 非營利(비영리) 오픈 소스 커뮤니티 컨퍼런스입니다.

파란色 背景의 FOSS for All 컨퍼런스 2025 發表者 카드. 右側 아래에는 發表者 洪民憙의 寫眞이 있고, 中央의 흰色 말風船 안에는 「Keynote」라는 文句와 함께 發表 題目 〈야크 셰이빙: 새로운 오픈 소스의 原動力〉이 쓰여 있다.
15
0
0
1
0
2

거의 10년 전부터 "2025년까지 살아야 하는 이유" 같은 제목으로 곳곳에서 이번 연휴를 예고해왔는데 나는 아무것도 준비하지 않았다. 그렇게 맥없이 연휴가 끝나간다...

1

https://github.com/be5invis/Sarasa-Gothic

터미널/에디터용 고정폭 폰트를 찾는다면 Sarasa Term K를 추천합니다. 이쪽도 한중일 폰트를 모두 지원합니다. Noto Sans Mono CJK도 좋지만 폰트 미세 조정이 안 되는 환경에서 Sarasa Term이 좀더 정확하게 렌더링됩니다. 영문과 한글만 쓰면 네이버의 D2Coding도 훌륭하지만 이쪽은 가나, 한자 지원이 약하죠.

2

hollo.social/@fedify/0199a579-

Hope this leads to an even larger shared-layer between all the js/node implementations like Ghost, NodeBB, *keys et.al.

Particularly wishing for convergence around a shared *identity core* across all these AP apps in accordance with NomadPub by @silverpill

codeberg.org/ap-next/ap-next/s

FEP-ef61: Portable Objects
FEP-ae97: Client-side activity signing

That in addition to a common OAuth foundation would effectively be ActivityPub 2.0 and on-par with atproto.

We're excited to announce that…

We're excited to announce that #Fedify has been awarded a service agreement by the @sovtechfund@mastodon.social! [The Sovereign Tech Fund is investing €192,000 in Fedify's development over 2025–2026 to strengthen the fediverse ecosystem.][1] This investment will enable us to significantly expand Fedify's capabilities and make it easier for developers to build federated applications. The commissioned work focuses on improving developer experience, adding comprehensive debugging tools, and ensuring Fedify remains at the forefront of #ActivityPub innovation. Here are the key milestones we'll be delivering: - *Web framework integrations*: Official adapters for Next.js, Elysia, Fastify, and Koa, making it seamless to add federation to existing applications - *ActivityPub debug & development tools*: Real-time debug dashboard with WebSocket monitoring, federation lifecycle hooks, and implementation checklist CLI to make federation interactions transparent and debuggable - *Storage & infrastructure enhancements*: `SQLiteKvStore` for robust file-based storage across Node.js, Deno, and Bun, plus performance optimizations for production deployments - *Comprehensive documentation & examples*: Specialized tutorials for building federated blogs, social networks, and content platforms, with complete working examples and migration guides - *Observability & monitoring*: Full OpenTelemetry metrics, performance benchmarking tools, and federation health dashboards for production environments - *Advanced features & standards*: [FEP-ef61] (Portable Objects) support and implementation of emerging [Fediverse Enhancement Proposals] to keep Fedify at the cutting edge All developments will be open source and available for the entire #fediverse community to use, contribute to, and build upon. <https://www.sovereign.tech/tech/fedify> #opensource #SovereignTechFund #STF [1]: https://www.sovereign.tech/tech/fedify [FEP-ef61]: https://w3id.org/fep/ef61 [Fediverse Enhancement Proposals]: https://w3id.org/fep/

hollo.social

1

Exciting news for developers! We've just landed a major milestone for Fedify 2.0—the now runs natively on .js and , not just (#456). If you install @fedify/cli@2.0.0-dev.1761 from npm, you'll get actual JavaScript that executes directly in your runtime, no more pre-compiled binaries from deno compile. This is part of our broader transition to Optique, a new cross-runtime CLI framework we've developed specifically for Fedify's needs (#374).

This change means a more natural development experience regardless of your runtime preference. Node.js developers can now run the CLI tools directly through their familiar ecosystem, and the same goes for Bun users. While Fedify 2.0 isn't released yet, we're excited to share this progress with the community—feel free to try out the dev version and let us know how it works for you!

2
0
0
3
0
0
1
1
1
0
0
1

부탁하지 않았느데 누군가의 작업을 공개적으로 평가하거나 누군가의 얼굴을 평가하거나 몸을 평가하거나 성격을 평가하거나 등등은 무례한 행동입니다.

예: 처음만났는데 "몸매 좋아요!" 는 칭찬이 아닙니다.

1
1
1

Announcement: AltStore becomes a financial contributor to Fedify

We're thrilled to announce that AltStore has become a financial contributor to Fedify! This generous support comes as part of AltStore's broader commitment to strengthening the open social web ecosystem, as they prepare to become the world's first federated app store. Their investment in Fedify and other fediverse projects demonstrates a shared vision for building a more open, interoperable digital future.

AltStore's journey into the fediverse represents a groundbreaking approach to app distribution—connecting their alternative app marketplace with the open social web through ActivityPub. As pioneers who have already pushed Apple to change App Store policies twice in their first year, AltStore understands the transformative power of open protocols and decentralized systems. Their support will help Fedify continue developing robust tools and libraries that make it easier for developers to build federated applications. We're deeply grateful for AltStore's trust in our project and look forward to seeing how their innovative federated app store will reshape mobile app distribution while strengthening the entire fediverse ecosystem.

https://rileytestut.com/blog/2025/10/07/evolving-altstore-pal/

Email notification from Open Collective showing AltStore has become a new financial contributor to Fedify as a corporate sponsor with a $500.00 monthly contribution. The email includes the Open Collective logo, information about AltStore with a link to their Open Collective page, and details about the sponsorship tier and amount.
4
1
0
2
1

대만의 COSCUP, 벨기에의 FOSDEM에 이어, 국내에서도 개인 및 소규모 오픈 소스 프로젝트를 위한 FOSS for All 컨퍼런스가 드디어 열립니다! 🇰🇷

오는 11월 8일(토), 광운대학교에서 개최되며 저도 이번 행사에서 발표자로 참여하게 되었습니다.

🗣️ 발표 주제: “식탁보 프로젝트 다섯돌, 바뀐 것과 바뀌지 않은 것”

식탁보 프로젝트가 세상에 나온 지 벌써 5년이 되었네요. 처음엔 AI가 없던 시대에 시작했지만, 이제는 AI가 세상을 바꾸고 있고, 식탁보도 그 여정 위에 있습니다.

다섯 해 동안의 변화와, 여전히 지켜온 가치들에 대해 진솔하게 이야기 나누려 합니다.

오픈 소스, 기술, 그리고 커뮤니티를 사랑하는 분들이라면 꼭 한 번 참석해보세요!

👉 참가 신청: https://event-us.kr/fossforall/event/110400

현장에서 함께 이야기 나눌 수 있기를 바랍니다. 🙌

식탁보 프로젝트 다섯돌: 바뀐 것과 바뀌지 않은 것 포스터 이미지 (FOSS for All 2025 행사 홍보 카드)
3

Python 3.14.0 정식 버전 출시
------------------------------
## *Python 3.14.0 정식 버전 출시*
🐍

Python 3.14.0의 정식 버전이 출시되었습니다. 이번 업데이트는 성능 향상과 새로운 기능 추가에 중점을 두었습니다.

---

### *주요 기능*

PEP 779: 자유 스레드 Python (Free-threaded Python) 공식 지원*: 여러 스레드에서 Python 코드를 동…
------------------------------
https://news.hada.io/topic?id=23514&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

1

So in order to grow the team, I’m thrilled to announce AltStore has received an investment of $6 million USD from @cpaikChris Paik! Chris was an early investor in Patreon & Twitch, and we’ve been close ever since he sideloaded the manga reader Paperback with AltStore years ago

Additionally, Flipboard CEO @mikeMike McCue will also be joining our Board of Directors! Mike’s experience with Flipboard & @surf will be invaluable as we expand to the Fediverse, and I couldn’t be happier to have both him + Chris on board

While this solves our problems, we are far from the only Fediverse project that could use some funding and we want to support the growth of the entire ecosystem.

So to give back to the open social web, we’re also donating $500,000 total to these incredible Fediverse-related projects 🎉

@Mastodon
@ivoryIvory by Tapbots :emoji_wink:
Tapestry by @IconfactoryThe Iconfactory
@mstdnMstdn.Social :mastodon:
@bsky.brid.gyBridgy Fed for Bluesky
@peertube
@bookwyrm
@akkomaakkoma stuff
@fedifyFedify: ActivityPub server framework

The Fediverse as we know it would not exist without them, so please check them out!

1
0
1
1
0
0
1