Kind of my vision here for an #ActivityPub DSL with #APRL/ #LcCircle is the ability to say things like…
allow {
authenticated_request(X)
} route("actor:circle.mydomain.example/circle/enqueue") {
rule(follow_request(Requester, Requestee, X))) {
follows(Requestee, Requester)
} annotate {
X.annotations += Annotation(
"follow_status": FollowStatus.FollowsRequester
)
}
}
Probably not with that exact syntax, but that's the idea.
Also, re queuing in #LcCircle: I must say I _really_ like #vertx here for creating abstractions.
Like I have my frustrations and feel a strong need to put patterns on top of everything, but the fundamental architecture makes it so easy to just… pass through data and then implement a queue later.
Toy #ActivityPub progress (#LcCircle):
I have my basic parsers working and can send and receive information reasonably. I don't have a lot of wiring around queues implemented yet, but I implemented the primary fundamentals here a few times and doing it here won't be particularly difficult (just time consuming, so going to punt on it for a bit).
So next up is message handling! There are about eight million ways to do this, but the more I think about it the more I want a rules engine.
Progress on my toy #ActivityPub project (#LcCircle):
* Added some basic functionality around scala-style Try blocks. They aren't quite as nice due to the lack of pattern matching, but they work and they give some of the feel while still feeling pretty "#kotlin -y"
* Got the serialization mostly where I want it. Not much left.
* Tore out my initialization code entirely and refactored it, moving the functionality around. This is still a work in progress, but the new result is much cleaner.
#activitypub #lccircle #kotlin
Toy #ActivityPub project progress:
I have the serializers for objects mostly done. I went a lot overboard there and now have the wiring in place for:
1. #Kotlin serialization for specific objects.
2. Specific #protobuf objects.
3. Generic #Gson annotated POJOs that are allowlisted.
Oh, and I started just calling it by "#LcCircle" because I am not creative, naming is hard, and I am probably never publishing it anyways (and if I do then the "LC" will be relevant; where if I don't then eh).
#activitypub #kotlin #protobuf #gson #lccircle