Introduction, and ... should I attempt to build a test/reference tool?

Greetings! I’ve been … fedicurious (for lack of a better term), since I first heard about Mastodon some time ago, but having never been much into micro-blogging, I wasn’t drawn in. Then all of the recent drama at Reddit introduced me to Lemmy, which led me to try to learn how this “fediverse” stuff works, which eventually led me to the ActivityPub spec, which led to lots and lots of head scratching, which lead to finding other documentation, samples, and explanations that made a bit more sense, but not completely. Now I’m here, and I have a question.

As a software engineer and FOSS enthusiast, I’ve naturally been pondering what I could contribute to the activitypub ecosystem.

My first inclination was a lemmy/kbin alternative that approached things closer to my style. However, I’m still having trouble wrapping my head around some of the basics of activitypub, and I feel that having a locally running http server that I could bounce requests off of would be hugely beneficial to me.

After much searching, the closest thing I’ve found to what I’m looking for is this old thread about test.activitypub.rocks. Skimming through that leads me to believe that A) no such tool exists at the moment (please correct me if I’ve overlooked something), and B) I’m not the only one that wants one.

So, that leads me to, maybe I I should take a stab and creating something. But, the obvious problem there is, if I don’t fully understand activitypub, how will I know that what I’m creating is correct? I think what I need are some people that are much more experienced with activitypub willing to exercise the tool occasionally and tell me if I’m on the right track, or if I’ve made any wrong assumptions. Hopefully this post leads to some volunteers (hint, hint, nudge, nudge).

My current thoughts on requirements and how it would work are…

  • It should run locally.
  • It should have the absolute bare minimum of dependencies and installation steps.
  • Documentation would provide some sample curl commands to verify things are working.
  • Tool would log all requests it receives (even if they’re gibberish), indicate what it understood, and ideally, what pieces it didn’t understand, and maybe even some helpful tips.
  • User would be able to trigger events from the tool so that it initiates properly formatted requests to a locally running app that the user is developing/testing.
  • Since I’m a long term Ruby dev, it will be written in Ruby (this is non-negotiable. sorry. ;-)), however, other than installing Ruby from their OS’s standard repos, this detail should be transparent to the user.
  • I’m not imagining the tool ever handling complex scenarios. I’m really thinking (for now) of it being something more to help get people trying to develop an activitypub app the confidence to get a few steps beyond Hello World and know that they’re on the right track.

Thoughts, suggestions, or guidance?

If you think I should proceed, what should the first bare minimum Hello World version of of tool do? I’m imagining the ability to generate a subscribe request that gets posted to another address, and the ability to process an incoming subscribe request and respond appropriately. Maybe there’s lower hanging fruit that I could start with instead?

Thanks for any feedback.

2 Likes

Those sound like reasonable requirements to me for an interactive development tool.

Implementing a Follow/Accept (or Reject) interaction is going to exercise several parts of the AP specification (implementing Actors, inboxes, outboxes, retrieving Objects, storing Objects, and probably some form of authentication and authorization). Will your test tool have both a C2S client (to test server-side outbox behavior) and S2S inbox support for actor-to-actor/federation testing?

Will your test tool have both a C2S client (to test server-side outbox behavior) and S2S inbox support for actor-to-actor/federation testing?

Good question. Initially I’d probably focus on basic S2S/federation interactions. But, I’d like it to eventually do as much as possible without becoming bloated or hard to use for someone just trying to get their head around AP.

I can also imagine this being the first part of a suite of individual tools that focus on different things and levels of complexity. This initial one would just be at the level of, “Oh, so you want to write an activitypub app, huh?” :smile:

1 Like