What's your opinion on Linux?

If it's not ZDoom, it goes here.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49056
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: What's your opinion on Linux?

Post by Graf Zahl »

So you are listing a 10+ year old brainfart by a single company as an example?
Such a thing is very much the exception for Windows software.
User avatar
Rachael
Posts: 13531
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: What's your opinion on Linux?

Post by Rachael »

Blizzard did that with WoW when Windows Vista first released - since WoW wrote to its own folder and Vista didn't support that in "/Program Files/" it caused WoW to stop working properly. That's since been corrected, obviously, using manifests and virtual filesystem compatibility, but in truth Windows Vista really did break a lot of things with its new security policy. Growing pains, as they say - we're all better for it now, but it was a very interesting time for some software companies that did not follow Microsoft's advice at the time to NOT write to their own folders and to use the operating system provided App Data folders, instead.
dpJudas
 
 
Posts: 3037
Joined: Sat May 28, 2016 1:01 pm

Re: What's your opinion on Linux?

Post by dpJudas »

So you're using a (relatively new) compiler backend lib, something very few applications have need of, and using it a context it hasn't been in before (a game engine). I'd not be surprised to see an issue pop up. It's certainly unfortunate that there's a bug, but you're bound to find some sooner or later when trying things others haven't.
According to wikipedia LLVM was released in 2003 (15 years ago). Its most famous compiler front end, clang, was initially released in 2007 (11 years ago). I'd say it is pretty well established by now.
Have you reported that issue to the driver and/or LLVM devs?
No, I didn't find the time to do so. Partly because I had already decided to ditch it for a different reason: the LLVM package on some popular Linux distributions generated a broken CMake script that made it very difficult to build QZDoom from source. There were too many problems with it in so many ways its pros could no longer justify the cons. A real shame too, ZScript could really have used a quality JIT compiler back end.
User avatar
Chris
Posts: 2940
Joined: Thu Jul 17, 2003 12:07 am
Graphics Processor: ATI/AMD with Vulkan/Metal Support

Re: What's your opinion on Linux?

Post by Chris »

Graf Zahl wrote:So you are listing a 10+ year old brainfart by a single company as an example?
Such a thing is very much the exception for Windows software.
I wouldn't call it a brainfart. It makes sense to me that you can't expect developers to officially support a game on an OS they didn't test it on, especially if that OS didn't exist when they made the game. It's Microsoft's call to take backwards compatibility seriously, and IMO it's unfair to expect the developers to support an already released game on every new OS version in perpetuity. Obviously it's nice if they can keep up and test/support more after the fact, but I can't blame them if they don't officially.
Cacodemon345
Posts: 419
Joined: Fri Dec 22, 2017 1:53 am
Graphics Processor: ATI/AMD (Modern GZDoom)
Contact:

Re: What's your opinion on Linux?

Post by Cacodemon345 »

Another problem that I've seen in Linux is that you need to install development headers for libraries when you want to compile an program, which will in turn require installing the libraries themselves. This unfortunately reveals an issue, where anything that's not statically linked program will fail to function if the libraries aren't installed in lib folder. It is better on Windows as the programs can load DLLs in the folder that they run on and therefore, can ship with the required DLLs themselves, but in Linux those Linux programs can't ship with the required SOs with their zips, because they're always set to load from SOs stored in a lib folder or any kind of folder in LD_LIBRARY_PATH environment variable and even then you will have to resort to passing over that customized variable in a terminal, which is daunting to do everytime you need to launch that said program depending on the libraries shipped with itself, but not available in that aforementioned environment variables. This problem could be solved if the Linux programs was allowed to load SOs in the folder that they run on or if they were shipped as statically linked programs.

Speaking of backward compatibility, it is even worse on Linux as far as I've seen. Anything written using a older C++ standard can't be compiled on Linux. Try to compile a Linux program that's about 3-5 years old, and you will quickly find them to be uncompilable.
Last edited by Cacodemon345 on Tue Jun 12, 2018 5:54 am, edited 1 time in total.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49056
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: What's your opinion on Linux?

Post by Graf Zahl »

Cacodemon345 wrote:This problem couls be solved if the Linux programs was allowed to load SOs in the folder that they run on or if they were shipped as statically linked programs.

Fun stuff: Many years ago I read someone making the same suggestion on a Linux site. Guess how it went: Endless tirades about how this was wrong, Linux was so smart and the current implementation was not to be touched, blah, blah, blah. Ands if you think about it, it's really the ONLY thing about Windows where it handles DLLs differently than Linux handles SOs. And it makes all the difference between a system that can be used sanely and one that suffers from the worst cases of dependency hell.

Of course, having to install the SO just to get development headers is just WTF in my book. If I had to work with something like that I'd go crazy.
User avatar
Marisa the Magician
Posts: 3886
Joined: Fri Feb 08, 2008 9:15 am
Preferred Pronouns: She/Her
Operating System Version (Optional): (btw I use) Arch
Graphics Processor: nVidia with Vulkan support
Location: Vigo, Galicia
Contact:

