@mariusor@metalhead.club
@mariusor@metalhead.club avatar

mariusor

@mariusor@metalhead.club

Mostly a programmer.

Implementing #ActivityPub in the #Go programming language.

Current projects:

  • #GoActivityPub - a library to use ActivityPub in Go.

  • #FedBOX - a generic ActivityPub service supporting the client to server API.

  • #brutalinks - a link aggregator inspired by (old) reddit, hacker news and lobste.rs built on top of FedBOX.

  • #oni - a single user ActivityPub server with minimal fuss.

My posts are mostly related to ActivityPub and web development.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

mattb, to golang
@mattb@hachyderm.io avatar

folks, can anybody tell me why this doesn't do what I expect: https://go.dev/play/p/VQB02JKAaNG

tl;dr errors.Is(MyError{}, MyError{}) returns false 🤔

mariusor,
@mariusor@metalhead.club avatar

@mattb this error type is not Comparable as the reflect package defines it.

Because of that the errors themselves can not be compared with equality, which is what errors.Is() uses.

mariusor,
@mariusor@metalhead.club avatar

> and usually is a smell.
@bmarinov says who?

@mattb

mariusor,
@mariusor@metalhead.club avatar

@mattb a possible solution is to implement the Is(error) bool interface with custom code that checks that equality for such a custom struct (I imagine by checking for the same http error code or something)

mariusor,
@mariusor@metalhead.club avatar

@bmarinov what do you expect when you make general unsubstantiated statements that "well established pattern is a smell". You need to provide some reasoning if you want anyone to take your words seriously.

@mattb

sinituulia, to Cats
@sinituulia@eldritch.cafe avatar
mariusor,
@mariusor@metalhead.club avatar

@sinituulia nod of approval rather. :)

dansup, to fediverse
@dansup@mastodon.social avatar

Loops + c2s would be a perfect match, few activitypub implementations support the client to server model.

🤔

mariusor,
@mariusor@metalhead.club avatar

What do you feel that is missing @steve ?

@benpate @dansup

mariusor,
@mariusor@metalhead.club avatar

@steve I believe I have presented the FEP for searches before: https://git.sr.ht/~mariusor/Fediverse-Enhancement-Proposal/tree/master/item/feps/fep-6606.md

