devnull, to random
@devnull@crag.social avatar

Spent most of the workday today adding in hostname checks to the NodeBB-ActivityPub integration in order to improve security. There's much to reflect on with the recent vulnerability disclosures, and many lessons to learn.

It absolutely sucks that Mastodon and Pixelfed contained these vulnerabilities, but their public disclosure allows the rest of the fediverse to learn from their mistakes and publish better software.

devnull, to random
@devnull@crag.social avatar

✅ Two-way federation of Likes

Edit: Also — not that you noticed — I had the fake account on my test instance upvote this toot too, because I'm a little vain 😆

devnull, to fediverse
@devnull@crag.social avatar

Today at 16:19, a @nodebb instance sent its first "Note" into the fediverse 😄

Baby steps!!

#fedidev #ActivityPub #nodebbActivityPub

devnull, to fediverse
@devnull@crag.social avatar

One quick question about instance keys... I have private and public keys generated for individual user actors in my implementation, and that works when attempting to access resources from an instance with AUTHORIZED_FETCH enabled. If I need to retrieve content without a local user context, would I be making the call with an "instance level" public key/signature?

That was my interpretation, but would appreciate confirmation 😃

devnull, to fediverse
@devnull@crag.social avatar

Last week, I started my initial forays into retrieving and parsing remote content from the . As expected much of the data structures are identical to but named and organized differently, so there's a lot of bits and pieces that need connecting.

Nevertheless, it's thrilling to see remote content on a local instance!

Next week: federating likes, perhaps? 😃

devnull, to fediverse
@devnull@crag.social avatar

So my method to make calls to speaking instances is quite naive and doesn't handle errors AT ALL. That'll get better with time.

Some instances require signing for GETs, that makes sense.

Surprisingly, trying to query @jdp23 causes that instance to return a 500 — curious.

devnull, to random
@devnull@crag.social avatar

Today, like most of this week, I worked on follow logic for @nodebb () — follow/unfollow is now working, and now I can browse follow lists from remote accounts too!

devnull, to fediverse
@devnull@crag.social avatar

It took a couple hours of banging my head against the code, but I finally managed to establish my first real connection!

Lots more to do still, but at least I feel like I accomplished something today!

here we come.

The corresponding follow success notification from NodeBB, indicating a successful response from the remote Mastodon instance.

devnull, (edited ) to fediverse
@devnull@crag.social avatar

Current Mood re:

devnull, (edited ) to mastodon
@devnull@crag.social avatar

Have been developing locally (making calls to itself, which as an aside, is a no-no in production), and all was going well, until I accidentally tried sending a call to a real instance and got instantly shouted down 😂

401 Unauthorized! ⛔

devnull, (edited ) to mastodon
@devnull@crag.social avatar

I keep hearing about how is too complicated for people to grok, and I can't help but think that this is entirely a marketing problem. positions itself as THE , each instance being one way to connect to it, but not much more (the lack of local/instance-only toots reinforces this).

It's like the whole idea that each individual instance can have their own subculture, memes, and posts is secondary to this grand idea of the fediverse. No wonder people don't get it!

1/5

devnull, (edited )
@devnull@crag.social avatar

I'm certain it can be done. We've seen that small, niche sites were absolute powerhouses of information and showcased an uncanny ability to bring disparate people with common interests together. To eschew this is to turn your back on so much potential for community-building!

@nodebb (here comes the plug) started off providing that niche space, and with the development of , I can finally realize that vision of combining the best of both worlds, small vs big, niche vs fedi.

4/5

devnull, (edited ) to fediverse
@devnull@crag.social avatar

— a lot of implementors are Fedi-first, but in @nodebb's case, we're adding integration to already existing and established forums. It makes me wonder whether I should think about individual users' to have their content federated outside of the local instance.

All along I assumed I'd just build in a global on-off switch for AP integration, but maybe we need more granular user-level opt-in/out here 🤔

devnull, to random
@devnull@crag.social avatar

The first thing I have to do for is to create a project plan. This goes against my default setting as a software dev, which is to just hack on things until they work, and then refactor endlessly because the earlier revisions were garbage.

So. It's a fantastic thing that they're making me think about from the top-down, because otherwise I'd literally just dive right back into the trenches and miss the forest for the trees 😄

devnull, to fediverse
@devnull@crag.social avatar

Would I be a bad implementor if I don't maintain a "feed"?

If a post is created, NodeBB would send the Create activity to all of the author's followers, and that post would be displayed on that app, usually in the form of a feed.

On the other hand, if other apps send Creates to me, I can save them, but there's no place to display them organically within the existing forum structure 🤔 — since they're not part of an existing topic/category/etc...

nodebb, to fediverse
@nodebb@fosstodon.org avatar

A tad delayed, given we're already half a year in, but here's a sneak peek of what came out of our 2023 meeting!

tl;dr revamped ACP, 🌐 refactored chats 📣 and more!

https://community.nodebb.org/topic/17393/2023-roadmap-update

devnull, to mastodon
@devnull@crag.social avatar

@shoq when it comes to groups, there are two parallel implementations in @nodebb:

  1. "user groups" which — true to name — is a group of users. They can be mentioned in posts and will be notified thusly.

  2. Group chats, which function almost exactly like "mentioned-only" visibility in . Users are added to the group and messages exchanged only show up to the users in said group.

Is there a third use case you'd like to see, or is it covered in the above?

devnull, to fediverse
@devnull@crag.social avatar

Good news! I made my first follow request!

Bad news, it was to http://127.0.0.1 😞

devnull, (edited ) to fediverse
@devnull@crag.social avatar

I've been musing passively about how I can develop locally while still making requests in order to test with real HTTP requests, and was pretty close to just deploying my code on a test subdomain (and then making the call to my server — crag.social), but then realized I could just stand up two instances on my machine and have them gab to each other instead

🤖 🗨️ 🤖

devnull, to random
@devnull@crag.social avatar

@multiverseofbadness Unimpenetrable wall of http signature crits you for 100

I have no idea if I did it right, or whether it even verifies, so it's time to build verify() and check!

devnull, to fediverse
@devnull@crag.social avatar

Don't mind me, just playing with natively loading account profiles from federated instances... 😶

Nice looking profiles ya got there, @multiverseofbadness @evan

A screenshot displaying a NodeBB profile page of "Evan Prodromou", a user on cosocial.ca, a Mastodon instance.

devnull, to fediverse
@devnull@crag.social avatar

Initial federated contact made! My local dev instance has just made its first calls to a remote instance (via discovery) to retrieve a remote user account!

One small step for , ah... also one small step for the I guess.

devnull, (edited ) to random
@devnull@crag.social avatar

@trwnh you said earlier today — "having a topic is a useful feature or abstraction, and i'd like to see literally any support or thought given to it"

💯 will do. A post created in @nodebb will have a topic associated with it in its metadata as you've suggested. That just makes complete sense. It would continue to exist in the (sub-)category hierarchy already present in

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • kavyap
  • DreamBathrooms
  • thenastyranch
  • magazineikmin
  • InstantRegret
  • Durango
  • Youngstown
  • everett
  • slotface
  • rosin
  • cubers
  • mdbf
  • ngwrru68w68
  • anitta
  • GTA5RPClips
  • cisconetworking
  • osvaldo12
  • ethstaker
  • Leos
  • khanakhh
  • normalnudes
  • tester
  • modclub
  • tacticalgear
  • megavids
  • provamag3
  • lostlight
  • All magazines