this post was submitted on 16 Apr 2024
347 points (95.3% liked)
Open Source
31181 readers
119 users here now
All about open source! Feel free to ask questions, and share news, and interesting stuff!
Useful Links
- Open Source Initiative
- Free Software Foundation
- Electronic Frontier Foundation
- Software Freedom Conservancy
- It's FOSS
- Android FOSS Apps Megathread
Rules
- Posts must be relevant to the open source ideology
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
- !libre_culture@lemmy.ml
- !libre_software@lemmy.ml
- !libre_hardware@lemmy.ml
- !linux@lemmy.ml
- !technology@lemmy.ml
Community icon from opensource.org, but we are not affiliated with them.
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
My hot take is the quickest way out of this quagmire is to abandon Git. With the education system & bootcamps raising the next generation to think MS GitHub is Git, it would probably be less work to start rolling with another VCS as megacorp Microsoft won’t have the agility to pivot away from Git. Git isn’t even that great—arcane CLI, patches don’t commute, basically permanently locks in your name & email, large files require a separate tool, etc. And most of the popular alternative forges are literally just trying to clone MS GitHub rather than invent something new or solve the shit problems it doesn’t like threading, pull request model sucks, source code doesn’t need to be a social media platform with gamified stars & anxiety-inducing activity charts to encourage that MIT code in your free time the corpos will use & never contribute back while demanding you use it to build your résumé… or it’s built on email as the common denominator with fingers in ears as if mailing lists are the optimal workflow for all projects when a majority of folks don’t even know how to bottom post & keep their mail with the same evil Microsoft or the other evil Google. Nothing is being bold enough to actually have a better user experience—currently the best lure is… free software, but worse UX? Being a better UX the Microsoft GitHub is not a even that high of a bar. Some folks claim “network effect” but it seems clear that a lot of folks already want out.
Nah. Start anew. Check out Darcs, Pijul, Fossil, Mercurial, Bazaar, or whatever else is out there. Build on the ideas that improve version control.
Wtf just use gitlab/gitea/whateverthefuck instead of Microsoft garbage
Your project will inevitably get forked onto MS GitHub & the SEO will rank that fork above you—changing VCS adds a layer of friction that discourages forking back onto MS GitHub. Best you see is these pretty please attempts to encourage not forking to Microsoft’s platform. Microsoft has a massive pull in the direction Git goes, & whatever MS GitHub does, the alternative forges seems to want to clone even if it’s bad (look at Forgejo diverging from Gitea to copy Actions verbatim even tho we all know working with YAML for CI is a bad idea that scales poorly). When you look at the latest release notes for Git, often the first publisher is GitHub’s blog—this is what gets shared around the link aggregators. Part of the strategic purchase of GitHub on Microsoft’s part was getting access to that project sway (& upselling services—it’s not pure conspiracy—with some of the changes definitely being for the better).
And again, Git is not the best DVCS—but folks are hesitant to try other platforms since there is less forges & tooling. If Microsoft is controlling the Git ecosystem like it is, that effort, in my opinion, would be better spent choosing a better DVCS system that isn’t already infected by Microsoft or Google or Apple or similar.
What would you suggest is a better DVCS than git?
Personally, I find the Patch Theory options the most compelling since fundamentally patches should commute—meaning it doesn’t matter if patch α or patch β was merged first & you start to feel weird that you get merge conflicts despite the same end result in something snapshot-based. The two big contenders are Darcs, the still-maintained pioneer in the space & new(ish)comer, Pijul. Darcs has less rough edges being about as old, stable as Git but has some performance issues (where some of the old perf issues are fixed, some remain) & being Haskell, libraries get created since that community loves to code more than it likes to maintain so libraries can go out of date & package tooling still isn’t what it could be. Pijul, memes aside, is written in Rust with some more modern sensibilities & has a really cool independent identity management system (you can hide your name/email for privacy, or change it to not be deadnamed & not have to raise a merge request to rebase your new identity on all repos you’ve contributed to), but it’s pretty barebones despite being technically feature complete I believe—with
rebase
being missing feels like a glaring issue as the way to fix muliple patches without losing metadata isn’t fully exposed. Nest, the forge from Pijul’s creator, is pretty lackluster too IMO from featureset to self-hosting stack without any real alternative yet. It’s still a project worth watching & SSH+HTTPS work fine for hobby projects. For Darcs, Darcsden is fine but not great & showing its age, but newly started Smeederee seems to be going in a good direction, the rest of the old forges are written in like Python 2. …Which is the part where I would like to see some of that yet-another-Git-forge effort & enegery flow into these channels.Fossil is interesting too for shipping the whole forge, & have heard it’s great for small teams as that is what it’s optimized for, but I haven’t used it.
Pijul is a very exciting project. I’ve wanted to try it for months buy haven’t found the time.
Not to say don’t (do try it), but Darcs might be better if you just want to understand some of the fundamentals since it’s more mature. A small project will not perceive any performance difference. If you use Git’s CLI heavily, Pijul’s CLI will seem barren in comparison & tooling even like vim-signify doesn’t have support. Pijul’s
diff
isn’t GNUdiff
compatible so that tooling won’t help either.If you grasp Darcs, moving to Pijul is pretty simple since they are based on the same theory—you just might need to be invested enough to start building your own tooling which is more of a time commitment. Pijul is meant to be scripted which is partly why it’s barren—so for a trivial expample I created a small shell script
pijul-amend
which wrapspijul record --amend
which is picked up aspijul amend
mimickingdarcs amend
. Maintenance is easier when a project supports only the minimum set of commands, but you’ll be building your own ergonomics (no rebase, no send-mail, etc.). Maybe in the future when there is a bigger contrib space to fill in the gaps, it won’t be such an investment to just to test out.If Darcs has performance issues, how is it better than git?
In many scenarios you probably won’t notice… but also Pijul has ‘fixed’ that fundamental perfomance issue. The Patch Theory states that patches, without depending patches that would cause a conflict, should commute—i.e. patch α + patch β ≡ patch β + patch α in the same way 1 + 4 ≡ 4 + 1 (order does not matter, output is equivalent). What this eliminates is an entire class of merge conflicts & opens up new ways to handle diffing. This particular class of conflicts makes it easier to work in a distributed project as anyone can pull in anyone else’s patch at different times in project without conflicts. In practice with Git being snapshot-based & patch order mattering, this tends to cause folks to rely on a centralized, canonical Git server to merge into to be able to ask what the order should be so everyone doesn’t get stuck in their rebases/pulls (
rerere
fails a lot).It turns out there is more to version control than how fast CPU go; if we measured programming languages with the same stick, we’d all only write assembly since everything else has a performance penalty.
The way you write about this seems very evangelical.
I use git every day and I don't recall patch ordering ever being a problem.
Evangelical in that it’s documented as a theory & a paper for the concepts you can read about? Communicative properties are common in math--what’s novel is applying those properties to patches for source control compared to the older models.
Have you worked in a distributed team sharing just patches over email? If Alice pulls from Bob & then Catherine, but David reads & applies Catherine’s then Bob’s, Alice & David now have a conflict in the ordering when trying to push/pull later. I have ran into this. Or did you use a centralized, canonical (therefore not distributed) Git server with a pull request model? If you do the latter, you won’t run into the issue but you also aren’t using the distributed part of a distributed version control system (DVCS)--& most don’t since has too many issues with snapshot-based tools. This restricts the sorts of systems & team structures for source control we can even do (you need a Tvoralds dictator even for Linux’s mailing list) & we can’t really think outside the snapshot-limitations until we step outside of that snapshot bubble.
No, evangelical as in needing to tell people about it, even when they have no interest.
No.
https://feddit.uk/comment/8692603
You literally asked what I suggested. And I’m trying to do my due diligence in raising awareness for ideas I find compelling since these alternatives have yet to be any many folks’ radars …VCSs that solve issues you have yet to run into, but might someday & now you might remember you once heard about a solution online.
I don't agree, but it's a unique, interesting thought that I can upvote.
That’s how a “hot take” should work
I self-host GitBucket, and honestly your reasoning behind giving up arguably the best version control application, just because of one hosting site, is downright ludicrous.
Yeah, I stand by my stance that Microsoft has poisoned the whole Git experience, where everyone will be comparing all forges to MS GitHub & the direction of the Git project ship is being steered heavily by Microfsoft. I also disagree with “best” VCS—I will agree with Git having currently the most/best tooling around it which can lead to a better overall experience, but Git’s fundamentals are not without some obvious flaws.
It hasn't. There are literally thousands and thousands of developers using Git daily without having nothing to do with GitHub.
You are entitled to your opinion, but that's a fact. What MS does or doesn't, with GitHub, has no effect on these devs. You can see how egregious it is to read a random person sayint we should stop using a certain tool, because Walmart also uses it? Jeesh.
I would venture while thousands use Git without MS GitHub, 98% have an account since you largely can’t contribute to many projects without due to lock-in.
If Walmart was the biggest funder, making the most calls to the project, & optimizing it to be sold in their stores, I would 100% have hesitance against something if I could find an alternative (physical vs. digital goods working a bit different).
It’s not that I don’t see your point, it’s just that I’m pessimistic that the open source community at large would in practice move off of MS GitHub or otherwise offer alternative contribution channels before we would see another tool + platform supplant Git as the status quo in the next generation of VCSs. I would rather accelerate that future—unless like Google or Facebook is the clear leader of that new tool, but many projects right now not named Jujutsu seem to be independent.
The great majority of developers never contribute, that's a false expectation. Majority of programmers work in the private sector and use local git hosts/solutions instead of GitHub.
Again, expecting those devs to not use git because of one hoster, is a ludicrous idea in itself.
Open source drives that ecosystem & the private sector follows suit as the developers try new tools & suggest platforms from their open source experience. There are a lot of companies on MS GitHub Enterprise as well as opening some of there source in the form of libraries & they all choose Microsoft for marketing reasons over technical ones (Git is just Git after all).
You are acting like I’m saying “leave Git now or else”. I suggest it could be an option, if IMO a faster option, to get out Microsoft’s of monopoly. It’s easier to pitch as better tool with better features that solve problems than argue “well, ethically, you just self-host or move to Codeberg since user freedom matters”. That philosophical argument is harder to preach than Fossil ports the whole forge + tooling ecosystem with your project or Darcs/Pijul solve the merge conflict order of patches not commuting or Mercurial offers a more user-friend CLI.
What? Th E fuckv
Have you tried anything contemporary to or newer than Git (i.e. not CVS or Subversion)? It’s quite an anomaly that Git has held it’s reign as long as it has compared to other software & to assume it’s not worthy of criticism or isn’t regularly criticized online is delusional. There has been a lot of interesting work in VCS space that many have ignored since their heads are just stuck in the Git bubble. Was Git better than things before it? Mostly yes, but there are options now (& around the same time frame) with more ergonomic CLI, better conflict resolution, handling of large file blobs, better project management, & so on.
You seem to know a lot about VCS. Recently I've been looking for a VCS that handles binary files well, has deduplication, allows for deletion/forgetting of older versions without too much hassle, deals well with binary file conflicts, and allows for storing the old binaries on another server (like git LFS). Do you happen to know something that fits that description?
My memory could be failing me but I believe the gaming industry prefers Perforce for large files. Pijul’s FAQs seems to point in the direction that it could be good enough for some use cases. I haven’t put too much effort into researching solving that specific hard problem, but if I was to create a video game, you really need to look at how to best handle your assets.
I have heard of Perforce but it doesn't seem to be FOSS. Pijul seems interesting, I'll check it out. I'm currently using Nextcloud to sync projects between my desktop and laptop, but it's a bit of a pain. It takes up to 18 hours for the initial sync and uses a lot of CPU.
Well the games industry is largely not FOSS so not a huge surprise. Parts of that might be changing after the debacle with Unity with those moving to Godot--not that Godot doesn’t have issues. For a minute before the Zoom buyout I was using Keybase to sync with some folks files, but I don’t know about long term. I’ve also heard some folks like Resilio Sync (formerly BitTorrent Sync), but I can’t say much about it. It’s a hard problem to solve since these files don’t diff.
You seem to not understand that github is not git, it uses git, period.
You didn’t even read to sentence #2? That is the whole point—at this point with a sizeable portion folks thinking they are one in the same & Microsoft with one hand reaching across the driver to steer the Git project while basically defining how Git forges should look with every big alternative trying to clone MS Github, it could be easier to get out of the vehicle directed by Microsoft & create a new future where Microsoft doesn’t have its sticky hands already in everything.
Just because some (really dumb) people think git is from Microsoft doesn't mean we should stop using it.
With that logic we should stop using half the protocol and utilities out there. Remember that open source can be used by anyone, so that includes Microsoft.
Just setup your own open source gitlab or something and use that. Don't throw out the baby with the bathwater
Then you are suggesting “the people” can take Git back from that narrative--because you can’t deny that the majority of projects are on Microsoft’s platform. Maybe they can, & I hope they can too! …But I am skeptical that any true migration will actually be done before there is a tool adopted anyhow, so I would prefer we accelerate the adoption of that new tool+platform instead since I think there are some underrated tools that folks are missing as they have never even looked outside the Git bubble. I migrated everything I could off in 2016 with the Microsoft purchase, & so many folks said they would too. It’s been 8 years, & even with some folks going elsewhere, more new folks are replacing them on MS GitHub than there are those leaving (thanks education system).
Git has nothing to do with Microsoft and I think most tech people (th only people using git) know that.
I have seen and used alternative tools. Git has issues, just like all alternatives. Its just that git is vastly superior to all alternatives, and it's open source.
If (once) Microsoft gets abusive with GitHub, people will leave for alternatives, such is the life of open source
Hard disagree with “vastly superior to all alternatives”, but I hope you are right about that last part.