On Sunday, August 22, 2021 at 2:56:17 PM UTC-7, Kent Dickey wrote:
> The Apple II is archaic garbage, yet here we are emulating it.
Apples and Oranges comparison.
First, IF that was true we wouldn't be writing emulators for it.
Second, the design of the Apple 2 is pretty damn elegant.
Third, while the Apple 2 is primitive it STILL has better input latency then many modern systems. Not bad for an "archaic system"! --
https://www.extremetech.com/computing/261148-modern-computers-struggle-match-input-latency-apple-iie
Fourth, there are STILL much software (such as many original games) on these old systems that are not available on a modern system.
Sure, from a performance POV old 8-bit computers are "archaic" but that doesn't make them garbage. You are not going to be editing 4K video on an Apple 2. The hardware can only do what the hardware can do.
A VCS has ONE job: To keep an accurate history of changes.
The design of RCS is archaic garbage because it doesn't meet the needs of modern developers. There is a reason git and Perforce have become de facto standards amongst professionals -- the biggest being scalability.
Git makes common operations, such as branching and checkout, trivial. RCS does not.
> Vi is archaic garbage, and I happily use it every day.
No. It's design of using modes is far superior for many tasks -- which makes it trivial to repeat almost any command. Something completely lost on modern text editors. While Vi is getting a little long in the tooth Vim builds upon that good foundation.
> These arguments seem to mostly be insulting me.
Did you COMPLETELY miss the part where I said?
"If a 1st-gen VCS if works for you more power to you"
> You know, it's possible to write a version control system that
> worked exactly like Git in terms of interface and commands, and yet had RCS
> underneath it (hidden in the .git directories).
BWAHAHA.
1. You are not understanding the features of a distributed VCS let alone modern work-flow.
2. That would STILL be a garbage design AND implementation -- things such as performance, scalability, and size (of the repro.) matter. For example, the Windows source code is 450 GB. That is just to checkout "head". Good LUCK trying to have RCS dealing with THAT.
Why is that a problem? With RCS the older the checkout revision the longer the checkout takes since an increasing number of deltas need to be calculated. In git this is O(1) since it is a matter of just updating a pointer. While this time may not matter for small repos, for large repos this certainly does matter. Why not just use a VCS that is designed better right from the start to handle scalability and won't run into performance issues until LONG down the road?
> And wasn't CVS built on top of RCS at the file level, too?
When you build upon a crap foundation you end with a shaky building -- which is all the more reason to avoid CVS as well.
> CVS's problems were not RCS, they were in
> how they used RCS and it's general overall features.
Doesn't change the fact that CVS is garbage too. Did they _finally_ fix the inability to rename a file AND keep the revision history? Can you rename a directory AND keep the revision history? The CVS FAQ says this isn't possible. This is idiotic. The _contents_ of the file didn't change, only the meta-data did. What the hell is the point of using a (broken) VCS if it can't even track basic changes???
The problem with CVS, and RCS, and why their design is fundamentally broken is that history is tracked on a per-file basis. History of people using VCSs has shown that this is bad design. Modern VCSs take a snapshot of the entire project which is the revision.
Linus (of Linux fame) has discussed to death some of the problems with CVS when he gave his git talk to google:
Tech Talk: Linus Torvalds on git
https://www.youtube.com/watch?v=4XpnKHJAok8
The world has moved on from crap like RCS and CVS for over 15+ years now. Not just for 1 reason but for MANY reasons: Functionality, Performance, Security, Size, etc.
If you want to keep using an archaic VCS such as RCS then no one is going to stop you -- but you are selling yourself extremely short by not using a more modern VCS. Almost no one is going to submit RCS patches to you. With git it is _almost_ trivial to merge a PR. I have submitted a few patches to various repros that I never would have unless git had made it easy:
* git clone foo
* edit file
* git add -p bar
* git commit "Fixed bar"
* git push
* Hit the PR button on GitHub
Compared to other VCSs git isn't THAT hard to learn. It doesn't suffer from the same dumbs designs that others do. As they say hindsight is 20/20 and git has benefitted very much from that. Git, ironically, literally owes its existence to the closed source proprietary BitKeeper.
EVERY VCS sucks. Knowing what they are good at, and what they are bad at, helps you pick and use tools that are easier, faster, etc. Personally I think Vim sucks too. I find it utterly retarded that in 2021 you STILL can't bind CAPS, Ctrl-1, Ctrl-Shift-1 because it is stuck in 1970's thinking. However, I find Vim sucks _least_ compared to other editors. Ditto for git. Git's lack of handling binary files without blowing up the repository is a major deal breaker with games. For the longest time git couldn't handle large files so you have hacks/extensions like Git LFS (Large File Storage). But for what git was designed to do it does a damn good job, far, far better then other VCSs.
If you feel insulted that I called RCS "archaic garbage" then you would know it is not just my opinion that RCS and CVS are hot garbage. It would behoove you to learn WHY many professional developers have switched to git and Perforce. (Having used Perforce I'm not a fan of it either -- it feels extremely clunky.) I'd rather listen to the guy who not only made his own Operating System, has it running on 100% of the Top 500 supercomputers in the world, along with over 2 Billion mobile devices, AND wrote a better designed VCS that puts most of them to shame because, chances are, he is smarter than me then to some "nobody" that wrote a piece of software decades ago that almost NO ONE uses anymore because the broken design never got tossed out, nor did it kept evolving to deal with handling modern problems.
People have used Vi to edit LARGE text files over dial-up. THAT is a good design that stands up reasonably well today -- not archaic -- because it is performant.
RCS / CVS is like having a hammer. You may think it is OK if all you need to do pound a few nails in but when you need to eventually drill holes, use a screwdriver for screws (go figure), etc. you will want to expand the proverbial toolbox with power tools that can not scale up but scale down as well. RCS / CVS doesn't scale up hence why it is a complete joke amongst professional developers.
To summarize:
1. Use what you know. Take the blue pill and remain happy in your ignorance.
2. Or take the red pill and don't be surprised when people offer better alternatives based on years of experience of having attempted to solve the same problems year in, year out.
We now return to your favorite emulator discussion ...
m.