The others are not really API related in my opinion. Every client should be able to implement them with some creativity on top of existing inbox/outboxes. (Nothing says a client can't have its own storage that remaps a/many inbox/outbox(es) content into a feed of some sort)

@benpate @dansup

mariusor,
@mariusor@metalhead.club avatar

> If someone shipped a definitive C2S app
@benpate the definitive C2S app would be something that looks like an email client because that is the immediate UI that can be mapped to the inbox/outbox model that @steve was decrying. Here's some C2S apps for you: https://releases.bruta.link, https://brutalinks.tech

@dansup

mariusor,
@mariusor@metalhead.club avatar

@benpate and the app that publishes to the metal release tracker: https://git.sr.ht/~mariusor/rattlehead/tree/master/item/activitypub.go#L368

mariusor,
@mariusor@metalhead.club avatar

@steve I will agree with you to some extent, but I would bring the argument that not the entire fediverse needs to be micro blogging applications.

mariusor,
@mariusor@metalhead.club avatar

@jenniferplusplus

curl -H"Accept: application/json" https://releases.bruta.link/icon

Not very elegant but it does the job.

@steve @benpate @dansup

mariusor,
@mariusor@metalhead.club avatar

@jenniferplusplus ie, that's an Image object created with a plain Create activity.

@steve @benpate @dansup

mariusor,
@mariusor@metalhead.club avatar

@jenniferplusplus the difference between multipart/form-data and application/activity+json is illusory.

@steve @benpate @dansup

mariusor,
@mariusor@metalhead.club avatar

@jenniferplusplus sorry, my whole thread here is not for Daniel, he has me on mute for a while. It's for the naysayers.

@steve @benpate @dansup

mariusor,
@mariusor@metalhead.club avatar

@jenniferplusplus @steve @benpate

PS. all this dissmissivness is a little bit hurtful I have to admit.

I'm trying to show you guys actual things done with C2S and you keep shutting me down with "how about this?" counter examples.

I would have hoped for a little more understanding and empathy and less of collective throwing of hands in the air.

I'll see myself out. :)

mariusor,
@mariusor@metalhead.club avatar

@steve you might be right, I might have been dismissive of your comments and I apologise if I started it. :D

I think my position stems from the impression that I get from comments similar to yours, that C2S is not really under consideration due to its perceived issues, and that the implementers automatically default to anything else. That's probably not the case always.

I'll try to keep that in check for the future and be less defensive. ☮️

@jenniferplusplus @benpate

mariusor, to cycling
@mariusor@metalhead.club avatar

I'm not sure how I was able to commute and ride centuries on a 50x15 fixie for more than 5 years. Just took it out for a 15Km loop and in the wind I had my socks knocked off.

mariusor,
@mariusor@metalhead.club avatar

@vandenberglegs I only had a couple of times when I forgot the fixie part and tried to coast. It was a literal kick in the ass. :D

drewdevault, (edited ) to random
@drewdevault@fosstodon.org avatar

Quick FOSS legal literacy quiz

Imagine the following situation: your project is MIT licensed. Someone takes the whole project and white-labels it (changes the name), then sells it commercially without providing the source code or sharing any of the sales revenue with you. They include "Copyright <your name>" and a copy of the MIT license in the "about" page of the software.

Is this allowed?

mariusor,
@mariusor@metalhead.club avatar

@drewdevault I didn't really know the answer to any of them for sure, therefore when I'm choosing something for my own projects I err on the side of the most permissive one [with attribution].

The energy invested in thinking about these things wouldn't be worth it for me.

b0rk, to random
@b0rk@jvns.ca avatar

my mastodon server's been really struggling with running all these git polls & discussions -- there's a lot of federation to do, and when I made a new post it would take up to 45 minutes for that post to actually get sent to anyone because the server had to chew through 20,000 federation events

so I upgraded to the $89/month masto.host tier to see if that helps

(not looking for advice, just sharing what it's like to run big discussions on mastodon. masto.host has been great.)

mariusor,
@mariusor@metalhead.club avatar

@b0rk RIP Outbox.

naturzukunft, to fediverse German
@naturzukunft@mastodon.social avatar

I've been racking my brains for weeks or even months about object versioning in .

https://www.w3.org/TR/activitypub/#obj-id:

  • MUST have unique global identifiers

Every object has an object identifier and I assume that the majority of developers assume that an update to an object returns the same object identifier as the location and that the properties of this object have changed as a result of the update.

However, the update changes an object and it should also receive a new id!

mariusor,
@mariusor@metalhead.club avatar

@naturzukunft I think versioning on objects can not be exposed through vanilla ActivityPub.

A server modifying the id of the updated object would, in my opinion, violate the principle of least surprise for the user that effected the Update, because it would modify a property that the user didn't update themselves.

mariusor,
@mariusor@metalhead.club avatar

@naturzukunft the user that clicks the update button. But if you implement your own extended vocabulary, there should be nothing stopping you from implementing whatever side effects you want for the additional activities.

That's why I said "vanilla ActivityPub", by which I meant the ActivituPub operations that are possible through the currently specified ActivityStreams vocabulary.

hongminhee, to fediverse
@hongminhee@todon.eu avatar

finally has a step-by-step tutorial! It's perfectly fine if you're not familiar with the protocol or the runtime. Here's the link for beta readers:

https://unstable.fedify.dev/tutorial/

mariusor,
@mariusor@metalhead.club avatar

> curl -fsSL https://deno.land/install.sh | sh

@hongminhee no please, no. :(

mariusor,
@mariusor@metalhead.club avatar
drewdevault, to random
@drewdevault@fosstodon.org avatar

Another day, another batch of people wrongly explaining how licenses work to me

mariusor,
@mariusor@metalhead.club avatar

@drewdevault you should gather all those hot takes and write about them. I think that'll be entertaining. :)

It'll maybe give you an opportunity to vent a little.

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