Fedify: an ActivityPub server framework<p>We'd like to recognize the valuable contributions from two developers who participated in Korea's <a class="mention hashtag" rel="nofollow noopener" href="https://hollo.social/tags/OSSCA" target="_blank">#<span>OSSCA</span></a> (Open Source Contribution Academy) program. Both contributors identified important gaps in <a class="mention hashtag" rel="nofollow noopener" href="https://hollo.social/tags/Fedify" target="_blank">#<span>Fedify</span></a>'s functionality and documentation, providing thoughtful solutions that benefit the broader <a class="mention hashtag" rel="nofollow noopener" href="https://hollo.social/tags/ActivityPub" target="_blank">#<span>ActivityPub</span></a> ecosystem.</p><p><a translate="no" class="h-card u-url mention" href="https://yuri.garden/@gaebalgom" rel="nofollow noopener" target="_blank">@<span>gaebalgom</span></a> contributed <a href="https://github.com/fedify-dev/fedify/pull/365" rel="nofollow noopener" target="_blank">PR #365</a>, addressing <a href="https://github.com/fedify-dev/fedify/issues/353" rel="nofollow noopener" target="_blank">issue #353</a> regarding NodeInfo parser compatibility, originally reported by <a translate="no" class="h-card u-url mention" href="https://macaw.social/@andypiper" rel="nofollow noopener" target="_blank">@<span>andypiper</span></a>. The issue arose when Fedify incorrectly rejected <a class="mention hashtag" rel="nofollow noopener" href="https://hollo.social/tags/NodeInfo" target="_blank">#<span>NodeInfo</span></a> documents from snac instances due to overly strict version string parsing that required semantic versioning compliance. Their solution improves the fallback behavior in the <code>parseSoftware()</code> function to handle non-SemVer version strings by parsing dot-separated numbers and defaulting to zero for missing components. The implementation includes thorough test coverage for various edge cases, including single numbers (<code>3</code>), two-part versions (<code>2.81</code>), and malformed version strings. This fix provides immediate compatibility improvements across the fediverse while maintaining backward compatibility, and will be included in Fedify 1.9. The contribution serves as an interim solution, with a more comprehensive fix planned for Fedify 2.0 (<a href="https://github.com/fedify-dev/fedify/issues/366" rel="nofollow noopener" target="_blank">issue #366</a>), where the NodeInfo <code>software.version</code> field will be changed from the <code>SemVer</code> type to a plain <code>string</code> to fully comply with the NodeInfo specification.</p><p><a translate="no" class="h-card u-url mention" href="https://hackers.pub/@z9mb1" rel="nofollow noopener" target="_blank">@<span>z9mb1</span></a> contributed <a href="https://github.com/fedify-dev/fedify/pull/364" rel="nofollow noopener" target="_blank">PR #364</a>, resolving <a href="https://github.com/fedify-dev/fedify/issues/337" rel="nofollow noopener" target="_blank">issue #337</a> by adding practical examples for Fedify's custom collection dispatchers feature. Custom collections were introduced in Fedify 1.8 but lacked clear documentation for developers seeking to implement them. Their contribution provides a comprehensive example demonstrating how to set up custom collections for tagged posts, including proper routing patterns, pagination handling, and counter functionality. The example includes mock data structures, shows how to configure collection dispatchers with URL patterns like <code>/users/{userId}/tags/{tag}</code>, and demonstrates the complete request/response cycle using <code>federation.fetch()</code>. This work provides developers with a clear, runnable reference that reduces the complexity of implementing custom collections in ActivityPub applications.</p><p>We appreciate these meaningful contributions that help make Fedify more accessible and robust for the entire ActivityPub community.</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>