The diversity of Linux distributions is one of its strengths, but it can also be challenging for app and game development. Where do we need more standards? For example, package management, graphics APIs, or other aspects of the ecosystem? Would such increased standards encourage broader adoption of the Linux ecosystem by developers?
dosse91 ( @dosse91@lemmy.trippy.pizza ) 49•10 days agoGenerally speaking, Linux needs better binary compatibility.
Currently, if you compile something, it’s usually dynamically linked against dozens of libraries that are present on your system, but if you give the executable to someone else with a different distro, they may not have those libraries or their version may be too old or incompatible.
Statically linking programs is often impossible and generally discouraged, making software distribution a nightmare. Flatpak and similar systems made things easier, but it’s such a crap solution and basically involves having an entire separate OS installed in parallel, with its own problems like having a version of Mesa that’s too old for a new GPU and stuff like that. Applications must be able to be packaged with everything they need with them, there is no reason for dynamic linking to be so important in Linux these days.
I’m not in favor of proprietary software, but better binary compatibility is a necessity for Linux to succeed, and I’m saying this as someone who’s been using Linux for over a decade and who refuses to install any proprietary software. Sometimes I find myself using apps and games in Wine even when a native version is available just to avoid the hassle of having to find and probably compile libobsoletecrap-5.so
Sinfaen ( @Sinfaen@beehaw.org ) 1•3 days agoThis.
From the perspective of software preservation, we need this. Sometimes we won’t have the source, and just need it to work while also getting security updates.
From the perspective of software delivery: read up on JangaFX’s recent article about this topic and the problems they run into delivering software in the present
pr06lefs ( @pr06lefs@lemmy.ml ) 18•10 days agonix can deal with this kind of problem. Does take disk space if you’re going to have radically different deps for different apps. But you can 100% install firefox from 4 years ago and new firefox on the same system and they each have the deps they need.
PopeRigby ( @PopeRigby@beehaw.org ) English10•10 days agoSomeone managed to install Firefox from 2008 on a modern system using Nix. Crazy cool: https://blinry.org/nix-time-travel/
MyNameIsRichard ( @MyNameIsRichard@lemmy.ml ) 9•10 days agoYou’ll never get perfect binary compatibility because different distros use different versions of libraries. Consider Debian and Arch which are at the opposite ends of the scale.
2xsaiko ( @2xsaiko@discuss.tchncs.de ) 23•10 days agoAnd yet, ancient Windows binaries will still (mostly) run and macOS allows you to compile for older system version compatibility level to some extent (something glibc alone desperately needs!). This is definitely a solvable problem.
Linus keeps saying “you never break userspace” wrt the kernel, but userspace breaks userspace all the time and all people say is that there’s no other way.
Magiilaro ( @DarkMetatron@feddit.org ) 5•10 days agoIt works under Windows because the windows binaries come with all their dependency .dll (and/or they need some ancient visual runtime installed).
This is more or less the Flatpack way, with bundling all dependencies into the package
Just use Linux the Linux way and install your program via the package manager (including Flatpack) and let that handle the dependencies.
I run Linux for over 25 years now and had maybe a handful cases where the Userland did break and that was because I didn’t followed what I was told during package upgrade.
The amount of time that I had to get out of .dll-hell on Windows on the other hand. The Linux way is better and way more stable.
2xsaiko ( @2xsaiko@discuss.tchncs.de ) 4•10 days agoI’m primarily talking about Win32 API when I talk about Windows, and for Mac primarily Foundation/AppKit (Cocoa) and other system frameworks. What third-party libraries do or don’t do is their own thing.
There’s also nothing wrong with bundling specialized dependencies in principle if you provide precompiled binaries. If it’s shipped via the system package manager, that can manage the library versions and in fact it should do that as far as possible. Where this does become a problem is when you start shipping stuff like entire GUI toolkits (hello bundled Qt which breaks Plasma’s style plugins every time because those are not ABI-compatible either).
The amount of time that I had to get out of .dll-hell on Windows on the other hand. The Linux way is better and way more stable.
Try running an old precompiled Linux game (say Unreal Tournament 2004 for example). They can be a pain to get working. This is not just some “ooooh gotcha” case, this is an important thing that’s missing for software preservation and cross-compatibility, because not everything can be compiled from source by distro packagers, and not every unmaintained open-source software can be compiled on modern systems (and porting it might not be easy because of the same problem).
I suppose what Linux is severely lacking is a comprehensive upwards-compatible system API (such as Win32 or Cocoa) which reduces the churn between distros and between version releases. Something that is more than just libc.
We could maybe have had this with GNUstep, for example (and it would have solved a bunch of other stuff too). But it looks like nobody cares about GNUstep and instead it seems like people are more interested in sidestepping the problem with questionably designed systems like Flatpak.
Magiilaro ( @DarkMetatron@feddit.org ) 2•10 days agoUnreal Tournament 2004 depends on SDL 1.3 when I recall correctly, and SDL is neither on Linux nor on any other OS a core system library.
Binary only programs are foreign to Linux, so yes you will get issues with integrating them. Linux works best when everyone plays by the same rules and for Linux that means sources available.
Linux in its core is highly modifiable, besides the Kernel (and nowadays maybe systemd), there is no core system that could be used to define a API against. Linux on a Home theater PC has a different system then Linux on a Server then Linux on a gaming PC then Linux on a smartphone.
You can boot the Kernel and a tiny shell as init and have a valid, but very limited, Linux system.
Linux has its own set of rules and his own way to do things and trying to force it to be something else can not and will not work.
navordar ( @nawordar@lemmy.ml ) 1•9 days agoThere was the Linux Standard Base project, but there were multiple issues with it and finally it got abandoned. Some distributions still have a /etc/lsb-release file for compatibility.
MyNameIsRichard ( @MyNameIsRichard@lemmy.ml ) 2•10 days agoThe difference is that most of your software is built for your distribution, the only exception being some proprietary shit that says it supports Linux, but in reality only supports Ubuntu. That’s my pet peeve just so that you know!
2xsaiko ( @2xsaiko@discuss.tchncs.de ) 2•10 days agoDistributions are not the problem. Most just package upstream libraries as-is (plus/minus some security patches). Hence why programs built for another distro will a lot of the time just run as is on a contemporary distro given the necessary dependencies are installed, perhaps with some patching of the library paths (plenty of packages in nixpkgs which just use precompiled deb packages as a source, as an extreme example because nixpkgs has a very different file layout).
Try a binary built for an old enough Ubuntu version on a new Ubuntu version however…
catloaf ( @catloaf@lemm.ee ) English5•10 days agoI don’t think static linking is that difficult. But for sure it’s discouraged, because I can’t easily replace a statically-linked library, in case of vulnerabilities, for example.
You can always bundle the dynamic libs in your package and put the whole thing under /opt, if you don’t play well with others.
CarrotsHaveEars ( @racketlauncher831@lemmy.ml ) 4•10 days agoWhat you described as the weakness, is actually what is strong of an open source system. If you compile a binary for a certain system, say Debian 10, and distribute the binary to someone who is also running a Debian 10 system, it is going to work flawlessly, and without overhead because the target system could get the dependency on their own.
The lack of ability to run a binary which is for a different system, say Alpine, is as bad as those situations when you say you can’t run a Windows 10 binary on Windows 98. Alpine to Debian, is on the same level of that 10 to 98, they are practically different systems, only marked behind the same flag.
Ephera ( @Ephera@lemmy.ml ) English3•10 days agoThe thing is, everyone would agree that it’s a strength, if the Debian-specific format was provided in addition to a format which runs on all Linux distros. When I’m not on Debian, I just don’t get anything out of that…
iii ( @iii@mander.xyz ) English4•10 days agoI think webassembly will come out on top as preferred runtime because of this, and the sandboxing.
navordar ( @nawordar@lemmy.ml ) 1•9 days agoPeople thought the same about JVM
Captain Beyond ( @beyond@linkage.ds8.zone ) 4•10 days agoDisagree - making it harder to ship proprietary blob crap “for Linux” is a feature, not a bug.
lumony ( @lumony@lemmings.world ) English3•8 days agoThat’s a fair disagreement to have, and a sign that you’re fighting bigger battles than just getting software to work.
Static linking really is only an issue for proprietary software. Free software will always give users the option to fix programs that break due to updated dependencies.
apt_install_coffee ( @apt_install_coffee@lemmy.ml ) 2•10 days agoStatically linking is absolutely a tool we should use far more often, and one we should get better at supporting.
lumony ( @lumony@lemmings.world ) English1•8 days agoStatic linking is a good thing and should be respected as such for programs we don’t expect to be updated constantly.
SwingingTheLamp ( @SwingingTheLamp@midwest.social ) 45•10 days agoOne that Linux should’ve had 30 years ago is a standard, fully-featured dynamic library system. Its shared libraries are more akin to static libraries, just linked at runtime by ld.so instead of ld. That means that executables are tied to particular versions of shared libraries, and all of them must be present for the executable to load, leading to the dependecy hell that package managers were developed, in part, to address. The dynamically-loaded libraries that exist are generally non-standard plug-in systems.
A proper dynamic library system (like in Darwin) would allow libraries to declare what API level they’re backwards-compatible with, so new versions don’t necessarily break old executables. (It would ensure ABI compatibility, of course.) It would also allow processes to start running even if libraries declared by the program as optional weren’t present, allowing programs to drop certain features gracefully, so we wouldn’t need different executable versions of the same programs with different library support compiled in. If it were standard, compilers could more easily provide integrated language support for the system, too.
Dependency hell was one of the main obstacles to packaging Linux applications for years, until Flatpak, Snap, etc. came along to brute-force away the issue by just piling everything the application needs into a giant blob.
kibiz0r ( @kibiz0r@midwest.social ) English30•10 days agoARM support. Every SoC is a new horror.
Armbian does great work, but if you want another distro you’re gonna have to go on a lil adventure.
eneff ( @eneff@discuss.tchncs.de ) 4•9 days agoWouldn’t it make more sense to focus on an open standard like RISC-V instead of ARM?
kibiz0r ( @kibiz0r@midwest.social ) English5•9 days agoNot really. There are barely any chips out there.
Oct 2021: 200 billion ARM chips
Nov 2023: 1 billion RISC-V chips, hoping to hit 16 billion by 2030
Nov 2024: 300 billion ARM chips
lumony ( @lumony@lemmings.world ) English4•8 days agoChicken and egg.
HiddenLayer555 ( @HiddenLayer555@lemmy.ml ) English25•9 days agoWhere app data is stored.
~/.local
~/.config
~/.var
~/.appname
Sometimes more than one place for the same program
Pick one and stop cluttering my home directory
itslilith ( @itslilith@lemmy.blahaj.zone ) 3•9 days agoit’s pretty bad. steam for example has both
~/.steam and
~/.local/share/Steam
for some reason. I’m just happy I moved to an impermanent setup for my PC, so I don’t need to worry something I temporarily install is going to clutter my home directory with garbage arsCynic ( @arsCynic@beehaw.org ) 2•9 days agoThis would be convenient indeed, but I’ve learned to be indifferent about it as long as the manual or readme provides helpful and succinct information.
Tlaloc_Temporal ( @Tlaloc_Temporal@lemmy.ca ) 2•9 days agoThis would also be nice for atomic distros, application space and system space could be separated in more cases.
Mio ( @Mio@feddit.nu ) 21•10 days agoConfiguration gui standard. Usually there is a config file that I am suppose to edit as root and usually done in the terminal.
There should be a general gui tool that read those files and obey another file with the rules. Lets say it is if you enable this feature then you can’t have this on at the same time. Or the number has to be between 1 and 5. Not more or less on the number. Basic validation. And run the program with --validation to let itself decide if it looks good or not.
lime! ( @lime@feddit.nu ) English8•10 days agoso, YaST?
I agree. OpenSuse should set the standards in this.
Tbf, they really need a designer to upgrade this visually a bit. It exudes its strong “Sys Admin only” vibes a bit much. In my opinion. 🙂
lumony ( @lumony@lemmings.world ) English2•8 days agoFuckin hate having to go through config files to change settings…
It’s always great when settings are easily accessible in a GUI, though! Mad props to the great developers that include them!
Mihies ( @Mihies@programming.dev ) 20•10 days agoI’d say games. I’d that really takes off, Linux would replace Windows and all other standards will follow.
Overspark ( @Overspark@feddit.nl ) 43•10 days agoThat already happened though. Tens of thousands of games on Steam can be played by hitting the install and then the play button. Only a few “competitive multiplayer” holdouts with rootkits and an irrational hatred of Linux don’t work.
dan ( @dan@upvote.au ) 6•10 days agowith rootkits
These are eventually going to be blocked on Windows. Microsoft are making changes to what’s allowed to run in the kernel after the Crowdstrike issue last year.
verdigris ( @verdigris@lemmy.ml ) 11•10 days agoHave you tried recently? We’ve been pretty much at parity for years now. Almost every game that doesn’t run is because the devs are choosing to make it that way.
jagged_circle ( @jagged_circle@feddit.nl ) English1•10 days agoStill can’t play any 3d games on Qubes OS :(
teawrecks ( @teawrecks@sopuli.xyz ) 7•10 days agoIt did really take off about 5 years ago.
MemmingenFan923 ( @MemmingenFan923@feddit.org ) 5•10 days agoLenovo and HP have recently announced new non-windows gaming handhelds. It is getting better.
Xanza ( @Xanza@lemm.ee ) English2•10 days agoThis has always been the key. Amazing to me that not many seem to take it seriously.
asudox ( @asudox@lemmy.asudox.dev ) 17•10 days agoFlatpak with more improvements to size and sandboxing could be accepted as the standard packaging format in a few years. I think sandboxing is a very important factor as Linux distros become more popular.
Mactan ( @mactan@lemmy.ml ) 14•9 days agointeroperability > homogeneity
Ferk ( @Ferk@lemmy.ml ) 9•9 days agointeroperability == API standardization == API homogeneity
standardization != monopolization
arsCynic ( @arsCynic@beehaw.org ) 13•9 days agoManuals or notifications written with lay people in mind, not experts.
gandalf_der_12te ( @gandalf_der_12te@discuss.tchncs.de ) 12•9 days agoI’m not sure whether this should be a “standard”, but we need a Linux Distribution where the user never has to touch the command line. Such a distro would be beneficial and useful to new users, who don’t want to learn about command line commands.
And also we need a good app store where users can download and install software in a reasonably safe and easy way.
elischeva ( @elischeva@friendica.world ) 1•2 days ago@gandalf_der_12te @original_reader
Linux Mint and some Kind of Ubuntu-Flavour are the Goto. Preferably the LTS Vefsions. For Ubuntu its 24.04, for Mint it is 22. So you ever need the commandline only for one short line and only in 2029.
So for the next few years you don’t need to touch the commandline.
Jack Waterhouse ( @me@toot.jack.water.house ) 7•9 days agoI think there are some that are getting pretty close to this. Like SteamOS (although not a traditional DE) and Mint.
Ubuntu as well. I wish I could say OpenSuse…
RawrGuthlaf ( @RawrGuthlaf@lemmy.sdf.org ) English5•9 days agoI really don’t understand this. I put a fairly popular Linux distro on my son’s computer and never needed to touch the command line. I update it by command line only because I think it’s easier.
Sure, you may run into driver scenarios or things like that from time to time, but using supported hardware would never present that issue. And Windows has just as many random “gotchas”.
lumony ( @lumony@lemmings.world ) English1•8 days agoI try to avoid using the command line as much as possible, but it still crops up from time to time.
Back when I used windows, I would legitimately never touch the command line. I wouldn’t even know how to interact with it.
We’re not quite there with Linux, but we’re getting closer!
eneff ( @eneff@discuss.tchncs.de ) 2•8 days agoI try to avoid using the command line as much as possible
Why would you do that?
AugustWest ( @AugustWest@lemm.ee ) English4•9 days agoWhy do people keep saying this? If you don’t want to use the command line then don’t.
But there is no good reason to say people shouldn’t. It’s always the best way to get across what needs to be done and have the person execute it.
The fedora laptop I have been using for the past year has never needed the command line.
On my desktop I use arch. I use the command line because I know it and it makes sense.
Its sad people see it as a negative when it is really useful. But as of today you can get by without it.
lumony ( @lumony@lemmings.world ) English1•8 days agoIt’s always the best way to get across what needs to be done and have the person execute it.
Sigh. If you want to use the command line, great. Nobody is stopping you.
For those of us who don’t want to use the command line (most regular users) there should be an option not to, even in Linux.
Its sad people see it as a negative when it is really useful.
It’s even sadder seeing people lose sight of their humanity when praising the command line while ignoring all of its negatives.
AugustWest ( @AugustWest@lemm.ee ) English2•8 days agolose sight of their humanity
Ok this is now a stupid conversation. Really? Humanity?
Look, you can either follow a flowchart of a dozen different things to click on to get information about your thunderbolt device or type
boltctl -list
Do you want me to create screen shots of every step of the way to use a gui or just type 12 characters? That is why it is useful. It is easy to explain, easy to ask someone to do it. Then they can copy and paste a response, instead of yet another screenshot.
Next thing you know you will be telling me it is against humanity to “right click”. Or maybe we all should just get a Mac Book Wheel
Look, I am only advocating that it is a very useful tool. There is nothing “bad” about it, or even hard. What is the negative?
But I also said, I have been using a Fedora laptop for over a year and guess what? I never needed the command line. Not once.
lumony ( @lumony@lemmings.world ) English1•8 days agoOk this is now a stupid conversation. Really? Humanity?
Yeah, humanity. The fact you think it’s ‘stupid’ really just proves my point that you’re too far gone.
or type boltctl -list
Really? You have every command memorized? You never need to look any of them up? No copy-pasting!
Come on, at least try to make a decent argument to avoid looking like a troll.
I’m glad rational people have won out and your rhetoric is falling further and further by the wayside. The command line is great for development and developers. It’s awful for regular users which is why regular users never touch it.
You lost sight of your humanity, which is why you don’t even think about how asinine it is to say “just type this command!” as though people are supposed to know it intuitively.
Gonna block ya now. Arguing with people like you is tiresome and a waste of time.
Have fun writing commands. Make sure you don’t use a GUI to look them up, or else you’d be proving me right.
AugustWest ( @AugustWest@lemm.ee ) English2•8 days agoYou blocked me over a difference of opinion?
Wow.
All I am trying to say it that it is a tool in the toolbox. Telling people Linux needs it is not true, telling people it’s bad is not true.
Quit trying to make it a negative. I would encourage anyone to explore how to use this tool. And when trying to communicate ideas on the internet it is a very useful one.
I have never blocked anyone, I find that so strange. It’s like saying because of our difference on this issue, we could never have common ground on any other.
And you ask me to remember my humanity?
smiletolerantly ( @smiletolerantly@awful.systems ) 11•10 days agoAt this point, package management is the main differentiating factor between distro (families). Personally, I’m vehemently opposed to erasing those differences.
The “just use flatpak!” crowd is kind of correct when we’re talking solely about Linux newcomers, but if you are at all comfortable with light troubleshooting if/when something breaks, each package manager has something unique und useful to offer. Pacman and the AUR a a good example, but personally, you can wring nixpkgs Fron my cold dead hands.
And so you will never get people to agree on one “standard” way of packaging, because doing your own thing is kind of the spirit of open source software.
But even more importantly, this should not matter to developers. It’s not really their job to package the software, for reasons including that it’s just not reasonable to expect them to cater to all package managers. Let distro maintainers take care of that.
muusemuuse ( @muusemuuse@lemm.ee ) English10•9 days agoRewrite the entire kernel exclusively in rust!
-hehehe-
TrivialBetaState ( @TrivialBetaState@sopuli.xyz ) 3•9 days agoAnd that’s how WW3 started…!
irotsoma ( @irotsoma@lemmy.blahaj.zone ) 8•10 days agoNot offering a solution here exactly, but as a software engineer and architect, this is not a Linux only problem. This problem exists across all software. There are very few applications that are fully self contained these days because it’s too complex to build everything from scratch every time. And a lot of software depends on the way that some poorly documented feature worked at the time that was actually a bug and was eventually fixed and then breaks the applications that depended on it, etc. Also, any time improvements are made in a library application it has potential to break your application, and most developers don’t get time to test the every newer version.
The real solution would be better CI/CD build systems that automatically test the applications with newer versions of libraries and report dependencies better. But so many applications are short on automated unit and integration tests because it’s tedious and so many companies and younger developers consider it a waste of time/money. So it would only work in well maintained and managed open source types of applications really. But who has time for all that?
Anyway, it’s something I’ve been thinking about a lot at my current job as an architect for a major corporation. I’ve had to do a lot of side work to get things even part of the way there. And I don’t have to deal with multiple OSes and architectures. But I think it’s an underserved area of software development and distribution that is just not “fun” enough to get much attention. I’d love to see it at all levels of software.
JuxtaposedJaguar ( @JuxtaposedJaguar@lemmy.ml ) 4•9 days agoEach monitor should have its own framebuffer device rather than only one app controlling all monitors at any time and needing each app to implement its own multi-monitor support. I know fbdev is an inefficient, un-accelerated wrapper of the DRI, but it’s so easy to use!
Want to draw something on a particular monitor? Write to its framebuffer file. Want to run multiple apps on multiple screens without needing your DE to launch everything? Give each app write access to a single fbdev. Want multi-seat support without needing multiple GPUs? Same thing.
Right now, each GPU only gets 1 fbdev and it has the resolution of the smallest monitor plugged into that GPU. Its contents are then mirrored to every monitor, even though they all have their own framebuffers on a hardware level.
chaoticnumber ( @chaoticnumber@lemmy.dbzer0.com ) English1•9 days agoThis right here is why i moved to a single display setup.
TrivialBetaState ( @TrivialBetaState@sopuli.xyz ) 4•9 days agoWhile all areas could benefit in terms of stability and ease of development from standadization, the whole system and each area would suffer in terms of creativity. There needs to be a balance. However, if I had to choose one thing, I’d say the package management. At the moment we have deb, rpm, pacman, flatpak, snap (the latter probably should not be considered as the server side is proprietary) and more from some niche distros. This makes is very difficult for small developers to offer their work to all/most users. Otherwise, I think it is a blessing having so many DEs, APIs, etc.