Live data from Hacker News

Support ActivityPub for merge requests

gitlab.com

21–30 of 32 posts

Re: Support ActivityPub for merge requests

#21

I just deleted a long comment asking why it said ActivityPub wasn't going to help with "implementing cross-instance forks" - so in case anyone is confused about the same thing: I believe they are saying, they will support cross-instance forks (that's the entire point, and why I was confused), but it won't be AP that's used to do this. AP will just be used for the comments etc.

Won’t `git clone` be sufficient for forking?

Re: Support ActivityPub for merge requests

#22

Earlier quoted context omitted.

> If the maintainers request changes, you'll need to make those changes in your branch and push the changes to your forked repository. The PR will be updated automatically with the new changes. Look at this PR for several examples of "requested changes": https://codeberg.org/forgejo/forgejo/pulls/764

Thanks for clarifying. That just looks like the functional equivalent of setting GitLab unresolved MR threads as blocking[1] though. [1] https://docs.gitlab.com/ee/user/project/merge_requests/index...

You could probably do something similar with that, but it's not quite the same thing.

With that setting there's no native way to distinguish between threads that are intended to be blockers and threads that are just comments. They all must be closed regardless of intention before merging can happen, and because there's no way for the commenter to signal their intent that process is error prone. If anyone and everyone can resolve comments then you'll get merges that shouldn't have happened. If only the commenter can resolve comments then you introduced a ton of friction in cases where a comment was just a comment.

It's not that you can't accomplish the same workflows with GitLab's current features, it's just the GitLab doesn't help you the way the other forges do.

Re: Support ActivityPub for merge requests

#23
post #21

I just deleted a long comment asking why it said ActivityPub wasn't going to help with "implementing cross-instance forks" - so in case anyone is confused about the same thing: I believe they are saying, they will support cross-instance forks (that's the entire point, and why I was confused), but it won't be AP that's used to do this. AP will just be used for the comments etc.

Won’t `git clone` be sufficient for forking?

For the local copy yeah but if you want the functionality of gitlab/hub to make a MR online from a fork then you need your own fork tracking the upstream which requires the two copies of the repos, hosted on each of the instances, to know about each other. Otherwise what is the point of having two instances, you would have a gerrit-like system where this is one server and you simply checkout a branch and then make a PR from the same repo.

