Fedify: an ActivityPub server framework<p>We're thrilled to highlight five outstanding contributions from the Korean Open Source Contribution Academy (<a class="mention hashtag" rel="nofollow noopener" href="https://hollo.social/tags/OSSCA" target="_blank">#<span>OSSCA</span></a>) program participants who have been working on <a class="mention hashtag" rel="nofollow noopener" href="https://hollo.social/tags/Fedify" target="_blank">#<span>Fedify</span></a>! Their dedication and effort have significantly enhanced our <a class="mention hashtag" rel="nofollow noopener" href="https://hollo.social/tags/ActivityPub" target="_blank">#<span>ActivityPub</span></a> server framework.</p><p>First up is <a translate="no" class="h-card u-url mention" href="https://hackers.pub/@nyeong" rel="nofollow noopener" target="_blank">@<span>nyeong</span></a> with his monumental <a href="https://github.com/fedify-dev/fedify/pull/318" rel="nofollow noopener" target="_blank">#318 PR</a>, implementing a SQLite-based key–value store to address <a href="https://github.com/fedify-dev/fedify/issues/274" rel="nofollow noopener" target="_blank">#274</a>. This contribution adds the <code>SqliteKvStore</code> class with full cross-runtime support for Node.js, Deno, and Bun through the new <code>@fedify/sqlite</code> package. His implementation includes atomic operations, TTL support, comprehensive test coverage, and careful attention to SQL injection prevention. This enables developers to use SQLite as a persistent storage backend while maintaining compatibility with Fedify's existing <code>KvStore</code> API—a crucial feature for production deployments!</p><p>Next, <a translate="no" class="h-card u-url mention" href="https://hackers.pub/@crohasang" rel="nofollow noopener" target="_blank">@<span>crohasang</span></a> delivered an excellent quality-of-life improvement with <a href="https://github.com/fedify-dev/fedify/pull/341" rel="nofollow noopener" target="_blank">#341 PR</a>, fixing <a href="https://github.com/fedify-dev/fedify/issues/257" rel="nofollow noopener" target="_blank">#257</a>. He enhanced the CLI to properly respect TTY status and the <code>NO_COLOR</code> environment variable, implementing intelligent color control across all CLI commands. The solution involved switching from <code>@cliffy/ansi/colors</code> to <code>@std/fmt/colors</code>, creating a helper function using <code>Deno.inspect()</code> to handle object formatting, and ensuring colors are correctly disabled when output is redirected to files. This makes the CLI much more pipe-friendly and suitable for automated workflows!</p><p><a translate="no" class="h-card u-url mention" href="https://hackers.pub/@menele" rel="nofollow noopener" target="_blank">@<span>menele</span></a> contributed a thoughtful enhancement with <a href="https://github.com/fedify-dev/fedify/pull/342" rel="nofollow noopener" target="_blank">#342 PR</a>, addressing <a href="https://github.com/fedify-dev/fedify/issues/191" rel="nofollow noopener" target="_blank">#191</a>. She updated the <code>fedify inbox</code> command to display not just the activity type, but also the type of object contained within each activity—transforming output like "Create" into the more informative "Create(Note)" or "Undo" into "Undo(Follow)". This seemingly simple change required making the display function asynchronous to fetch the enclosed objects, significantly improving the debugging experience for developers!</p><p><a translate="no" class="h-card u-url mention" href="https://hackers.pub/@woaol" rel="nofollow noopener" target="_blank">@<span>woaol</span></a> tackled an important developer experience issue with <a href="https://github.com/fedify-dev/fedify/pull/329" rel="nofollow noopener" target="_blank">#329 PR</a>, solving <a href="https://github.com/fedify-dev/fedify/issues/306" rel="nofollow noopener" target="_blank">#306</a>. Previously, the <code>fedify init</code> command would often install outdated versions of Fedify packages like <code>@fedify/redis</code> because version numbers were hardcoded in the CLI. They created a <code>getLatestVersion()</code> function that dynamically retrieves package versions from local metadata files, ensuring that developers always get the latest versions of all Fedify packages when initializing a new project. This improvement includes comprehensive test coverage and eliminates the frustration of starting a project with outdated dependencies!</p><p>Finally, <a translate="no" class="h-card u-url mention" href="https://hackers.pub/@kodingwarrior" rel="nofollow noopener" target="_blank">@<span>kodingwarrior</span></a> made a significant contribution with <a href="https://github.com/fedify-dev/fedify/pull/309" rel="nofollow noopener" target="_blank">#309 PR</a>, implementing <a href="https://github.com/fedify-dev/fedify/issues/269" rel="nofollow noopener" target="_blank">#269</a>—NestJS integration! They created the <code>@fedify/nestjs</code> package with a <code>FedifyModule</code> that seamlessly integrates Fedify into NestJS applications. This includes proper middleware implementation, dependency injection support through NestJS's module system, and compatibility with both CommonJS and ESM environments. This opens up Fedify to the large NestJS developer community, making it easier than ever to build ActivityPub-enabled applications with this popular enterprise framework!</p><p>These contributions showcase the incredible talent and dedication of the OSSCA participants. From core infrastructure improvements to developer experience enhancements, each contribution makes Fedify better for the entire community. Thank you all for your hard work and welcome to the Fedify contributor family! 🚀</p><p>We're looking forward to seeing more amazing contributions from the OSSCA program and the broader community. If you're interested in contributing to Fedify, check out our <a href="https://github.com/fedify-dev/fedify" rel="nofollow noopener" target="_blank">GitHub repository</a> and join us in building the future of federated social web! 🌟</p><p><a class="mention hashtag" rel="nofollow noopener" href="https://hollo.social/tags/opensource" target="_blank">#<span>opensource</span></a> <a class="mention hashtag" rel="nofollow noopener" href="https://hollo.social/tags/fedidev" target="_blank">#<span>fedidev</span></a> <a class="mention hashtag" rel="nofollow noopener" href="https://hollo.social/tags/fediverse" target="_blank">#<span>fediverse</span></a></p>