# orderedItems[].object.content
Edit: Done! https://madeincanada.social/#servers

Instead of manually adding servers to https://MadeInCanada.social, I'll leverage my FediDB.com service with a new API 🔥

#ActivityPub #NodeInfo #Fediverse #MadeInCanada

# orderedItems[].object.content
FEP-0151: NodeInfo in Fediverse Software (2025 edition)

I added the "Implementations" section and a reference to FEP-844e:

https://codeberg.org/fediverse/fep/pulls/741

There are 3 independent implementations now. Since this is a "2025 edition", and 2025 is about to end, I think the FEP should be finalized.

If you have any suggestions, please comment here, on SocialHub, or create an issue.

#fep #fep_0151 #activitypub #nodeinfo

# orderedItems[].object.ephemeral.metadata[].twitterTitle
FEP-0151: NodeInfo in Fediverse Software (2025 edition)

# orderedItems[].object.ephemeral.metadata[].description
Hello! 
This is a discussion thread for the proposed FEP-0151: NodeInfo in Fediverse Software (2025 edition). 
It is a revised version of FEP-f1d5: NodeInfo in Fediverse Software, which was published in 2020.

# orderedItems[].object.ephemeral.metadata[].ogDescription
Hello!  This is a discussion thread for the proposed FEP-0151: NodeInfo in Fediverse Software (2025 edition).  It is a revised version of FEP-f1d5: NodeInfo in Fediverse Software, which was published in 2020.

# orderedItems[].object.ephemeral.metadata[].ogTitle
FEP-0151: NodeInfo in Fediverse Software (2025 edition)

# orderedItems[].object.ephemeral.metadata[].twitterDescription
Hello!  This is a discussion thread for the proposed FEP-0151: NodeInfo in Fediverse Software (2025 edition).  It is a revised version of FEP-f1d5: NodeInfo in Fediverse Software, which was published in 2020.

# orderedItems[].object.content
I finally got around to setting up #nodeinfo properly on #Enigmatick as an effort to be a more compliant #ActivityPub participant. Coincidentally (and unexpectedly), my connected instances have jumped substantially (>15% in 24 hours):

enigmatick=> SELECT                                                                                                          CASE                                                                                                                       WHEN created_at > NOW() - INTERVAL '1 day' THEN 'last 24h'                                                               WHEN created_at > NOW() - INTERVAL '2 days' THEN '24-48h ago'                                                            WHEN created_at > NOW() - INTERVAL '3 days' THEN '48-72h ago'                                                          END as period,                                                                                                           COUNT(*)                                                                                                               FROM instances                                                                                                           WHERE created_at > NOW() - INTERVAL '3 days'                                                                             GROUP BY period                                                                                                          ORDER BY period;
   period   | count
------------+-------
 24-48h ago |     1
 48-72h ago |     3
 last 24h   |   164
(3 rows)

Maybe it's not directly related - I also fixed some direct object and tags link references to provide proper ActivityPub representations.

# orderedItems[].object.source.content
I finally got around to setting up #nodeinfo properly on #Enigmatick as an effort to be a more compliant #ActivityPub participant. Coincidentally (and unexpectedly), my connected instances have jumped substantially (>15% in 24 hours):

```sql
enigmatick=> SELECT                                                                                                          CASE                                                                                                                       WHEN created_at > NOW() - INTERVAL '1 day' THEN 'last 24h'                                                               WHEN created_at > NOW() - INTERVAL '2 days' THEN '24-48h ago'                                                            WHEN created_at > NOW() - INTERVAL '3 days' THEN '48-72h ago'                                                          END as period,                                                                                                           COUNT(*)                                                                                                               FROM instances                                                                                                           WHERE created_at > NOW() - INTERVAL '3 days'                                                                             GROUP BY period                                                                                                          ORDER BY period;
   period   | count
------------+-------
 24-48h ago |     1
 48-72h ago |     3
 last 24h   |   164
(3 rows)
```

Maybe it's not directly related - I also fixed some direct object and tags link references to provide proper ActivityPub representations.

# orderedItems[].object.content
Loops now supports NodeInfo ✨

https://fedidb.com/software/loops

#loops #nodeInfo #activityPub