Re: What's your opinion on Linux?

Post by Marisa the Magician »

I don't see how that's so hard, you would just have to append "./" to LD_LIBRARY_PATH and that's it.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49056
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: What's your opinion on Linux?

Post by Graf Zahl »

No, you's have to prepend it, otherwise it may pick some unfitting system version instead of the local one. But that's only half the story because it's not the system default so without some hackery no app can pick up on it.
User avatar
Chris
Posts: 2940
Joined: Thu Jul 17, 2003 12:07 am
Graphics Processor: ATI/AMD with Vulkan/Metal Support

Re: What's your opinion on Linux?

Post by Chris »

You can link the executable with

Code: Select all

-Wl,-rpath='$ORIGIN'
and it'll consider the executable's path for finding libraries in addition to the system paths. Note that the $ must survive (escaped, single-quoted, whatever) and not let the shell or whatever try to expand it as an ORIGIN environment variable. You can also use relative paths (e.g. '$ORIGIN/lib64' for it search the lib64 sub-directory of the executable's path). See:

https://enchildfone.wordpress.com/2010/ ... -binaries/

Note that that page goes into silly workarounds for the $ expansion issue; however it's quite simple with CMake:

Code: Select all

set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
...
set_target_properties(target_name PROPERTIES INSTALL_RPATH "$ORIGIN")
This applies to linked libraries, as well as those loaded using dlopen.
Cacodemon345 wrote:Speaking of backward compatibility, it is even worse on Linux as far as I've seen. Anything written using a older C++ standard can't be compiled on Linux. Try to compile a Linux program that's about 3-5 years old, and you will quickly find them to be uncompilable.
What? GCC specifically has switches to enable older C++ standards. Incompatibilities do occasionally arise, but such things happen with other OSs too. Language standards aren't always backwards compatible, and often new features will be added as compiler extensions first before the standard ratifies them, sometimes with different or slightly altered behavior based on what's been observed from use of those extensions (see the for loop variable scope issue that plagued MSVC for a while; GCC and C99 had a bit of fun with 'extern inline's behavior). GCC is pretty good about trying to keep everything working as expected with its "gnu"/"gnu++" standards modes, but there are compile options to deal with incompatible behaviors that have been used.
Cacodemon345
Posts: 419
Joined: Fri Dec 22, 2017 1:53 am
Graphics Processor: ATI/AMD (Modern GZDoom)
Contact:

Re: What's your opinion on Linux?

Post by Cacodemon345 »

Chris wrote:You can link the executable with

Code: Select all

-Wl,-rpath='$ORIGIN'
and it'll consider the executable's path for finding libraries in addition to the system paths. Note that the $ must survive (escaped, single-quoted, whatever) and not let the shell or whatever try to expand it as an ORIGIN environment variable. You can also use relative paths (e.g. '$ORIGIN/lib64' for it search the lib64 sub-directory of the executable's path). See:

https://enchildfone.wordpress.com/2010/ ... -binaries/

Note that that page goes into silly workarounds for the $ expansion issue; however it's quite simple with CMake:

Code: Select all

set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
...
set_target_properties(target_name PROPERTIES INSTALL_RPATH "$ORIGIN")
This applies to linked libraries, as well as those loaded using dlopen.
Not worth the effort. By the time you actually manage to compile that said program by yourself, you will already have gotten the required libraries by yourself. So the problem you're trying to slove will already be solved, which is why I haven't seen a Linux program actually do that. It will actually only invite more trouble when you try to make it usable in all Linux distros, because of library version differences. So the developers will end up using .deb (or whatever the software package extension name is.)
Chris wrote:What? GCC specifically has switches to enable older C++ standards. Incompatibilities do occasionally arise, but such things happen with other OSs too. Language standards aren't always backwards compatible, and often new features will be added as compiler extensions first before the standard ratifies them, sometimes with different or slightly altered behavior based on what's been observed from use of those extensions (see the for loop variable scope issue that plagued MSVC for a while; GCC and C99 had a bit of fun with 'extern inline's behavior). GCC is pretty good about trying to keep everything working as expected with its "gnu"/"gnu++" standards modes, but there are compile options to deal with incompatible behaviors that have been used.
If that said program is depending on a older version of a library that's no longer available, you're out of luck. The workaround you posted would work in such situations, but then there will be more trouble due to mismatches and more broken behaviour. I'm yet to see someone actually managing to run something like Vanilla Linux Doom or any kind of an ancient Linux game on a modern Linux Distro; Windows has far better compatibility than Linux, althrough it also sucks ass.
User avatar
Chris
Posts: 2940
Joined: Thu Jul 17, 2003 12:07 am
Graphics Processor: ATI/AMD with Vulkan/Metal Support

Re: What's your opinion on Linux?

Post by Chris »

Cacodemon345 wrote:Not worth the effort. By the time you actually manage to compile that said program by yourself, you will already have gotten the required libraries by yourself.
And if the program is already compiled for you, it'll be set up correctly to work as intended, making this a moot point. Normal Linux apps keep their executables and support shared libraries separate (they're called shared libraries for a reason). If you're making a program that's intended to be self-contained package, the rpath setting will work to create said executable.
If that said program is depending on a older version of a library that's no longer available, you're out of luck.
And what version of libstdc++ do you need that's hard to get? If you're dealing with a prebuilt app, it should contain the libraries it needs, including the C/C++ runtimes, just like on Windows. If you need to build the app, the standard library names don't matter as they're automatically handled when linking.

Considering I can still play both UT2004 (released as prebuilt binaries same day as Windows) and Doom3 without any issues, this isn't nearly the issue you make it out to be. Incidentally, UT2004 actually relies on the system's libstdc++, which is still readily available (and compatible) nearly 15 years on.
User avatar
Caligari87
Admin
Posts: 6174
Joined: Thu Feb 26, 2004 3:02 pm
Preferred Pronouns: He/Him
Contact:

Re: What's your opinion on Linux?

Post by Caligari87 »

Browsing this thread, I'm reminded of an internet adage:

If you ask a question about Linux, you'll be met with disdain and the directive to figure it out by yourself. If you criticize Linux instead, the nerds will fall all over themselves explaining what you're doing wrong, and how do do it right.

8-)
User avatar
wildweasel
Posts: 21706
Joined: Tue Jul 15, 2003 7:33 pm
Preferred Pronouns: He/Him
Operating System Version (Optional): A lot of them
Graphics Processor: Not Listed
Contact:

