Anyway, I see your point but I see that it's a pure theorical point that is simply not pragmatic AND isn't even realist or practical. Because only if there was a common architecture for all computers that what you say would be true. As it's not the case, then it's not.
Quote
I understand that this might not always get the results you want, but it's still the right way.
That assertion makes no sense. We might want to get a specific result here (and games are in this specific case). So it's not "the right way".
Quote
Just like returning the wallet you found might not get you a reward, and you might want to just keep the money, returning it is the right thing to do.
There is no logic in this example.
Quote
I understand that this might not always get the results you want, but it's still the right way. Just like returning the wallet you found might not get you a reward, and you might want to just keep the money, returning it is the right thing to do.
Perhaps it's my military background, but I always attempt to do things the right way first (I've seen what happens what convenience is chosen over correctness, it never ends well). This is why I feel dirty when I have to bundle dependencies, I know it's wrong and it makes me feel guilty.
Most of this issue on Linux comes from Windows developers that have been doing this years over there because of Windows' lame library model. They come to Linux and expect to be able to do these the same way, without realizing that a lot of people resent the practice, particularly those running the more "hardcore" distros, like me. A lot of us left Windows because of crap like this and we don't want to see it infecting Linux.
Perhaps it's my military background, but I always attempt to do things the right way first (I've seen what happens what convenience is chosen over correctness, it never ends well). This is why I feel dirty when I have to bundle dependencies, I know it's wrong and it makes me feel guilty.
Most of this issue on Linux comes from Windows developers that have been doing this years over there because of Windows' lame library model. They come to Linux and expect to be able to do these the same way, without realizing that a lot of people resent the practice, particularly those running the more "hardcore" distros, like me. A lot of us left Windows because of crap like this and we don't want to see it infecting Linux.
Please first, as slembcke said, don't assume anything about our experiences (you woudln't even be able to imagine people's here experiences as they are so wide). I might be mainly (but not only) a Windows developper but I fully agree on what you said on the theorical point of view.
Now Games are just a specific case of closed software that is his own full purpose. It uses the system as an environnement to exist in but it is not a tool to be used inside the system.
The experienced you have while developping military soft. are certainly biased or, if yuo prefer, games programming is naturally biased because specific. You cannot generalise by making converge your experience only with pure theorical perfect organization. In the real world, there is no inter-domain way to do things perfectly so ther is not "right way" for every softwares. Take a look for example at web developpement. I mean, not simple php website but really web-application with really tricky systems behind. You might be surprised as much paradigms use in embedded and classic application developpemnt are just plain wrong.
I also seen things plain wrongs while simply passing from C++ to Flash for example, because the whole system don't work the same.
In games, first, all depends on what you target, so let say you're on windows/linux/mac. NOw that it's said, all depend on what your game needs. 3D? 2D? Audio? etc. All that, cannot be the same for all (type of) games. The only common point might be that they communicate (in the end) with the system that itself communicate with some drivers.
So to make it clear : in GAMES, we need predictability because we simply need to control the User Experience. That mean that any software behaviour that is not known have to be isolated or forbidden - you just CAN'T afford to have undefined behaviour. It's worse when the code is not your's (that's why graphics drivers developpers need to be in contact with big 3D games company to know ealy about what to fix in their drivers).
Even when you allow extension points in your programms, you know exactly what entry points of code will be called and even can control and limit the exentions ability to manipulate your game. For example by providing a scripting system, you make sure only functions of the game that you want to expose can be run and that there will not be any additional dependencies.
Predictability is REQUIRED for games. As you said yourself, assuming the system always have correct dependencies that behave always exactly the same is just plain wrong - so to make sur we have the right dependency with a specific version of our games : we bundle. Simple and efficient.
Maybe what you don't understand is that on linux system, everything is organic, so we know that the system is less predictable than on windows or even mac. That's a good thing for a lot of software but again that's the worse environnement for games.
By the way, Windows also have system dlls that you can rely on (for example DirectX) but you still want to have specific versions. Linux AND on windows works alsmot the same on the depency system, it's just that Windows don't assume anything in your way of organizing your software while Linux does. Now, knowning that you need predictability for games, and you make games, and you want it to work on several platform, or whatever the platform - we don't even care - you still need to have the same dependencies, in the same versions, so you just bundle things together.
All that paragraph to say : don't assume that we need to bundle because most game devs are windows devs. It's because it's about GAMES. Assuming this is like an insult on to the common sense of all the game programming industry and indie scene.
(did you know that even on consoles almost all the system libraries are embedded directly in your games? that's also for predictability )
(and "correctness" is orthogonal to the issue here)
Quote
It should be avoided whenever possible. If you need to do it to make your program work, than it's obviously not possible to avoid it, but that doesn't change the fact that it's an incorrect OS practice.
This have nothing to do with the OS. Bundling with your dependencies is valid for games, as explained, whatever the platform, whatever the dependency system. We need to have a fixed context. That's a need, not an ideal.
Quote
Once again, I understand why people do it. I understand that people sometimes have to do it. It's still wrong.
O__O; So there is no arguments in being right because that's the only correct solution?
You're not making any argument other than "it's wrong" or "it's right". What I understand is that "it's not ideal" or "it's ideal" but it just can't be a "right" answer if it's simply not applicable.
Quote
You seem to be interpreting my statements as some kind of attack on your character, that's not what I'm saying.
Oh no, not at all
don't worry, it's just a technical discussion, everything is OK. (I might use big capital letters just to be sure you see some important statements but maybe I'm abusing of it, sorry)I see that you agree that we need the bundling solution, but that's not ideal, ok. What I don't understand is that you still assume what's not applicable is the correct solution. Looks like some kind of logic fault?
Quote from: Endurion
I see opinions collide here, mostly POV from user vs. developer.
I don't agree, that's more a software-theory POV vs a pragmatic-reality-checked POV.
Quote from: Endurion
Just be pragmatic:
Do you want an ideal but in real life unrealistic approach (nicely shared libraries with different versions, with always compatible interfaces) ?
Or an a tad ugly approach but simply working.
Guess which the user cares for most.
Do you want an ideal but in real life unrealistic approach (nicely shared libraries with different versions, with always compatible interfaces) ?
Or an a tad ugly approach but simply working.
Guess which the user cares for most.
I fully agree.
An players are users with the less technical fault tolerance.


