20 ms·
It used to be simpler to teach Unix
- beamatronic 6y agoBefore virtualization and containerization, UNIX machines needed careful love and feeding. But now they are just disposable. Configured by scripts, and thrown away when they are no longer needed.
- dijit 6y agoI mean. Maybe? Ideally? Mostly we’ve traded a class of problems (debugging unknowns and differences between systems) with a new class of problems (complexity of cloud providers, abstractions and less debugability).
- remram 6y agoIsn't that the UNIX philosophy, just developed further? Do one thing and easily compose, applied to hosts?
- rodgerd 6y agoTurns out "retry, reboot, reinstall" was right all along.
- pjmlp 6y agoContrary to what Docker and Kubernetes generation might think, we were already doing that in HP-UX and Tru64 glory days.
- jagged-chisel 6y agoHeadline reaction: didn’t it used to be simpler to teach loads of things, especially using anything related to technology? “Today in some versions of Linux ls puts single quotes around file names...” I recommend a shell that’s intelligent enough to distinguish lines and present them downstream as strings including spaces. I hope not to come across such an odd implementation of ls ...
- Spivak 6y agoThis is the default behavior in the GNU coreutils since version 8.25 so it will eventually be every major Linux distro. https://www.gnu.org/software/coreutils/quotes.html https://www.gnu.org/software/coreutils/quotes.html I think the maintainers made a good decision with this change but this page exists because they received a lot of negative feedback. I’m kinda surprised to see people wanting ambiguous output.
- JoelMcCracken 6y agoIt always surprises me when people are totally unreasonable. I guess I shouldn’t be surprised though.
- saagarjha 6y agoNot every major distro ships with coreutils.
- Izkata 6y ago> I’m kinda surprised to see people wanting ambiguous output. It's visual noise, and because of column output I never found it ambiguous.
- brmgb 6y agoThe quotes are only used outside of pipes. One file per line without quote has always been the comportment of ls when piped (but with shell globbing you rarely if ever have to pipe ls anyway).
- eMSF 6y agoOr rather, a newline after each filename. However, as filenames themselves can contain newlines, a single name can span several lines. These new fancy quoting styles actually finally make it possible to parse the output of ls (although I still can't think of a reason to actually do so).
- l0b0 6y ago
- deleted 6y ago[deleted]
- mtmail 6y agoThe author also tweeted a specific example before writing the blog post: https://twitter.com/jpmens/status/1310200703391068160 https://twitter.com/jpmens/status/1310200703391068160 (direct link to image if you worry about twitter tracking pixels https://pbs.twimg.com/media/Ei7EmD8XgAIJjrd?format=png&name=small https://pbs.twimg.com/media/Ei7EmD8XgAIJjrd?format=png&name=...)
- somerandomboi 6y ago* 1 point by somerandomboi 0 minutes ago | edit | delete [–] This appears to be quite a subjective claim, people comprehend/retain information extremely differently. The ls command applied as an example to the argument undermines its credibility, as virtually every Unix user is aware of its importance. ls remains arguably the most Unix filesystem command, why would it be difficult for users to understand its relevancy?
- inopinatus 6y agoThe author isn’t talking about teaching ls, but about using it to teach fundamental principles of Unix, in particular “do one thing well” in the context of piped standardised regular line-oriented text formats. So ls is chosen because it is supposed to be the universally familiar archetype, but author is noting that corruption of the underlying principle in the default configuration of some variants & distributions has extended to something as basic as this.
- saagarjha 6y agoHey, it looks like you've copied more of your comment than you intended to ;)
- yokohummer7 6y ago> likely in order to have those paths easier to copy and paste, but it does so only if !isatty(). I thought the reason was to aid shell scripts that assumed no whitespaces in file names, wasn't it? Also, I believe I've seen single quotes when using `ls` on a terminal, so the behavior is not only for `!isatty()`.
- vbezhenar 6y agoNo, the reason is to aid human. $ touch 'a b' c d $ ls 'a b' c d Without quotes you would get something like $ ls a b c d and that would be confusing. It wouldn't help shell scripts that assumed no whitespaces in file names anyway. You would get something like "'a", "b'", "c", "d" tokens which make no sense anyway. The only sane way to iterate over files that I'm aware of is to use something like find . -type f -print0 | while read -d '' fname; do echo "fname: '$fname'"; done But that's bashism...
- inopinatus 6y agofind(1) is super useful for any hierarchical or filtering case, and I use it often, but it can also be arcane and unwieldy. In many circumstances your cwd shell iterator can be simpler: for fname in *; do echo "$fname"; done This skips dotfiles, of course, but that’s intentional. The point of dotfiles is to be skipped. With bash or on GNU systems try printf "%q\n" "$fname" instead of echo, to obtain an escaped string.
- vbezhenar 6y agoI thought that it would iterate over space-separated tokens. But it works, some magic here, thanks, that's definitely the proper way to go.
- inopinatus 6y agoIt's because the result of a glob is not immediately subjected to shell expansion.
- adamnemecek 6y agoThat's the problem with passing around unstructured text as opposed to data structures.
- jeppesen-io 6y agoExactly
- avmich 6y agoCan you elaborate please? I'm curious.
- betaby 6y agoBasically most Unix utils outputs free text data and then one expected to parse/filter that free text to pipe to another util. Power shell tries to operate in 'objects' and not free text.
- adamnemecek 6y agoI'm well aware. I think the Unix approch might have worked back in the day, but it's kind of broken these days.
- TheOtherHobbes 6y agoBack in the day it was considered the only option for many applications. It seems very questionable to be living with a severe restriction from the 1970s in 2020. But... it can't be unbroken without breaking backward compatibility in all kinds of legacy code.
- adamnemecek 6y agoThe trick is to create an alternative that can coexist.
- stonogo 6y agoVMS had structured files in the 1970s. Plaintext streams were not considered the only option; this was a deliberate decision by the developers of unix because they regarded it as more flexible.
- netsharc 6y agoThe ls quotes behaviour still pisses me off. One time I let off steam by tweeting about that stupidity and @-ing the maintainer of that package. Of course he defended that decision and moaned about how his work maintaining an open source work is under-appreciated and what he gets is just the abuse. It wasn't a productive conversation, but I realised the more he got criticized the more he was going to defend that that decision wasn't wrong. (It is, though.)
- santoshalper 6y agoWhatever you hoped to achieve, that was really counterproductive. You made someone who volunteers to maintain open source enjoy that just a little less, and accomplished nothing. Even the way you describe the interaction here makes you come across as deeply entitled and unpleasant.
- nl 6y agoI agree with this so much. What an unaware individual to just suddenly realize that calling someone's decisions stupid isn't a great way to get a change happen.
- netsharc 6y agoThis was many years after they added this change, and there was also a lot of debate/abuse when it came (I didn't take part), so I wasn't aiming to change minds. Fine, call me entitled, but stupid technical decisions are still stupid, and people shouldn't just be left to "enjoy" their work after doing something stupid affecting all Linux systems on the entire planet. IMNSHO
- cyphar 6y agoSo you felt the need to rant at someone, knowing that it wouldn't be productive and that they'd experienced abuse over this in the past, but did it anyway? Why do you feel that's an appropriate way to act toward another person? Ignoring that FOSS developers are basically working in the public good (and usually unpaid or underpaid relative to their impact), this is a childish way of acting towards anyone in an even remotely professional environment. The maintainer replying to you was actually a courtesy, but of course you see it in a negative light. If every technical disagreement you have ends with you ranting/abusing the other person, you'll quickly discover you're the only one left in the room.
- mcclung 6y agoI patch that behavior out of the GNU core utils on my Gentoo machines, and set the quoting style properly everywhere else. This is one of the worst behavior changes ever to come out of GNU. It should never have been the default.
- cyphar 6y agoAs someone who actually likes the new behaviour[+] would you mind elaborating why you dislike it so much? The only case I can think of is copying filenames into a GUI or something which doesn't support escaped paths, but the previous behaviour wasn't much better because you couldn't be sure what the full filename was. [+]: Imho it makes it easier to copy-paste paths (sometimes I need to , as well as spot whitespace / strange characters in filenames.
- TheOtherHobbes 6y agoIt's not about liking the behaviour, it's about the usual UNIX nonsense of arbitrary breaking decisions being made on the hoof for whimsical reasons - everywhere. Because no one cares enough to cooperate with others on these things outside of their own little sandpit. Path handing is an important feature. It should be standardised and predictable. It doesn't even matter how it's standardised. What matters is that everyone uses the same system so there are no random surprises or thwarted expectations. In a robust OS everything would be a lot more interoperable and standardised than it is in UNIX. Being able to pipe things around is not the killer feature it might be - not if you have to waste time pre/post translating everything for arbitrary reasons before you can do anything useful with it.
- cyphar 6y agoThe main way you'd be interoperating with ls is through pipelines, and GNU ls doesn't do any pretty-printing of paths when used in a pipeline (besides, arguably the correct way of handling paths that may have newlines or spaces embedded is with `find -print0` but that's a whole different topic). Or is there some other aspect of interoperability you're referring to? But if we're being honest, path handling (as well as structured data) in shell scripts and pipelines has always been of the largest trash-fires in Unix -- while I don't personally like how Powershell solved the problem on Windows at least they tried to solve it.
- tyingq 6y ago"It used to be simpler" I don't know about that. You had the BSD vs System V at the time, and standard commands had different flags, default shells, etc. Then shortly after, all the various RISC Unix flavors. There is, of course, more than Linux these days, but it has so much market share on the server side.
- rodgerd 6y agoAIX vs SunOS vs Solaris vs HP-UX vs Digital Unix vs etc etc. I worked one place that had IRIX, AIX, Solaris, and Tru64 on one site, for a company of only 600 people. Each with different service management, shells, low-level (hardware/firmware), backup, etc all to learn. Old UNIX was a fucking shambles, with companies desperate to break things in small and large ways to try and create lock-in to their flavour.
- sysadmindotfail 6y agoBelieve it or not, places like this still exist. I worked at one (eerily similar story), then moved to a much larger company with even more platforms at one site. It was pretty silly.
- vram22 6y agoA.k.a. "the Unix Wars". https://www.google.com/search?q=the+unix+wars https://www.google.com/search?q=the+unix+wars
- Theodores 6y agoNetworking added to the fun. Token Ring. VAX/VMS networks. Then some normal TCP/IP. Then these new PC things with whatever it was they had, which certainly was not TCP/IP. It could even be Novell. Then the network cards had DIP switches on them and things like thin-net or AUX big network connectors. This made things we now take for granted a highly skilled domain. Getting your IBM box to talk to the Sun workstation on the other side of the room was rocket science. The different dialects of UNIX meant that there were niches for those that knew the difference between how to run a 'ps' command on a Sun box to (say) an IRIX box. Incidentally I am not sure it was about lock in for all companies. IRIX was about doing things in 3D and enabling those applications to work. They had no interest in tinkering with UNIX to make it different for the sake of it. It would be different because they had different hardware and 3D to be standardised. I felt IBM was different just for the sake of it with AIX. The same with Sun except they dominated in some universities so were the de-facto standard for many people coming through education at that time.
- keithnz 6y agoIt's one of the things I like about powershell, rather than piping "text" you pipe objects and it remains independent of the display formatting.
- mturmon 6y agoFTA: > Today in some versions of Linux `ls` puts single quotes around file names which contain white space likely in order to have those paths easier to copy and paste, but it does so only if !isatty(). I almost fainted. I believe this is a misprint: Linux puts the single quotes only if isatty(). The author's tweet, linked nearby, uses different wording and gets it right.
- OJFord 6y agoCan I hijack this to ask how best to 'learn Unix' (or Linux specifically, i confess I'm not actually sure on where the line is, my only non-Linux Unix experience is with Mac)? I'd like to know more about namespaces, file organisation - what 'should' be where - processes and syscalls, etc. (To be honest man pages just don't suit me for deliberate learning, I treat them the same as --help outputs, whereas for an answer to this question, for example, I'd find a textbook more helpful.)
- bostonvaulter2 6y agoIf you want to really dive in you might want to check out linux from scratch. Or possibly arch linux which is a usable bleeding edge distribution that will require you to understand how to do the basics of maintaining your system.
- LeoPanthera 6y agoFor Linux, specifically, I can recommend the O'Reilly book "Linux in a nutshell". Now in its sixth edition, I have been recommending it for years and it's still my go-to book.
- ianmcgowan 6y agoI found installing and using gentoo as my primary desktop to be a great learning experience. Linux From Scratch is often recommended, but is a significant jump higher in complexity.
- vonwoodson 6y agoYou learn it a little at a time as you need it. man pages are great. Did you know that there are different man pages? `man 3’ for example, are the programming man pages, mostly documenting the C libraries. There’s also the `info’ pages (or pinfo if you like vi key bindings). And `apropos’ to help you find help. Anyway, you don’t learn it before you start using it. The more you use the command line, the more you’ll find out that what you’re trying to do is easier or more scriptable there (with personal exceptions, like, I use a GUI file manager). You learn it as you need it.
- barrister 6y agoThis is still the default behavior of `ls` in OpenBSD, very likely all BSD's. I also remember reading one man page on a Linux machine (which presumably is using GNU core utilities) that stated `ls` would always print per line if it was directed to anything other than stdout, e.g. a pipe.
- _kst_ 6y agoI think you mean anything other than a terminal. Whatever its output is directed to, whether it's a pipe, a file, or anything else, is the stdout of the ls process.
- pwdisswordfish0 6y agoDo those BSDs allow newline chars to appear in file names?
- barrister 6y agoYes, and they also don't add single quotes to filenames that contain whitespace characters when displaying them as mentioned in the article.
- pwdisswordfish0 6y agoSo then BSD's behavior isn't very useful then, right? You can't actually rely on 1 filename = 1 line.
- barrister 6y agoNo because in the case of the "ls" command, it replaces non-printable characters with a question mark '?', including newline characters. I believe the actual source code for this behavior can be seen here: https://github.com/openbsd/src/blob/master/bin/ls/utf8.c https://github.com/openbsd/src/blob/master/bin/ls/utf8.c
- pwdisswordfish0 6y ago
- saagarjha 6y agoI'm not really a fan of Plan 9 in general, but I like brining it up when teaching UNIX. Its tools are usually very short, straightforward C.
- dasb 6y agoThe difficulty of learning Linux doesn't lie in what flags you should pass to ls, or other GNU core utils idiosyncracies. The difficulty lies in making sense of the stack of different pieces of software that make up a Linux system, and the terminology we use to communicate about them (e.g. what mounting a filesystem means, which was initially hard for me to understand, coming from Windows).
- deeblering4 6y agoThats a part of it. There is also no one canonical linux stack. Different distros do things differently (sometimes drastically so). E.g. systemctl flags and argument ordering differs from sysv style /etc/init.d/foo commands (as just one example) So to learn “GNU/Linux” really you need to learn several distributions and piece together the common components and why different approaches are better suited to different environments.
- MuffinFlavored 6y ago> There is also no one canonical linux stack. Different distros do things differently (sometimes drastically so). Does this fragmentation help or hurt the ecosystem over the long-term? I personally think it's the #1 reason Linux never stole any sizable market share from Mac OS X/Windows. Hardware support just isn't there. Polish just isn't there. Instead I can name multiple init systems, multiple shells, multiple package managers all fighting for space in our "brains" to be remembered and used. :P
- pixl97 6y agoMost hardware systems are binary drivers that manufacturers don't want to open up in the first place. Think nvidia/broadcom
- atoav 6y agoYeah but put yourself into the shows of a hardware manufacturer: if you'd build a Linux driver, which version do you build against? There is no reference implementation that you might use as a "if it works here it should run on every Linux there is". If we really want good hardware support on Linux we have to at least some reference that manufacturers can use to verify it works
- fivre 6y agoin some ways it was simpler, but in a lot of ways it wasn't. reference materials back in the day were on actual goddamn paper, or in man/info pages, which seem weird and archaic nowadays. sure, maybe the tools were simpler, but they were sitting on top of a lot of complexity that you had to know about: fundamental hardware was more diverse in a way we largely don't have to worry about as often. docs seemingly haven't evolved as much though--i can't really point to an MDN of infrastructure knowledge, even if the old manpages are still around. i'd say that the problem now is less a lack of simplicity and more that there just isn't a whole lot of interest in teaching practical usage and operation of the computer systems that underlie a lot of modern tech: from where i sit, /industry/ (individuals are whole different story) is interested in paying well primarily for new development both applications and infrastructure, but has decided that the quality, improvement, and maintenance are more of an afterthought. it's a microcosm of a larger human tendency to prioritize novelty, perhaps. from where i sit, much of the opportunity for a good (well-paid) position is skewed towards greenfield development: if you can build new applications, or architect new infrastructure, great! industry loves you, and will pay you much dosh to do that. if you want to fix or improve existing things, or ensure that new stuff actually works, you're valued less. QA/SDET as an attractive profession appears to have largely ceased to exist, cause you can just assign that work to the greenfield devs, and they can do it sorta--they'll probably focus more on new development, and the QA will suffer for it, but they'll produce enough testing and validation product to tick a box. on the infrastructure end, architects are in great demand, but once that infrastructure is built, you don't "need" anyone to maintain or improve it, or diagnose issues as they arise. i've spent a lot of my career doing tech support work for infrastructure for odd career path reasons, and capable colleagues or counterparts are few and far between: the people i support, who maintain existing systems, seem to have not the slightest idea how they or their underlying protocols work, and other people in support roles seemingly sit on a binary divide of incredibly capable technical diagnosticians and troubleshooters and people who have been shunted into the role for lack of ability to perform in greenfield work, but can't perform in other roles either. management has often asked me why they can't find people who are good at maintaining infrastructure or who are able to diagnose and address emergent problems, but the root of this seems quite obvious. it's not that the systems have grown too complex: they've always been complex, and while the locus of that complexity has perhaps shifted somewhat, i don't think our forebears were operating in some simple, easily-understood world that has ceased to exist. the problem is that nobody wants to pay anywhere near for an advanced brownfield skillset compared to what they'll pay for adjacent skillsets in greenfield work. the smart and capable people recognize this and move towards greenfield work even if they don't like it as much, and brownfield work is left with a sea of people who couldn't transition and can't deal with the complexity because they never could. the complexity or difficulty ain't new, but all the people that could deal with it were driven out.
- pmoriarty 6y agoSome complexities added since the early days of Linux: - systemd - dbus - disk encryption - cgroups Not even counting things that aren't technically part of Linux but are still quite common, like: - configuration management tools (ansible, puppet, salt, etc) - docker - kubernetes - every language's reinvention of 'make' and their own package managers
- m_mueller 6y ago- every language's reinvention[s] of 'make' and their own package managers .. you forgot the plural there, fixed it for you.
- pjmlp 6y ago> - every language's reinvention of 'make' and their own package managers Because those languages have a life outside Linux distributions, and even those cannot agree which package manager one is supposed to use nor developer specific packages that don't infect all users on the same machine. And make is even outdated for modern C compiler toolchains with support for incremental compilation and linking. That is why everyone that cares about build performance is on ninja.
- lima 6y agosystemd and dbus aren't Linux features but userland software. There are many Linux distributions that include neither of them, like Android and ChromeOS.
- segfaultbuserr 6y agoThe official conclusion by GNU is that "ls" has already been a lost battle back in Unix's days when decisions were made to change its behavior between single-column and multi-column modes according to whether the output is a terminal or not, and since then more and more features have been progressively introduced. The mere existence of "ls" actually violates the GNU Coding Standard [0]. > Please don’t make the behavior of a utility depend on the name used to invoke it [...] Instead, use a run time option or a compilation switch or both to select among the alternate behaviors [...] Likewise, please don’t make the behavior of a command-line program depend on the type of output device [...] But, > Compatibility requires certain programs to depend on the type of output device. It would be disastrous if ls or sh did not do so in the way all users expect. In some of these cases, we supplement the program with a preferred alternate version that does not depend on the output device type. For example, we provide a dir program much like ls except that its default output format is always multi-column format. As a result, GNU provides a "dir" command since the early 90s, which is meant to be a consistent alternative to "ls". Yes, unlike what the myth said, it was not here to help CP/M or DOS users. The issue of "ls" has been described in this StackExchange answer by Eliah Kagan [0], > When its standard output is a terminal, ls lists filenames in vertically sorted columns (like ls -C). When its standard output is not a terminal (for example, a file or pipe), ls lists filenames one per line (like ls -1). When its standard output is a terminal and a filename to be listed contains control characters, ls prints ? instead of each control character (like ls -q). When its standard output is not a terminal, ls prints control characters as-is (like ls --show-control-chars). On the other hand, > Whether or not its standard output is a terminal, dir lists filenames in vertically sorted columns (like ls -C). Whether or not its standard output is a terminal, when dir encounters a control character or any other character that would be interpreted specially if entered into a shell, it prints backslash sequences for the characters. This includes even relatively common characters like spaces. For example, dir will list an entry called Documents backups as Documents\ backups. This is like ls -b. [0] https://www.gnu.org/prep/standards/standards.html#User-Interfaces https://www.gnu.org/prep/standards/standards.html#User-Inter... [1] https://askubuntu.com/questions/103913/difference-between-dir-and-ls-terminal-commands https://askubuntu.com/questions/103913/difference-between-di...
- coolgeek 6y ago
- teekert 6y ago"It used to be simpler" I hear that more and more, often followed by: "In the 90's..." But then I compare the steps it used to take to setup my NextCloud install, including altering php.ini, installing and configuring mariadb, php-fpm, getting a free start-ssl cert, etc. to my current docker-compose.yaml and I think: No. Edit I also think we forgot all about how we manually did things, like mounting USD drives with kernel 2.4. I love how Linux is today.
- DarkWiiPlayer 6y agoNothing has become easier; everything is becoming more difficult as technology advances and we've just learned to automate the complexity. But the automation comes with the downside that we're forgetting how to build simple systems at all. Put differently: Try explaining your docker compose setup to a beginner that only knows how to use normal desktop software.
- teekert 6y agoI often have to explain Docker (or containers in general) to non-tech people. I tell them I take an entire PC, with all software on it and make it a single function package that I can give to anyone and they can run it anywhere. Almost nobody understands the minutiae of their OS or their CPU. We may understand it a bit more but a Dockerfile or a docker-compose file simply says, "take a fresh full Linux install, install some stuff and run it." It a mind numbing number of abstractions but one can understand the high level if one understands what an OS (or a computer) is. It IS easier, but I agree it's much more complex under the hood. I don't think that has to have downsides. A human can only comprehend so much, we must build on the skill-sets of our fellow humans.
- Un1corn 6y agoAnd what you answer when asked what is the difference between a container and a virtual machine? Because calling it a lightweight VM is obviously a lie and it costed me too much time at work
- ggm 6y agoIsatty() is powerful. Powerful isn't always easy to work with. But, sometimes we want powerful. Like, knowing it's a tty so not echoing password. Or, Pike's plumber. Or maybe even what ls does? I also got confused when it converted to more complex behaviour, but not everything about it is bad.
- foresto 6y agoDoes anyone else remember the learn(1) program by Kernighan & Lesk? That's how I got started with Unix, and I sincerely think it was simpler back then. https://virtuallyfun.com/wordpress/wp-content/uploads/2017/12/whfUb.pdf https://virtuallyfun.com/wordpress/wp-content/uploads/2017/1... https://github.com/dspinellis/unix-history-repo/tree/BSD-4_1c_2/usr/src/usr.bin/learn https://github.com/dspinellis/unix-history-repo/tree/BSD-4_1...
- jfax 6y agoGNU isn't Unix, for one thing. The GNU project intentionally flaunts historic behaviour in favour of pragmatism. I also find this line maddening: >in some versions of Linux ls Do you mean "in some configurations of GNU ls"? I wonder if educating people about computers these days, might have something to do with intentionally vague and gatekeeping language.
- bonoboTP 6y agoPeople dislike rms because he's seen as a weirdo, and too political, so GNU is hardly mentioned anywhere outside itself and outside FSF-allied ethical/political hacker circles.
- srtjstjsj 6y agoHuh? GNU is hardly mentioned because Hurd was never finished. "Linux" is the name for (obviously) all the Linux based systems if you don't have a specific distro mind. No one talks about an "Emacs" system or a "Firefox system" either. They talk about the relevant products where the label is disambiguating, like GNU Emacs.
- jfax 6y agoThe article is talking about GNU coreutils. If this article was talking about how Docker behaves, I'd hope the article would refer to it as "Docker" rather than "Linux".
- sdevonoes 6y agoIt was simpler to teach Unix because what we expected from Unix back then was simpler to what we expect from Unix these days. Back then we expected programs like: `telnet`. A program that can be developed by one person (or a few at most) and requires just a few tools to be developed (gcc, gdb, vim, make). Nowadays we expected programs like: `Twitter`. A program that cannot be developed by one person but hundreds (don't ask me why, I don't get it either), and requires hundreds of tools to be developed (html, css, sass, ruby, ror, ansible, git, javascript, babel, docker, docker-compose, yaml, json, make, vscode, kubernetes(?), mysql, nginx, ...).
- cies 6y agoI find comparing telnet to Twitter disingenuous. Back in the days big banks/insurance had big application, developed by big teams. I'm not saying that what point out is not true, but telnet is prolly best compared to openssh, which is seems to be developed by 2[0] devs, and waaaaay more complex. Both are tools, both may be used for various over-the-network interactions with OSes. > don't ask me why, I don't get it either It's an ad network. It has to deal with compliance in many regions. There are mobile apps. [0]: https://github.com/openssh/openssh-portable/graphs/contributors https://github.com/openssh/openssh-portable/graphs/contribut...
- sdevonoes 6y agoRight. I wanted to focus though in the most "demanded" programs back then and now. I would say back then, the most demanded programs were command line programs (small utilities that do one thing well). Nowadays the most "demanded" programs are programs that want to attract as many users as possible (and so, they have to "scale", they have to be "distributed"), programs that need to grow as much as possible (the bigger the program the bigger the company the bigger the profit), programs that need to be rewritten in new tech stacks every 3 or so years. I guess the mentality has changed along the way as well.
- cies 6y agoDemanded is a weird term here. No one demands "ls", not the banks/insurance companies back then, not the Twitter users today. It's a tool, not an application. You dont buy your computer (or cloud VM) to run "ls". Back in the days consumers were not in the software picture so much. Maybe some pre-PCs were catering for home users, maybe some BBS to dial into, but that was it. This has changed. And this is why we have Twitter. > programs that need to be rewritten in new tech stacks every 3 or so years. Where do you get this from? I dont see such trend at all. Okay, some library needs to be replaced, and we share more code nowadays (the stacks are deeper, but what would you expect? more cycles to burn and more ecosystems). But no-one factors in the cost of constant rewriting to stay up to date with the hippest stacks.
- pjmlp 6y agoAnd he didn't even went through the endless list of ls options, so much for each program does one thing well cargo cult.
- swiley 6y agoWhat is Unix? Because the actual Bell-Labs Unix didn't sound easy to install or get ahold of. Minix is trivially easy to work with but that's not Unix, just something similar. Linux (with GNU or busybox) is super easy to find and often easier to run (both on qemu and on modern computers you can just stick the kernel somewhere the [virtual] machine can read it and then just power on.) Once you do that all the code is there. It's not unix though, it's not really even POSIX, it's just what everyone is currently doing with computers (but you really need terraform, docker, and node.js to have the complete picture.)
- walrus01 6y agoI honestly don't understand the nostalgia for the 1990s vendor-specific weird ass versions of Unix/similar stuff. All mutually different and incompatible and vendor-proprietary between IRIX, SunOS, HP/UX, ULTRIX, etc. Linux, FreeBSD, OpenBSD and so forth are in a much better place now.
- pjmlp 6y agoRed-Hat RPM, SusE RPM, DEB, tar.gz, Flatpak, Snap, X11, Wayland,.... Just another flavour of vendor-specific weird ass versions of Unix.
- walrus01 6y agoyeah, but even if I need to, I can easily run CentOS as a guest VM on xen, on a debian dom0. not an uncommon way to run FreePBX for VoIP stuff which is based on centos.
- pjmlp 6y agoA kludge that doesn't change the actual reality.
- walrus01 6y agoI was also referring to the general commonality of software, even it might be packaged differently. If I do a yum install htop on a centos system I'm going to get pretty much the same thing as apt install htop on a debian or ubuntu derived system.
- pjmlp 6y agoExcept if the said software tries to access folders or daemons that are distribution specific.
- amadeuspagel 6y agoI'm on Ubuntu 18.04 and ls doesn't output files in a multi-column format.
- pelasaco 6y agoif you mean "teach Unix" as "userland basic commands", I'm not sure, maybe, but Unix in general (including all flavors), device driver development, troubleshooting, no. If you are talking about end users being able to use Unix as their main desktop OS, the answer is "hell, no" too. I'm working with BSD and Linux since the 90s, then around 2000-2005, I had to manage some IRIX, HP-UX and AIXs and they were all different, with different set of parameters for common tools or other specific management tools. I spent years to master shell scripting, hardening and troubleshooting on HP-UX and AIX.
- chias 6y agoFor what it's worth, backing your statement of "it used to be simpler" with an example of how easy it used to be to get the wrong answer does not make for a good argument. The example provided: "how many files in a directory? just pipe `ls` to `wc` and because `ls` output is one file per line, you've got your answer!" Except newlines are totally valid characters to have in filenames. Try it: echo "foo" > 'test file.txt' ls | less ls | wc -l Pipe the output of `ls` to `less` to see the old-style one-line-per-file output to see what you get. Run `ls | wc -l` and see the wrong answer pop up.
- FandangoRanger 6y agoGNU is not Unix, the GNU utilities have all expanded drastically over the decades. Gnu ls has more LoC than the old Unix V6 kernel now. BSD, on the other hand, IS Unix, and its utilities remain much smaller and leaner than the Linux ones.
- profilerc 6y agomaybe you can teach alias ls="ls -1"