Live data from Hacker News

Make Apps for Linux

makealinux.app

221–230 of 422 posts

Re: Make Apps for Linux

#221
post #80
post #34

I think the premise is wrong when there still doesn’t exist a core set of frameworks that are abi stable on Linux. On competing platforms there are way more frameworks out of the box (CoreImage, CoreAudio, CodeML, SceneKit, AppKit, etc) and they don’t break as often. I know in Linux they have fun things like snap and flatpak but it is really solving the problem using a bit of infrastructure and package management ins…

Cuplrits are mostly glibc devs with their manic abuse of version names (and very recently, a GENIUS who added a new ELF relocation type): this is a pain for game developers to provide binaries which span a reasonable set of distros in time. Basic game devs install one of the latest mainstream and massive distros, build there, and throw the binaries on steam... but that recent distro had a glibc 2.36 and now their bin…

Isn't the solution to this problem to just distribute the source code. Let package maintainers worry about creating binaries for their distros.

Re: Make Apps for Linux

#222

Earlier quoted context omitted.

Play Protect Certified Android and ChromeOS are popular ones among consumers

Nice. Maybe more desktop distros should build on android as a core. That could solve a lot of problems.

I agree. With how much resources are invested into Android for offering an OS for consumers, desktop Linux distros using the freedesktop stack are missing out. It is not easy for distros to acknowledge the sunk cost.

Re: Make Apps for Linux

#223
post #26

Earlier quoted context omitted.

The CLI is peak UX for anyone technically competent.

In principle maybe, but all present implementations fall a bit short. Why can't I use my mouse to position the cursor in any shell? Placing the cursor with the mouse is something people commonly do in terminal editors like vim or emacs; the efficiency arguments against it fall flat because this is entirely optional and besides, many people use laptops with either a track-point directly in the middle of the home row k…

It’s not done because there’s no use case. No point in writing anywhere and clobbering existing text.

Re: Make Apps for Linux

#224
post #34

I think the premise is wrong when there still doesn’t exist a core set of frameworks that are abi stable on Linux. On competing platforms there are way more frameworks out of the box (CoreImage, CoreAudio, CodeML, SceneKit, AppKit, etc) and they don’t break as often. I know in Linux they have fun things like snap and flatpak but it is really solving the problem using a bit of infrastructure and package management ins…

I had read somewhere that Win32 (via Wine or Proton) is the most stable target for Linux right now.

Which is quite something considering I can't have foobar running for more than an hour before it crashes.

Re: Make Apps for Linux

#225

Earlier quoted context omitted.

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.

Worse for users than nothing? IT shouldn't be a default, but if it's that or nothing-- as it often is when it comes down to limited resources-- I think it's better than nothing. If you're looking to make a useful tool for a broad audience that must run locally, you have to support windows because that's where 80% of the users are. You should support OSX because that's where 15% of the users are. That's two codebases…

I'm really not swayed by "we must use this turd because the alternative is nothing". "Nothing", to me, is a technical challenge and a sign I should probably start writing the thing myself.

Yes, not everyone has the skill or time to do that, but it's also no reason to accept half-baked solutions that don't take the user's system resources into account. Compute may be cheap but it's still a resource we need to use wisely. Not everyone is running a system like the developer's Macbook Pros on 5GHz wifi hooked up to fiber.

Re: Make Apps for Linux

#226

Earlier quoted context omitted.

What's the difference between "notes" and "plume"?

Plume's editor is a block-editor I wrote completely from scratch using C++ (model) and QML (view). This allows me to create an advance editor that can have complex elements (like Kanban, Columns, advance image components, etc) within the text. The performance using Qt C++ compared to Electron is a mssive improvement over current web apps (like Notion and the likes), and actually, i's even faster than native apps on m…

Okay that's actually cool, that you switched to something else than electron, but it looks nearly identical from the screenshots, that's why I asked.

Re: Make Apps for Linux

#227

Earlier quoted context omitted.

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".

The Apple ecosystem of platforms take steps forward all the time, and they do a pretty good job at keeping binary compatibility with releases decently well while they are at it. They partly do this by only shipping C, ObjC and Swift platform frameworks though.

Re: Make Apps for Linux

#228

Earlier quoted context omitted.

Why is it terrible? Asking for real.

