Email or username:

Password:

Forgot your password?
​

WHOA

First-ever Gitea comment on an issue from a remote instance!!! 🎉

git.exozy.me/Ta180m/Hello-worl

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] gitea.com/Ta180m/aptools
[2] blog.joinmastodon.org/2018/06/

​

The federated pull request implementation is next

​

@signal9 If you think this is cool, just wait til you see federated pull requests which should be coming soon sometime this week!

​

@signal9 Currently, the code for this can be found at my Gitea fork: gitea.com/Ta180m/gitea

I am working on upstreaming these commits through pull requests,, but the process can be very slow. For instance, one of my earlier pull requests[1] took 90 days to be merged. I'm sure some of the federated features will be merged before the Gitea 1.18 release in October, but it probably won't be complete (for instance, project board federation likely won't be in Gitea 1.18)

[1] github.com/go-gitea/gitea/pull

@signal9 Currently, the code for this can be found at my Gitea fork: gitea.com/Ta180m/gitea

I am working on upstreaming these commits through pull requests,, but the process can be very slow. For instance, one of my earlier pull requests[1] took 90 days to be merged. I'm sure some of the federated features will be merged before the Gitea 1.18 release in October, but it probably won't be complete (for instance, project board federation likely won't be in Gitea 1.18)

NiceMicro

@requiem @ta180m @signal9 Ohh my, I can't wait for ActivityPub to take over the world!
You are doing some very important work here.

​

@6543 @signal9 I'm going to submit a PR soon once I finish cleaning up my current code.

Morgan

@ta180m oh wow, is Gitea just like, a federated github? A WIP? Or am I missing something
Srry I kinda live under a rock when it comes to techy stuff

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.

rellik moo

@raphaelmorgan

it's software. git-based web hosting for code and comments and such.

so, it's like github, except it's free software that people who are not Microsoft can run for themselves. So, more like gitlab, but people seem to find gitea easier to run.

Many do run their own. But the problem is the same as, say, running your own forum software versus using Facebook/Twitter/Insta/etc: How do you get enough people signed up on your one site to make it useful & interesting?

So, this project is trying to add federation, so one doesn't need to have a thousand different accounts to interact.

@ta180m

@raphaelmorgan

it's software. git-based web hosting for code and comments and such.

so, it's like github, except it's free software that people who are not Microsoft can run for themselves. So, more like gitlab, but people seem to find gitea easier to run.

Many do run their own. But the problem is the same as, say, running your own forum software versus using Facebook/Twitter/Insta/etc: How do you get enough people signed up on your one site to make it useful & interesting?

​

@idlestate @raphaelmorgan Yeah, that's a good summary.

I usually point people to nlnet.nl/project/Gitea/ when they ask me for a high-level summary of the project.

rellik moo

@ta180m

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.

@raphaelmorgan

rellik moo

@ta180m @raphaelmorgan

(not sure I achieved that goal but still that's what I had in mind)

​

@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 github.com/nostr-protocol/nost 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: git.sdf.org/humanacollaborator

Elias MÃĨrtenson

@ta180m OK, that's cool. Time to really get going on migrating away from github

Folket

@ta180m Feels like a gamechanger! Federated Distributed Version Control (FDVC)

ÚŠŲˆØ§ÚŠŲˆŲ…ا

@ta180m Sending git patches through activitypub (instead of email) when :02smile:

​

@koakuma That'll be later this week when I finally get my federated pull request code working!

Martin Puppe

@ta180m @YoSiJo This is excellent news. It has the potential to put “distributed” back into DVCS. Open source is far too dependent on GitHub nowadays.

Lukas

@ta180m Will instance administrations be given a restriction option with regard to the federation? So basically the federation to certain GitLab or GitHub or other Gitea instances, as is the case with Mastodon, for example?

​

@w4ts0n Federation is disabled by default. If you do enable it and would like to stop federating with a certain user or server, you'll also be able to block them.

Shitting alone
@ta180m this is awesome, is it possible to browse federated repos from your instance?
Len

@ta180m :white_heart: i'm looking forward to following #git repos from #mastodon :mastodon:

:blobhearteyes: :blobpats: :blobaww:

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.

mray

@ta180m Wow! Congratulations to everybody involved in this achievement - can't wait to use it some day 😀

Dick Smiths Fair Go Supporters

@ta180m
The anti-MITM Attack service, MitiGator (@mg) has been posting ppls issues to gitea automatically, too.

Its pretty great.

Mindiell

@ta180m OMG What do you need to go faster ? :)
I don't know Golang :/

​

@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.

Mindiell

@ta180m I'm waiting for this kind of feature for so long, big thanks !

Prawa Cyfrowe

@ta180m @Mindiell some say golang can be learned in one evening, tbh if you're determined you can open valuable PRs after just a few days of intensified practice.

shitpostalotl (they/he)

@ta180m holy shit it's happening, everybody stay calm!

RysiekÃēr Memesson đŸ‡ēđŸ‡Ļ

@ta180m this is damn amazing and extremely exciting! :partyparrot:

Caesar

@ta180m will I eventually be able to comment on am issue from Mastodon? What pieces are missing for me to be able to do that now?

​

@caesar yeah, that's a planned feature.

Current obstacles:
1. No Gitea UI for federated commenting
2. Mastodon doesn't seem to understand what ForgeFed tickets are
3. We need to serve Gitea issues and comments as ActivityStreams objects at some API endpoint (this one is easy to implement)
4. Mastodon has threads but Gitea doesn't

For now, we're prioritizing Gitea<->Gitea federation, but interoperability with the entire fediverse would definitely be awesome.

@caesar yeah, that's a planned feature.

Current obstacles:
1. No Gitea UI for federated commenting
2. Mastodon doesn't seem to understand what ForgeFed tickets are
3. We need to serve Gitea issues and comments as ActivityStreams objects at some API endpoint (this one is easy to implement)
4. Mastodon has threads but Gitea doesn't

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. docs.joinmastodon.org/spec/act

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:
- Make the type an array of ["Ticket", "Note"]: this breaks a lot of existing AP software like Mastodon, so we'd be better off sending Mastodon a PR anyways. Also it's not in the AP spec.
- Serve a Note to servers with Mastodon user agents and a Ticket to servers with Gitea user agents. (Crazy idea and I don't like it)

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 github.com/mastodon/mastodon/b

​

@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.

smallcircles (Humane Tech Now)

@ta180m @trwnh @caesar

Type arrays aren't explicitly mentioned in #ActivityPub spec, but they are in #ActivityStreams in a bunch of examples.

For instance "Object that is both a Place and a Location"

w3.org/TR/activitystreams-core

Or in the text stating that vCard should be used to extend an Actor.

w3.org/TR/activitystreams-core

Most elaborate example is:

w3.org/TR/activitystreams-core

Supporting a type array is spec conformant. Not supporting it is a shortcoming of the impl.

@ta180m @trwnh @caesar

Type arrays aren't explicitly mentioned in #ActivityPub spec, but they are in #ActivityStreams in a bunch of examples.

For instance "Object that is both a Place and a Location"

w3.org/TR/activitystreams-core

Or in the text stating that vCard should be used to extend an Actor.

marius

@ta180m

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)

@trwnh @caesar

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

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

@trwnh @ta180m @caesar

Sorry (!) people for getting angry but this is major important and it is driving me nuts:
#ActivityPub #ActivityStreams
ANYTHING which is not “functional” IS an ARRAY BY DEFAULT !
The spec. ALSO says superclear:

“Properties marked as being "Functional" can have only one value. Items not marked as "Functional" can have multiple values.”
(How can anyone understand this sentence wrong ?)

This is anywhere in the Linked Data World, it is explicitly in the JSON-LD spec. and ActivityPub is JSON-LD.
You would really destroy a world if “type” is not an Array!
ActivityPub can't work then. Never.
The same is for RDF and the knowledge of the world.

Personally building an AP thing for Europes largest publishing house. It speaks IPTC, rNews, wikipedia and other friends
redaktor.github.io/vocab/index
and for the World's Newspapers it is common that 1 Article has maybe 5 types describing _what it is_ !

This is really superimportant to deal with different softwares and worlds !!!
1/2

/ @humanetech

@trwnh @ta180m @caesar

Sorry (!) people for getting angry but this is major important and it is driving me nuts:
#ActivityPub #ActivityStreams
ANYTHING which is not “functional” IS an ARRAY BY DEFAULT !
The spec. ALSO says superclear:

“Properties marked as being "Functional" can have only one value. Items not marked as "Functional" can have multiple values.”
(How can anyone understand this sentence wrong ?)

Sebastian Lasse

@trwnh @ta180m @caesar @humanetech

It should be pretty clear that anyone who is not supporting it, is trying to build on complete different standards.
Maybe to create a monopoly? I do not know and I am not interested.

I can only say that the Social CG will specify AS3 one day which is why we meet each 1st TUE a month. Currently, after co-organising both conferences, I can only _invite_ anyone to write Proposals for FediCamp 2022 socialhub.activitypub.rocks/t/

This is the next thing where the Community meets and such sessions would be helpful.

I will ask if we can get this sentence as a “bold h1“:

> Properties marked as being "Functional" can have only one value. Items not marked as "Functional" can have multiple values.

@trwnh @ta180m @caesar @humanetech

It should be pretty clear that anyone who is not supporting it, is trying to build on complete different standards.
Maybe to create a monopoly? I do not know and I am not interested.

I can only say that the Social CG will specify AS3 one day which is why we meet each 1st TUE a month. Currently, after co-organising both conferences, I can only _invite_ anyone to write Proposals for FediCamp 2022 socialhub.activitypub.rocks/t/

Sebastian Lasse replied to Sebastian

@trwnh @ta180m @caesar @humanetech

addendum;
the sentence is in the AS spec. as well, see
w3.org/TR/activitystreams-voca
Should be bold.

PS
Re. the Ontology, it is a Work In Progress w. bugs but any properties which have “blue icons” are Arrays and just the grey are not.

Caesar

@ta180m@exozy.me Thanks for the replies!
1. Ah, this makes sense. TBH I often don't use that UI on Mastodon; I just copy the URL of the account I want to follow or the post to interact with and paste it into the search on my instance. That doesn't work with your Gitea – neither searching the account URL to follow, nor the issue URL to interact. But now it occurred to me to try with `@Ta180m@git.exozy.me` and it worked (kind of). I still can't find a way to reply to the comment, but maybe because of the other issues.

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

@ta180m Ah, that makes sense. So what URI would I need to use to (try to) interact with an issue?

I wonder if there are other existing fedi apps that *do* follow the spec and would be able to interact with it already?

​

@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 🚀

Mx. Bleau

@ta180m This has me extremely excited. đŸĨŗ congrats and I look forward to following the progress on this.

Dāš…ᴉĸo

@ta180m
If you wanna be trendy, you should sell it as #NFT.

More seriously, it's very exciting to see how gitea and federated git is moving.

ledocool
Gitea supports federation? Noice!
ГŅ€Đ¸ĐŗĐžŅ€Đ¸Đš КĐģŅŽŅˆĐŊиĐēОв

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.

Doug Webb

@ta180m this is Very Good. Thank you for your work, including the tricky process of upstreaming!

Am I?

@ta180m
This is so awesome work. I'd love to give a code review, but I don't want to make yet another user (and I don't know Go).
This could be ground breaking for open source. 💕

Go Up