Live data from Hacker News

Make Apps for Linux

makealinux.app

171–180 of 422 posts

Re: Make Apps for Linux

#171
post #146

Earlier quoted context omitted.

As far as I understand, Windows solves this libc++ versioning issue using the side by side cache. I guess this is a little bit like flatpack.

Windows solves this issue by not making language runtime part of the OS libraries in a way that pollutes other libraries. That means that you can have your application linked with library A version X, and load another library that is linked with library A version Y, and so long as certain practices are followed, everything works because you're not getting cross-contamination of symbols. Meanwhile on Linux the default…

What language independent allocator? I'm unaware of any memory interfaces in programming languages that aren't specific to that language.

What would you use instead of malloc and free?

Re: Make Apps for Linux

#172
post #91

Earlier quoted context omitted.

> and they don’t break as often. Meh, kinda. It's not a case that proprietary software vendors only target RHEL, Suse and Ubuntu. RHEL is a perfect target for stable software and Ubuntu might be as well if you decide to only support LTS releases.

Targeting only a hand full of frozen releases is not abi stability. Abi stability is when any app can be compiled off any release and run on any future release (and ideally older releases too).

Such a platform is doomed to never take a step forward because "oh no, something changed and now I have to increment my dependencies".

Re: Make Apps for Linux

#173
post #146

Earlier quoted context omitted.

As far as I understand, Windows solves this libc++ versioning issue using the side by side cache. I guess this is a little bit like flatpack.

Windows solves this issue by not making language runtime part of the OS libraries in a way that pollutes other libraries. That means that you can have your application linked with library A version X, and load another library that is linked with library A version Y, and so long as certain practices are followed, everything works because you're not getting cross-contamination of symbols. Meanwhile on Linux the default…

This what the "pressure-vessel" container from collabora (used by valve on dota2/cs2), is trying to solve... but now the issue is the container itself as it does _NOT_ follow fully the elf loading rules for all elf binaries and does ignore many configuration parameters of many software packages (data files location, pertinent environment variables, etc), basically presuming "ubuntu" to be there.

Basically, I have my vulkan driver requiring fstat from 2.33 but the "pressure-vessel" (sniper version), has a glibc 2.31, then it does parse partially my global elf loading configuration and the configuration of some packages to import that driver and all its dependencies... including my glibc elf loader... ooof! That level of convolution will have a very high price all over the board.

I have arguments often with one of "pressure-vessel" devs because of some shortcuts they took which do break my distro (which is really basic and very vanilla, but not "ubuntu"). It took weeks to get the fixes in (I guess all of them are in... until the glibc devs manage to do something which will wreak havock on "pressure-vessel"). Oh... that makes me think I need to warn them about that super new and recent ELF relocation type they will have to parse and detect in host drivers...

On my side, I am investigating some excrutiatingly simple modern file format which should help a lot fighting those issues, there will be technical trade-offs obviously (but would run-ish on "old" kernels anyway with elf "capsules" and an orthogonal runtime). Like json is for xml, but for elf/pe.

It seems only the linux ABI can be trusted... til Linus T. is able to hold the line.

Re: Make Apps for Linux

#174

Earlier quoted context omitted.

People like to shit on tools like Electron, but there's a reason they're popular. If you need to reach a broad audience with a native tool, using heavy-handed web-based plumbing is a bigger win for Linux users than supporting only windows and macos where like 97% of desktop users are.

As someone who uses Linux as a daily driver, I can recognize these gargantuan apps a mile away and stay away from them. They are absolute hogs of system resources, and for something simple like Etcher there's no excuse. Things like Electron are good for devs but bad for users. We have more computation power than ever and yet programs still run slow.

Oh, it gets better. Even the default Weather app shipping with Windows 11 is also an Electron pile of trash that uses ~520 MB of RAM. Just let that sink in. 500MB of RAM just to show you the weather forecast for the day and week. That was my entire system RAM of my Windows XP gaming rig.

Same for the Widgets app, it's not only bad because it shows you news and ads when you open it, it's worse because it's also, you guessed it, an Electron app.

Some VP in Redmond must be off their meds.

I assume Microsoft just can't find devs to write C#, their own damn programing language for their own OS, and one of the dozens of frameworks they have for Windows GUI, that they need to resort to using Electron for what are just Windows-only apps.

Re: Make Apps for Linux

#175

