I find it interesting that so many are disparaging this for not being backwards compatible, etc., when there is simply no need. The title of the post clearly states it's a replacement for ls, so why should it be backwards compatible?
It's not like everything everyone ever makes has to be a perfect fit in every capacity. A guy made a replacement for 'ls' as a fun thing to do in a language he likes. We make toys all the time and if you don't you probably just don't even like programming. The fact that he'd share this with us because he thought other people might be interested is precisely why places like these are good.
We might as well just start disparaging every posted project for not being a solution to starvation around the world if we're going to condemn everything that isn't an immediate step 'forward'. Let people make things they think are neat and try to see the positive side of things instead.
If someone's selling you a product I can see this behaviour being warranted, but when someone is trying to show you something they made because they think it's neat, you don't jump on it as if he's trying to change the world with it.
I think people were in general quite nice to him, understanding the scope of the project. Who uses ls in scripts anyway...? :-)
On the other hand I think it would be great if together we would try to go back to the early attempts of writing utilities that do only one thing and can be chained together with pipes. If ls isn't a good utility for pipes we have to come up with an alternative. You can then pipe it into a frontend like exa and everybody is happy. :-)
I think at hackernews there are a lot of brilliant people who would definitely be able to formulate interesting goals/projects to work on (and which will be of benefit to us all). And no, that does not always need to be an idea with which you can start a new startup.
That ls is one of the utilities that needs more love from us all, I think we probably all agree on. Check your history on how often you used it in the past.
> ...so many are disparaging this for not being backwards compatible...there is simply no need...it's a replacement for ls, so why should it be backwards compatible?
Because unless someone feels like editing every script or tool that makes use of ls, then it cannot be used as a replacement, i.e. You'll have to have both ls and exa on your hard drive instead of just exa. Also, people are used to the options of ls, and backwards-compatibility (in the form of a shell alias) is one less barrier to entry.
> Because unless someone feels like editing every script or tool that makes use of ls, then it cannot be used as a replacement
It can be used as a replacement just fine, just not if you symlink/alias 'ls' to 'exa', which I don't see as relevant. 'fish' is a replacement for bash, but I don't remove bash because of having it and I still have plenty of scripts using bash. It's just that my personal usage is exclusively with fish.
> You'll have to have both ls and exa on your hard drive instead of just exa.
Yes. I don't think this is a problem.
> Also, people are used to the options of ls, and backwards-compatibility (in the form of a shell alias) is one less barrier to entry.
I agree that it is a barrier to entry, yes, but this is clearly a toy created just to have fun with a language and make something that also happens to be fairly useful. It's not meant to take over the world, as far as I can see.
> not if you symlink/alias 'ls' to 'exa', which I don't see as relevant. 'fish' is a replacement for bash, but I don't remove bash because of having it and I still have plenty of scripts using bash.
You're not using fish as a replacement for bash.
You're using them both alongside each other. There is, of course, nothing wrong with this, but it is important to know that that's what you're doing.
Because many of the scripts on your computer depend on bash (or another shell with sh-like syntax) it would be difficult or impossible to use fish as a replacement for bash.
Similarly, it would be difficult or impossible to use exa as a replacement for ls, because ls has options that exa doesn't.
I have replaced bash with fish, actually. To which extent is the question. If I replace it for all of my personal use, that's still replacement. You can pretend that the domain/extent of which you replace something is not important, but this will be a factor no matter what you believe.
I AM USING fish as a replacement for bash. Whether or not scripts that run on my machine use bash or not is entirely irrelevant to the point.
Your reasoning is that since there are things I am interacting with that use ls I won't be able to replace it by actively exclusively using exa. This is the same reasoning that would conclude that if you compile a language to C you have not replaced your use of C by using only this compiled language, since things that you use in turn still use C. You will still need things connected to C on your machine, but to say you have not replaced C for yourself is ridiculous in this example, as it is in yours.
Take the following situation:
Person A is working on a project and says to person B that he has recently replaced the Haskell parts of it with Common Lisp. Person B takes a look at A's repository and concludes that he has not. He still has a tool made in Haskell that he uses for one thing in his project. He didn't make this himself, it's a third party tool.
Now, in this scenario, wouldn't it be fairly sane to assume that while A has not completely eradicated all traces of Haskell in his project, he has still replaced Haskell with Common Lisp? His own usage has been completely replaced with Common Lisp. I think most people would think that is the important part of the statement he made in the beginning.
No, you're using both of them. If you are using scripts which themselves use bash, then you're using bash, albeit indirectly. You may not be using it in interactive mode, but you're still using it nonetheless. If you had replaced bash with fish, then you would not need bash on your computer at all.
Replace (in the context of Unix-like software) means completely replace, as in: no longer needing the original for any purpose.
> Replace (in the context of Unix-like software) means completely replace, as in: no longer needing the original for any purpose.
There is nothing about the context of Unix that makes this use case different than any other. If you yourself always blindly take "replace" to mean "completely replace", then that's fine. I would contend, however, that most regular people see the above scenario precisely like I outlined.
> then you're using bash, albeit indirectly.
This line, however, makes me think that you purposefully ignore the example because with your reasoning we are all using C no matter if we've never seen the language at all, if the case is that a language we use is compiled to C. By this reasoning users of Chicken Scheme and Gambit Scheme are using C, because both of these Scheme variants are compiled down to C.
I find it strange that you would be so interested in setting the limits for what other people constitute "use". I've told you several times that for personal use I've replaced bash with fish. This, apparently, is not enough for you. I made a scenario to illustrate how silly it sounds to say Person A hasn't replaced Haskell.
Someone calls you and you are in your study. Your friend Janet is in the living room downstairs. The person on the phone asks: "Is Janet there?". How would you respond to this question?
> There is nothing about the context of Unix that makes this use case different than any other.
I disagree; the programs which make up a Unix-like system are designed to be modular (even extremely so, compared to {say} Windows), which greatly facilitated the development of GNU, a replacement for Unix.
"As the GNU Project's reputation grew, people began offering to donate machines running Unix to the project. These were very useful, because the easiest way to develop components of GNU was to do it on a Unix system, and replace the components of that system one by one...it was legitimate to use a proprietary package when that was crucial for developing a free replacement that would help others stop using the proprietary package...Today we no longer have any copies of Unix, because we have replaced them with free operating systems." --from https://www.gnu.org/gnu/thegnuproject.html
> With your reasoning we are all using C no matter if we've never seen the language at all
Well, we kind of are. For example: if we haven't replaced all our copies of libc by 2038 with one that supports dates after 2038, then we're all screwed. Whether or not we 'personally' use C or not.
> Janet
Well, skipping over the fact that I don't know anyone named Janet (;-D) I'd say "Janet's downstairs, let me get her for you."
Sometimes i feel as if these things should be treated similarly to theories in physics. Einstein extends Newton but do not replace his theory of gravity for instance.
It's not like everything everyone ever makes has to be a perfect fit in every capacity. A guy made a replacement for 'ls' as a fun thing to do in a language he likes. We make toys all the time and if you don't you probably just don't even like programming. The fact that he'd share this with us because he thought other people might be interested is precisely why places like these are good.
We might as well just start disparaging every posted project for not being a solution to starvation around the world if we're going to condemn everything that isn't an immediate step 'forward'. Let people make things they think are neat and try to see the positive side of things instead.
If someone's selling you a product I can see this behaviour being warranted, but when someone is trying to show you something they made because they think it's neat, you don't jump on it as if he's trying to change the world with it.