If you go to his web site (nexbridge.com), it appears he is actually selling a version of Git for NonStop computers. So he’s advocating for his own personal business, which is fine I guess, but doesn’t really compare to the needs of tens of millions of mainstream OS users who need Git.
This type of investment-related impact is specific to git compared to other Open-Source products. Leaving debit or credit card authorizers without a supported git would be, let’s say, “bad”.
I don’t entirely understand why. Why does Git need to run on this proprietary OS for finance? This is a platform without any mainstream dev tools (even GCC), so why are they using it for development? Wouldn’t developing somewhere else and cross compiling make more sense?
I think the question is more appropriately: why do they need to use Git for configuration management on a NonStop machine? The presence of an application stack for NonStop doesn’t necessarily mean that the entire development/deployment stack needs to be present for NonStop.
Did you look at the etckeeper link I shared? Your question is sort of like asking “Why do they need wget/curl on the NonStop machine” or “Why do they need SQLite on the NonStop machine”.
Git is a useful general-purpose versioned data store and rsync-like network client in these situations… like a filesystem-agnostic version of ZFS’s ability to take snapshots and send/receive them over the network.
I read it – my point was that there are a lot of weird hardware/OS stacks out there, and that it’s common to isolate the ones that violate reasonable assumptions (like having a GCC/LLVM port) instead of expecting the world’s open source software to run flawlessly on them.
In a case like this, I don’t think they’re using git for configuration management. They’re probably using it for development because of a path dependency (extremely long procurement/approval times for software in financial institutions), and haranguing an open source project for support is easier than obtaining the right paperwork to move development to a different machine.
I never said I approved. (Personally, I fully agree with your Weird architectures weren’t supported to begin with post and have linked to it on multiple occasions. If financial institutions want Git on NonStop, they have more than enough money to hire a developer to maintain it/backport features and/or port the Rust toolchain.)
I just said that configuration management is a reason to run it even if you’re developing elsewhere and cross-compiling, and that using it as a cross-platform, filesystem-agnostic analogue to ZSH snapshot sync is one reason to use it when the rest of the development/deployment stack isn’t present.
If financial institutions want Git on NonStop, they have more than enough money to hire a developer to maintain it/backport features and/or port the Rust toolchain.
In the thread, they discuss how they tried to port gcc to NonStop three times and Rust one time. It’s just too hard because it’s too weird.
That doesn’t mean that I think that the git project should inherently cater to them, but just pointing out that like, in this specific case, they have at least apparently attempted to do this.
Which is why I included “maintain it/backport features” as an option. They have the money to pay someone to port future features to the last Rust-free version.
It’s incredible how any suggestion that they pay money out of their own pockets to help maintain a tool that is critical for them, just seems to roll off these ultra-rich finance firms, like water off a seal’s back. They keep making the same argument on auto-pilot while pretending not to notice the incongruency.
That doesn’t even ability in this case. Their salary doesn’t depend on the rounding error of contributing to Git, and they pay for lots of things. They’re just being cheap. (Or, to put it in finance terms, there’s no ROI to contributing, if you’re already getting it for free.)
I’m skeptical about adding Rust to established C projects like git and curl, when they have Rust-native alternatives.
Major rewrites will be met with resistance. It may take a long time before any substantial portion of git is written in Rust. Additionally, mixed C+Rust projects may not want to let go of C compatibility, and likely feel non-idiomatic from Rust’s perspective.
OTOH there’s the gix reimplementation project that is Rust-based from ground up. It doesn’t need to convince anybody. It won’t bother anyone’s niche platform. Rust doesn’t need the original git to be rewritten, it’s enough to push gix past the finish line.
The thing is, git isn’t really a C program, it is a collection of programs, written in various languages, that happen to interoperate though a common set of file formats.
As discussed in the mailing list thread, this makes it really easy to incrementally adopt a new language like Rust: you just make new commands in the new language. No re-writing neccesary.
It might be educational for the audience to list out these programs
git, like many command line tools, turns git foo into an invocation of git-foo. Furthermore, commands are split into two categories: “plumbing” commands which do low-level things, and “porcelain” commands which are intended for end-users.
My understanding is that in the old days, various commands tended to be distributed as literally individual programs, but more recently, they’ve rolled them up into a single executable. This has been called the “lib-ification”, as mentioned in the mailing list thread.
Regardless, the main three implementation languages have been C, perl, and shell. For example:
Thus, Git should probably follow the same approach of not converting the
already existing code, but frankly, I don’t see what would actually be
the “new leafs” written in Rust.
One response:
In addition to some of the examples Junio mentioned elsewhere, I think
new toplevel commands, like git-replay, would qualify.
Yes, but the problem is that once you introduce Rust into anything, you get Rust people, and once you have Rust people involved, your project’s objectives no longer have anything to do with whatever the project actually does.
I’m not sure this is an entirely fair way of thinking about it. There are a lot of Rust developers who see Rust as a tool to solve problems instead of a prescription worldview.
Not to mention, there’s not that much need to be worried about interoperability if it’s file format based.
Rust doesn’t need the original git to be rewritten, it’s enough to push gix past the finish line.
I’m not sure this is true. If gix is trying to match git, it will always be behind on compatibility (both features and bugs), and will always be a second choice. Playing catch-up to support a format controlled by someone else is not a path to broad success; just look at LibreOffice.
It will have to keep up with the git protocol and the git disk format, but this seems manageable? libgit2 has reimplement enough of git to power a lot of git-related tools (maybe even the majority).
OTOH if the Rust version works out, and will be easier to extend, then maybe the original git will have to catch up with features? :)
As an exercised in understanding this a bit better, I took a look rewriting the original git commit from Linus in Rust the other day. The C idioms used for managing files and for global shared state are pretty crappy in comparison from what you get out of the box from Rust. Abstracting away from dealing with file descriptors, scanf, pointer arithmetic, etc. is a good thing IMO. Then you get library support by importing things like sha1_smol instead of writing your own things. Even looking at the most recent git code shows that the C code is often pretty low level.
I actually tried to do this a few years ago! I got burned out trying to untangle all the global mutable state. And I found a few segfaults too. Good for you!
Lemme immediately undermine my argument by acknowledging zero day exploits as a concept, but…
I genuinely cannot imagine that, once gitoxide is in keep-up mode, that I will adopt a new git feature before they implement it, unless they give up. And if that happens, or if that delay does exist, I can just use the real thing for a bit. I mean, if gix offered something over git, maybe it’s faster or something for certain operations, someone could wrap them both and choose which to call for a given command.
But that wouldn’t influence the development of git unless they actually diverged, in which case they’re not improving git and they’re fighting for mindshare.
As the maintainer of a Git port for MacRelix (a Unix-ish environment for classic Mac OS), which is built by an ancient Metrowerks C/C++ compiler running in classic Mac OS, I’m not thrilled at the idea of adding what in this context is an unsatisfiable build requirement.
One of Git’s strengths is that it’s so widely portable, and I fear that a Rust dependency would exclude not only classic Mac OS, but possibly other platforms on which the Rust infrastructure either doesn’t exist or isn’t well-maintained.
I understand, but the needs of 99.99% of users getting a better, faster dev tool with more features delivered quicker outweigh yours. Besides, you can use the current version of Git for a long time as well.
I would highly encourage folks focus on getting Rust working on their platform, because we’re currently at the bottom of an S curve – the amount of Rust code running on a typical computer is going to start going up very quickly.
the needs of 99.99% of users getting a better, faster dev tool with more features delivered quicker outweigh yours
It’s unclear that Rust is the only (or even best) way of providing this, and the presumption of everybody about that fact is what a lot of people are (and have been, for like a decade) been reacting to.
It might be worth it to look at, for example, the existing codebase. As C codebases go, it’s quite readable. It also is rather battle-tested, and rewriting it in Rust–or even just adding extra Rusty bits–could well compromise that.
I get that C isn’t a particularly compelling language when compared to Rust (or even better fit-for-purpose languages like Zig). But, it does have a lot of existing users and maintainers, it is easy to bootstrap onto niche systems (the few that don’t already have it), and it is a hell of a lot easier for a Rustacean to get the basics of C than the reverse.
I would highly encourage folks focus on getting Rust working on their platform, because we’re currently at the bottom of an S curve – the amount of Rust code running on a typical computer is going to start going up very quickly.
Logically speaking, I think you’ve got this somewhat reversed: it would seem that we’re unlikely to get up the S-curve unless people get working on their platform. While an honest error, this is the sort of thing that makes the Rust Evangelion Strike Force efforts as uncompelling today as when they were thick like flies with “Rewrite it in Rust!” years ago pretty much anytime anybody brought up any software project they had.
It’s unclear that Rust is the only (or even best) way of providing this
It hopefully won’t remain true forever, but in 2024 Rust is by far the best language to write new systems like Git in. If you were starting a new source control project today, it would be a mistake to use anything other than Rust.
The calculus for existing systems is more complicated, but the desire to write Rust isn’t coming out of nowhere. Rust has a multi year track record of delivering dev tools that are very fast and very high-quality, with great support on both Windows and Unix platforms.
I started writing Rust professionally in 2017, when that track record didn’t exist. But in the systems communities I was in which tended to be both experienced and forward-thinking, it was quickly becoming clear that Rust was going to become the dominant systems language within the next 10-15 years. These were long-time kernel and systems hackers who were getting quite fed up with C and C++. I was still relatively junior then, and I’m quite glad I paid attention to them!
or even better fit-for-purpose languages like Zig
No, Zig doesn’t have memory safety as a core property, and it is not as good a fit as Rust for writing systems where correctness is non-negotiable, like source control. (It is also significantly less mature than Rust.)
I have written and shipped a large body of source control code in both C and Rust.
it is a hell of a lot easier for a Rustacean to get the basics of C than the reverse.
The basics are not enough to write C correctly and to a modern standard (no memory safety issues, no UB, takes advantage of multi core processors). I don’t believe humans can write C to a modern standard 100% of the time even with a lifetime of training, while writing Rust to that standard can be done with a few months of sustained learning.
Speaking more personally, I have no real interest in ever writing or contributing to a C project again unless I’m getting paid to do so.
Logically speaking, I think you’ve got this somewhat reversed: it would seem that we’re unlikely to get up the S-curve unless people get working on their platform.
No, it is far more likely that platforms that don’t support Rust will simply stop getting new software.
It’s unclear that Rust is the only (or even best) way of providing this
I don’t see anybody pushing for Rust at the expense of other ways to improve Git ? Some people think Rust will help and are pushing for it, no absolutist view needed. Git is a pragmatic project and has always been multilingual, I’m sure if other languages or big changes get suggested, their pros and cons will get discussed as well.
C […] does have a lot of existing users and maintainers
So does Rust (SO, /DATA, GitHub PRs). It’s not the only language that could be used to improve Git, but it’s arguably the most popular one.
it is a hell of a lot easier for a Rustacean to get the basics of C than the reverse
The problem is that you need much more than the basics of C to productively contribute to Git. It may have clean code, but it’s a complex project with huge QA requirements. I’ve onboarded trainees into projects in many languages, the level of proficiency required to not break a codebase is much higher in C than in Rust. If somebody is new to system programming, I’d rather teach them about the pain of borrow checking than the horrors of UB.
we’re unlikely to get up the S-curve unless people get working on their platform
This story demonstrates otherwise: projects are considering the use of Rust despite the trouble it can cause for niche platforms. Git might eventually decide to cancel (or heavily postpone) the transition, but other projects will go ahead (many already have). For better or worse, niche platforms need Rust more than Rust needs niche platforms.
That’s for PowerPC Macs, not 68k. And realistically, you’re going to need std. Not to mention tracking Rust upstream, to say nothing of the whack-a-mole of crate dependencies you’ll need to patch…
Rust upstream has a m68k-unknown-linux-gnu target, getting a macos-classic target would be a fair amount of work, but it’s not unsatisfiable.
At some point, if you maintain an ancient platform, you have to decide whether you put in the work to bring modern software to it, or if you treat it as a museum piece. You can’t ask the rest of the world to stop evolving.
FWIW, perhaps using libgit2 might work out better for you. It’s written in C89 and seems mostly portable. I was deploying it in Visual Git, which was built with VC++6 and I was able to run it on NT 4 (with some work to make it go downlevel API wise).
While I have the opportunity to get your attention, is there a way to archive MacRelix’s current install loadout using something like httrack or rsync and then install it without access to the Internet?
I have a policy of only installing stuff on my retro-hobby machines that I’ve already pre-archived for longevity and reproducibility (plus, I’m not sure if your downloader knows how to see and use the copy of Privoxy they need to go through to see the ‘net as anything other than the intentionally invalid gateway address the DHCP tells them) and
I’m looking for something that I can serve up to the Mac OS 9.2 machines on my LAN over HTTP or Netatalk-based AppleShare, similar to how \\retro\Win9x\cygwin-1.5.25-15 contains a full archive of cygwin-legacy served up over Samba-based SMB/CIFS.
Who cares about non-stop? It’s just some stupid financial company. They should just pay their own people. I don’t feel that this should be any reason to prevent it. There might be other reasons, but just because some corporate customer guess their panties in the wad for free code is not a reason to prevent something.
I’m sure this isn’t the only area where this niche, proprietary, operating system is a pain. Unfortunately in this case they’re sharing that pain with the git project instead of suffering internally. The financial industry has money to burn on technology and probably has an outsized say on this topic relative to their user base size.
I think this falls on the side of uncharitable. Randall Becker seems to be paid for his work to keep the NonStop port up to date and there’s no indication that he doesn’t do it. Git has accepted those patches, so that’s fine.
He also argues that he does see porting Rust as an option and maybe may be able to secure some funds for that?
He’s also not arguing that Rust can’t be adopted, he’s just asking for taking this decision slow.
What is the broad impact of dropping support for a platform that has a significant investment in git, where loss of support could have societal impact. There are platforms with 100 million to 1000 million lines of code managed by git today. This type of investment-related impact is specific to git compared to other Open-Source products. Leaving debit or credit card authorizers without a supported git would be, let’s say, “bad”.
I feel like people value git radically more than they value these platforms. The result wouldn’t be “those platforms drop git” it would be “everyone drops those platforms”.
Nah. What? Real time payment processor core infrastructure isn’t gonna swap operating systems so they can keep their VCS. That’s genuinely silly. What “everyone” will do is not notice or care, because there’s a small number of people who would actually be impacted by this, and I trust them to figure it out.
After reading some of the LWN discussion I now have sudden urge to go and finally learn Rust. Hmm, it’s going to be pretty tough call during the holidays. Rust or BG3.
It’s one of those situations that I believe the right solution is to be file-compatible with Git but start a new tool altogether. More or less what Drew suggested for Rust in Linux. Stop investing into playing the Linux and/or Git politics, go with an open-source driven EEE.
In the case of git, both things can happen simultaneously. Current-git developers may not be interested in starting a new project, and are (responsibly) looking for the best path forwards for the current project, and that might well involve rust.
Meanwhile relative outsiders are currently developing things like jj and gitoxide in rust, which is absolutely in the direction of an open-source EEE of the git project.
What I always find fascinating in these projects is that commercial niche entity act as if the FOSS projects are vendors.
Do they significantly contribute, monetarily or in time or in expertise, to the project?
If not, listening to them is… Highly optional
Like, if git is so essential to strategic financial infrastructure, I am sure someone can find a budget for git.
If not… Well i suppose it is not that strategic
If you go to his web site (nexbridge.com), it appears he is actually selling a version of Git for NonStop computers. So he’s advocating for his own personal business, which is fine I guess, but doesn’t really compare to the needs of tens of millions of mainstream OS users who need Git.
I don’t entirely understand why. Why does Git need to run on this proprietary OS for finance? This is a platform without any mainstream dev tools (even GCC), so why are they using it for development? Wouldn’t developing somewhere else and cross compiling make more sense?
As one of the commenters said, it’s not uncommon to use Git for configuration management.
(They use https://etckeeper.branchable.com/ as one example.)
I think the question is more appropriately: why do they need to use Git for configuration management on a NonStop machine? The presence of an application stack for NonStop doesn’t necessarily mean that the entire development/deployment stack needs to be present for NonStop.
Did you look at the etckeeper link I shared? Your question is sort of like asking “Why do they need
wget/curlon the NonStop machine” or “Why do they need SQLite on the NonStop machine”.Git is a useful general-purpose versioned data store and rsync-like network client in these situations… like a filesystem-agnostic version of ZFS’s ability to take snapshots and send/receive them over the network.
I read it – my point was that there are a lot of weird hardware/OS stacks out there, and that it’s common to isolate the ones that violate reasonable assumptions (like having a GCC/LLVM port) instead of expecting the world’s open source software to run flawlessly on them.
In a case like this, I don’t think they’re using git for configuration management. They’re probably using it for development because of a path dependency (extremely long procurement/approval times for software in financial institutions), and haranguing an open source project for support is easier than obtaining the right paperwork to move development to a different machine.
I never said I approved. (Personally, I fully agree with your Weird architectures weren’t supported to begin with post and have linked to it on multiple occasions. If financial institutions want Git on NonStop, they have more than enough money to hire a developer to maintain it/backport features and/or port the Rust toolchain.)
I just said that configuration management is a reason to run it even if you’re developing elsewhere and cross-compiling, and that using it as a cross-platform, filesystem-agnostic analogue to ZSH snapshot sync is one reason to use it when the rest of the development/deployment stack isn’t present.
In the thread, they discuss how they tried to port gcc to NonStop three times and Rust one time. It’s just too hard because it’s too weird.
That doesn’t mean that I think that the git project should inherently cater to them, but just pointing out that like, in this specific case, they have at least apparently attempted to do this.
Which is why I included “maintain it/backport features” as an option. They have the money to pay someone to port future features to the last Rust-free version.
Fair enough!
It’s incredible how any suggestion that they pay money out of their own pockets to help maintain a tool that is critical for them, just seems to roll off these ultra-rich finance firms, like water off a seal’s back. They keep making the same argument on auto-pilot while pretending not to notice the incongruency.
That doesn’t even ability in this case. Their salary doesn’t depend on the rounding error of contributing to Git, and they pay for lots of things. They’re just being cheap. (Or, to put it in finance terms, there’s no ROI to contributing, if you’re already getting it for free.)
I’m skeptical about adding Rust to established C projects like
gitandcurl, when they have Rust-native alternatives.Major rewrites will be met with resistance. It may take a long time before any substantial portion of git is written in Rust. Additionally, mixed C+Rust projects may not want to let go of C compatibility, and likely feel non-idiomatic from Rust’s perspective.
OTOH there’s the
gixreimplementation project that is Rust-based from ground up. It doesn’t need to convince anybody. It won’t bother anyone’s niche platform. Rust doesn’t need the original git to be rewritten, it’s enough to pushgixpast the finish line.The thing is,
gitisn’t really a C program, it is a collection of programs, written in various languages, that happen to interoperate though a common set of file formats.As discussed in the mailing list thread, this makes it really easy to incrementally adopt a new language like Rust: you just make new commands in the new language. No re-writing neccesary.
It might be educational for the audience to list out these programs and what language they’re implemented in.
git, like many command line tools, turns
git foointo an invocation ofgit-foo. Furthermore, commands are split into two categories: “plumbing” commands which do low-level things, and “porcelain” commands which are intended for end-users.My understanding is that in the old days, various commands tended to be distributed as literally individual programs, but more recently, they’ve rolled them up into a single executable. This has been called the “lib-ification”, as mentioned in the mailing list thread.
Regardless, the main three implementation languages have been C, perl, and shell. For example:
git commit: https://github.com/git/git/blob/master/commit.cgit mergetool: https://github.com/git/git/blob/master/git-mergetool.shgit send-email: https://github.com/git/git/blob/master/git-send-email.perlThe discussion from the list about this idea, which you can see all on one page here: https://lore.kernel.org/git/ZZ77NQkSuiRxRDwt@nand.local/t/#u
One response:
Yes, but the problem is that once you introduce Rust into anything, you get Rust people, and once you have Rust people involved, your project’s objectives no longer have anything to do with whatever the project actually does.
Why the blatant bad faith?
Sounds awful. Where are there examples of this?
I’m not sure this is an entirely fair way of thinking about it. There are a lot of Rust developers who see Rust as a tool to solve problems instead of a prescription worldview.
Not to mention, there’s not that much need to be worried about interoperability if it’s file format based.
I’m not sure this is true. If
gixis trying to matchgit, it will always be behind on compatibility (both features and bugs), and will always be a second choice. Playing catch-up to support a format controlled by someone else is not a path to broad success; just look at LibreOffice.It will have to keep up with the git protocol and the git disk format, but this seems manageable? libgit2 has reimplement enough of
gitto power a lot of git-related tools (maybe even the majority).OTOH if the Rust version works out, and will be easier to extend, then maybe the original
gitwill have to catch up with features? :)That’s arguably already happening, with Jujutsu.
As an exercised in understanding this a bit better, I took a look rewriting the original git commit from Linus in Rust the other day. The C idioms used for managing files and for global shared state are pretty crappy in comparison from what you get out of the box from Rust. Abstracting away from dealing with file descriptors, scanf, pointer arithmetic, etc. is a good thing IMO. Then you get library support by importing things like sha1_smol instead of writing your own things. Even looking at the most recent git code shows that the C code is often pretty low level.
I actually tried to do this a few years ago! I got burned out trying to untangle all the global mutable state. And I found a few segfaults too. Good for you!
I’m at the untangling phase of this also :D
sha1_smol is not suitable for git because git does not use classic SHA-1, it uses a variant of SHA-1 with counter-cryptanalysis collision detection (see also, see also)
Yeah - the context I’m looking at is just the way the code parses hashes into a value. E.g. https://github.com/git/git/blob/e83c5163316f89bfbde7d9ab23ca2e25604af290/read-cache.c#L13-L80 Just using Digest::from_str(…) works much nicer.
But even if you rewrite it, the rust code is just better.
Lemme immediately undermine my argument by acknowledging zero day exploits as a concept, but…
I genuinely cannot imagine that, once gitoxide is in keep-up mode, that I will adopt a new git feature before they implement it, unless they give up. And if that happens, or if that delay does exist, I can just use the real thing for a bit. I mean, if gix offered something over git, maybe it’s faster or something for certain operations, someone could wrap them both and choose which to call for a given command.
But that wouldn’t influence the development of git unless they actually diverged, in which case they’re not improving git and they’re fighting for mindshare.
As the maintainer of a Git port for MacRelix (a Unix-ish environment for classic Mac OS), which is built by an ancient Metrowerks C/C++ compiler running in classic Mac OS, I’m not thrilled at the idea of adding what in this context is an unsatisfiable build requirement.
One of Git’s strengths is that it’s so widely portable, and I fear that a Rust dependency would exclude not only classic Mac OS, but possibly other platforms on which the Rust infrastructure either doesn’t exist or isn’t well-maintained.
I understand, but the needs of 99.99% of users getting a better, faster dev tool with more features delivered quicker outweigh yours. Besides, you can use the current version of Git for a long time as well.
I would highly encourage folks focus on getting Rust working on their platform, because we’re currently at the bottom of an S curve – the amount of Rust code running on a typical computer is going to start going up very quickly.
It’s unclear that Rust is the only (or even best) way of providing this, and the presumption of everybody about that fact is what a lot of people are (and have been, for like a decade) been reacting to.
It might be worth it to look at, for example, the existing codebase. As C codebases go, it’s quite readable. It also is rather battle-tested, and rewriting it in Rust–or even just adding extra Rusty bits–could well compromise that.
I get that C isn’t a particularly compelling language when compared to Rust (or even better fit-for-purpose languages like Zig). But, it does have a lot of existing users and maintainers, it is easy to bootstrap onto niche systems (the few that don’t already have it), and it is a hell of a lot easier for a Rustacean to get the basics of C than the reverse.
Logically speaking, I think you’ve got this somewhat reversed: it would seem that we’re unlikely to get up the S-curve unless people get working on their platform. While an honest error, this is the sort of thing that makes the Rust Evangelion Strike Force efforts as uncompelling today as when they were thick like flies with “Rewrite it in Rust!” years ago pretty much anytime anybody brought up any software project they had.
It hopefully won’t remain true forever, but in 2024 Rust is by far the best language to write new systems like Git in. If you were starting a new source control project today, it would be a mistake to use anything other than Rust.
The calculus for existing systems is more complicated, but the desire to write Rust isn’t coming out of nowhere. Rust has a multi year track record of delivering dev tools that are very fast and very high-quality, with great support on both Windows and Unix platforms.
I started writing Rust professionally in 2017, when that track record didn’t exist. But in the systems communities I was in which tended to be both experienced and forward-thinking, it was quickly becoming clear that Rust was going to become the dominant systems language within the next 10-15 years. These were long-time kernel and systems hackers who were getting quite fed up with C and C++. I was still relatively junior then, and I’m quite glad I paid attention to them!
No, Zig doesn’t have memory safety as a core property, and it is not as good a fit as Rust for writing systems where correctness is non-negotiable, like source control. (It is also significantly less mature than Rust.)
I have written and shipped a large body of source control code in both C and Rust.
The basics are not enough to write C correctly and to a modern standard (no memory safety issues, no UB, takes advantage of multi core processors). I don’t believe humans can write C to a modern standard 100% of the time even with a lifetime of training, while writing Rust to that standard can be done with a few months of sustained learning.
Speaking more personally, I have no real interest in ever writing or contributing to a C project again unless I’m getting paid to do so.
No, it is far more likely that platforms that don’t support Rust will simply stop getting new software.
I don’t see anybody pushing for Rust at the expense of other ways to improve Git ? Some people think Rust will help and are pushing for it, no absolutist view needed. Git is a pragmatic project and has always been multilingual, I’m sure if other languages or big changes get suggested, their pros and cons will get discussed as well.
So does Rust (SO, /DATA, GitHub PRs). It’s not the only language that could be used to improve Git, but it’s arguably the most popular one.
The problem is that you need much more than the basics of C to productively contribute to Git. It may have clean code, but it’s a complex project with huge QA requirements. I’ve onboarded trainees into projects in many languages, the level of proficiency required to not break a codebase is much higher in C than in Rust. If somebody is new to system programming, I’d rather teach them about the pain of borrow checking than the horrors of UB.
This story demonstrates otherwise: projects are considering the use of Rust despite the trouble it can cause for niche platforms. Git might eventually decide to cancel (or heavily postpone) the transition, but other projects will go ahead (many already have). For better or worse, niche platforms need Rust more than Rust needs niche platforms.
Is it unsatisfiable? Someone has at least got rust without the full std-lib working, and it sounds like they didn’t see any real roadblocks to having the whole thing work.
That’s for PowerPC Macs, not 68k. And realistically, you’re going to need std. Not to mention tracking Rust upstream, to say nothing of the whack-a-mole of crate dependencies you’ll need to patch…
Rust upstream has a m68k-unknown-linux-gnu target, getting a macos-classic target would be a fair amount of work, but it’s not unsatisfiable.
At some point, if you maintain an ancient platform, you have to decide whether you put in the work to bring modern software to it, or if you treat it as a museum piece. You can’t ask the rest of the world to stop evolving.
FWIW, perhaps using libgit2 might work out better for you. It’s written in C89 and seems mostly portable. I was deploying it in Visual Git, which was built with VC++6 and I was able to run it on NT 4 (with some work to make it go downlevel API wise).
While I have the opportunity to get your attention, is there a way to archive MacRelix’s current install loadout using something like httrack or rsync and then install it without access to the Internet?
I have a policy of only installing stuff on my retro-hobby machines that I’ve already pre-archived for longevity and reproducibility (plus, I’m not sure if your downloader knows how to see and use the copy of Privoxy they need to go through to see the ‘net as anything other than the intentionally invalid gateway address the DHCP tells them) and I’m looking for something that I can serve up to the Mac OS 9.2 machines on my LAN over HTTP or Netatalk-based AppleShare, similar to how
\\retro\Win9x\cygwin-1.5.25-15contains a full archive of cygwin-legacy served up over Samba-based SMB/CIFS.Who cares about non-stop? It’s just some stupid financial company. They should just pay their own people. I don’t feel that this should be any reason to prevent it. There might be other reasons, but just because some corporate customer guess their panties in the wad for free code is not a reason to prevent something.
I’m sure this isn’t the only area where this niche, proprietary, operating system is a pain. Unfortunately in this case they’re sharing that pain with the git project instead of suffering internally. The financial industry has money to burn on technology and probably has an outsized say on this topic relative to their user base size.
I think this falls on the side of uncharitable. Randall Becker seems to be paid for his work to keep the NonStop port up to date and there’s no indication that he doesn’t do it. Git has accepted those patches, so that’s fine.
He also argues that he does see porting Rust as an option and maybe may be able to secure some funds for that?
He’s also not arguing that Rust can’t be adopted, he’s just asking for taking this decision slow.
I mean no disrespect to Randall as an individual and my comment wasn’t directed at him personally.
i don’t think the article mentioned it and i am curious: how much money is NonStop users?/devs? paying git devs to demand continued support from them?
I feel like people value git radically more than they value these platforms. The result wouldn’t be “those platforms drop git” it would be “everyone drops those platforms”.
Nah. What? Real time payment processor core infrastructure isn’t gonna swap operating systems so they can keep their VCS. That’s genuinely silly. What “everyone” will do is not notice or care, because there’s a small number of people who would actually be impacted by this, and I trust them to figure it out.
Hm, that’s probably true. I suppose the way I see it is that either:
None of those situations seem like something it should be overly concerned with
After reading some of the LWN discussion I now have sudden urge to go and finally learn Rust. Hmm, it’s going to be pretty tough call during the holidays. Rust or BG3.
To my relief, this post is not about someone using AI to generate eternal discussions about adding Rust to Git.
It’s one of those situations that I believe the right solution is to be file-compatible with Git but start a new tool altogether. More or less what Drew suggested for Rust in Linux. Stop investing into playing the Linux and/or Git politics, go with an open-source driven EEE.
I don’t disagree – folks should use Jujutsu, which is written in Rust and has a significantly better UX than Git.
In the case of git, both things can happen simultaneously. Current-git developers may not be interested in starting a new project, and are (responsibly) looking for the best path forwards for the current project, and that might well involve rust.
Meanwhile relative outsiders are currently developing things like
jjandgitoxidein rust, which is absolutely in the direction of an open-source EEE of the git project.