3 ms·
> the cost of using 'alias' or updating scripts, though not huge, is paid by every single user, and often over and over again The cost of a change that effects
by thomastjeffery 4y ago
> the cost of using 'alias' or updating scripts, though not huge, is paid by every single user, and often over and over again
The cost of a change that effects N users is paid by N users.
user*N - change*N = user - change
The amount of work each person must do is not increased by the amount of work everyone else most do.
> Against this cost for every user, one weighs the benefits of this change - which are zero.
That point specifically I am not arguing with. I agree this change doesn't seem to have merit. Remember: I am not the one imposing it on you.
Deprecating fgrep in a grep package distribution is just like deprecating a function in a library. The only reason it would be more difficult to handle that change is if you don't have a straightforward way of managing changes in your scripts and/or shell environments.
And that's the point I was making: it's very common for shell scripts to exist in unmanaged - and frankly brittle - environments. That's a problem that is not unique to this situation.
---
Here's an example:
If someone deprecated the printf() function in gcc version 127.4, replacing it with print(format=False,...), then anyone using gcc 127.4 would have to make a straightforward change to their code. Would it be annoying and pointless? Yes, that's the criteria for this hypothetical situation. Would it be difficult to manage? No, not really. You would just update your gcc dependency version, find and replace printf, sanity check, commit, done.
The reason deprecating fgrep is scary is that people tend to manage shell scripts more liberally. In other words, they likely aren't managed at all. Are they in a git repo? Who is running it? On what machine? What user? Critically, there probably isn't a clear way to predict what version of grep is going to be installed in what environment, and when.
This isn't a new problem. Package maintainers diverge all the time on what binary names and aliases they provide. Tell me, if you opened a shell on any random GNU/Linux system you have access to, and typed "python", would it be version 2 or version 3? Would python3 be in the path?
It's valuable to be able to manage these things. That's why projects like Nix are so popular.