# orderedItems[].object.content
We'd like to recognize the valuable contributions from two developers who participated in Korea's #OSSCA (Open Source Contribution Academy) program. Both contributors identified important gaps in #Fedify's functionality and documentation, providing thoughtful solutions that benefit the broader #ActivityPub ecosystem.

@gaebalgom contributed PR #365, addressing issue #353 regarding NodeInfo parser compatibility, originally reported by @andypiper. The issue arose when Fedify incorrectly rejected #NodeInfo documents from snac instances due to overly strict version string parsing that required semantic versioning compliance. Their solution improves the fallback behavior in the parseSoftware() 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 (3), two-part versions (2.81), 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 (issue #366), where the NodeInfo software.version field will be changed from the SemVer type to a plain string to fully comply with the NodeInfo specification.

@z9mb1 contributed PR #364, resolving issue #337 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 /users/{userId}/tags/{tag}, and demonstrates the complete request/response cycle using federation.fetch(). This work provides developers with a clear, runnable reference that reduces the complexity of implementing custom collections in ActivityPub applications.

We appreciate these meaningful contributions that help make Fedify more accessible and robust for the entire ActivityPub community.

#opensource #fedidev #fediverse

# orderedItems[].object.ephemeral.metadata[].twitterTitle
fix: change nodeinfo version fallback behavior by dodok8 · Pull Request #365 · fedify-dev/fedify

# orderedItems[].object.ephemeral.metadata[].description
Summary
Implementation of the immediate fix mentioned in #353, which supports non-Semver version strings.
Related Issue

fixes fedify nodeinfo reports snac's nodeinfo as invalid #353

Changes

Chan...

# orderedItems[].object.ephemeral.metadata[].ogDescription
Summary
Implementation of the immediate fix mentioned in #353, which supports non-Semver version strings.
Related Issue

fixes fedify nodeinfo reports snac's nodeinfo as invalid #353

Changes

...

# orderedItems[].object.ephemeral.metadata[].ogTitle
fix: change nodeinfo version fallback behavior by dodok8 · Pull Request #365 · fedify-dev/fedify

# orderedItems[].object.ephemeral.metadata[].twitterDescription
Summary
Implementation of the immediate fix mentioned in #353, which supports non-Semver version strings.
Related Issue

fixes fedify nodeinfo reports snac&#39;s nodeinfo as invalid #353

Chang...

# orderedItems[].object.ephemeral.metadata[].twitterTitle
fedify nodeinfo reports snac's nodeinfo as invalid · Issue #353 · fedify-dev/fedify

# orderedItems[].object.ephemeral.metadata[].description
Summary $ fedify node https://comam.es/snac/ ✖ No NodeInfo document found or it is invalid. No NodeInfo document found or it is invalid. Use the -b/--best-effort option to try to parse the document anyway. Works with -b but reports a ver...

# orderedItems[].object.ephemeral.metadata[].ogDescription
Summary $ fedify node https://comam.es/snac/ ✖ No NodeInfo document found or it is invalid. No NodeInfo document found or it is invalid. Use the -b/--best-effort option to try to parse the document...

# orderedItems[].object.ephemeral.metadata[].ogTitle
fedify nodeinfo reports snac's nodeinfo as invalid · Issue #353 · fedify-dev/fedify

# orderedItems[].object.ephemeral.metadata[].twitterDescription
Summary $ fedify node https://comam.es/snac/ ✖ No NodeInfo document found or it is invalid. No NodeInfo document found or it is invalid. Use the -b/--best-effort option to try to parse the document...

# orderedItems[].object.ephemeral.metadata[].twitterTitle
Change NodeInfo `software.version` field type from `SemVer` to `string` · Issue #366 · fedify-dev/fedify

# orderedItems[].object.ephemeral.metadata[].description
Summary The NodeInfo specification does not require the software.version field to follow Semantic Versioning, but Fedify currently enforces this by using the SemVer type for this field. This causes compatibility issues with legitimate so...

# orderedItems[].object.ephemeral.metadata[].ogDescription
Summary The NodeInfo specification does not require the software.version field to follow Semantic Versioning, but Fedify currently enforces this by using the SemVer type for this field. This causes...