Well, so I can only tell you as much as I know and understand. Some of this pulls in some outdated information too. So, JVMs and languages that abstract the underlying machine are always going to have overhead. The original interpreted stack-based JVM model is really bad for performance because you can't do great optimizations on the code because you can't have a great view of the operands that are being defined and…

> So, JVMs and languages that abstract the underlying machine are always going to have overhead.

Well, so JavaScript and WebAssebly isn't that great either in the end?

> The original interpreted stack-based JVM model is really bad for performance because you can't do great optimizations on the code because you can't have a great view of the operands that are being defined and then subsequently used, on top of that you have to either JIT or interpret code which also has overhead.

What a paragraph. But it's kinda false.

WebAssembly, you know, is also a stack-based virtual machine.

Javascript might not be a stack-based virtual machine, but you're interpreting it every time you run it for the first time. How is that faster that bytecode? It isn't.

In fact, modern Javascript is fast specifically because it copies the same workflow of the Java HotSpot JIT optimizer - detect and compile code hot spots in native code, run that instead of VM code.

> This is why Android's original Dalvik VM originally started by converting the Sun byte code format to a register based format. So, now you have a format you can do some optimizations on: great. But you still depend on a VM to generate and optimize for native code: that means code-caches and that means using excess memory to store the fast optimized code you want to run (which could have been evicted, so more overhead when you have to regenerate).

Nope, that is totally not the reason. Dalvik was done because it was believed that you needed something that starts faster, not something that runs faster.

Those are 2 different optimization targets.

It was pretty known since the start of Dalvik that Dalvik had very poor throughput performance, from 10x to 2x worse that HotSpot.

The reason why we don't have Dalvik anymore on Android is that it also didn't start that much faster either.

That of course is not because register machines are worse either, but because nowhere near enough optimization work was done for register type VMs compared to stack type VMs in general.

> Next you have frameworks like the classic Swing in Java that were frankly implemented with priorities that did not include having a really great and responsive experience even though its platform agnostic as far as the way it draws widgets. These days we can take GPUs for granted to make this approach work, but a lot of the Java UI stuff came from another era.

Ok, but does your favorite, non-web GUI framework use the GPU, and use the GPU correctly at all?

Even on the web it's easy to "accidentally" put some extremely expensive CSS transformations and animations and waste a whole bunch of GPU power on little things.

> I am not really sure if I am right here, but to me all this means that to have made the Java system work well for modern PCs and mobile it would have required a ton of investment. As it turns out, a lot of that investment went into the web and android instead of polishing Sun and Oracle's uh... product.

You're mixing things here. "Sun products" were very expensive UNIX workstations and servers. Not things for your average Joe. Those very expensive Sun workstations and servers ran Java fine.

Java itself is a is very weird "Commoditize Your Complement" ( https://gwern.net/complement ) attempt to commoditize this exact very expensive hardware that Sun was selling.

From Sun. Marketed at very high expense by Sun. A self-inflicted self-own. No wonder Sun no longer exists.

> Java's also kinda been sidelined because for years Oracle threatened to sue anyone that dared fork it as Google had, and Microsoft kinda spent a decade making C# and .NET more confusing than it already was so theres that too.

C# not having nice GUI is another story, that of Windows-land never having anything above pure Graphics Device Interface being stable since forever.

Re: Make Apps for Linux

#229

Earlier quoted context omitted.

Your postulate that it is electron or nothing is wrong from the very start.

You postulate that I said that, which is wrong. > IT shouldn't be a default, but if it's that or nothing-- as it often is when it comes down to limited resources-- I think it's better than nothing. Sometimes it is. Sometimes it's not. It's certainly an option that's very efficient for dev resources, which is often the primary limiting factor. It's certainly the only real option if you've already got a team of web dev…

Look, business is about maximizing profits and minimizing costs. Business should absolutely not be looked to as an example of an entity that makes sane or suitable tech decisions over the long term. Their goals are different from everyday users, and both are different from power users and programmers.

Why should normies suffer through worse software than those that know what they're doing? Web-based "native apps" are that worse thing.

Re: Make Apps for Linux

#230
post #146

Earlier quoted context omitted.

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?

I suppose they meant a "libc independent" allocator, e.g. jemalloc/tcmalloc/mimalloc/etc. Although, using such allocators comes with complications of their own: https://lwn.net/Articles/761502/
Post reply on HN