• sgtlion [any]
      link
      fedilink
      English
      2713 days ago

      So it’s even worse than just being react native, it’s even more things

    • kleeon [he/him, he/him]
      link
      fedilink
      English
      1013 days ago

      React is actually way more usable than all the crap Microsoft has been pushing. WPF in particular is one of the biggest piles of dogshit I’ve ever had a displeasure of using

      • @footfaults@lemmygrad.ml
        link
        fedilink
        English
        713 days ago

        React is actually way more usable than all the crap Microsoft has been pushing.

        Maybe so, but WPF is built on top of win32 which is native performance. You are trading away performance for developer “usability” and the “convenience” of writing in JavaScript

        • kleeon [he/him, he/him]
          link
          fedilink
          English
          4
          edit-2
          13 days ago

          I 100% agree. Personally I prefer to use dear imgui on top of win32 when I need to make a desktop UI but I also get the appeal behind things like Electron. I just wish Windows provided us with something that’s not completely impossible to use

          • @footfaults@lemmygrad.ml
            link
            fedilink
            English
            413 days ago

            I happen to have done some C# programming around when WPF came out and I will tell you, it was way better to deal with than .NET Forms. Made things much better. So, I dunno count me as a “WPF is good” because the thing it replaced was far worse

      • SevenSkalls [he/him]
        link
        fedilink
        English
        812 days ago

        Eh, it’s good we establish facts with everything. No need to argue Windows sucks with false statements when we can use true ones.

    • edge [he/him]
      link
      fedilink
      English
      1413 days ago

      Both can be true. But if there’s a resource bump from opening the start menu, React is probably the culprit.

      • VibeCoder [they/them]
        link
        fedilink
        English
        713 days ago

        There’s definitely overhead to spinning up and running a JS interpreter (although it uses Hermes instead of V8, which helps) as well as communicating between JS and the native layer. I think the extent to which that stuff results in bad performance on its own is greatly exaggerated and is acceptable for a lot of use cases.

        For the extra effort of learning how to optimize RN code, you get the benefits of:

        • not maintaining 3 codebases to deploy to iOS, Android, and the web
        • transferable knowledge if you have a lot of JS and/or React devs who don’t know the languages for native dev
        • OTA updates, meaning you don’t need Google and Apple’s approval every single time you wanna change styling on a button or fix a bug and your users can’t remain on ancient buggy versions forever

        I’d say when dev resources are limited, React Native is a good choice. Was it a good choice for Microsoft? Seems like the answer is no, but that could easily be the result of bad org charts just as much as the failure of individual devs.

        As far as vibe coding goes, I was very happy with it right up until I wasn’t. I hit the same “this is a mess I’d better rewrite it” wall I always do with side projects except I hit it faster. At work I’ve found AI useful for speeding up monotonous tasks, but I’ve never had luck with just letting it fly and not giving the code a close review as soon as it’s generated. Prompting AI to fix a bug it created seems to create more bugs just as often.

  • hello_hello [comrade/them]
    link
    fedilink
    English
    2013 days ago

    This is really funny because GNOME’s desktop interface is almost entirely programmed in Javascript which allows for high levels of control and customization at runtime since you’re simply editing running JavaScript.

    Common Windows L.

  • queermunist she/her
    link
    fedilink
    English
    1913 days ago

    React Native is a JavaScript app development tool but that’s about all I can discern from this meme. I don’t get why that’s bad or what that even really means lol

    • lil_tank [any, he/him]
      link
      fedilink
      English
      2913 days ago

      Without going to details : the easier a programming language / framework, the more resource intensive. So if you’re a billion dollar company making software that’ll be run on 80% of user devices, you hire people who can handle making optimised programs so users don’t melt their machine to check their e-mails.

      React native is a framework that is making developing programs with JavaScript easier, JavaScript is a language that is designed to be easy and cross-platform. So that means Microsoft likely made a bunch of interns work on this to save money while the users have to deal with atrocious performances

  • Lyudmila [she/her, comrade/them]
    link
    fedilink
    English
    1813 days ago

    Really not that big of a deal. This stuff is like the PopSci journalism version of computer science.

    Just disable the Recommended section if you want to avoid the react crap, nothing of value will be lost. shrug-outta-hecks

  • underisk [none/use name]
    link
    fedilink
    English
    1713 days ago

    There’s some generalizations happening in here that are being presented without appropriate context. Using react native is not significantly different from using most other native UI libraries. If you’re going to condemn them for using it you should understand that a lot of the desktop software you currently use is likely built in a very similar manner; Firefox, discord, vscode, to name a few, all use technologies developed for the browser to render their UI. They can be implemented in performant ways with careful consideration.

    The problem with using it here is that even at its most performant, React Native is still an abstraction layer that incurs a performance penalty and introduces complexities that could result in unintended behaviors. The start menu is always on, heavily used, and critical for operation. It should be one of the most heavily optimized and stable pieces of software in the operating system, and using react native indicates that it probably isn’t. Which suggests either they have misplaced priorities around optimization, or they’ve completely abandoned it as a goal.

    • edge [he/him]
      link
      fedilink
      English
      1213 days ago

      Your examples were a browser, a browser that only shows one website, and the same browser as the previous but it shows a different website. Firefox is fine since its whole purpose is being a browser, but Discord and VS Code could and should be written native (with a better language than the garbage that is JS).

      • underisk [none/use name]
        link
        fedilink
        English
        513 days ago

        Yeah, I deliberately stated examples that used tech developed for the web. If you’d like me to list more apps that use shitty UI abstractions I can but it didn’t feel relevant to the point I was making.

        Firefox, for example, didn’t use web components previously, and instead used a clunky XML based system called XUL. Which also sucked ass and was a chore to use. QT looks like shit. Visual Basic is proprietary microsoft garbage that requires special software and makes me want to die.

        What UI framework do you recommend they switch to for Discord, an application built entirely in HTML/CSS and JS intentionally so that it could run in a browser window?

  • Foni
    link
    fedilink
    English
    1713 days ago

    Could someone explain it like I’m 5 years old?

    • companero [he/him]
      link
      fedilink
      English
      3113 days ago

      React is an app framework that was originally designed to run in web pages. Then developers realized they could run it “natively”, without a web browser, to make mobile apps.

      Now Microsoft uses it for some core desktop OS functionality, far from its original intended purpose. And React apps have a reputation of being bloated and slow.

    • stupid_asshole69 [none/use name]
      link
      fedilink
      English
      1813 days ago

      There are different programming languages. React native is a fancy version of a language called JavaScript that is interpreted as opposed to compiled.

      In a compiled language, you write your code then compile it into assembly (the inscrutable language of computers) for the computer platform you want it to run on. That means if you want it to run on a wildly different computer, with like a phone cpu (arm) instead of a desktop cpu (x86) or a mac (apple silicon, also low key arm), you need to compile and distribute a different version of the machine language file the computer will run called a binary.

      Computers need assembly files instead of human readable files because they arent usually actually doing what the programmer is talking about. A good analogy is the old “tell me how to make a peanut butter sandwich” lesson where the teacher asks the class to instruct her how to make a peanut butter sandwich and performs all the instructions literally, making a mess.

      The programmer asks for a peanut butter sandwich and the binary file the computer runs actually says “undo the twist tie” “take out the first two non-heel slices of bread” etc.

      Interpreted languages aren’t compiled, instead your human readable code is processed directly by a program called an interpreter and transformed into assembly in real time. It’s great because now anyone can run your special program as long as they have your language’s interpreter installed on their device.

      But compilation takes lots of processor power! So what would be incredibly fast stuff when run as a compiled binary like opening a menu with a list of options now has to be first interpreted before the results can appear, resulting in a delay before the start menu opens.

      Interpreted languages also open up a few significant security issues because the file that says “open the start menu” is now human readable code and all evil Dennis has to do is change that file to add some “send all credit card information and passwords to evildennis.net” to get stored information every time the start menu is opened.

      The interpreter that runs everytime the menu gets opened is also a security concern because if evil Dennis can get his own evil interpreter on your device he can steal data any time any JavaScript is run.

      So when should you use compiled versus interpreted languages? Well the general rule is if you know what computer is gonna be running your code, use a compiled language. Microsoft knows what computers are gonna be running their start menu code. They’ll be windows computers.

      So why would Microsoft have done this? There are a few reasons: it could be that they’re not worried about the start menu and if it runs slow but supports lots of ad serving frameworks then that’s fine. It could be that they’re not sending their best when it comes to writing the user interface of windows. It could be that introducing an insecure component of windows fits their business model of giving you a free foot-gun then selling you Kevlar shoes.

      TLDR: they used the most wrong language for something that’s core to the operating system and the only explanations are incompetence or malice!

  • @footfaults@lemmygrad.ml
    link
    fedilink
    English
    1313 days ago

    This is the same thing that happens with desktop applications that use Electron. They have performance issues and eat tons of RAM.

    Apparently it’s too difficult to pay good programmers that can use native frameworks and lower level programming languages, it’s just cheaper to hire junior developers who only know JavaScript and just make everyone deal with the performance degredation

    • GaveUp [she/her]
      link
      fedilink
      English
      813 days ago

      Microsoft is too busy laying people off every year arbitrarily for the almighty stock price and offshoring to cheap labor sorry

    • DefinitelyNotAPhone [he/him]
      link
      fedilink
      English
      713 days ago

      The core idea of Electron makes a lot of sense: rather than try to make your program run on many different OSes you instead just make it work on one platform that then makes it run on many different OSes for you. It’s effectively a bunch of development teams centralizing their OS-driven development to a third party.

      The problem is that Electron is made by capitalists who only care that it works on Windows/MacOS/iOS/Android/etc and couldn’t give two shits if the performance is good or not because that’s not what they get paid to do, so it’s massively resource intensive and slow as balls.

      • @footfaults@lemmygrad.ml
        link
        fedilink
        English
        2
        edit-2
        12 days ago

        This was the premise of Java, specifically AWT and Swing. Electron is following a path that was already explored decades ago and the same performance and memory problems were encountered