Re: What's your opinion on Linux?

Post by wildweasel »

Caligari87 wrote:Browsing this thread, I'm reminded of an internet adage:

If you ask a question about Linux, you'll be met with disdain and the directive to figure it out by yourself. If you criticize Linux instead, the nerds will fall all over themselves explaining what you're doing wrong, and how do do it right.

8-)
I once heard it put as, "If you ever want full instructions on how to do something in Linux, go into any Linux user group and tell them, 'Windows is better, because Linux can't [insert problem here].'"
User avatar
Chris
Posts: 2940
Joined: Thu Jul 17, 2003 12:07 am
Graphics Processor: ATI/AMD with Vulkan/Metal Support

Re: What's your opinion on Linux?

Post by Chris »

Caligari87 wrote:Browsing this thread, I'm reminded of an internet adage:

If you ask a question about Linux, you'll be met with disdain and the directive to figure it out by yourself. If you criticize Linux instead, the nerds will fall all over themselves explaining what you're doing wrong, and how do do it right.

8-)
wildweasel wrote:I once heard it put as, "If you ever want full instructions on how to do something in Linux, go into any Linux user group and tell them, 'Windows is better, because Linux can't [insert problem here].'"
I think this goes for any 'competing' platforms or such. A console user asking a question about using Windows, and they'll be met with disdain (console peasant doesn't know how to use a PC, and telling them all about how PC gaming is superior), or full instructions (a PC can't be a good couch-gaming system, cue Windows users telling them how to set up a system connected to the TV with USB or bluetooth controllers).

For me, I just don't like seeing misinformation spread. If you prefer to use Windows for whatever reason, that's your prerogative. But say something demonstrably false (Linux can't handle old C++, programs can't use bundled libraries in the same directory without fiddling with LD_LIBRARY_PATH), I don't see what's wrong in correcting that. If it's something they're honestly interested in, they learn something new, if not, they won't care regardless but hopefully other people reading don't leave with incorrect information.

Often I try to avoid these threads because they inevitably devolve into platform bashing and don't seem very productive, but sometimes I peek and can't keep myself from responding to someone.
User avatar
Rachael
Posts: 13531
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: What's your opinion on Linux?

Post by Rachael »

And with this I feel like this topic has run its course.

Everyone definitely does have their favorite OS, but having contention over misinformation was never the real goal of allowing this thread to go on as long as it has.

So for anyone wanting more information on this topic - or for those wondering why this thread got locked - DO YOUR RESEARCH!

You better damn well believe that Linux would NEVER have reached what popularity that it has, being a recognizable name, if it were such a terrible OS. You would never have heard about it more than you do FreeBSD, BeOS, and others. Let's not forget, it's one of the most prolific OS's on the planet - even competing with Windows on that title. The Linux kernel is what is used for Android phones - so you may have used it unwittingly, anyhow.

No OS is ever perfect, and Linux has numerous problems of its own - as do other OS's (Windows and Mac for sure have a whole SLEW of problems! - it's really just a matter of being used to it and knowing how to deal with them). But it's a perfectly viable option for someone looking for an alternative to Windows - and these days, we really do need one. Just as we did when Linux was first gaining popularity in the 90's.
Locked

Return to “Off-Topic”