# orderedItems[].object.ephemeral.metadata[].ogTitle
Change NodeInfo `software.version` field type from `SemVer` to `string` · Issue #366 · fedify-dev/fedify

# orderedItems[].object.ephemeral.metadata[].twitterDescription
Summary The NodeInfo specification does not require the software.version field to follow Semantic Versioning, but Fedify currently enforces this by using the SemVer type for this field. This causes...

# orderedItems[].object.ephemeral.metadata[].twitterTitle
Example for custom collection dispatchers by sij411 · Pull Request #364 · fedify-dev/fedify

# orderedItems[].object.ephemeral.metadata[].description
Summary
Example for using custom collection dispatchers by printing posts and tagged posts
Related Issue

closes Examples for custom collection dispatchers #337

Changes

Added main.ts : prints moc...

# orderedItems[].object.ephemeral.metadata[].ogDescription
Summary
Example for using custom collection dispatchers by printing posts and tagged posts
Related Issue

closes Examples for custom collection dispatchers #337

Changes

Added main.ts : prints moc...

# orderedItems[].object.ephemeral.metadata[].ogTitle
Example for custom collection dispatchers by sij411 · Pull Request #364 · fedify-dev/fedify

# orderedItems[].object.ephemeral.metadata[].twitterDescription
Summary
Example for using custom collection dispatchers by printing posts and tagged posts
Related Issue

closes Examples for custom collection dispatchers #337

Changes

Added main.ts : prints moc...

# orderedItems[].object.ephemeral.metadata[].twitterTitle
Examples for custom collection dispatchers · Issue #337 · fedify-dev/fedify

# orderedItems[].object.ephemeral.metadata[].description
Summary Recently, Custom Collection Dispatcher was added #310 . This allows users to easily dispatch various Collections of Objects. However, since it was added not long ago, it may still be unfamiliar to users. To solve this problem, wr...

# orderedItems[].object.ephemeral.metadata[].ogDescription
Summary Recently, Custom Collection Dispatcher was added #310 . This allows users to easily dispatch various Collections of Objects. However, since it was added not long ago, it may still be unfami...

# orderedItems[].object.ephemeral.metadata[].ogTitle
Examples for custom collection dispatchers · Issue #337 · fedify-dev/fedify

# orderedItems[].object.ephemeral.metadata[].twitterDescription
Summary Recently, Custom Collection Dispatcher was added #310 . This allows users to easily dispatch various Collections of Objects. However, since it was added not long ago, it may still be unfami...

# orderedItems[].object.content
Started writing a new FEP:

FEP-0151: NodeInfo in Fediverse Software (2025 edition)

Mentioned some best practices. What else should be added there?

#FEP #NodeInfo

# orderedItems[].object.content
#ShowerThoughts: Could we use Murmurations to replace NodeInfo in fediverse servers, for sharing server stats and public details? Or make NodeInfo compatible with Murmurations aggregators?

Some preliminary musings on potential interop between the verse and Murmurations on SocialHub;

https://socialhub.activitypub.rocks/se arch?q=murmurations

Some of which probably answer that question, and I'll have a dig through.

#AskFedi #NodeInfo #Murmurations #SocialHub

# orderedItems[].object.ephemeral.metadata[].description
Where ActivityPub developers coordinate their efforts to make the Fediverse a great space for cooperation

# orderedItems[].object.content
Added basic nodeinfo support to microdon.

It uses its own stlyle of path for each nodeinfo file. But also supports Akkoma, Firefish, Pixelfed, and Mastodon style paths, too.

#microdon #nodeinfo

# orderedItems[].object.content
#Fedify is an #ActivityPub server framework in #TypeScript & #JavaScript. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.

The key features it provides currently are:

• Type-safe objects for Activity Vocabulary (including some vendor-specific extensions)
• #WebFinger client and server
• HTTP Signatures
• Middleware for handling webhooks
• #NodeInfo protocol
• #Node.js, #Deno, and #Bun support
• CLI toolchain for testing and debugging

If you're curious, take a look at the Fedify website! There's comprehensive docs, a demo, a tutorial, example code, and more:

https://fedify.dev/

#fedidev