Announcement

Collapse
No announcement yet.

Steam Survey Reports The Latest Linux Gaming Marketshare For October

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Weasel
    replied
    Originally posted by oiaohm View Post
    I have pointed to functional examples like xonotic before. There are applications out there like it or not that work on all distributions with minimum requirements.

    Blender Is another.
    Yeah, with dlopen/dlsym which is a pain in the ass and requires extra code. Which kind of proves the point that... ELF sucks... since you have to go that extra mile here.

    Sadly most apps don't even do that.

    Originally posted by oiaohm View Post
    So there are applications that manage to-do it perfectly fine in a global name space for the majority of Linux distributions.
    No those apps skip the global namespace and quite frankly that says everything.

    Originally posted by oiaohm View Post
    Please note all distros is impossible unless you static link or bundle a complete run-time. There are static linked distributions and distributions without glibc out there.

    I would guess having x11/wayland, glibc and opengl you would class as acceptable min requirements.
    Not a problem, just copy & paste glibc from another distro.

    Yes, it should easily work, if Linux userland was sane.

    I know you're going to post now how it won't work, and that's exactly what I mean. It should work, and until it does, the userland is garbage. Some libraries are exceptions i suppose, x11/wayland and opengl probably, those are too low level. (same reason you exclude low level libs in Windows from this)

    Originally posted by oiaohm View Post
    Fib all you like those making cross platform gtk2 applications migrating to gtk3 found out it does not in fact work on DLL due to other issues. Result was telling everyone to rebuild their windows plugins as well.
    Like? Pretty sure they fucked something up. I never had issue with gtk3/gtk2 plugins in same process FWIW.

    Leave a comment:


  • Weasel
    replied
    Originally posted by F.Ultra View Post
    None of which is a problem if the library writers would maintain forward compatibility by either providing both the old symbols via versioned symbols and the new ones (this is how glibc does it) or do it like oiaohm proposes and create a shim between the old and the new. Unfortunately very few do this, the reason of course is that for many years all the software was distributed with each distribution so this was not a problem.
    I don't know what you're arguing for since that's what I said, pretty much. So I guess we agree.

    Though making a simple shim is quite the challenge with ELF since most binaries are built with global symbol namespace and without versioned information. Such a pain in the ass.

    Originally posted by F.Ultra View Post
    That proper maintainers does not exist for Windows is the reason why you will find ten million different incompatible versions of openssl, zlib and so on that each application have to bundle since each and every single application developer have to compile them themselves leading to C:\Windows\system32 sometimes having a libssley32.lib with the 0.9.x, 1.0.x or 1.1x ABI forcing every single application to store their own version inside their local Program FIles directory.

    And even if the ABI version is the same it might be linked or changed (I've stumbled upon big name softwares that install a completely custom libssley32dll into system32) in such a way that you cannot use them anyway.

    So do not pretend that Windows is this magically land or that maintainers does not do a meaningful job (thanks to the work of the various maintainers I do not have to bundle a single 3:d party library on Linux [which I must on Windows] as long as I supply a proper build for each system [which is easy since I don't supply abandon-ware like most games are]).

    Does that means that Linux is without problems? Hell no, but that there are things to fix is no reason to go around frothing at the mouth spewing insults as you go along because that is not helping anyone, including you.
    Each ABI-incompatible version of a library should have a different filename. No exceptions. It's really that simple. If not, it's the library's fault for being designed badly.

    Most applications bundle the DLLs because they aren't shipped with Windows though. Not because they are incompatible.

    I have no idea why you or others keep claiming that "Windows land" means even open source DLLs. Like, seriously guys? You can make any library for ANY operating system, no matter how bad it is designed. Doesn't mean the OS is bad for having your library, that's on you (the library dev). Just because open source libraries are part of the "linux system" doesn't mean those libraries have equal importance on Windows.

    You can't judge "Windows land" by the quality of "Linux libraries" either. It's 3rd party stuff.

    But hey, at least DLLs let you easily bundle your library with the app and guaranteed to have zero conflicts in respect to symbol clashes, unlike ELF.
    Last edited by Weasel; 04 November 2018, 07:34 PM.

    Leave a comment:


  • F.Ultra
    replied
    Originally posted by Weasel View Post
    Because they don't?

    For the love of God or whoever you believe in, can you guys seriously start treating major versions as completely SEPARATE libraries? Please? They ARE even part of the name, especially on Windows where it's literally called libgtk2.dll or whatever.

    zlib is called zlib1.dll (for eventual zlib2 maybe in the future). The difference between zlib1 and zlib2 is the same as the difference between kernel32 and user32 -- i.e. totally separate libraries.

    All of the libraries that apps bundle are stable though. Going from gtk2 to gtk3 is a change in the LIBRARY itself, like going from GDI to Direct2D. Once you use this mindset you realize why it's retarded to drop "old versions" of a library.

    And obviously, most of those DLLs are shipped by apps because they aren't part of Windows, not necessarily that they are unstable.
    None of which is a problem if the library writers would maintain forward compatibility by either providing both the old symbols via versioned symbols and the new ones (this is how glibc does it) or do it like oiaohm proposes and create a shim between the old and the new. Unfortunately very few do this, the reason of course is that for many years all the software was distributed with each distribution so this was not a problem.

    The only "maintainers" of it should be the developers themselves. The fact that you need 3rd party maintainers proves just how broken the entire model is. You do *not* need that on Windows or Mac or virtually any other OS in existence: only the developer maintains his work.
    That proper maintainers does not exist for Windows is the reason why you will find ten million different incompatible versions of openssl, zlib and so on that each application have to bundle since each and every single application developer have to compile them themselves leading to C:\Windows\system32 sometimes having a libssley32.lib with the 0.9.x, 1.0.x or 1.1x ABI forcing every single application to store their own version inside their local Program FIles directory.

    And even if the ABI version is the same it might be linked or changed (I've stumbled upon big name softwares that install a completely custom libssley32dll into system32) in such a way that you cannot use them anyway.

    So do not pretend that Windows is this magically land or that maintainers does not do a meaningful job (thanks to the work of the various maintainers I do not have to bundle a single 3:d party library on Linux [which I must on Windows] as long as I supply a proper build for each system [which is easy since I don't supply abandon-ware like most games are]).

    Does that means that Linux is without problems? Hell no, but that there are things to fix is no reason to go around frothing at the mouth spewing insults as you go along because that is not helping anyone, including you.

    Leave a comment:


  • oiaohm
    replied
    Originally posted by Weasel View Post
    I don't give a FUCK about your walls of text and your plays with words. Until you can literally get ****ALL**** dependencies of an application on Linux by just downloading the application itself, you have ZERO POINT. And it has to work on ***ALL*** distros, with a minimum requirement obviously. This means you DO NOT download an entire runtime with the app. So flatpak is out. In fact, flatpak even requires to be installed, so it's completely out.
    I have pointed to functional examples like xonotic before. There are applications out there like it or not that work on all distributions with minimum requirements.

    Blender Is another.

    So there are applications that manage to-do it perfectly fine in a global name space for the majority of Linux distributions. What is more shocking is how many out there are not doing any tricks other than correct bundling.

    Please note all distros is impossible unless you static link or bundle a complete run-time. There are static linked distributions and distributions without glibc out there.

    I would guess having x11/wayland, glibc and opengl you would class as acceptable min requirements.

    Originally posted by Weasel View Post
    But you can just bundle it with the application since it has no shitty ELF global symbol namespace conflicts.
    You can bundle what ever libraries you like with your application on Linux as well and avoid ELF global symbol namespace conflicts. As long as you know what you are doing in versioned.
    Then there is using DT_FILTER or symbol versions. And not suffer from global symbol namespace conflicts. Some third party applications in fact do this. But items like blender don't and still work. Blender sticks strictly to the libraries and parts with solid defined ABI and soname and ships anything else.

    Global namespace is not in fact a barrier to making third party applications to many distributions. Biggest barrier is libraries breaking ABI or are regularly renamed and developers using those and deciding not to ship those libraries with their application.

    Originally posted by Weasel View Post
    Except it works just fine, so stay ignorant all you want. Sorry that DLL is not ELF and it's simply superior.
    Fib all you like those making cross platform gtk2 applications migrating to gtk3 found out it does not in fact work on DLL due to other issues. Result was telling everyone to rebuild their windows plugins as well.

    Leave a comment:


  • Weasel
    replied
    Originally posted by oiaohm View Post
    Why solve half the problem when partitioning with items like libcapsule can solve close to 98% of the problems.

    Symbol conflict or dllname conflict are both global namespace problems.
    No, only symbol conflict is. I'm specifically talking about the global namespace FOR SYMBOLS, for fuck's sake. But you're never going to get it, so stay ignorant all you want.

    Originally posted by oiaohm View Post
    Pull you head out where the sun don't shine. Microsoft ships a lot of MIT or equal licensed libraries as part of windows that are made by third parties. Yes libraries they are 3rd party maintainers to.

    OS X is the same. So the developer makes the final binary and sends to customer is large amounts of garbage. Sorry to say virtually all OS in existence have third party maintainers.

    Also think how many third party developers bundle their application with visual studio runtime. Those application developers did not make visual studio runtime right. Not everything in the visual studio runtime is in fact by Microsoft.

    Stop pretending Windows and Mac and every other OS in existence is not using 3rd party maintainers. Its too complex to rewrite everything from scratch all the time.
    This has nothing to do with what the point was, which was about distributing the libraries. You really have a way with words.

    "Maintaining" can mean a lot of different things. In this case, it was clearly about distributing the libraries, you damn dummy.

    So the "visual studio runtime" (your shitty example) is NOT maintained by Microsoft because, well, in the context of DISTRIBUTING it, the app can distribute it itself. Sure, you can also get it from Microsoft but that's optional.

    I don't give a FUCK about your walls of text and your plays with words. Until you can literally get ****ALL**** dependencies of an application on Linux by just downloading the application itself, you have ZERO POINT. And it has to work on ***ALL*** distros, with a minimum requirement obviously. This means you DO NOT download an entire runtime with the app. So flatpak is out. In fact, flatpak even requires to be installed, so it's completely out.

    Stop wasting time with bullshit.

    Originally posted by oiaohm View Post
    Exactly the problem lot of up-streams are not creating shims/wrappers/versioning for old interface to new interface.
    Yeah so why the fuck are you arguing then? Good you admit the problem with Linux userland.

    Originally posted by oiaohm View Post
    GTK does not prove the shims/wrappers for windows or os x either.
    But you can just bundle it with the application since it has no shitty ELF global symbol namespace conflicts.

    Originally posted by oiaohm View Post
    Same with a lot of the other problem child libraries. Yes problem child library have a habit of being cross platform problem child.
    No issue with DLLs so it's simply not an issue on Windows or Wine.

    Originally posted by oiaohm View Post
    Problem here is download gtk2 and gtk3 install on windows then attempt to use gtk2 plugin in gtk3 application watch everything go south. So going to the developers website and downloading has not completely got you out the problem.
    Except it works just fine, so stay ignorant all you want. Sorry that DLL is not ELF and it's simply superior.

    Leave a comment:


  • oiaohm
    replied
    [QUOTE=Weasel;n1058967]I don't care about the internal implementation of the library. If it's a shim, but still works with same interface for existing apps dependent on it, then it's PERFECTLY OKAY. If it wraps around gtk3, even better.

    Removing it means this: "The application failed to load because libgtk2.so was not found." (using Windows message for analogy).

    Originally posted by Weasel View Post
    Nah, it's unrelated to the above, but it will easily solve half the problems. Considering it's only global namespace-based ELF environments that suffer from it...
    Why solve half the problem when partitioning with items like libcapsule can solve close to 98% of the problems.

    Symbol conflict or dllname conflict are both global namespace problems. Correction solution to global namespace problems is not transform from 1 type of global name space to another. But create partitioning. Libcapsule partitions the global namespace. So creating global namespaces to like host and for application makes 98 percent of all the problems disappear.

    There are exceptions like gtk2 and gtk3 that you have locking hell.

    Originally posted by Weasel View Post
    The only "maintainers" of it should be the developers themselves. The fact that you need 3rd party maintainers proves just how broken the entire model is. You do *not* need that on Windows or Mac or virtually any other OS in existence: only the developer maintains his work.
    Pull you head out where the sun don't shine. Microsoft ships a lot of MIT or equal licensed libraries as part of windows that are made by third parties. Yes libraries they are 3rd party maintainers to.

    OS X is the same. So the developer makes the final binary and sends to customer is large amounts of garbage. Sorry to say virtually all OS in existence have third party maintainers.

    Also think how many third party developers bundle their application with visual studio runtime. Those application developers did not make visual studio runtime right. Not everything in the visual studio runtime is in fact by Microsoft.

    Stop pretending Windows and Mac and every other OS in existence is not using 3rd party maintainers. Its too complex to rewrite everything from scratch all the time.

    Originally posted by Weasel View Post
    Of course, then it should be the job of the developer to provide shims or wrappers for his old interface to his newer one. The fact is that "package maintainers" shouldn't even be a thing. You need them because you cannot do the sane alternative: go to dev's website, download, install or run directly, on any distro.
    Exactly the problem lot of up-streams are not creating shims/wrappers/versioning for old interface to new interface.

    GTK does not prove the shims/wrappers for windows or os x either. Same with a lot of the other problem child libraries. Yes problem child library have a habit of being cross platform problem child.

    Problem here is download gtk2 and gtk3 install on windows then attempt to use gtk2 plugin in gtk3 application watch everything go south. So going to the developers website and downloading has not completely got you out the problem.

    Weasel http://www.win7dll.info/ Do take note of the "ApiSet Stub DLL" here. These appeared in Vista. Job is to provide versioned symbols. If Microsoft is willing to have stubs to mask over platform differences. Exactly why could not the Linux Distribution differences not be stubbed over as well.

    Remember Microsoft is not just selling and OS. Microsoft is selling visual studio. Application developers buy visual studio and so pay for compatibility.

    My problem how is the people required to make Linux cross distribution developer friendly going to get paid. I know this is kind of horrible but Redhat for example selling point is that it has support with a particular list of commercial applications that other distributions don't. There is a limitation on how cross distribution friendly a distribution in encouraged to be.

    Leave a comment:


  • Weasel
    replied
    Originally posted by srakitnican View Post
    Weasel, maintainers are just that, maintainers. If the library is not maintained anymore, maintainer can't do much about it except to drop it, especially if there are security issues. There is in fact Enterprise Linux where there developers are paid to maintain old libraries. But other then that it seems there is not that mentality of maintaining interface stability especially since most of the stuff can be compiled from source. For that reason no one is motivated to work on that since it already works for them as is. As oiaohm says the help would really need to come from third parties.
    The thing is, "maintaining" a library or a package shouldn't even be a thing in the first place.

    The only "maintainers" of it should be the developers themselves. The fact that you need 3rd party maintainers proves just how broken the entire model is. You do *not* need that on Windows or Mac or virtually any other OS in existence: only the developer maintains his work.

    Of course, then it should be the job of the developer to provide shims or wrappers for his old interface to his newer one. The fact is that "package maintainers" shouldn't even be a thing. You need them because you cannot do the sane alternative: go to dev's website, download, install or run directly, on any distro.

    Leave a comment:


  • srakitnican
    replied
    Weasel, maintainers are just that, maintainers. If the library is not maintained anymore, maintainer can't do much about it except to drop it, especially if there are security issues. There is in fact Enterprise Linux where there developers are paid to maintain old libraries. But other then that it seems there is not that mentality of maintaining interface stability especially since most of the stuff can be compiled from source. For that reason no one is motivated to work on that since it already works for them as is. As oiaohm says the help would really need to come from third parties.

    Leave a comment:


  • Weasel
    replied
    Originally posted by oiaohm View Post
    Distributions make it clear they will drop old versions of libraries.
    And I will make it clear that they are retarded and deserve a special place in hell.

    Originally posted by oiaohm View Post
    Because the libraries are no longer maintained and they no longer have any applications using those libraries any more.
    Don't distribute the distributions then. Sounds like an oxymoron. They are not the ones who use the distros, the users are. You don't know what binary app the user has.

    These piece of shit maintainers need to realize that THEIR USE CASES are not the users' and nobody gives a shit about THEIR systems or workloads or whatever.

    They won't realize it tho, that's why we need a new sane desktop distro, catered completely to users' needs (which can happen to be for maintainers too if they become users instead of ego-centric piles of excrement).

    Originally posted by oiaohm View Post
    Using DT_FILTER on elf zlib1 could be a redirect to zlib2 in future. Every extra old library is something extra to back port security patches to.
    This has nothing to do with DT_FILTER or ELF, but the fact that the two libraries are incompatible and "separate" libraries (by design, happens on Windows too), and yet one of them is dropped.

    Originally posted by oiaohm View Post
    Is Gtk2 to Gtk3 really like GDI to Direct2D.
    https://developer.gnome.org/gtk3/sta...ng-2-to-3.html
    The answer is absolutely no. There is a 90%+ ABI match between Gtk2 to Gtk3. If a shim was made from Gtk2 to latest Gtk3 this would sync up theme system this would reduce maintenance because fixing flaw in newer gtk would be fixing them all. There is insane amount of duplication here.

    Really its retarded to be keeping old libraries around when they should have been converted into shims a long time ago. Distributions don't need shims because the rebuild their applications using the newer versions of libraries. Third parties are the ones who wants shims but they are not putting up the resources to have them.
    Dude why are you ALWAYS ARGUING about stuff I already SOLVED. I already said i have no problems with shims.

    Removing to me means LITERALLY that the file is NOT FOUND ANYMORE or that its symbols can't be found anymore.

    I don't care about the internal implementation of the library. If it's a shim, but still works with same interface for existing apps dependent on it, then it's PERFECTLY OKAY. If it wraps around gtk3, even better.

    Removing it means this: "The application failed to load because libgtk2.so was not found." (using Windows message for analogy).

    Originally posted by oiaohm View Post
    This will not do anything for the library problems. In fact dig you deeper into whole.
    Nah, it's unrelated to the above, but it will easily solve half the problems. Considering it's only global namespace-based ELF environments that suffer from it...
    Last edited by Weasel; 03 November 2018, 08:36 AM.

    Leave a comment:


  • oiaohm
    replied


    Originally posted by Weasel View Post
    Because they don't?

    For the love of God or whoever you believe in, can you guys seriously start treating major versions as completely SEPARATE libraries? Please? They ARE even part of the name, especially on Windows where it's literally called libgtk2.dll or whatever.

    zlib is called zlib1.dll (for eventual zlib2 maybe in the future). The difference between zlib1 and zlib2 is the same as the difference between kernel32 and user32 -- i.e. totally separate libraries.
    Distributions make it clear they will drop old versions of libraries. Because the libraries are no longer maintained and they no longer have any applications using those libraries any more.

    Using DT_FILTER on elf zlib1 could be a redirect to zlib2 in future. Every extra old library is something extra to back port security patches to.

    Its perfect sense to drop old versions of libraries completely off cliff. The problem is not having shim libraries created in the old library place.

    Originally posted by Weasel View Post
    All of the libraries that apps bundle are stable though. Going from gtk2 to gtk3 is a change in the LIBRARY itself, like going from GDI to Direct2D. Once you use this mindset you realize why it's retarded to drop "old versions" of a library.
    Is Gtk2 to Gtk3 really like GDI to Direct2D.

    The answer is absolutely no. There is a 90%+ ABI match between Gtk2 to Gtk3. If a shim was made from Gtk2 to latest Gtk3 this would sync up theme system this would reduce maintenance because fixing flaw in newer gtk would be fixing them all. There is insane amount of duplication here.

    Really its retarded to be keeping old libraries around when they should have been converted into shims a long time ago. Distributions don't need shims because the rebuild their applications using the newer versions of libraries. Third parties are the ones who wants shims but they are not putting up the resources to have them.

    Originally posted by Weasel View Post
    Solution is easy to anyone with half a brain: take away the global namespace or whatever else that distros use. Make it impossible to be used, literally.
    This will not do anything for the library problems. In fact dig you deeper into whole.

    Leave a comment:

Working...
X