More software? Wonderful! I'm all for it, but before starting something from scratch why not contribute to something that already exists, or possibly pick some project that was abandoned or simply needs to be worked on for example to be built with newer compilers, run on newer hardware, etc. Which makes me wonder if there is somewhere a database of dormant/dead projects that would deserve to be resurrected.

That something that already exists may not be built in the way you are aiming for.

That other something might be led by a dickhead that you can't get along with, or a community that's not receptive to your suggestions or patches.

Social processes and blockages can lead to losing motivation to contribute. Not everyone is cut out to be this happy-go-lucky team player that has no personality.

As for myself, I'd rather start from scratch because 1) I'll control every variable, 2) I don't have to mess around with some existing social and tech infra, 3) I don't have to talk to anyone and convince them my ideas are good, 4) who wants to spend more time arguing or discussing than writing code?

The solodev experience is just better. You're not hamstrung by politics and social process. Being a team player has only led to misery for me.

Re: Make Apps for Linux

#176

Earlier quoted context omitted.

Stop listening to people who say to stop listening to people trying to tell you what you should do or not. It is not all relative, there are good and bad choices.

"Gotcha" replies like this aren't helpful. The GP comment is just a pithy retort to the title that uses the same language for effect.

Agreed.

Re: Make Apps for Linux

#177

Earlier quoted context omitted.

Utter nonsense. The CLI lets you do complex custom things that you sometimes can't do with a GUI. But it is pretty awful from a UX point of view. Terrible discoverability, terrible UI, very unfriendly, no contextual help, etc. etc. I can't think of a worse interface from a UX perspective.

Really? Do you communicate with ChatGPT by pointing at pictures?

What has ChatGPT got to do with it? We're talking about Unix style CLIs.

Re: Make Apps for Linux

#178

More software? Wonderful! I'm all for it, but before starting something from scratch why not contribute to something that already exists, or possibly pick some project that was abandoned or simply needs to be worked on for example to be built with newer compilers, run on newer hardware, etc. Which makes me wonder if there is somewhere a database of dormant/dead projects that would deserve to be resurrected.

Yes, I would echo this. In most categories there are loads of subpar efforts when putting all that effort behind the top few would yield a handful of excellent apps. Collaboration can seem daunting and hard work, but it's work that will yield results which is time better spent than that devoted to projects that end up abandoned.

Who gets to take the credit?

I'm not convinced these efforts to put everyone's ideas in one place and one software are good. Often, design disagreements arise which are incompatible. Under this model of "everybody love everybody" lameshit, if you can't get the group to accept your idea, it doesn't happen.

You don't run into this problem when you write alone.

Re: Make Apps for Linux

#179

Earlier quoted context omitted.

This has the case for 10 years with games on steam. The worst being libstdc++ ABI issues still around because many devs forget to statically link their c++ libs with -static-libstdc++. Because in windows, ABI stability is really good and then devs are used to that.

As far as I understand, Windows solves this libc++ versioning issue using the side by side cache. I guess this is a little bit like flatpack.

Windows standard C and C++ ABI is stable since 2017. So the last 3 releases of the Visual C Compiler and C runtime hasn't changed the ABI.

However Windows also has a lower level system API / ABI i.e. Win32 that's always stable all the way to Win 95. WinSXS sometimes helps for certain legacy apps too. This allows apps using different C libraries to work together. Win32 contains everything about the OS interface. Creating windows, drawing things, basic text, allocating pages from the OS, querying users, getting info about files is all stable. Win32 is the lower level of the C library. There is also a better separation of the functions in different DLLs. Win32 has multiple DLLs that has different jobs and they are mostly orthogonal. Kernel32 contains core almost system call stuff. Shell32 contains interactions with the OS shell i.e. creating windows, message boxes, triggering different UIs.

The surrounding libraries like DirectX / DirectPlay / DirectWrite that are also used by the games are also part of the system libs starting from 7. They are also stable.

On Linux world there is no separation of the system level libraries and normal user libraries. Glibc is just another library that one depends on. It contains the entire lower level interface to kernel, all the network stuff and POSIX user access stuff. It also contains a component that has no job in a C library: the dynamic executable loader. Unlike Windows on the Unix systems the C library is at the lowest level and Glibc being the default libc for Linux and making itself the default provider of the dynamic executable loader makes writing stable ABI almost impossible. Since other libraries depend on Glibc and executables depend on Glibc's dynamic loader everything is affected by the domino effect.

Post reply on HN