Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
should we re-think the approach to multiple platforms (was: 'Unix' misused throughout the material) #798
In a way this is related to #779.
Bourne Again SHell (BASH) is the shell used for this course, which is entitled "The Unix Shell". This seems fine to me as
However, the description of BASH as "The Unix Shell" has led to the conflation of the shell (program) and the operating system, which non-Unix OSs frequently described as Unix (esp. with regard to Linux, and there are legal reasons for not describing or implying Linux is, or derived from, a Unix) and the reference to Unix as the OS throughout the material when, most of the time, it means Unix-like.
There are numerous, and increasing, places scattered throughout the material where the differences between Unix (e.g. Mac OSX/BSD), Linux and Windows are noted as well as many gitlab issues related to the same. I wonder if it would be better to simply note that there are differences (without going into too much detail) somewhere and then audit the rest of the material to remove all the "it's slightly different on platform x from what is here" notes? (Perhaps replacing examples that are very different with ones that are the same - e.g., I think the '-F' flag was, looking at the number of issues related to just that, a poor choice to introduce flags to ls in lesson 1 (see #590 #644 for example) and '-l', which is works on all 3 platforms and is not the default alias for 'ls' on any, would have been a better but 'less clever looking' introduction for the novice.
I think I'd like to start a discussion along the lines of "should we re-think the approach to multiple platforms" and look at if we can replace existing examples etc. with ones that work on all 3 major platforms without any major changes (e.g. just using '\' instead of '/' on Windows.
This would require a through going through of all the existing material to achieve, but should result in less GitHub issues, less confusing, simpler and easier to maintain material.
What do people think?
Thanks for raising this issue.
For the purposes of a novice learning to use a tool (or indeed as an experienced user using a tool), I think any details about the differences and similarities between the terms UNIX/Unix/Linux/Unix-like are irrelevant. This isn't a history lesson after all! That's not to say that we shouldn't use the terms correctly in the material: I think we should.
I would be in favour of adding to the
I'm not in favour of replacing the example with
Making the lesson as platform-agnostic as possible is a worthy aim.
Hi @gcapes this is my point, terminology is being confusingly (and incorrectly) used and notes about the differences are creeping in all over the lessons.
Regards the intricacies of the UNIX/Unix/Linux/*nix/Unix-like, I agree completely. I think the solution is to avoid using those terms unnecessarily, particularly when they can be replaced with a reference to the Unix Shell (which is, after all, what the course is about). For example "a program to access a UNIX server" is inaccurate in several ways and would be far better phrased as "a program to access a Unix Shell on a server". The nature of the server is entirely irreverential - a BASH environment on a Windows server accessed via RDP would be entirely viable for this course! I'll stick in a pull request for this.
If we can agree an approach then this issue to be used to go through the material to implement it with what we have, and be referenced as the definitive discussion when it comes up again (as it inevitably will) in relation to a specific instance of platform-specific behaviour. The
I.e. I don't want to get bogged down in discussing specific instances, I'd like to have a discussion and reach a conclusion that the problems are going to be addressed and the general principals are going to be abided by in relation to this issue.
I'll repeat here my correction (#590 (comment)) to the comment below :
This isn't the case for me testing just now with Git Bash.
While it's a good aim to avoid examples which are very different on a particular OS, sometimes it won't be possible, and I think we have to accept that. The lesson is teaching the Unix Shell, and you're never giong to get that on Windows.
So the question remains: is it a problem having notes to explain what to expect on your particular OS if it's different to the lesson material? My thoughts (looking forward to hearing from others on this too):
Can we address both by moving some of it into callout boxes?