Well it has been a while since the last good ol OS flame war round 'ere.
Saying elementaryOS is linux is not entirely accurate... it runs on a linux kernel, but what you are comparing is the desktop environment (Window Manager etc)... not 'linux'. Its like saying Vista is better than XP because its got Aero theme?
The linux core/standard does not have any WM or desktop environment, just X. I wonder if you installed and used a 'proper distro' like Arch (subjective of course 🤣) in the proper flexible linux fashion (not a dumbed down GUI fashion), would your friends have the same friendly user experience as they do with elementaryOS? o.0.
So no, it's not linux but a customised ecosystem flavour of linux complete with its own inconsistencies and incompatibility and has already tunnelled you into using it's package manager and ethos for usability... probably incompatible with other 'linux' software out there which cannot get deployed to you because its not in a compatible package for your distro or you don't have the correct gui toolkit or runtime for general software to work. Of course you can install it, but it would be nice to not have to have 200 different runtimes installed from all the programs over time you have had to fudge in order to work on your particular distro and setup. Remember, linux is a kernel... a distro is essentially:
linux kernel + argument over something like systemd/initd + package manager + desktop environment + selected applications + selected preinstalled packages
...each distro owner adding their own take to it... basically like macOS and Windows... its just another OS that does everything they do its own way with their own ecosystem... there is no standard linux GUI (outside of fugly dated X)...distros don't even make WM's anymore, just syphon off someone else’s which they like the look of, or can insert the phrase 'lightweight' into the feature list.
Development for 'C' console programs on linux and windows isn't that different for anyone who's familiar with 'C' and a keyboard (quite shocking how many developers these days don't even know how to use pipes correctly). Visual studio installs cli tools so replace 'gcc' with 'cl' and 'ar' with 'link' and rewrite you batch build scripts as bash scripts and wrap a few compiler nuances in preprocessor directives... until you want a gui or use anything outside of the POSIX standard say. Then you have to decide on your dependencies and build and deploy and maintain them. .Net covers pretty much all this without even having to explicitly include it... it's essentially a runtime environment so consider it most stuff you want to do in one big lib which is authored by the authors of your OS and you don't have to worry about dependencies or other issues that you get when using multiple third party libs from multiple third party vendors. .Net is huge, cannot emphasize enough, and no equiv in nix development (no mono doesn't count. Not feature complete).... .Net does so much... json, xml, drawing, string parsing etc etc...
For deployment, on linux you are screwed... for anything GUI, you need to choose a toolkit to use... not just for development, but deployment then you also have to identify which linux distros you want to support because I can guarantee only a handful of people will be able to build the sources if they come across a problem, so essentially you are having to maintain more environments (all of which are 'linux') and ecosystems for less gain since you are doing more development effort and only reaching a limited audience... and not even all 'linux' users.... sigh... that doesn't pay the bills.
Basically. Linux is not very development friendly for wirting programs for non developers (aka end users) and requires orders of magnitude more development time and effort.
too much customisation, too many avenues that can be taken at any one point... too many vendors pushing their ecosystems (all open, but its still an ecosystem with its own standards)... you'll find no one package manager is enough, or find yourself having to install a host of compilers and dependencies (what package managers do for you)... then all the different gui kits qt, gtk blah blah...more runtimes for each new package you download inside or outside of your host of package managers running...blah blah etc. Yes there is an 'open' alternative to most programs, but they are usually a few features behind mainstream and not always entirely compatible... gimp is great, but unless the wider world uses OpenOffice, most emails would consist of... "ah sorry can't open your .doc, some of the textboxes are in the wrong place, formatting screwed...can you send it me again with like Office95 compatibility or something". Plus there would be no one directly addressing your issues should any arise (better hope someone else has had the same problem and is willing to talk to you about it), or you are in bed with a certain distro (like RH or Conical) which basically means you can get support, but nothing in life is free, then you are back in the MS 'world not free' boat but with a platform which has minimal market share in comparison... essentially you are at the mercy of what packages the author of the program you want to use, decides to use to write it....and there are sooo many different solutions for all kinds of things...many good, even more bad...all polluting your OS... that you have absolute control over... yes this happens in Windows and OSX, but their development environments are more streamlined so this is far less of an issue with the OS functionality removing this burden from the user.
I love linux, but all the reasons I love it are probably all the reasons non power users don't. Various distros have attempted to address this, Ubuntu I think was one that really got the wider publics attention (personally I hate), and others followed each adding their own little renditions, colours, gui's... deps and ecosystems. All calling themselves linux, but not all compatible with each other without fiddling. Of course the ability to be able to fiddle, outweighs the importance of not having to fiddle in the first place o.0. Linux is defo my goto OS when I just want to spend all evening fecking around attempting to build some program I like the look of. Mahoosive satisfaction when its working, then you look at your watch and realise its dark outside and when you started it was daylight.
I can't see most games using much of what the OS provides being that different across platforms (nix/Windows)? They usually fire up their engines and are essentially an application layer to them, so the compatibility would probably be entirely dictated by compatibility of the engines used? ... unfortunately for a lot, directX isn't native on Linux...non native stuff 'tends' to be more of a headache to support since you are at the mercy of the compatibility layer and how well that works 🙁. Again not a great situation for development house...more work required, less returns.
There are no linux games because there isn't enough of a market for it surely? Maybe its this deployment saga again... how do you push your game to the widest audience on the destination platform? More avenues == more support tickets later.
Why does directX exist? OpenGL ES is bar none, the most widely deployed and used API, DirectX is only available on windows desktop PC's and Xbox? There is no equivalent for windows phones? or is there? even if there is windows devices only make up 1.1%, compared to Android ~80%? Yet I think unless you developing for an phone/tablet Game, if you said you didn't know any DirectX you would probably go straight to the bottom of the pile when applying for a games programming job?
Windows pwns gaming on desktop PC's! no ifs or buts... the stats, repeated failed attempts to get linux gaming like windows, say it all, and have done for years.
Linux IS a gaming platform though... more android devices than anything else so more games running on them... so thats not the problem? Just for linux on desktop PC. See deployment sagas above.
And a word about OSX, well last time I checked it was SuS (single unix spec) compliant...so it is Unix (ya'know... the proper *nix) essentially with Apples GUI/ecosystem built on top. There is in fact an OS called Darwin which Apple released that contains a lot of the macOS/OSX code which Apple had to release to comply with SuS (iirc).... hence the existence of Darwin... think of it like Apples 'distro' for Unix...free of course...probably does feckall, but at least you can fiddle.... how very unapplelike o.0.
Funny how you don't get OSX users calling themselves Unix users, but 'any old distro' user will say they use Linux 😉