(If you are asking, "is git clone enough to implement this" then...I think so? But the way the article was worded was confusing at first, like they didn't plan to support this at all.)

Re: Support ActivityPub for merge requests

#24

Earlier quoted context omitted.

Thanks for clarifying. That just looks like the functional equivalent of setting GitLab unresolved MR threads as blocking[1] though. [1] https://docs.gitlab.com/ee/user/project/merge_requests/index...

You could probably do something similar with that, but it's not quite the same thing. With that setting there's no native way to distinguish between threads that are intended to be blockers and threads that are just comments. They all must be closed regardless of intention before merging can happen, and because there's no way for the commenter to signal their intent that process is error prone. If anyone and everyone…

> With that setting there's no native way to distinguish between threads that are intended to be blockers and threads that are just comments. They all must be closed regardless of intention before merging can happen, and because there's no way for the commenter to signal their intent that process is error prone.

This may have merit if your default workflow mindset was all threads are non-blocking unless an explicit "request change" action is invoked.

GitLab's unresolved threads simply comes at it from the inverse perspective of all threads are blocking unless intent to move forward is explicitly conveyed by positively marking threads resolved. If the objective is to avoid unintended merges that manifest from inattentiveness and/or poor communication, then this is clearly the safer approach that preserves accountability.

In the case of just a comment, I see any friction created there as a direct result of poor communication between collaborators; if you can't unambiguously decide whether an in-thread comment is non-blocking/unactionable, then clarity of intent wasn't clearly conveyed to begin with.

Another thing that I thought was presumptive with this "requested changes" flag is that it signals that you want to see code change, but maybe your intent is to block a merge until the PR submitter is given an opportunity to more clearly defend an implementation decision, which may or may not result in a change.

Between draft marking, unresolved threads, and approval rules[1] to safeguard against unintended merges, I struggle to see how GitLab could possibly help me more.

There's a part of me that feels like differences in value perspective are driven by what's generally effective for open distributed collaborations v. the needs of closed enterprise teams.

[1] https://docs.gitlab.com/ee/user/project/merge_requests/appro...

Re: Support ActivityPub for merge requests

#25
post #8

From the comments, Forgejo is also already working on implementing ForgeFed, an ActivityPub extension specifically designed for software forges [0]. Judging from the issue, it looks like they're well on their way [1]. I dislike even federated social media, but this is a use for federation I approve of wholeheartedly. The friction of having to create accounts on X forges (where X is the number of projects that self-ho…

Is Codeberg planning on implementing this?

Re: Support ActivityPub for merge requests

#26

Earlier quoted context omitted.

You could probably do something similar with that, but it's not quite the same thing. With that setting there's no native way to distinguish between threads that are intended to be blockers and threads that are just comments. They all must be closed regardless of intention before merging can happen, and because there's no way for the commenter to signal their intent that process is error prone. If anyone and everyone…

> With that setting there's no native way to distinguish between threads that are intended to be blockers and threads that are just comments. They all must be closed regardless of intention before merging can happen, and because there's no way for the commenter to signal their intent that process is error prone. This may have merit if your default workflow mindset was all threads are non-blocking unless an explicit "…

Anyone, including the author, can resolve a thread in gitlab.

Say I, as a senior engineer, scan a junior’s MR and see a serious security issue. In GH I can request changes, and then re-verify prior to merge that the issue has been fixed correctly. With GL, the author, thinking they fixed it, can resolve the comment and merge.

Re: Support ActivityPub for merge requests

#27

Earlier quoted context omitted.

> With that setting there's no native way to distinguish between threads that are intended to be blockers and threads that are just comments. They all must be closed regardless of intention before merging can happen, and because there's no way for the commenter to signal their intent that process is error prone. This may have merit if your default workflow mindset was all threads are non-blocking unless an explicit "…

Anyone, including the author, can resolve a thread in gitlab. Say I, as a senior engineer, scan a junior’s MR and see a serious security issue. In GH I can request changes, and then re-verify prior to merge that the issue has been fixed correctly. With GL, the author, thinking they fixed it, can resolve the comment and merge.

...but if a junior incorrectly marks a thread resolved, then the senior gets traceability and an indirect feedback signal that tells you someone isn't naturally tracking and there may be room for communication improvement.

In any case, setting unresolved threads as blocking is just a safeguard layer. The scenario you describe is a routine encounter for me. Really sounds like the technical control you want is required approval(s)...of course, GitLab sales recognized that's what enterprise managers also highly value, so it's bucketed as a pay-to-play Premium/Ultimate feature.

Re: Support ActivityPub for merge requests

#28

Earlier quoted context omitted.

Anyone, including the author, can resolve a thread in gitlab. Say I, as a senior engineer, scan a junior’s MR and see a serious security issue. In GH I can request changes, and then re-verify prior to merge that the issue has been fixed correctly. With GL, the author, thinking they fixed it, can resolve the comment and merge.

...but if a junior incorrectly marks a thread resolved, then the senior gets traceability and an indirect feedback signal that tells you someone isn't naturally tracking and there may be room for communication improvement. In any case, setting unresolved threads as blocking is just a safeguard layer. The scenario you describe is a routine encounter for me. Really sounds like the technical control you want is required…

Required approvals aren't the same thing either. With required approvals someone else can come along and approve a PR that I have previously asked for changes on. Yes, that does indicate something went wrong in the human process, but that's what tooling is for: moving things out of the human process and into a space where you can't break the rules if you tried.

> of course, GitLab sales recognized that's what enterprise managers also highly value, so it's bucketed as a pay-to-play Premium/Ultimate feature.

And this is my number one complaint with GitLab. There's no way to pay $4/mo for the basics. If you want required approvals you have to pay for their whole CI system even if your org is already using Jenkins, and for their issue tracker even if you're using Jira. They're all or nothing, and most organizations don't want all.

This is why I say that the only people they're trying to appeal to are enterprise purchasers who like the idea of paying for an all-in-one "solution", not frontline developers who recognize that bundling isn't always better and just want to have a decent system for managing their code reviews. GitLab isn't that: not only is their code review system still missing features that people rely on in GitHub, the ones it does have are gated behind a subscription whose cheapest pricing manages to be more expensive than GitHub's most expensive tier.

Re: Support ActivityPub for merge requests

#29
post #8

From the comments, Forgejo is also already working on implementing ForgeFed, an ActivityPub extension specifically designed for software forges [0]. Judging from the issue, it looks like they're well on their way [1]. I dislike even federated social media, but this is a use for federation I approve of wholeheartedly. The friction of having to create accounts on X forges (where X is the number of projects that self-ho…

Is Codeberg planning on implementing this?

Codeberg are the main maintainers of Forgejo, so I would assume so.

Re: Support ActivityPub for merge requests

#30
post #21

Earlier quoted context omitted.

Won’t `git clone` be sufficient for forking?

For the local copy yeah but if you want the functionality of gitlab/hub to make a MR online from a fork then you need your own fork tracking the upstream which requires the two copies of the repos, hosted on each of the instances, to know about each other. Otherwise what is the point of having two instances, you would have a gerrit-like system where this is one server and you simply checkout a branch and then make a…

I imagine that creating a fork on your own instance, you just provide a url. UX-wise it isn’t as powerful as the one-click fork of a centralised platform, and I think we’d need a browser plug-in because of the missing implicit assumption of where to fork it.
Post reply on HN