1. 29

Warning: contains Electron and Flash apologist.

  1.  

  2. 27

    It (flash) democratized access to publishing creative works and designing media-rich websites on the internet. How is that a bad thing?

    Did it? Could you use the tools to create these “flash sites” for free? Or did you need to pirate them? I honestly don’t remember if you had to pay for these tools.

    I spent a lot of time on Newgrounds when I was younger creating and consuming content. Without Flash, sites like Newgrounds couldn’t have existed.

    Well, flash is/was apparently great for art projects, nothing wrong with that! The problem with flash was that it was used in many places which forced you to install it to do “important” things where the use of flash was neither needed, nor appropriate.

    JavaScript is the new Flash :)

    1. 13

      Did it? Could you use the tools to create these “flash sites” for free? Or did you need to pirate them? I honestly don’t remember if you had to pay for these tools.

      Macromedia Flash, Shockwave, and Dreamweaver cost money. I think it was hundreds of dollars in total. Everyone pirated them. (Checks statute of limitations.) I grabbed all three, too, with Dreamweaver a great tool for websites. I’m sure some paid for them but the piracy rate was so high I’d really love to know the paid-vs-pirate ratio of all that content author refers to.

      Note: I also had Formula Graphics Multimedia. Very powerful tool. Flash was simpler, though, with a web plugin, too. That’s why it won over powerful competitors. Well, memory is hazy on whether other one had web plugin. It did have a ton of functionality, though.

      “The problem with flash was that it was used in many places which forced you to install it to do “important” things where the use of flash was neither needed, nor appropriate.”

      That is indeed the problem. I even encountered it recently on sites of major companies I use. It’s always trying to load or crash in the background. They at least have a redirect that lets me keep NoScript on. :)

      1. 11

        Dreamweaver a great tool for websites

        I used Dreamweaver in my student days. It was never a “great” tool for websites. It was the WordPress of the desktop website authoring world.

        Non-technical Users loved it. Anyone who knows how to code hates it, or has a kool-aid addiction.

        1. 2

          I see where you’re going but can only half agree. You basically just described Frontpage tool that laypeople learned in school left and right. Dreamweaver took more investment due to higher complexity. I did use it since I was still learning web sites. However, the templating and WYSIWYG editor saved me plenty of time vs hand-coding things. And I still got the HTML in one click to add my stuff from dynamicdrive.com.

          For stuff appealing to programmers, Allaire ColdFusion comes to mind given it combined HTML style with integrated app and DB functionality. It was interesting. I extended my homebrew 4GL to synthesize basic forms like LISP web does. Overall, I was doing client-server native without enough interest to invest in Web. I didnt do much more than using Dreamweaver for some web sites with CGI and Perl.

      2. 9

        I think TFA means that it “democratized” in the sense of reducing the amount of technology knowledge that people had to invest in order to make things happen. “Things I need to learn before I can get started” can be as much of a barrier to entry as “money I need to pay before I can get started”.

      3. 23

        Electron is not flash.

        JavaScript is flash.

        Electron is the Adobe Air and that’s far worse than being a modern flash.

        1. 5

          Well, with Air you had to have the Air runtime. Electron apps are self contained, right? That makes them at least somewhat better…

          1. 23

            You surely mean worse? That means each Electron app potentially packages an old, unpatched runtime with similar complexity to the Chrome browser.

            1. 12

              This is the new world.

              Developers actually think JavaScript is “low level” (I’ve seen multiple people call it ‘the new assembly’) because other languages transpile to it.

              Electron developers are essentially front-end web developers and/or nodejs developers.

              NodeJS developers by-and-large think npm is “good”. NPM’s dependency management were (and maybe still be, I don’t know) a joke. Every package got a copy of all the packages it depends on.

              The authors who create NPM packages are just as guilty. Depending on a hard version of a library seems to be very fucking common.

              The last time I bothered to check on this stuff, I posted about it: https://news.ycombinator.com/item?id=11092772

              1. 13

                NPM’s dependency management were (and maybe still be, I don’t know) a joke.

                It still is. I work on a small node.js project at work. I was explaining npm to some Haskell programmers. They were horrified when showed the project’s node_modules directory, which contained:

                • 8 copies of esprima, a JavaScript parser
                • 11 copies of glob, a glob implementation
                • 12 copies of readable-stream, which is an implementation of something that’s also in node.js…

                I probably shouldn’t say “copies” because for each there’s at least 4 different versions.

                npm’s installation is also non-deterministic. You can install the same dependencies twice and get a different layout of packages in your node_modules directory.

                1. 1

                  npm’s installation is also non-deterministic. You can install the same dependencies twice and get a different layout of packages in your node_modules directory.

                  That should be fixed with Yarn. It’s just amazing that the JavaScript community took this long to build a solution.

                  1. 1

                    There’s also ied, which does a pretty good job.

                2. 1

                  Yeah, npm isn’t so good, that’s why Facebook came up with Yarn, which seems to solve a lot of the shortcomings of npm. We’re transitioning to it at my company and its working great. With npm, we intermittently saw builds fail because of non-deterministic package resolution, which yarn solved.

                3. 2

                  It’s hard to argue with you. You’re right, but I feel there’s maybe a bit of nuance here.

                  In the case of Air, one vuln definitely takes out all of the Air apps on the system. A vuln in Chrome / Electron, is likely targetting one specific version, or a small range of them. In the event all Electron apps have a slightly different version, you might actually get lucky from time to time!

                  1. 1

                    A vuln in Chrome / Electron, is likely targetting one specific version, or a small range of them. In the event all Electron apps have a slightly different version, you might actually get lucky from time to time!

                    Unfortunately life shows it’s the other way around.

                    Take the recent Linux remote UDP vulnerability as a perfect depiction of what usually happens.

                    1. You have a ton of systems, devices shipping a different version of the Linux kernel
                    2. Not all of them receive security patches
                    3. Someone finds a flaw and it happens to impact every kernel from 2.6 up to version 4.5

                    The situation you are depicting would only work if every security flaw was contained to a single version of the bundled runtime - in reality it’s more likely that it will impact a range of versions and bundled software is less likely to receive security updates.

                    The only thing that changes is having to patch each and every copy of the runtime in case of a security issue instead of patching the single system wide shared runtime.

                    1. 1

                      Unfortunately life shows it’s the other way around.

                      It happens both ways. Some versions of Red Hat Enterprise Linux, for instance, weren’t affected by this UDP vulnerability, but your point is taken.

                      Maybe the thing to agree on is that shipping any software results in some sort of security risk.

                      1. 1

                        Maybe the thing to agree on is that shipping any software results in some sort of security risk.

                        I would lean towards: “any shipped software that is not actively maintained and doesn’t receive security patches”.

                        1. 1

                          Between the time the patch is identified, fixed, and release there is a window of non-zero time. An active maintainer can reduce this time, but in many cases, the user isn’t forced to update, nor is this time 0. Even worse is if the vuln is actively exploited before being disclosed.

                    2. 1

                      Given that taking over one app lets you control all the others (you’re now running with users privs) I’d have to say this is a worse position.

                      1. 1

                        It’s bad anyway you look at it. Maybe the Electron model is worse because the number of different versions possible for the runtime increases the likelihood of one being vulnerable. But maybe, just maybe, the track record of Adobe is so bad that the chances of Air having vulnerabilities far exceeds the likelihood of Chrome having vulnerabilities, even when many different versions are installed on the system?

                        But, I don’t disagree here!

                  2. 2

                    In 2011 AIR shipped an embedded runtime feature, so you could do the “self-contained” route if you wanted to.

                    1. 2

                      I was not aware of this!

                  3. 2

                    I am reading this while listening to Spotify, whose desktop app is Adobe Air. Tool to task people, all this vitriol is misplaced.

                    1. 5

                      Spotify is only good because they have a huge selection of music. Both their iOS and Mac app is the worst app I have installed on either platform, except maybe iTunes.

                      1. 2

                        So, if you judge the apps in terms of the native Apple ecosystem, sure, I’m with you. But at least for me there is a sense of Good Enough and spotify for me personally at least is Good Enough. I can play my music, I can browse music my friends are listening to, I can enjoy the myriad playlists Spotify and my friends create. It Is Good Enough.

                        1. 2

                          Sure but in that sense, CDs are good enough too. Luckily, most aim for better, not just good enough. If they didn’t, the world wouldn’t improve.

                          1. 2

                            Totally agree. However this is a case where in an ideal world, everyone would develop native clients for every platform and life would be grand.

                            But, in the real world, every development man hour has to be justified to the bean counters, and for my needs, I would much MUCH rather have a Good Enough client that runs on my Mac, my Linux desktop, my phone, my FireTV, etc etc etc than a deliciously smooth native client that’s Windows only and to heck with everyone else :)

                            1. 1

                              Well yeah, but for someone huge like Spotify, Slack, Github and so on, I don’t think it’s justified at all. And I’d rather use something else. Only problem is that apples native music player is even worse in this particular case :p

                  4. 11

                    I feel like there’s a huge difference between technologies like that being used for mostly games and art of which I usually view one at a time, or whether they’re used for “productive” software that I sometimes have to run as daemon in the background.

                    In contrast to Electron, Flash was rarely used to render full GUIs of desktop apps, and whenever it happened it was a similar disaster as Electron is now.

                    1. 15

                      Hey all, happy to join your community. ☺️

                      My comparison between Flash/Electron was meant to capture both technologies in a positive light by taking a more holistic view. We can all agree that both platforms have many issues. My opinion is that, while Electron has it’s problems, it’s still pushing the industry forward as a whole. Will the existence of Electron spur the creation of newer cross-platform frameworks that are less resource intensive while remaining extremely easy to use and get started with?

                      I don’t think Electron is perfect, but I do think it’s still a good (and necessary) step in the evolution of cross-platform software development.

                      I argue that these imperfect stages are actually needed for the evolution in this area as a whole. And for that reason, I believe Electron is a great thing (just as flash was).

                      What do you all think?

                      1. 22

                        Will the existence of Electron spur the creation of newer cross-platform frameworks

                        One of the problems is that these cross-platform frameworks do not benefit me as a user of a fairly mainstream platform on the desktop (macOS). Most software vendors care about macOS, so they will provide a version for macOS. However, where they used to write a Carbon and later Cocoa application, they now write an electron application to tick off that platform. For me, as a macOS user, it is a terrible regression. Even if we do not take the problems of Electron into account (memory use and CPU use), these applications do not integrate in the native look & feel. They look out of place, but even worse, there is virtually no platform integration (keyboard shortcuts, macOS services, integration with other Mac applications, AppleScript support, etc.). I stopped installing applications that use Electron, just because their experience frustrates me (besides eating a lot of memory and killing my battery).

                        The argument of the Electron crowd is that eventually cross-platform frameworks will integrate better. Unfortunately, history has shown that it will never get that far. Even with the gold standard of cross-platform frameworks (Qt), you typically notice that you are not using a native application (on macOS and Windows). Usually cross-platform frameworks will end up at the lowest common denominator of the platforms that they support.

                        Another question is why Electron is reinventing the wheel? Qt et al. are miles ahead as a cross-platform framework and does not require a fully embedded browser (though you can do so). Are some people so allergic to anything that is not Javascript + DOM that they’d forgo having somewhat reasonable resource use and better (but not perfect) platform integration?

                        (Edit: I do understand that there are (perceived) economic incentives using Electron above native apps.)

                        1. 16

                          Are some people so allergic to anything that is not Javascript + DOM that they’d forgo having somewhat reasonable resource use and better (but not perfect) platform integration?

                          Spend a few months in JavaScript communities and the answer is yes. The “JS for everything!!” is fun as a weekend project, but less fun when you find yourself relying on it for work.

                          1. 20

                            Correct. The crux of the matter is the fact that the statement, “native apps are hard!” seems to go completely unchallenged, especially in JS land.

                            The reason it bugs me is that it’s used to justify all manner of things that challenge and broaden one’s horizons, including FP, static typing, testing, etc. I’m sick of hearing “it’s hard!” from seemingly the same crowd that loves to write on Medium about how launching a startup is so hard but they have learned so much on their incredible journey.

                            Bring back the intellectualism in programming. If you don’t know something, then accept that in humility and put it on the to-do list of things to learn. I’m not asking for people to buy into any of that aforementioned stuff wholesale, just stop being so proud of not knowing it, okay?

                            Edit: it’s amusing that “RTFM” is considered profane, but the culture it reflected felt like one where putting the time in to study mattered, and that such study was expected of you. What we have now is…quite different.

                            1. 9

                              The crux of the matter is the fact that the statement, “native apps are hard!” seems to go completely unchallenged, especially in JS land.

                              Native apps may require you to develop environment-specific code, but the code you develop is far simpler than equivalent JS/DOM-driven UIs. Anybody who says, “Web UI is easy,” is a lunatic, or knows nothing but web development.

                              1. 6

                                I’d argue the messiness of the web is almost countered by the extensive toolset that has grown up around it, such as React/Vue, hot-reloading, and general ease of getting started.

                                It doesn’t fix the fact that it is lipstick on a pig, though; other parts of the ecosystem remain of questionable quality.

                                1. 6

                                  I’d argue that the forest of toolsets around web development shows that we still haven’t figured out how we want to do web development.

                                  1. 1

                                    we still haven’t figured out how we want to do web development

                                    I guess “producing and adopting reams of solutions in search of problems” is a way to do web development :)

                                    It’s just not a very good one.

                                  2. 1

                                    I’d argue the messiness of the web is almost countered by the extensive toolset that has grown up around it

                                    I think it’s more the other way round. Now that IE6/7/8 isn’t really a problem anymore, standard plain old JavaScript isn’t all that messy anymore.

                                    What’s messy is the proliferation of solutions in search of problems that get adopted despite being such. The front-end world is so crazy that I don’t even have the energy to try and describe it here.

                                    But even the mere fact that ‘left-pad’ exists and has been adopted by eeeeeeevvvvveeerryone speaks volumes.

                                  3. 2

                                    What’s currently the best cross-platform framework/lib in terms of it working on major platforms and easy for newcomers?

                                    1. 4

                                      There was a good link/thread on this recently; the best sounding suggestion was to build native three times and reuse the core stuff.

                                      1. 1

                                        Which to be honest probably forces you into a better architecture anyway. Too many GUI apps mix the business logic with the presentation layer instead of enforcing good layering.

                                        1. 1

                                          the best sounding suggestion was to build native three times and reuse the core stuff.

                                          Java would be a pretty good solution if people weren’t (seemingly) so upset by desktop apps not looking completely native.

                                          But do they really care? Wouldn’t anyone rather just use a valuable application even if it doesn’t look native?

                                2. 2

                                  Even if we do not take the problems of Electron into account (memory use and CPU use), these applications do not integrate in the native look & feel. They look out of place, but even worse, there is virtually no platform integration (keyboard shortcuts, macOS services, integration with other Mac applications, AppleScript support, etc.).

                                  I agree it’s even worse for Electron apps (though the ones I use do at least have the common macOS keyboard shortcuts). But I think companies, including Apple, care less and less about a particularly coherent UI these days in general. Even native macOS apps don’t strongly conform to any one coherent UI convention, as mac apps used to in the days of ye olde Human Interface Guidelines. Photoshop, for example, looks nothing like a macOS app, even though it’s native. Even Apple first-party apps, though not diverging as extremely as Photoshop, are no longer all that consistent: Pages, XCode, Safari, and iTunes are kind of all over the map in their UI design.

                                  1. 1

                                    Another problem is that the cross platform support is limited to just a few platforms compared to most open source software

                                  2. 11

                                    I don’t know that electron is pushing the industry forward. What’s your evidence there? That there are more desktop applications now than there previously were? Is that an advantage when they’re just a web browser frame around a web app?

                                    Does it lower development time for someone who already has a web app and wants to say “look, we have a desktop app too”, absolutely. But I don’t think on the whole that’s been a push forward for software development. If electron were something that could do that with native toolkits and native performance, I’d absolutely say that, but given that it’s essentially a web browser, minus the chrome. I don’t think that counts.

                                  3. 10

                                    I hate electron almost as much as I hated flash back in the day.

                                    The author tries to paint flash as some bastion of free speech, claiming that fucking terrible battery life and being a security nightmare were “worth it” because flash did amazing things.

                                    And yet the only concrete example s/he gives of this, is Newgrounds.

                                    Are you fucking kidding me?

                                    As recently as 12 months ago I had to fire up Chrome (because it has flash bundled) because VMWare decided to use flash to make the admin panel for their private cloud tools web ui.

                                    Let that sink in. Flash, for a Server/Network Management console.

                                    Fuck you and fuck flash. Electron is worse than flash, because at least with flash it was only Adobe who were stupid enough to use it for desktop apps.

                                    1. 8

                                      Vitriol aside, I agree with you. “Democratizing” software is not worth needing 4+GB of RAM to run an IRC clone alongside a web browser.

                                      1. 1

                                        I guess it’s a matter of perspective; if I couldn’t code, hosing my machines performance would be worth gaining that ability.

                                      2. 4

                                        “Are you fucking kidding me?” is not an argument. A couple of the most creative people I know got their start on Newgrounds and are now making great art, in a way that maybe wouldn’t’ve happened without Flash.

                                        1. 1

                                          Two artists that maybe relied on one single website vs millions of people who were exposed to the chest burster of the software world.

                                          Sure, that sounds totally worth it.

                                      3. 4

                                        I find myself agreeing with the author mostly. Electron and Javascript may have problems, but who else is working on current-generation technology for cross-platform desktop applications? Has there been anything else new on that front in the last decade? It may be fun to rant about how much of a memory hog it is, but please let us know when there’s something better for making a desktop app that works reliably on Mac, Windows, and Linux. This especially applies if you primarily have a web app and want to make a desktop app that broadly does the same thing. Would you rather tweak your Javascript codebase a bit and have an app for every platform, or build a new app and UI from scratch for Windows/C#, MacOS in Cocoa, plus Linux in C++ probably, and maintain all of those codebases in different languages and frameworks for the life of your business?

                                        1. 2

                                          Has there been anything else new on that front in the last decade?

                                          The only solution I’ve found for writing cross-platform native-feeling desktop apps is Racket. It has excellent tooling, compiles to a very small distributable, and has very low memory requirements. However, it’s been around a lot longer than a decade, so I guess the answer is technically no.

                                          1. 2

                                            Also, Racket suffers from the “not made by Facebook/Google” syndrome.

                                          2. 1

                                            I think the problem comes the other way around.

                                            The main issue here is that you cannot share the business logic of your application between a web application and a “native” app.

                                            I think a good approach to create a cross platform application, instead of thinking rewriting a whole application in a new cross platform technology, is to create a shared library handling your pure business code (ie. no IO stuff) shared across multiple applications handling all the IO fuzz. This way, each application can truly integrate within the target ecosystem without duplicating your application’s core codebase.

                                            Web apps/javascript platforms are something relatively new (in regard of computer history) and have not been created with interoperability in mind. As it is today, you cannot easily import a library directly from your javascript code.

                                            You still can hack around these limitations by transpiling your code, but let’s face it, this is a hack.

                                            I am quite hopeful that something like web assembly will solve this problem.

                                          3. 3

                                            With Electron, we’re seeing a similar explosion of new desktop software. The lower barrier to entry into creating cross platform desktop software far outweighs the detriment of computer resource usage.

                                            But, pray tell, why are lower barriers to entry automatically a good thing? Do we need more software, or better software?

                                            1. 4

                                              I am ok with websites with a lot of Flash and JavaScript, but when I design a website, I just do some http://motherfuckingwebsite.com

                                              1. 2

                                                Is there some less resource hungry / more OS integrated electron alternative? Alternatively is there a way to write electron apps better optimized?