Migrating The Zig Organization from GitHub to Codeberg
240 points by rcalixte
240 points by rcalixte
Awesome to see this! I'm far along a path of migration of many open source libraries I maintain over to Codeberg…I started with the smaller ones and am working my way up to bigger endeavors.
GitHub has abandoned its original mission, pillaged the source code of its userbase, and played us all for fools. Selling to Micro$oft was a horrible lurch into the nightmare we now find ourselves in. Forgejo/Codeberg's success may not be a panacea to everything wrong with open source in 2025, but it's a significant step in the right direction.
(Link: https://codeberg.org/ziglang/zig in case you're a dummy like me and need something obvious :))
I'm shocked at how bad Actions are from reading this — I don't have any large projects that depend heavily on it, so I guess I'm just insulated form that trashfire. I always thought the "but Microsoft!" arguments against GitHub weren't very convincing but now I'm seriously wondering whether to start new projects elsewhere.
The sleep script looks especially stupid. How on earth is a company okay with wasting their own CPU time in such a ridiculous way?
As a bonus, we look forward to fewer violations (exhibit A, B, C) of our strict no LLM / no AI policy, which I believe are at least in part due to GitHub aggressively pushing the “file an issue with Copilot” feature in everyone’s face.
Regrettably, the linked PRs appear to use Gemini/Claude. Which means we unfortunately can't blame Copilot and/or aggressive marketing for this.
In the end, we opted for a simple strategy, sidestepping GitHub’s aggressive vendor lock-in: leave the existing issues open and unmigrated, but start counting issues at 30000 on Codeberg so that all issue numbers remain unambiguous.
Huh, that seems like a neat feature. I wonder if Codeberg could also provide a read-only copy of GitHub issues — if only for reference/archival purposes.
An aside: I wish the GitHub developers weren't personally insulted ("losers", "monkeys"(?!), "lackeys"). Most of the muscle in the AI push seems to come from the execs, and if you're a grunt programmer at the bottom of the totem pole, what choice do you have? The choice between feeding your family and keeping the lights on, or between taking a huge gamble in this job market and jumping ship.
An aside: I wish the GitHub developers weren't personally insulted.
gotta agree here, it would not surprise me if there's some higher-up dysfunction that helps result in the worse product. not necessarily the fault the individual devs there who are stuck dealing with that!
I find andrews response to this... rather weak https://mastodon.social/@andrewrk/115620138939386546
That's sad, because I usually find zig to have very good public communication.
it would not surprise me if there's some higher-up dysfunction that helps result in the worse product.
I've spoken to people who are aware of all of these issues, but get them kicked off their roadmap regularly.
It's a terrible response. Every one of my fellow Hubbers joined GitHub because we believed in making developers more productive and we all got introduced to GitHub via open source like Zig.
My fellow Hubbers are all kind, hard working people who do not deserve to be called "monkeys" or "losers". Even if they weren't kind or hard working, they don't deserve to be called names by someone whose beef is with their employer.
If I were someone looking to pick up a new language or start contributing to Zig, I would choose to contribute somewhere else if this is the official stance of the community.
Calling people monkeys is unacceptable even in private conversation, let alone here in an official blog post.
I’m answering to two bits here. I spoke to people who are at GH and know they care. I did not call them monkeys, which is why they talk to me openly :).
I fully agree with you that calling people monkeys is unacceptable in any setting.
https://andrewkelley.me/post/open-letter-everyone-butted-heads.html maybe Andrew will need to write another one of these.
I agree that it's shocking: GitHub Actions has been hugely problematic for us for many reasons. safe_sleep.sh cost us large amounts of runner time, jobs have been scheduled seemingly at random in ways which lead to most jobs being timed out, the runner software has abysmal target support, the runner software sucks to actually set up on self-hosted systems, you can't re-run a job until the entire workflow finishes, logs have been seen to randomly disappear (I think at one point trying to view a job's log got me stuck in a redirect loop or something?) and don't render properly until a job is finished... I could go on.
Forgejo Actions (the CI system we're using on Codeberg) shows that it's honestly not that difficult to get this right. This isn't to claim they aren't doing great work, they are!-- but the point is that they're managing to make a vastly superior product with a tiny fraction of the resources. Forgejo Actions is mostly compatible with GitHub Actions (they do not target 1:1 compatibility, but in practice they're pretty close), but improves on all of the issues I listed above. The runner software is relatively cross-platform (and they'll accept patches for improved support), jobs can be re-run as needed, the software is much more pleasant to configure, and easier to compile, and easier to hack on, the live logs work significantly better... etc. So far, the experience has essentially been "GitHub Actions, but better", and where we have had issues, the Forgejo team have been great at solving them.
The contrast between these two options is what really proved to me that GitHub Actions is effectively an unmaintained project, to the extent that it is a straight-up liability.
We're using Cirrus-CI and our own GCE-hosted runners and I'm honestly quite shocked at how cheap they are. For anything except the final builds, we use GCE's Arm runners. We spend around £10/month on an LLVM fork. For a project that isn't as enormous as LLVM, the cost are tiny (Cirrus also has a free tier, which is sufficient for most small projects).
Providing our own account for runners also lets us configure a storage account that ccache uses. This really speeds up PR builds, because a small tweak to an existing PR builds almost instantly (and then takes 10 minutes to run the test suite - 16 cores make it fairly fast).
I wonder if Codeberg could also provide a read-only copy of GitHub issues — if only for reference/archival purposes.
I’ve seen this on other Forgejo instances, so the feature is definitely there, but unsure how one actually triggers said import.
If you migrate your github repo to forgejo with an appropriate github personal token it offers to copy issues, PR, labels, releases and milestones.
But this will only really work up to a point due to GitHub's rate limiting; Zig has far too many issues for this to be a viable option.
It’s 5k requests/hour (per user), so at 30k entities (not sure how many requests it takes to copy all comments) it will take a few hours maybe a day max?
I believe you need additional requests for comments, events, etc even on a single issue, and those requests probably need to be paginated. So it adds up faster than you'd think.
While it's definitely something you need to consider, it's also not that difficult. GitLab for example has had a decent GitHub importer for years and it handles all this pretty well.
I'm sure it can be done, but we needed a solution that worked sooner rather than later. the GitHub importer in Forgejo would presumably need weeks/months of engineering effort to get to a level of reliability comparable to GitLab's. (And then however long the import itself would take.) Since it handles small/medium-sized repositories fine, given the choice, I'd honestly rather the Forgejo folks spend their time on more impactful work for people who are already on Forgejo/Codeberg.
I'm not from the US, but here calling someone "monkey" is clearly racist
I’m from the US and black (probably the proper object of said racial slur) and that didn’t even cross my mind and it’s actually weird that you mention it when he was clearly using it in a way that was talking about intelligence not ethnicity.
You probably meant well but claims of this kind in today’s day and age are very harmful when unjustified. Be more careful.
Don’t mean to call you out but I say it all out of love.
Thank you for your message. Yes, probably it wasn't made with that intention, but honestly it was the first thing that came into my mind while reading it (see my other comment). And maybe I'm not the only one who thinks that way, just to let Andrew know
It has that connotation in most of the Spanish/Portuguese speaking world but the usage here clearly wasn’t racist. He most likely doesn’t speak either languages.
Going into that discussion sidetracks the unprofessionalism of its usage in this case.
Being from the UK and familiar with the US, monkey isn't necessarily racist in either. It can be if used that way,
By "here" do you mean Spain? I lived in 4 countries (3 different spoken languages in total), never heard of "monkey" being used as a racist slur. I don't think OP used it as a racist slur.
Yes, in Spain. There was a recent case in national football, that even went to international newspapers, that's why it was my first association with that word using in this context was as a racist slur. Just search for "vinicius" and "monkey" to find out.
It is also a racist slur in Peru. And I'm pretty sure in Brazil, Argentina, Chile, etc. Ej. https://old.reddit.com/r/asklatinamerica/comments/pypbez/why_calling_black_people_monkeys_is_still/
Since AI is most likely writing all of the code at Github now (in 2023 the projection was "at least 80%"^1), I wonder if it really counts as insulting someone when there is no actual people there to insult.
That's marketing. It's not true. Regardless, he was commenting about the human beings working there, not the code.
Maybe andrewrk is also engaged in marketing, so you can dismiss his statements as ”not true” then
edit: I find your (ex) CEO’s and Nadellas statements around AI infinitely more damaging to a lot more people than what Andrew said. I have gotten the question multiple times from students ”is there even a point to study CS now that AI will take all the jobs”. I think as a ”hubber” you should feel responsible for how the actions of Github and Microsoft affect your fellow developers and the world at large.
Climate change is continuing at an ever-increasing rate with no sign of slowing down, and your employer is busy building data centers and power plants. Maybe that’s something a ”hubber” should think about, and not so much what Andrew, some guy with an open source project, thinks of the software quality your company is producing?
I find your (ex) CEO’s and Nadellas statements around AI infinitely more damaging to a lot more people than what Andrew said
While I don't disagree that AI in general has been incredibly problematic at best, of course you think that. You aren't one of the people he referred to as a loser without any knowledge of their lives. It's called compassion and he lacks it.
I think as a ”hubber” you should feel responsible for how the actions of Github and Microsoft affect your fellow developers and the world at large.
Why? Are you responsible for each and every action your leaders participate in? Also, this haughtily presumes that we don't feel some responsibility and we aren't making noise internally. You act like the economy isn't trash and we're not all having our own struggles.
not so much what BFDL for Zig thinks of the software quality your company is producing?
He didn't speak solely to the quality of code coming out of GitHub. He said that the employees were "monkeys", "losers" and "rookies". We can all criticize that terrible statement while holding thoughts in our head about AI.
Can you not separate those things?
While I don't disagree that AI in general has been incredibly problematic at best, of course you think that. You aren't one of the people he referred to as a loser without any knowledge of their lives. It's called compassion and he lacks it.
I agree that it's an unnecessary level of vitriol. He did point directly to the code that he described as being "written by monkeys" - I have looked at that code, and it's pretty bad. Did you write that code, and is that why you are taking the description so personally?
Why? Are you responsible for each and every action your leaders participate in?
Ultimately, yes.
Also, this haughtily presumes that we don't feel some responsibility and we aren't making noise internally. You act like the economy isn't trash and we're not all having our own struggles.
I find "please have sympathy for us poor Silicon Valley peons forced to dig for coal in the mines of Microsoft" pretty pathetic, honestly. If you object to the direction that the company is going, it is up to you to resign.
He didn't speak solely to the quality of code coming out of GitHub. He said that the employees were "monkeys", "losers" and "rookies". We can all criticize that terrible statement while holding thoughts in our head about AI.
"created by monkeys" is a link to exactly the issue he is referring to, it's not just an insult thrown at random.
I can understand being upset at having these insults thrown in your direction, but from the sound of things you actually agree with the substance of his complaints. Maybe you actually have more agency in this situation than you realize?
Did you write that code, and is that why you are taking the description so personally?
This is "How long have you been beating your wife" type of nonsense. No, I didn't write the code. I'm not taking it "so personally". I'm saying that the creator and BDFL of Zig is behaving like an ass because he lacks compassion and reason.
If you object to the direction that the company is going, it is up to you to resign.
YIKES. I cannot believe that you seriously typed this out in 2025. So, i resign and then what? You'll start paying to feed my children, house my family, clothe all of us? Health insurance is cheap and plentiful in America and definitely not tied to my employment.
Grow up.
I have one rule in my life for people I interact with: "Don't be a dick".
Right now, you're bending over backwards to excuse absolutely dickish behavior. So, sorry, I'm not interested in interacting with you.
I mean, we Europeans have quite the history with people just keeping their heads down and not resigning / protesting because it would literally have resulted in their immediate deaths at the hands of the regime, AND YET the conclusion was that we DO have responsibility on an individual level for the harms that our employers and governments inflict on others.
So yeah while I do sympathize I do find it difficult to imagine that the consequences for a skilled engineer with Github on the resume leaving a job would be quite as dire as you describe. But no, I am not in the US and don’t have personal experience with the health insurance system, this is true. And I do sympathize.
I mean, we Europeans have quite the history with people just keeping their heads down
We're talking about Actions and PR diffs being slow and you're invoking Godwin's law?
So yeah while I do sympathize
I don't believe you sympathize at all. But that doesn't matter because the giant thing you and Andrew are missing is your ability to empathize.
I do find it difficult to imagine that the consequences for a skilled engineer with Github on the resume leaving a job would be quite as dire as you describe.
At least you acknowledge you have no idea what you're talking about.
That'll teach me for feeding a troll.
Well, you guys both also fed me.
For one, I fully agree with you, while "code written by monkeys" may in some contexts be funny, it has absolutely no place in an article such as the one linked. Maybe Andrew meant it as a joke or invoked a "million monkeys writing Shakespeare" -> "a million LLMs wrote that shell script", but it then failed horribly.
On the other hand, I agree with u/krig that while it's certainly easier you stay Microsoft, if you dislike the policies so much, and you're still there so many years after Microsoft took over, you can't say "the economy" any more. I do recognize that you're maybe trying to change the system internally, but you're also largely enjoying the benefits of said system.
To be clear in what you're saying.
You believe that my friend (let's call her Jackie) who has been there since MSFT acquired GH (they joined a month before the acquisition) and doesn't agree with the change that has occurred in GH (they absolutely HATE AI in no uncertain terms - and on top of that they hate that GH has backburned so many other projects in the last 18 months) is JUST as culpable for this as the leadership?
And further that - she is condoning said behavior because of her continued employment at GH (forgetting that she has been looking for other companies but no one covers her family's health care needs so she'd have to take a giant paycut)?
So, screw her family and their medical/emotional needs because she should take a stand?
You both seem to struggle with empathy and nuance. You're stereotyping people when you have no idea what their lives are like.
Andrew and u/krig both are absolutists. They believe in black and white and ignore all of the other colors in the world.
I hate Palantir. Every single thing about their company and what they do and what they've done. I would probably avoid working with anyone who worked there.
But I would be in this same thread defending them because I have no idea what it feels like to put their shoes on in the morning and unless I know that, who the hell am I to judge?
Try compassion first, judgement later.
You believe that my friend (let's call her Jackie) who has been there since MSFT acquired GH (they joined a month before the acquisition) and doesn't agree with the change that has occurred in GH (they absolutely HATE AI in no uncertain terms - and on top of that they hate that GH has backburned so many other projects in the last 18 months) is JUST as culpable for this as the leadership?
Look I get it, I think we are both coming at this discussion brimming with frustration with where the world is headed.
I feel for both you and Jackie. I also want to state clearly that I think Satya Nadella belongs in prison and I don't think your friend deserves anything worse than a better job for a more ethical employer.
I don't think it's good for any of us to dig deeper here, and I hope things change for the better for everyone.
We’re talking about Microsoft, the company that is directly driving and has invested countless billions into an industry that is creating the biggest economic bubble that the world has ever seen, and that once it bursts will cause far more suffering and pain than Andrew did by calling Github engineers monkeys.
And don’t delude yourself into thinking that it is Satya Nadella that is doing these things. Leadership are not doing anything. It is the engineers and workers in the company that makes it run, without you there would be no company.
I find your (ex) CEO’s and Nadellas statements around AI infinitely more damaging to a lot more people than what Andrew said.
A bosses bad, damaging and maybe harmful comments are just not a good argument for aggressive comments towards his employees.
Call Nadella any name you want, I will defend that kind of communication. Just calling people who work for him names is not par for the course.
By which I'm not saying they are above criticism, just... just lashing out isn't helping anyone.
This is the reality - we protest internally, people resign, people take mental health leave, people argue with leadership about all of these things.
IT DOESN'T MAKE A DIFFERENCE.
This is not a uniquely GH/MSFT problem - this is the entire basis of capitalism. Workers have no power (especially right now in tech because so many are unemployed). People have resigned in protest and they had 100 applicants for the job.
Hurting the employees who are already struggling is not going to impact a corporation at all.
I do kind of agree with the name-calling being unhelpful... clearly evidenced by the direction and focus that this discussion has taken.
However.
I also think making the employees at Github and Microsoft upset and uncomfortable with the consequences of the company direction and leadership is actually productive. If we want Github to change its course, how else can we do it? If Github employees become embarrassed, ashamed, ostracized in their community... MAYBE there will be enough backlash internally to make a difference.
Let me ask you a question: do you think that harrassing Starbucks baristas is helpful when you don't like the Starbucks management? Do you think that, because it's the baristas ('associates') who actually make and serve the coffee, therefore they have the power to change their management's decisions?
I think there is a vast difference both in culpability and power between a Starbucks barista and a Github engineer. I think Starbucks baristas should unionize. I think, if Starbucks does something bad enough - like, say, create one of the biggest economic bubbles the world has ever seen - that they do have a responsibility to act against that in whatever way they can.
The sleep script looks especially stupid.
It's not even that hard to write a "sleep for N seconds" shell script which doesn't waste CPU - sleep for N - delta (adjust delta to taste) seconds, then do "micro-sleeps" (how short depends on how accurate you want to be) in a busy loop. At best you waste some small portion of delta CPU seconds rather than most of N seconds.
(from memory, when I was using my version of this to trigger things, it was easy to get second-accurate events even on a medium-busy server without trashing the CPU)
The sleep script was created in response to https://github.com/actions/runner/issues/1698 and was suggested for a common shared method from a contributor to the repo (not a GH employee). Not sure I agree 100% with the implementation.
Codeberg's non-profit community-led model seems like the right one for open source code hosting and I'm excited that high profile projects like Zig moving towards it might attract further attention. But I was really disappointed reading this blog post due to the unnecessary insults targeted at GitHub's software engineers - calling them "losers" and "monkeys". This is inappropriate and unprofessional. I hope it doesn't reflect the usual standards of discourse within the Zig community.
EDIT: It seems that the post has been edited to say "rookies" rather than "losers" now.
I’ll add to the chorus that bad mouthing GitHub programmers is the wrong thing to do. Very condescending unfortunately.
Andrew must realize he sits in a very privileged position: he runs a well funded passion project of his own creation, one that is very motivating and interesting, that he has control over technical decisions, a project that doesn’t need to be profitable, doesn’t have a deadline, doesn’t have bosses…
He built that himself and we can applaud him for that. But I think it’s perhaps making him more and more disconnected from “regular” programmers who can’t have any of that. GitHub has probably a few equally talented individuals who have no choice in what they build.
The ivory tower can still have a mirror for self reflection.
I don’t like the insults either, but I think you’re exaggerating his position, which is much more financially precarious than working at FAANG. The equally tenured “regular programmers” at GitHub are earning far more than him. And I wouldn’t deny them agency. Part of “software you can love” is rejecting the idea of just building what you’re told to build, that it should be a matter of professional pride to build something that respects the end user. And that extends to choosing who you’re willing to work for, if they truly give you no say in what you build.
I think you’re exaggerating his position, which is much more financially precarious than working at FAANG.
I don't think I am, simply because he could get a job at a FAANG tomorrow if he wanted. That's the difference: the worst case scenario for a regular FAANG employee is losing their job; the worst case scenario for him is getting a FAANG job.
That is the kind of safety net he built himself through his technical work and knowledge, like I said that should be applauded and can't be taken from him. But it's a privileged position to be in life either way, one that most other people don't have.
The amount of agency those folks at Github have extend only as far as they are willing to work for themselves or work on other stuff they also didn't choose to build.
The fact that he earns less than he could today and isn't looking to maximize his earning potential is commendable and I applaud that, if it wasn't for people like that we wouldn't have half the good stuff we have today.
the worst case scenario for a regular FAANG employee is losing their job; the worst case scenario for him is getting a FAANG job
I understand that the second scenario is preferable than the first one, but it's not like having a dev job at FAANG and getting fired is such a bad deal, right? I mean, those are very cozy salaries, and usually having FAANG in your resume opens many other doors too.
I totally agree with the insulting tone of the post being unnecessary and dumb.
But let's not pretend that FAANG developers are in such dire situations. It's always a good idea to have our "resignation telegram ready to be sent", in case one needs to. At any job, really. And i would expect being a FAANG dev should make it easier to reach that position, given their lofty compensation. So no, in general i don't find it excusable to make such bad software development decisions "because higher-ups". We developers have (some) power and agency over what we build. If we choose not to exercise that power and be comfortable screwing the users of our software in the name of "product decisions", then we can definitely take some blame for it.
Honestly I've just stopped being so prescriptive with other people's lives as I've gotten older. I have no idea what they have going on and whether their priorities align with my principles. I've seen enough people go through bad times that I wouldn't wish them to chance unemployment for the sake of my moral values.
Won’t somebody think of the poor Github employees!
edit: You know, I do feel bad about the glibness of my comments like this. I understand that the people at Github are in a shitty position and feel bad. But I do also think that they have more agency than they give themselves credit for.
This is great news.
By the time Microsoft acquired GitHub, it was already hosting half world's open code and was where all my employers hosted theirs. But it was still a wicked fast website. Seriously. Does anyone remember how FAST GitHub was back then?
It wasn't overnight, but it has definitely gotten clunkier. Every feature (with the notable exception of the gh cli, perhaps) has been either actively user-hostile, or just crappy.
GitHub used to be hosted in one datacenter. But once very large organizations started depending on it they demanded more redundancy, including cross region redundancy. Guaranteeing git transactions across regions imposes a large minimum latency.
So even without bad engineering bloat GitHub necessarily had to slip from its speedy salad days.
The comment you're replying to is talking about the web UI. There was a notable speed impact by GH moving to more and more processing on the client, like for reasonably big PRs.
Why would git transaction redundancy add delays? The backup transactions can just be replayed in the background after the main one finishes in the foreground.
I remember how slow GitHub was, especially closer to aquisition, and downtimes caused by ruby reaching it limits
nevertheless, whatever stack GitHub uses now, it's worse now
Does anyone remember how FAST GitHub was back then?
Yep, i definitely do. It was actually an example of "Ruby/Rails being plenty fast enough" i would give regularly.
It really stings to see how bad it got :(
I suggested the rant tag because of the tone of the section about GitHub, even though I share the general sentiment.
It's a shame the GitHub monopoly is so difficult to break, though I'm hopeful that Codeberg/Forgejo might be able to pull off what GitLab never could: actually take over a sizeable chunk of projects currently on GitHub.
I think the biggest challenge will be winning over small organizations and individuals. As an example, I'd love to move Inko to Codeberg but I'm 99% sure that the (already limited) community engagement (e.g. bug reports or pull requests) will drop to zero. This is also why after hosting it on GitLab for a bunch of years I moved it back to GitHub: the project was basically invisible despite my best efforts.
I'm not sure how you'd solve this though, as it's a circular/chick-and-egg problem: you need a lot of people to move to a different platform, but for that you first need a lot of people to move to that platform.
I'm not sure how you'd solve this though, as it's a circular/chick-and-egg problem: you need a lot of people to move to a different platform, but for that you first need a lot of people to move to that platform.
Seems that github is solving the problem for us by making the site worse and worse as time goes on.
We figured it out for sourceforge; we figured it out for myspace; we figured it out for freenode; most of us figured it out for twitter; github's just a matter of time.
But having high-profile projects like Zig get fed up certainly helps. Hopefully the first of many!
Yeah, this is generally the issue with competing against incumbents. For Tangled, we're likely going to focus on an "Import from GitHub" process soon and hopefully that'll alleviate some of the migration costs for smaller projects. GitHub really doesn't make it easy though, with their API ratelimits etc.—case in point, Gitea hasn't been able to switch to using, well, Gitea for their code owing to GitHub making it a massive PITA to pull their 30k+ issues/PRs out.
Yea I don’t have a solution either, my attempt (https://pr.pico.sh) is to create a way to collaborate on code without all the social features so tightly coupled together. GitHub is a social network and trying to replace it with another social network isn’t really solving the core issue: why do we need social networks for code collab? Why do we need software projects to have engagement?
Buried deep in that answer lies the vanity of humanity and I fall victim to it as well.
It might make sense for some projects to have a ton of community involvement but there are so many other projects that hum along without that need or even desire.
It isn't necessarily about engagement. Programming is inherently social (as much as the Lovables and Cursors would like you to believe otherwise)—you need groups of people working together to build software. These tools (discussions, code review, …) are best kept as close to the code as possible; the further away you go, the more context degrades.
I don’t disagree but there is huge diversity in code projects. I’m just not convinced that every project needs all these lock-in social features and that’s part of the problem that code forges aren’t solving, they are replicating.
For GitLab we ended up using its background job system. Essentially we broke the job into different parts (e.g one would fetch issues, then for each issue we'd schedule a job to fetch its sub data such as comments).
I think we also allowed users to supply a custom API token so we didn't need to rely on a global one (or maybe we used oauth, I can't remember). IIRC we also made it so that if a job hit a rate limit, all of them would essentially reschedule themselves for later processing so we wouldn't keep hitting the limit.
Either way, the result was that we were able to import large projects such as Kubernetes in a matter of hours, whereas before it would either take days or just fail entirely.
Joel Spolsky's Strategy Letter II: Chicken and Egg Problems is relevant and talks about the issue well. Just posting it in case someone finds it useful.
I think it's a real concern. I am hoping that a few bigger projects like Zig leading by example like this will create enough momentum to build an ecosystem that can support smaller projects like yours.
Why not both? Yeah, it might be a bit of a bother, but as long as you don't treat Github as the ultimate source of truth, does it matter?
GitHub doesn't allow you to turn off PRs, so contributors can still lose significant time there.
One cool feature of github that can help with this is the ability to create a .github/README.md file which will be shown in place of the regular readme only when the repository is being viewed from github. You can use this to explain the situation, where the real repository is, and the correct way to contribute.
https://github.com/technomancy/leiningen/blob/main/.github/README.md
That's really nice. I think I'll use that for a couple of things where I mirror to github to reduce friction but don't particularly want PRs there.
Also, I missed Simon Tatham's piece the first time it was discussed here. Thanks for including it; that was a very good read. I'm going to steal his wording around "URL of a git repository + branch name":
If there’s anywhere on the Internet you can put a clone of my git repository with some extra patches, then the best thing is to do that, and send me an email
to use as a welcoming statement for people who'd rather not interact with my (non-github) forge.
It's a bit convoluted but it's possible to disable PRs on GitHub 6 months at a time through the emergency moderation features. Don't have an account anymore so I can't look up the precise flow, but that's how I ran the coreboot org at GitHub (a read-only mirror) when I was responsible for it.
(edit: had somebody take a look for me: github.com/{org}/{repo}/settings/interaction_limits, "Limit to repository collaborators", "6 months")
Hmm, feels like someone should make an auto-closer bot. Instantly closes PRs and redirects you elsewhere.
You can of course use both, but if 99% of engagements happen on platform A then there's not much benefit to also operating on platform B. It can also come with extra work, such as when cross referencing issues or having to synchronize pull requests between the different platforms. I think you also need a custom push mirror solution as GitHub doesn't do pull mirroring I think.
FWIW, Codeberg (Forgejo) has an option for push mirroring to GitHub which seems to work well (admittedly my current sample size is one push). I migrated a personal repository to Codeberg from GitHub the other day, and aside from GitHub's insane API rate-limiting making the automatic migration quite slow (something which it's hard to escape the conclusion is intentional!), it migrated pretty neatly, and I could enable push mirroring with just the GitHub repository URL and a personal access token.
We moved Fennel off github in 2020 and left a mirror behind. It wasn't 99% on one platform; in our experience it was closer to 50/50 but the ones on github tended to be smaller changes, many of them trivial.
The Zig mirror appeared around 2-3 months ago (I look at Codeberg's Explore page sometimes), glad to see a full move becoming official!
How do people feel about Sourcehut? I don't see much mention of it these days. It seems like their feature set has come along nicely over the last couple years!
I use and pay for sourcehut. I think is great for solo projects. Their CI is excellent, allowing one to submit builds easily either from. And debugging an error on the CI is easy as one can SSH into the box. And sr.site serves well to generate additional data per project on push. ej. I have a Rust project that generates code coverage and docs on each commit: https://sr.ht/~puercopop/bliki/
They have a strong product vision, which is also one of weakness. Their collaboration features have a higher activation energy than other forges, but they also make additional design decisions to reinforce the happy path that make it even harder for drive by collaborations. Concretely, lists.sr.ht disallows HTML messages and hides attachments in their web view. So it makes it harder for people trying to report a bug to include a screenshot inlined or people who primarily Gmail's web interface to send a one-off patch as an attachment. They also lack a feature for making releases. One can only attach an artifact to a commit for 90 (or 30 don't remember) days.
Codeberg by default disables CI and provides CI only on a best effort basis. Which means that smaller projects tend to not have CI enabled.
If one is a paying sourcehut user, one can use builds.sr.ht from Codeberg. https://codeberg.org/emersion/yojo. So maybe the answer is why not both?
https://mastodon.social/@whynothugo@fosstodon.org/115431605727037280
Good for Zig, but a weird way to say “thanks for ten years of free hosting”.
They have more than paid for the hosting by having their data nonconsentually used for training.
Zig uses the MIT license
The MIT license requires attribution.
Excuse me, but you and 50+ others have not read one of the shortest licenses in existence. The word you're looking for is 'copyright notice', not 'attribution'. Words matter when talking about a license. You'll need to understand what "substantial portions" means as well.
When I was developing my compiler (which I don't anymore) people would bring up my non-OSS license all the time. I'm not surprised people can't understand the MIT license. It became so annoying that I blocked people when their comment was only about my license choice
You're right that there exist cases where that distinction is important.
However, this isn't one of them.
I see people often make comments like this, which seem to me quite tone-deaf, and I wonder if the people making them realize that these comments made in these contexts actually drive people away from using OSI-favored licenses
I made this comment because I written a compiler and people complained that I didn't use a OSS license all the time
They don't seem to understand what the license means or why someone might not want to use it.
The complaints (at least on /r/ProgrammingLanguages) were not just because you didn't use a FOSS license, but rather because:
Yorick I don't have a problem with you, but you've got to start leaving me alone. People on reddit not understanding something isn't a high bar
I think in general you don't have to thank large companies for their free services, as they already get want they want from you in return. (your data, attention etc.)
I disagree. I find it useful to be polite to be appreciative of gifts that are helpful, regardless of whether the other party is a large company or not. I'm sure it results in me thinking some evil doers who have assisted me. Personally, I don't find that to be a problem.
Wonderful to see! It would be great if they officially supported a secondary mirror too since Codeberg has far from 99.9% uptime.
The beauty of Git is that literally everyone who has the repo cloned has a mirror!
If you want to have the exact same commits as the primary mirror, you need something that is going to be automatically synced. Even if a community member says they are syncing on a cron job, there isn’t the guarantee that something “officially-supported” or “blessed” would as the primary maintainers would have a commitment to it. Everyone’s little fork is not always going to be up to date or have all the branches/commits of upstream—which makes them impractical as a fallback.
You're too pessimistic about this! A little fork with a cron job is totally fine unless you
Most people don't, and tbh most people don't need to compile zig from source.
Running mirrors is cool and encouraged. They're promoting it for pre-compiled artifacts, and I think it's fine for git repos too.
Do you consider 99.32% far from 99.9% uptime?
...I mean, yes.
It's almost an order of magnitude of difference. The 99.9% is a business day downtime per year. The other is a week and a half (roughly 8 hours vs 58).
But i guess it depends on your use case.
By that page their codeberg.org service has 97.06% uptime. That's pretty far. That's 10 days of downtime a year against 0,365 days.
One thing to consider is that codeberg had a number of aggressive attacks this year that were mitigated successfully, but led to some downtime. All on a volunteer team.
However, in the end: Codeberg has one full time staff to my knowledge. If that isn't a place where money improves things, I don't know.
That's understandable, not an easy thing to deal with. I applaud their team, specially doing it on a volunteer basis, plus they didn't make any of the claims in the article.
However it's telling that when they have to deal with a fraction of Github-like traffic they have issues as well. Seems to me it's not necessarily an easy problem and the "rookies" at Github aren't essentially idiots (or code "monkeys") like Andrew is putting it.
I bet the people at Codeberg don't see hosting petabytes of repositories as a walk in the park.
Andrew's criticism was directed at the engineering side of GitHub, not operations.
I would say that I'm probably the person on the Zig team most eager to see us exit GitHub, and even I don't particularly have any complaints about GitHub's uptime. If anything, I think we're willing to tolerate more downtime in return for the other benefits we get.
I referred to the value shown by the uptime badge: 99.12%. It either dropped or I mistyped the value earlier. Nevertheless, I agree that 97.06% for codeberg.org is not good. At least they're in "good company", given GitHub's amount of API outages 😅
It’s fine to not be perfect; all services have down time. This is why I believe it’s valuable to have mirror (probably different continent, & definitely different CDN if that needs to be involved for some reason), even if it’s just cgit or even a bare repository on an SBC to cover the users/distros that might need the source in that small downtime window.
I actually have a cron job testing if Pages are down to self-host as a fallback at home until it comes back online as it happened enough. I have also had experience not being able to push on occassion. Maybe they now have a better wrangling of the AI scrapers that uptime is better tho…
I'm not sure which deer are chewing on the internet cables between Japan and Germany, but I often notice my connection to CB be quite slow. Has anyone else had connection issues?
Yeah I evaluated it earlier this year for https://oils.pub/ -- for basically the same reason, Github has grown too much slow JavaScript.
Codeberg has larger network latency (from US east coast), but the code itself is faster.
The issues I had were:
git push latency is higher, although this is not a dealbreakerI still maintain the repos at https://codeberg.org/oils/ , and would like to move at some point ... or perhaps just self-host our own Forgejo. (normally that would be overkill, but I'm interested in self-hosting in general)
Codeberg is very slow in South America as well. I guess if they’re only hosted in Germany it makes sense.
It's unfortunate that Pijul doesn't get more love. The last I checked, it wasn't feasible to set up a read-only git mirror of Pijul repos. Having an alternative to GitHub that improves on the underlying VS model while maintaining some level of compatibility would be really attractive to me. If for no other reason than so many dependency managers rely on the git protocol now.
I have not used Pijul before but my understanding is that unlike git and mercurial, it doesn’t have a commit hash which identifies the entire state of the tree. That seems like a pretty big drawback to me since I rely on that property all the time.
It indeed doesn't have that feature, but that is due to the fact, that the underlying idea is completely different. You can see the tree only for channel (equivalent of "branch") which is set of patches (equivalent of "commits"). There is no idea of "linear history" in Pijul, and that is at the same time what makes Pijul awesome, but at the same time confusing for most people.
But aren’t patches inherently ordered because they’re not guaranteed to be commutative?
Pijul defines patches in a way that is commutative.
IIRC this does lead to some surprising results, like lines in a file not necessarily being totally ordered (resulting in a curious sort of merge conflict). I'd have to work to figure out how to generate that example again though.
I’m not sure that’s a good idea but I am definitely impressed and glad that people are exploring the design space.
tangled seems interesting (still alpha), in that they are trying some new things, as well as focusing on jj. I’ve been keeping my eye on it.
Pijul is really nice as a concept, but unfortunately tooling and UX is IMHO lacking. I once tried to write something like cgit for Pijul, so simple web UI that provides view into project contents and stuff. It was pain to do so. Even simple thing as viewing content of file for given channel (obv. there is no way to see content of file for given "commit") required writing to filesystem, there was no clear documentation how to do so, the high level API access was non existent, and on each step I needed to go as deep as reading underlying DB code to understand how to do the simplest things. That was hard.
Add on top the fact that it requires full change in the system for all developers, and it is no surprise that it isn't gaining much traction. On the other hand we have Jujutsu out there, that provides similar workflow, but is able to cooperate with Git and do not require all developers to shift at once, but can support gradual shift. And with proper support from forge, it can make a lot of workflow similar to one offered by Pijul, without all transition pains.
I'm sure people have thought about this before, but my immediate reaction is that it would be very difficult to maintain compatibility between such fundamentally different models (patch vs snapshot) as Git and Pijul.
There are a few "one-time" git-to-pijul importers out there, but I don't know how well they work in practice.
A very neat move. I think my only issue with this is that every.org is an american non-profit sponsoring american non-profits. It's not exactly something that I, as a european, look into for sponsoring things, especially since that usually means having to wip out a credit card (run by yet another american company doing some rent-seeking). Liberapay is better positioned in the european market but way less well known and a bit more cumbersome to use IMO.
I migrated my main repos for private projects to codeberg, and had mixed feelings. I share the values (and should start donating, really), but, the UI is glitchy. A couple of times for example pressing "merge" on the web-UI caused the branch to be merged, but did not close the PR. I guess a race condition together with high load.
Also, while I do use forgejo actions moderately successfully, I'm really looking forward to have https://codeberg.org/forgejo/forgejo/issues/8917 addressed --- until then forgejo actions are fairly limited for bigger CI pipelines. I wish for codeberg to succeed!
Just letting you know that private/proprietary projects are against codeberg's ToS. You're allowed to develop in private repos as long as the goal is to eventually open source it. You can't just develop your proprietary code on codeberg for free.
Private repositories are only allowed for things required for FLOSS projects, like storing secrets, team-internal discussions or hiding projects from the public until they're ready for usage and/or contribution. They are also allowed for really small & personal stuff like your journal, config files, ideas or notes, but explicitly not as a personal cloud or media storage.
https://codeberg.org/Codeberg/org/src/branch/main/TermsOfUse.md
That's interesting because the phrasing in the FAQ suggests something every so slightly more liberal https://docs.codeberg.org/getting-started/faq/#how-about-private-repositories%3F "If you are a contributor to free/libre software projects, we allow up to 100 MB of private content for your convenience. Use it for your personal notes, your side project or any other you want to keep private." The explicit OK for use for "side projects" seems to go a bit further than how I would interpret the ToS.
Thank's for letting me know! The repository is private (as in my personal project, not for my employer) but also private as in not publicly visible (I can not guarantee it does not contain mild secrets). However, I'm continuously working on factoring out everything non-sensitive to release it to the public under an open source license in a separate repo. In fact most of the files already have an SPDX Apache license header comment...
Since we are talking about migrating away from GitHub, what are your thoughts about radicle as an alternative?
Just FYI, I asked Andrew on the Zulip instance that Radicle uses just now. No reply so far, but you might want to check back for a reply there as well :) https://radicle.zulipchat.com/#narrow/channel/369274-General/topic/Zig.20Migrating.20from.20GitHub.20to.20Codeberg/with/560630121
4 years ahead of the game baby https://gist.github.com/lf94/d8e7d11a24ddad8315d28741e6d6bf2e