WHOA
First-ever Gitea comment on an issue from a remote instance!!! đ
https://git.exozy.me/Ta180m/Hello-world/issues/2#issuecomment-2914
â
WHOA First-ever Gitea comment on an issue from a remote instance!!! đ https://git.exozy.me/Ta180m/Hello-world/issues/2#issuecomment-2914 103 comments
â
Since the is no UI whatsoever for federated features in Gitea currently, I'm currently using some Ruby scripts[1] based on that old ActivityPub blog post that Gargron did four years ago[2]. Hey, it works well enough for me! [1] https://gitea.com/Ta180m/aptools
6543
Well review'ing stuff is work too and we dont have a lot to do it. https://github.com/go-gitea/gitea/issues/20022#issuecomment-1165517967 ...
makkin thing
@raphaelmorgan it's an existing thing that's an online Git repo like GitHub. It's already completely usable and can be self-hosted. The WIP bit is the federation.
Martin Puppe
@raphaelmorgan @ta180m For now, Gitea is simply a great GitHub clone that you can self-host (or, for example, use codeberg.org for open-source). Federation is still WIP.
â
@idlestate @raphaelmorgan Yeah, that's a good summary. I usually point people to https://nlnet.nl/project/Gitea/ when they ask me for a high-level summary of the project.
rellik moo
that's cool. I was particularly trying to avoid things like the phrase used there: "anyone can host the software". We see a lot of discussion around these parts about that kind of language, how it embodies certain assumptions about who counts as "anybody". Usually it's not meant to be exclusive--just the opposite, in fact--but in some circles it carries a certain sense of disappointment and broken promises.
â
@idlestate @raphaelmorgan I've been working on a completely different project over the past few months for a new federation protocol that uses relay servers for NAT traversal and to enable end-to-end connectivity, so that anyone can host an application server on their computer. It's basically https://github.com/nostr-protocol/nostr on steroids. I have a repo for it but it's quite empty.
Morgan
@idlestate I'd say you achieved that goal: I read "people who aren't Microsoft" as "individuals, albeit not all individuals"
censored for âtransphobiaâ
@gabriel @ta180m Very glad to see that! The number 1 reason projects cling to #Github is because they think devs are too lazy to create more than 1 forge acct. This feature will eliminate that excuse. BTW git.exozy.me is now on the forge list: https://git.sdf.org/humanacollaborator/humanacollabora/src/branch/master/forge_comparison.md
Martin Puppe
Shitting alone
@ta180m this is awesome, is it possible to browse federated repos from your instance?
Nate :verified:
@ta180m I very much appreciate the work you are doing on this. When it is fully functional and merged upstream federation is going to be Gitea's "killer feature", the one thing that sets it apart from other forge software.
Dick Smiths Fair Go Supporters
â
@Mindiell I don't really know much Golang either and I just use StackOverflow and autocomplete and that works for me. Currently, the area that needs the most work is the UI and frontend, since right now there's no UI whatsoever for federated features in Gitea and I'm using the Mastodon UI and some random Ruby scripts for testing and debugging.
Prawa Cyfrowe
Caesar
@ta180m Cool! In response to your points: 1. I assume I wouldn't need to interact with a Gitea UI to comment from Mastodon or another fedi app? 2. I guess I assumed that by being an ActivityPub extension, basic features like following and replying would be automatically interoperable - is that not the case? 3. Ah, I guess that's probably the main reason then? (I need to familiarise myself with the specs more. As you can probably tell I don't know a lot about ActivityPub...)
â
@caesar 1. In theory yes, you could just directly paste the issue's IRI into Mastodon's /authorize_interaction?uri=. However, Mastodon has a UI for automating this: when you're on a remote instance and want to interact with something, there's a popup box where you can type in your instance and you're redirected to the authorize_interaction page automatically. We need to implement something similar in Gitea. I'll continue my response to the other points in a reply: I'm at the character limit...
â
@caesar 2. The problem here is that issues are represented using the ForgeFed type Ticket, which Mastodon doesn't understand. The ActivityPub spec states that AP servers should continue processing an activity that they don't recognize, but Mastodon doesn't seem to care about spec compliance and bails out when it sees a Ticket. 3. Actually, the second reason is the most difficult to address, since we'll need to contribute a fix to Mastodon. The third reason as I said is easy to address.
infinite love â´ŗ
@ta180m @caesar mastodon has a transformer for non-Note and non-Question activities, it just takes the `name` and `url` fields and joins them together (or uses `content` if available) to generate the status. https://docs.joinmastodon.org/spec/activitypub/#payloads you could theoretically just remove the type-checking from that bit of code?
â
@trwnh @caesar Yeah, it looks like we'll probably have to submit a PR to Mastodon to fix this. We thought of a few alternate solutions but they aren't very nice or don't work:
infinite love â´ŗ
@ta180m @caesar type arrays aren't in the ap spec, they're in the json-ld spec, it should be supported (but isn't) the file you wanna look at https://github.com/mastodon/mastodon/blob/main/app/lib/activitypub/activity.rb
â
@trwnh @caesar Ah interesting. Sometimes it doesn't even matter what the AP spec says, but actually what servers do in practice, and I haven't seen any AP implementation ever that supports type arrays. I'll take a look at the Mastodon code later and submit a PR, since for now we are focusing on Gitea<->Gitea federation.
marius
Go activitypub will support types as arrays at some point. I'm not entirely sure of how the API will look, but it will be there in some form. In my opinion, providing a "fallback" type for certain objects can be good for interoperability with other services. Eg, an "Issue" object can have a fallback as a "Note" where a random mastodon instance will show just its text content, and minimize breakage. (if mastodon would accept array types that is :D)
infinite love â´ŗ replied to marius
@mariusor @ta180m @caesar mastodon already has "fallback" logic for using the `context` as status text if available, and `name` if not, combined with `url` the problem is that this fallback logic is only applied to specific types -- for whatever reason, it doesn't get applied if the type is unrecognized. imo this is a bug that should be fixed
marius replied to infinite love â´ŗ
@trwnh
mike replied to marius
From my recollection the the spec recommends that the first element be a common type if you are able to provide that rendering. The second one can then provide custom or implementation specific variations. If we can't display 'Blob' we're not even going to try to render a [ 'Blob', 'Note' ]. But we'll happily render a ['Note','Blob']. Anyhow that's how I interpreted it. I think we'll store and forward it regardless.
Sebastian Lasse replied to Sebastian
@trwnh @ta180m @caesar @humanetech addendum; PS
Caesar
@ta180m@exozy.me Thanks for the replies!
Caesar
@ta180m@exozy.me I should note that it's showing as waiting for @Ta180m@git.exozy.me to accept a "follow request". Is that intentional?
â
@caesar @Ta180m@git.exozy.me That's probably a bug. My recent commits for federated commenting may have broken following.
â
@caesar @Ta180m@git.exozy.me The reason that works is because I believe Mastodon serves the ActivityStreams objects at the same URL that you see them in a web browser, based on if the Accept: application/activity+json header is set. For Gitea we're serving the AS objects at some endpoints under /api/v1/activitypub.
â
@caesar We currently don't serve the issues as AS objects at any API endpoint, but in the future they should be accessible at /api/v1/activitypub/issue/username/reponame/issuenumber or something like that. For your other question: Great question, since I currently only run Mastodon and PeerTube instances, so I haven't tried federating any other AP servers with Gitea yet.
Caesar
@ta180m 2. Ah, so it's @Mastodon that's not following the spec. Definitely sounds like a PR to fix that would be great, though obviously Gitea<â>Gitea federation is the priority. (Like you, I'm not a fan of the other workarounds you suggested in your other comment). While I'm here, thanks for all your work on forge federation! This is going to be @gitea 's killer feature đ
Dāš
á´Ä¸o
ĐŅиĐŗĐžŅиК ĐĐģŅŅĐŊиĐēОв
Hm. How do I get the AP object? Doing the obvious thing and sending a request with "Accept: application/activity+json" to the issue URL just returns the HTML page. |
@ta180m Congratulation! đĨŗđ