1. 13

    but Electron is without question a scourge

    Well, how about a big F* you?

    Sorry for the swear words, but while I agree that in general Electron is not great, calling it a scourge is incredibly offensive towards those who chose to develop with Electron, and have good reasons for it. Sometimes writing native apps is cost-prohibitive, and you’re better off with an Electron app that looks a bit out of place, than have no app at all. It’s cool for you to be smug and elitist and complain about stuff not following the HIG on every single platform the app is developed for, but have you ever thought about the cost of doing so? Yeah, big companies may be able to shell out enough money and pay developers to create native apps and follow the platform’s HIG, but not everyone’s a big business. I dare say the vast majority of app developers aren’t. By hating on Electron and anyone who doesn’t polish their app perfectly, you’re alienating a whole lot of developers.

    Learn to see the other side of the coin already.

    (I ranted about this on my blog recently, also explaining why Electron was chosen over developing native apps.)

    1. 35

      complain about stuff not following the HIG on every single platform the app is developed for

      Do you know why human interface guidelines exist? They exist because humanity is imperfect and accessibility is really important.

      Electron apps are not accessible. They’re often completely opaque to a screen reader, they’re often completely opaque to assistive speech recognition software, they often don’t respond properly to keyboard navigation and if they do, they don’t behave as expected. They don’t often respond properly to text scaling, they don’t understand system-wide options like increased contrast or reduce motion.

      To whole classes of users, your Electron app is worthless and unusable. What are we supposed to do? Congratulate you on your accomplishment? You need to shrink your ego and take some time to understand real world users, rather than throwing words around like “smug” and “elitist”.

      Also your blog post doesn’t even mention the word “accessibility” once. How disappointing.

      By hating on Electron and anyone who doesn’t polish their app perfectly, you’re alienating a whole lot of developers.

      At the risk of sounding controversial, what does it matter if we alienate some developers? Developers should do better. They need to do better. I’m fine with alienating developers for good reasons.

      Electron is not the answer. It’s a shortcut at best and a bandaid at worst. This isn’t a secret, so there’s really no point in acting surprised that people don’t agree with your choices.

      1. 10

        I think that we who care about accessibility need to avoid taking a condemning, vitriolic tone, and meet developers where they are. That way, we’ll be more likely to get results, rather than just alienating a large and growing group of people. It’s true that Electron apps often have accessibility problems. But I believe we can improve that situation without calling for people to throw out Electron entirely. Frankly, we need access to these apps more than these developers need us. So we have to work with what we’ve got.

        No, I haven’t always lived up to this ideal when communicating with mainstream developers, and I’m sorry about that.

        1. 14

          I think that we who care about accessibility need to avoid taking a condemning, vitriolic tone, and meet developers where they are.

          The problem is that these developers don’t want to meet anywhere else - that’s how we arrived at Electron apps in the first place. It’s the easy way out.

          1. 4

            Most trends in IT are driven by herd mentality, familiarity, leveraging ecosystems, and marketing by companies. All of these seem to contribute to Electron use just like they contributed to Java and .NET getting big. They sucked, too, compared to some prior languages. So, it’s best to identify what they’re using within what ecosystems to find an alternative that’s better while still being familiar.

            Then, see how many move to it or don’t for whatever reasons. Iterate from there.

            1. 1

              Developers don’t want to listen because by the time they start publishing something (based on Electron, for a number of reasons), what they meet with is pure, unconditional hate towards the technology (and not just the tech! towards developers using said tech, too!) that enabled them. It is not surprising they don’t want to listen to the haters anymore.

              You’re alienating new developers with this kind of mentality too, who would be willing to listen to your concerns. You’re alienating them, because of the sins of their fathers, so to say. I’m not surprised noone cares about accessibility, to be honest. When we’re told the world would be better off without developers like us, we’re not going to be interested in working towards better accessibility.

          2. 5

            Do you know why human interface guidelines exist? They exist because humanity is imperfect and accessibility is really important.

            I’m aware, thank you. I’m very much aware that Electron is not… great, for many reasons. That’s still not a reason to unconditionally call it a scourge.

            To whole classes of users, your Electron app is worthless and unusable. What are we supposed to do? Congratulate you on your accomplishment? You need to shrink your ego and take some time to understand real world users, rather than throwing words around like “smug” and “elitist”.

            You, like the article author, ignore circumstances, and generalize. Yes, my electron app is going to be useless for anyone using a screen reader. It will be useless for a whole lot of people. However, it will exist, and hundreds of people will be able to use it. Without Electron, it wouldn’t exist. So ask yourself this, which is better: an application that is not usable by some people, but makes the life of the vast majority of its intended audience easier; or an application that does not exist?

            Here’s the situation: there’s a keyboard with open source firmware. Right now, to change the layout, you need to edit the firmware source, compile a new one, and upload it to your keyboard. While we tried to make the process easy, it’s… not very friendly, and never going to be. So I’m building an application that lets you do this from a GUI, with no need for a compiler or anything else but the app itself. I develop on Linux, because that’s what I have most experience with. Our customers are usually on Windows or Mac, though. With Electron, I was able to create a useful application, that helps users. Without it, if I had to go native, I wouldn’t even start, because I lack the time and resources to go that route. For people that can’t use the Electron app, there are other ways to tweak their keyboard. The protocol the GUI talks can be implemented by any other app too (I have an Emacs package that talks to it, too). So people who can’t use the Electron app, have other choices.

            So, thank you, I do understand real world users. That is why I chose Electron. Because I made my due diligence, and concluded that despite all its shortcomings, Electron is still my best bet. Stop smugly throwing around Electron hate when you haven’t considered the circumstances.

            At the risk of sounding controversial, what does it matter if we alienate some developers? Developers should do better. They need to do better. I’m fine with alienating developers for good reasons.

            Well, for one, a lot of our customers would be deeply disappointed if they weren’t able to use the GUI configurator I built on Electron. “Developers should do better”. Well, come here and do my job then. Get the same functionality into the hands of customers without using Electron. I’ll wait (they won’t).

            Electron is not the answer. It’s a shortcut at best and a bandaid at worst. This isn’t a secret, so there’s really no point in acting surprised that people don’t agree with your choices.

            I agree it is not the best, and I’m not surprised people disagree with my use of it. I can even respect that, and have no problems with it. What I have problems with, is people calling Electron a scourge, and asserting that native is always best, and that anyone who doesn’t follow the HIG of a given platform “should do better”. I have a problem with people ignoring any and all circumstances, the reason why Electron was chosen for a particular product, and unconditionally proclaiming that the developers “should do better”. I have a problem with people who assert that alienating developers because they don’t (or can’t) write apps that match their idealistic desires is acceptable.

            Before writing off something completely, consider the circumstances, the whys. You may be surprised. You see, life is full of compromises, and so is software development. Sometimes you have to sacrifice accessibility, or native feel, or what have you, in order to ship something to the majority of your customers. I’d love to be able to support everyone, and write lighter, better apps, but I do not have the resources. People calling the technology that enables what I do a scourge, hurts. People asserting that I should do better, hurts.

            Until people stop ignoring these, I will call them elitist and smug. Because they assume others that chose Electron have the privilege of being able to chose something else, the resources to “do better”. Most often, they do not.

            1. 1

              Electron apps are not accessible. They’re often completely opaque to a screen reader, they’re often completely opaque to assistive speech recognition software, they often don’t respond properly to keyboard navigation and if they do, they don’t behave as expected.

              I haven’t written an electron app, but I’ve done a fair share of web UI programming with accessibility in mind. You communicate with platform accessibility APIs through web APIs. It’s not technically complicated, but it does require some domain expertise.

              Does it work the same way on electron?

              1. 8

                Electron embeds chromium, which doesn’t connect to the native a11y APIs (MS are working to fix this on windows).

                As a result electron apps are as inaccessible as chrome (screenreader users tend to use IE, safari or firefox).

                1. 2

                  Huh, this is a real surprise if true.. i tested our web UI with screen readers across macOS and windows in chrome, FF, and IE, and the only problems that occurred were due to bad markup or the occasional platform bug. Reaching the accessibility API was not a problem i ran into with chrome

                  1. 1

                    Chrome is definitely accessible to screen readers. I’ve spent more time that I’d like getting JAWS to read consistently across IE, FF and Chrome. From memory, Chrome was generally the most well behaved.

              2. 7

                When Apple was first developing the Mac, they did a lot of research into human/computer interaction and one of the results was to apply a consistent interface on the system as a whole. This lead to every app having the same menu structure (for the most part, the system menu (the Apple logo) was first, “File” next, then “Edit”) and under these standard menus, the actions were largly the same and in the same order. This would lower training costs and if a user found themselves in a new app, they could at least expect some consistency in actions.

                I’ve been using Linux as a desktop since the mid-90s (and Unix in general since 1989) and to say there’s a lack of consistency in UI is an understatement. Some apps have a menu bar at the top of the window (Macs menu bars are always at the top of the screen per Fitt’s Law), some you have to hold Ctrl down and press the mouse button, some the right mouse button will cause a pop-up menu. I’ve been able to navigate these inconsistencies, but I’m still annoyed by them.

                Further more, I’m used to the CLI, and yet even there, the general UI (the command set, the options to each command) still surprises me. I wrote about the consistency of GUIs and the inconsistencies I found on the Unix CLI over the years and while I still prefer the CLI over the GUI [1], I can see where the consistency of the Mac GUI makes for a much better experience for many.

                As I’ve stated, I think it’s wonderful that PHP has enabled people to create the dynamic websites they envision, but I wouldn’t want to use the resulting code personally.

                [1] One can program the CLI to do repetitive tasks much easier than one can do the same for any of today’s GUIs. There have been some attempts over the years to script the GUI (Rexx, AppleTalk) but it still takes more deliberate action than just writing a for loop at the command prompt for a one-off type of job.

                1. 4

                  Thanks for sharing the blog post.

                  I think your case is quite different from, say, Slack. I have worked on major cross-platform apps at a company, and it’s not a huge deal, when you have a few people working on it, whose collective knowledge covers those platforms. All apps used the same core libraries for the non-UI parts, and each app added native UI on top. A company with tens, or even hundreds of well-paid developers should be able to do that, if they care at all about accessibility, performance (which is a different kind of accessibility issue,) resource usage, and all those things.

                  1. 2

                    It is still a big deal, even for a larger company, because there’s a huge difference between employing N developers to develop a single cross-platform application (with some of them specializing in one platform or the other), and between employing a set of developers to create native applications, and a set for the core libraries. There may be overlap between them, but chances are that someone who’s good at developing for Windows or OSX would not be happy with developing for Linux. So you end up employing more people, paying more, diverging UIs, for what? Paying customers will use the Electron app just as well, so what’s the point of going native and increasing costs?

                    Yeah, they should be able to do that, yes, it would improve the user experience, yes, it would be better in almost every possible way. Yet, the benefits for the company are miniscule, most of the time. In the case of Slack, for example, or twitter, a uniform experience across devices is much more important than native feel. It’s easier to document, easier to troubleshoot, and easier for people who hop between devices: it’s the same everywhere. That’s quite a big benefit, but goes very much against making the apps feel native. And if you forego native feel, but still develop a native application that looks and behaves like on any other platform (good luck with that, by the way), then the benefits of native boil down to being less resource hungry. In the vast majority of cases, that is simply not worth the cost of the development and maintenance burden.

                    In the age of mobile devices, I do not feel that apps looking “native” is any benefit at all, but that’s a different topic.

                    1. 5

                      I built them in the past myself. I’ve read write-ups about what it takes for others. If designing program right, most of the code is shared between the different platforms. The things that are different are mostly in the front-end that calls the common code. A lot of that can be automated to a degree, too, after design is laid out. For main three platforms, it basically took a max of three people two of whom only worked on UI stuff here and there mostly focused on shared code. That isn’t the minimum either: it can be lower if you have 1-2 developers that are experts in more than one platform. In mobile, many people probably know both iOS and Android.

                      The cross-platform part will be a small part of the app’s overall cost in most cases. It will mostly be in design/UI, too. That’s worth investing in anyway, though. :)

                      1. 5

                        Our experience clearly differ then. I worked for companies that made native apps for the major platforms (mobile included), and each team was 10+ people at a minimum, with little code shared (the common code was behind an API, so there’s that, but the apps itself had virtually no code in common). Not to mention that the UIs differed a lot, because they were made to feel native. Different UIs, different designs, different bugs, different things to document and support. A whole lot of time was wasted on bridging the gaps.

                        If they made the apps feel less native, and have a common look across platforms, then indeed, it could have been done with fewer people. You’d have to fight the native widgets then, though. Or use a cross-platform widget library. Or write your own. And the writer of the article would then complain loudly, and proclaim that multi-platform apps are the worst that could happen to the Mac (paraphrasing), because they don’t follow the HIG, and developers nowadays just don’t care.

                        1. 3

                          each team was 10+ people at a minimum, with little code shared (the common code was behind an API, so there’s that, but the apps itself had virtually no code in common).

                          “If they made the apps feel less native, and have a common look across platforms, then indeed, it could have been done with fewer people. “

                          I said native look on multiple platforms minimizing cost. You example sounds like something about the company rather than an inherent property of cross-platform. You usually need at least one person per platform, esp UI and style experts, but most of the code can be reused. The UI’s just call into it. They’ll have some of their own code, too, for functions specific to that platform. Mostly portable. Just sounds like the company didn’t want to do it that way, didn’t know how, or maybe couldn’t due to constraints from legacy decisions.

                          1. 1

                            My experience mirrors yours almost exactly.

                    2. 4

                      I think the case where it makes sense to go Electron is not the point of Gruber’s rant. The point was that many, many developers today are easier with writing Electron app and using it on all platforms instead of putting time and effort into polished Cocoa apps.

                      The core of this blog post is how Mac really was different in terms of UI/UX. During the time I started using Mac (10.5) it was really differentiating itself by having “different”, “better looking and feeling” apps. Electron definitely made Mac feel less unique. Critics were pointed towards macOS app developers. Don’t get so offended by simple blogpost. Your reasons are fine, but that simply isn’t the case most of the time. Most people decide to go with electron because of plethora of mediocre JS devs, that can chunk out a lot of code that does something, and then you get slow junk like UX. In minds of 2000s Apple fans that is a big no.

                      Have a nice day, and move on.

                      1. 7

                        I think the case where it makes sense to go Electron is not the point of Gruber’s rant.

                        Correct.

                        The point was that many, many developers today are easier with writing Electron app

                        Incorrect.

                        Please just read the article.

                        His point is what he says: it is bad news for the Mac platform that un-Mac-like apps far worse than those that were roundly rejected 15 years ago are now tolerated by today’s Mac users.

                        It happens to be the case that Electron is the technology of choice for multiple prominent sub-par apps; that’s a simple statement of fact. (It also isn’t purely coincidental, which is why I agree with his characterisation of Electron as a scourge. If someone like @algernon who builds apps for Electron is bent on interpreting those statements as a judgement of their own personal merit, well… be my guest?) But Electron is not singled out: Marzipan gets a mention in the same vein. On top of that, Gruber also points out the new Mac App Store app, which uses neither. The particular technologies or their individual merits are not his point.

                        His point is, again, that a Mac userbase which doesn’t care about consistency spells trouble for the Mac platform.

                        1. 2

                          Marzipan gets a mention in the same vein.

                          Electron is the only one that gets called a scourge, and is singled out in the very beginning. It’s even in the title. It’s even the first sentence, which then continues: “because the Mac is the platform that attracts people who care”

                          If that’s not an elitist smug, I haven’t seen any.

                          1. 5

                            Once upon a time, Mac users were a ridiculed minority. In those days, Microsoft-powered PCs were better in just about every way. They were much faster, they had a more technically advanced OS (even crappy Win95 was far ahead of MacOS Classic), they had more applications, they had boatloads of games… just about every reason to pick one computer over another pointed in the direction of a Microsoft PC. You had to be special kind of kook to want a Mac regardless. It was inferior to a PC in basically every dimension. The one reason to pick a Mac over the PC was the depth of consistency and care in the UI design of its software. Only users who cared about that enough to accept the mile-long list of tradeoffs went for the Mac.

                        2. 3

                          The point was that many, many developers today are easier with writing Electron app and using it on all platforms instead of putting time and effort into polished Cocoa apps.

                          My beef is not with the author wishing for apps that would look more native - I share the same wish. My beef is with him calling Electron “without a question a scourge”. How about I said MacOS is without a question a scourge, for it jails you in its walled garden? You’d be rightly upset.

                          There’s a big difference between wishing apps would be more polished on a particular platform, and between calling a technology (and by extension, developers who chose to use it) a scourge. It reeks from privileged elitism, and failure to understand why people go with Electron.

                          Most people decide to go with electron because of plethora of mediocre JS devs, that can chunk out a lot of code that does something

                          No. Most people decide to go with Electron because it provides a much better cross-platform environment than anything else. Please don’t call a whole bunch of people “mediocre JS devs”, unless you have solid data to back that up. Just because it is JS and “web stuff” doesn’t mean the people who develop it are any less smarter than native app developers. Can we stop this “only mediocre people write JS/PHP/whatever” bullshit?

                          1. 12

                            There are more bad developers writing webshit because there are more devs writing webshit period.

                            Native apps tend to outperform Electron apps and use less memory, because to do the same things that don’t bring in a browser and language runtime.

                            Elitism is, in this case, warranted. The only really performant app (usually) in Electron I’ve seen is VSCode, because MS really does have sharp people working in a domain they’ve been leaders in for decades.

                            1. 7

                              There seems to be a shift towards less attention paid, and value given, to the experience of the user. This makes me very sad.

                              When people talk about why they use Electron, they always phrase it in terms of “developer productivity”, and that’s where I find the most elitist bullshit to be. Developers talk about using Electron so they didn’t have to learn a new platform, or so they only had to test it in one place, or it was faster. They talk about lower development costs (which they wildly overstate, in my experience).

                              But the questions I’d like use to start asking: what are the costs of the shit user experience? What are the costs of people having to learn new tools that don’t behave quite like the others? When we save money and time on development that money and time is saved once, but when we save time for our users, it’s saved repeatedly.

                              Maybe calling Electron shit is elitist bullshit. But I’ll take that over having contempt for one’s users.

                              1. 3

                                Contempt is a strong word. Would all these people be users in the first place if the app doesn’t exist for their platform? Go ahead and write a native Cocoa app for OSX, but that sure feels like contempt for Windows or Linux users. “Buy a new machine to use my stuff” vs. “deal with menus in the wrong order”?

                                1. 1

                                  I never said “buy a new machine to use my stuff.”

                                  From extensive experience: for most small applications, I can develop them natively on Mac, Windows, and Linux* faster than someone can develop the same thing with similar quality using a cross platform thing.

                                  (*) “native” on Linux is less of a sticky thing that on Mac and Windows.

                                  1. 2

                                    Here’s a challenge for you: https://github.com/keyboardio/chrysalis-bundle-keyboardio (demo here).

                                    Go do something like that natively for Mac and Windows. It’s a small app, some 3700 lines of JS code with comments. You do that, and I promise I’ll never write an Electron app ever again. You can make the world a better place!

                                    1. 1

                                      Thank you for your interest in my consulting services.

                                      1. 3

                                        Thought so.

                                        FWIW, the app, like many Electron apps, were originally built in my unpaid free time. Complain about Electron apps once you built the same stuff under the same conditions.

                            2. 9

                              How about I said MacOS is without a question a scourge, for it jails you in its walled garden? You’d be rightly upset.

                              I wouldn’t. I might point out that you absolutely can bypass their walled garden, on MacOS, but those objections for iOS are not only valid, but are honestly concerning.

                              Electron is a scourge. iOS is a scourge. Facebook is a scourge. The feature creep within the browser is absolutely a scourge. There are loads of scourges. This is not an exhaustive list. I pray daily for a solar flare which delivers enough of an EMP that it utterly destroys the entire technology landscape, and gives us an opportunity to rebuild it from the invention of fire onwards, because we’ve fucked up, and our technology is bad.

                              And I say this because I want technology to be better. The Web is an awfully complicated way to render a UI. Our systems are overly dependent on a few corporations who don’t have our best interests at heart. Our computers are slower to do less work than they did two decades ago. Pretty much the only way anybody makes money in tech anymore is by abusing their users (see: Google, Facebook, etc). Or their employees (see: Uber). Or both (see: Amazon).

                              1. 7

                                You’d be rightly upset.

                                No, I wouldn’t be rightly upset. I am not the technologies I use, and neither is that true for you.

                                Electron is the technology used in multiple highly prominent applications that are written with little or no regard to platform conventions. Their success is bad for the native platforms. Those are statements of fact. If you have good reasons to use Electron, then there is no need for you to relate those facts to yourself and take them as a statement of your merits as an individual.

                                1. 7

                                  Agree. The notion that your identity is somehow linked with the tools you use is toxic. It is fine to like your tools, but once you get comfy with them you should be pushing beyond them to expand your taste.

                                  1. 5

                                    your identity is somehow linked with the tools you use

                                    I used QBasic, Visual Basic 6, and later FreeBASIC. If my tools define me, I feel like such a shallow person with no depth or skill. Such a sinking feeling. I think I’m going to re-install SPARK Ada and buy Matlab to feel like a mathematician. Yeah, that will be better… ;)

                            3. 3

                              What about sciter? Companies doing stuff like anti-virus have been using it for a long time with way, way, less, resource use. It’s licensing scheme looks like something other vendors should copy. Here’s a comparison claiming a simple editor is 2MB in sciter vs 100+ in Electron just because it brings in less baggage.

                              How many people using Electron could use the free, binary version of sciter? And how many companies using Electron could afford $310 per year? I mean, that’s within reach of startups and micro-businesses, yeah? I’m asking because you said it’s use Electron or not cross-platform at all cuz too costly/difficult. I’m making it easy by using a comparable offering rather than, say, Lazarus w/ Free Pascal or otherwise non-mainstream languages. :)

                              Note: I also have a feeling lots of people just don’t know about this product, too.

                              1. 4

                                I actually evaluated sciter when I got frustrated with developing in JS, and wanted to go native. For my use, it wasn’t an option, because the app I write is free software, and therefore so much be its dependencies. For closed-source use, it’s probably fine. Though, you’d still have to write plenty of platform-specific code. AV companies already do that, but companies that start off with a web-based service, and develop an application later do not have that platform-specific code already built. What they have, is plenty of JavaScript and web stuff. Putting that into Electron is considerably easier, and you end up with very similar UX, with little effort, because you’re targeting a browser still.

                                Oh, and:

                                With Sciter, changing the front end of your application involves just altering the styles (CSS), and probably a couple of scripts that do animations.

                                Yeaah… no. That’s not how changing the UX works. It’s a tad more involved than that. Not sure I’d be willing to trust my UI on an offering that basically tells me that changing between, say, Metro and Material UI is a matter of CSS and animations. (Hint: it’s much more involved than that.)

                                Since we’ve already decided we’re not going to follow any platform HIGs (and thus, have the article author proclaim we’re a scurge), what’s the point of going native? Less resource use? Why is that worth it for the company? People use the app as it is, otherwise they wouldn’t be writing an app. Writing native, and making it look and behave the same has non-negligible cost, but little to no benefits. Faster and lighter is in many cases not a goal worth pursuing, because customers buy the thing anyway. (I’d love if that wouldn’t be the case, but in many cases, it is.)

                                1. 1

                                  I appreciate the balanced review of sciter. That makes sense.

                            1. 6

                              Question for the group. If you use Stylus (or used to use Stylish), what do you use it for?

                              I headed over the the userstyles.org site and most of the styles seem to be “dark themes” or other cosmetic changes like changing the background of a site. Are there more practical uses of the extension? Can it modify HTML or Javascript (where the real power would be), or is it CSS only?

                              1. 27

                                other cosmetic changes like changing the background of a site

                                You call it cosmetic changes, other people call it accessibility.

                                1. 7

                                  I use it to tweak the layout of some of the sites I use, like moving a fixed top navbar to the side, and making it smaller. Or making narrow columns wider. Small stuff like that, which make the browsing experience much more bearable. I rarely use the social or sharing aspects of it. I haven’t found anything useful there, and I’m not sharing my tweaks either, because they’re very personal anyway.

                                  I rarely use it to hide things, my adblocker can do that more conveniently indeed.

                                  1. 6

                                    I apply a style of body { max-width: 800px; } on a few blogs that weren’t designed with wide browser windows in mind—they spill text across the entire width of the screen, which makes them really hard to read. (You could use your browser’s “reading mode” to fix this, too, but this CSS change usually does the job without breaking any layouts.)

                                    1. 4

                                      Now that I’ve started using Dark Reader, I use Stylus for well-made, site-specific dark themes. Previously I was using the Gruvbox Dark Everywhere userstyle, but its shotgun approach leaves much to be desired. Beware: Dark Reader has some major performance issues on Firefox.

                                      Edit: My installed themes (which I enable along with Dark Reader after sunset): https://ptpb.pw/nUrG.png

                                      Edit 2: Also I enable the Firefox and Tree Style Tabs dark themes. This really needs to get more streamlined.

                                      Edit 3: And then I get to enable dark/night mode on sites that support it natively, one-by-one as I visit them. Sigh.

                                      1. 2

                                        Man, Dark Reader is great. Thanks for bringing my attention to that.

                                        1. 1

                                          Funny that you mention this. I don’t often long for the days when I had a CSS styling addon installed, but exactly this Dark Reader page made me bob my head back 20cm. That page seems to be made for a mobile phone or tablet screen, not a 27” monitor. Wow.

                                        2. 3

                                          Fixing fonts on the most obnoxious websites.

                                          1. 3

                                            I like to use it to remove ads in core apps I use. I’d like to share the styles I create with others who use those apps. I use the free version of toggl, and they have a persistent, animated thing in the bottom-right corner that tells me the benefits of “going pro”. I just made a stylish thing to display: none the element which matches that rule. It’s great.

                                            1. 1

                                              Is there an advantage to that over the “block element” feature that exist in most ad blockers?

                                              1. 1

                                                I use brave and Firefox which have some built in blocking. I haven’t thought of that, but I’ll take a look!

                                            2. 3

                                              I used to use Stylish - and a predecessor the name of which has slipped my mind - to reduce the size of the UI in Firefox - smaller tabs, less wasted space -> more space for page content.

                                              1. 2

                                                i’m considering using it to shrink the gmail sidebar label font - they recently increased it from the same size as email body text to a size bigger, and it’s very annoying.

                                                1. 1

                                                  I sometimes use it to tweak interfaces, like get rid of annoying panels or adding bold to certain elements

                                                  1. 1

                                                    I just started using this again after forgetting that it existed. Another forum I visit regularly now is ad free and doesn’t waste a bunch of whitespace where these were removed. I created an ironic one for hiding the ads for stylish for android on userstyles.org… :D Also, my day job involves using a console that has a lot of useless (to me) menu items - bye bye.

                                                    1. 1

                                                      Can it modify HTML or Javascript (where the real power would be), or is it CSS only?

                                                      Is it possible for extensions to request access only to modify CSS?

                                                      1. 4

                                                        CSS can still exfiltrate sensitive page content (albeit attacks are harder to write).

                                                        1. 1

                                                          If you write your own CSS this is no longer a problem :P.

                                                          1. 1

                                                            That’s good to know. I’m going to do some reading on this, but do you have anything you recommend?

                                                        2. 1

                                                          There are two sites I frequent that have awful stylesheets that I can’t stand so I have custom stylesheets that make them look better.

                                                        1. 3

                                                          @algernon@trunk.mad-scientist.club, posting about mechanical keyboards (mostly about their firmware side), parenting, daily life stuff, and whatever else I feel like.

                                                          1. 4

                                                            I… don’t think engagement is a reasonable ranking metric. There are incredibly useful repositories out there that see little to no engagement, because there’s no need to. They do their thing, and that’s it. They may not have many stars, or even many forks, let alone pull requests. Yet, they may be at the root of your dependency chain, making all of it possible (or at least easier).

                                                            What I’m trying to say, trying to reduce repositories to numbers, to determine some kind of “rank” that signals whether one’s worth more than the other is ultimately a mistake. It’s never going to be fair. It’s never going to be accurate (far from it). Instead, both of these metrics should be hidden, to discourage such abuse.

                                                            I’ll show an example: the Model01 Firmware has - as of this writing - 101 stars, 207 forks, 47 PRs opened total, and 21 issues. In comparison, the Kaleidoscope repo has 330 stars, 91 forks, 285 PRs, 199 issues in total.

                                                            The first is meant to be a starting point upon which you build your own layout. Forking is encouraged, but most forks are for personal changes, there’s no reason any of those should be contributed back. A very small percentage of forks were made to contribute something back. Based on your algorithm, it would have a rank of 4.

                                                            The second is the firmware itself, where local changes make much less sense, so sending them back upstream is encouraged. Your ranking system ranks it at 3.48.

                                                            The repository that has seen much less engagement is ranked higher, pretty much defeating your algorithm.

                                                            However, from a user point of view, this makes sense, because the Model1-Firmware repo is much more useful for an end user. Not quite so from a developer point of view (which your ranking systems seem to want to support). Which just strengthens my point that ranking repos is a mistake: you need to take intent into account as well. And once you do, you can no longer reduce a repo’s worth to a single number. And that’s good. We shouldn’t rank repos this way anyway. It’s not healthy, and does not foster a healthy ecosystem either.

                                                            1. 1

                                                              I’m not sure I agree with most of this, but I do thank you for your feedback.

                                                              I think that much of your argument boils down to this statement: “No matter what, the Rank Algorithm won’t be perfect.” But this is inherently true of life. We don’t discourage GitHub’s Trending page’s because their algorithm isn’t perfect (its based almost entirely on stars and is thus very limited). The Rank Algorithm I proposed is no different. Whereas GitHub’s Trending page rewards the most “popular” repositories, the Rank Algorithm rewards the most “useful” repositories. Both efforts are destined to fail if we demand perfection.

                                                              As far as your example goes, I would say that the Model01_Firmware repository is the one that tricks the system, whereas the other repository’s rank is more or less accurate (or as accurate as can be expected when using my admittedly juvenile algorithm).

                                                              As far as the morals of it all and whether or not a ranking system foster’s a “healthy ecosystem”, I think the argument will quickly devolve into the likes of whether or not our children should all get trophies or not. I’m going to side-step that one because I don’t see us resolving that century-old debate today. I will note, however, that it is nearly impossible to improve upon a skill without first having some way of measuring that skill. A ranking algorithm is just one more attempt at measuring progress, and I don’t see anything wrong with it.

                                                              1. 2

                                                                My main issue is not with ranking per-se, but with attaching “worthiness” to rank. You can rank them whatever way you want, and that can be useful, but it’s best done with the ranking being in the hands of the one who’s looking for something. If I’m looking for an active project, I’d use a different ranking than when I’m looking for something tried and true (and usually considerably less active). There’s no single ranking algorithm that would yield the desired results in both cases. Therefore, attaching worthiness to any ranking system is flawed, and that practice should be discouraged.

                                                                argument will quickly devolve into the likes of whether or not our children should all get trophies or not

                                                                Except you usually give trophies at the end of a competition. Open source development is not a competition. Ideally, it would be cooperation.

                                                                I will note, however, that it is near impossible to improve upon a skill without first having some way of measuring that skill.

                                                                Measuring skill is one thing. Reducing one’s worth to a set of skills is another. I have problem with the latter.

                                                                1. 2

                                                                  Okay. I understand where you’re coming from now. It seems like it was just an issue of semantics. I struggled to find the right words for this article; “worth” is one I probably should have left out.

                                                            1. 14

                                                              My problem with make is not that there is a bad design. It is not THAT bad when you look at things like CMake (oops, I did not put a troll disclaimer, sorry :P).

                                                              But it has only very large implementations that has a lot of extensions that all are not POSIX. So if you want a simple tool to build a simple project, you have to have a complex tool, with even more complexity than the project itself in many cases…

                                                              So a simple tool (redo), available with 2 implementations in shell script and 1 implementation in python does a lot of good!

                                                              There is also plan 9 mk(1) which support evaluating the output of a script as mk input (with the <| command syntax), which removes the need for a configure script (build ./linux.c on Linux, ./bsd.c on BSD…).

                                                              But then again, while we are at re-designing things, let’s simply not limit outself to the shortcomings of existing software.

                                                              The interesting part is that you can entirely build redo as a tiny tiny shell script (less than 4kb), that you can then ship along with the project !

                                                              There could then be a Makefile with only

                                                              all:
                                                                  ./redo
                                                              

                                                              So you would (1) have the simple build-system you want, (2) have it portable as it would be a simple shell portable shell script, (3) still have make build all the project.

                                                              You may make me switch to this… ;)

                                                                1. 1

                                                                  Nice! So 2 shell, 1 python and 1 C implementation.

                                                                  1. 5

                                                                    There is also an implementation in C++. That site also has a nice Introduction to redo.

                                                                    I haven’t used any redo implementation myself, but I’ve been wondering how they would perform on large code bases. They all seem to spawn several process for each file just to check whether it should be remade. The performance cost of that not a particularly fast operation might be prohibitive on larger projects. Does anyone happen to have experience with that?

                                                                    1. 1

                                                                      The performance cost of that not a particularly fast operation might be prohibitive on larger projects. Does anyone happen to have experience with that?

                                                                      No experience, but from the article:

                                                                      Dependencies are tracked in a persistent .redo database so that redo can check them later. If a file needs to be rebuilt, it re-executes the whatever.do script and regenerates the dependencies. If a file doesn’t need to be rebuilt, redo can calculate that just using its persistent .redo database, without re-running the script. And it can do that check just once right at the start of your project build.

                                                                      Since building the dependencies is usually done as part of building a target, I think this probably isn’t even a significant problem on initial build (where the time is going to be dominated by actual building). OTOH I seem to recall that traditional make variants do some optimisation where they run commands directly, rather than passing them via a shell, if they can determine that they do not actually use shell built-ins (not 100% sure this is correct, memory is fallible etc) - the cost of just launching the shell might be significant if you have to do it a lot, I guess.

                                                                  2. 3

                                                                    The biggest problem with Make (imo) is that it is almost impossible to write a large correct Makefile. It is too easy for a dependency to exist, but not be tracked by the Make rules, thus making stale artefacts a problem.

                                                                    1. 1

                                                                      I had given serious thought to using LD_PRELOAD hooks to detect all dependencies dynamically (and identify e.g. dependencies which hit the network), but never got around to trying it.

                                                                      Anyone heard of anything trying that approach?

                                                                    2. 2

                                                                      Why this obsession with “simple tools for simple projects” though? Why not have one scalable tool that works great for any project?

                                                                      (Yeah, CMake is not that tool. But Meson definitely is!)

                                                                      1. 3

                                                                        Because I wish all my projects to be kept simple. Then there is no need for very powerful tool to build them.

                                                                        On the other hand, if you already need a complex tool to do some job, having another simple tool sum up the complexity of both as you will now have to understand and maintain both !

                                                                        If we aim for the most simple tool that can cover all situations we face, this will end up with different tools according to what we expect.

                                                                        1. 3

                                                                          Meson isn’t a simple tool, it requires the whole Python runtime in order to even run --help.

                                                                          CMake is a lot more lightweight.

                                                                          1. 4

                                                                            Have you appreciated how huge CMake actually is? I know I had problems compiling it on an old machine since it required something like a gigabyte of memory to build. A two-stage build that took its precious time.

                                                                            CMake is not lightweight, and that’s not its strong suit. To the contrary, it’s good in having everything but the kitchen sink and being considerably flexible (unlike Meson, which has simplicity/rigidity as a goal).

                                                                            1. 2

                                                                              CMake is incredibly heavyweight.

                                                                            2. 1

                                                                              I would like to see how it would work out with different implementations and how “stable” meson as a language is.

                                                                              1. 1

                                                                                Meson is nice, but sadly not suitable for every project. It has limitations that prevent some from using it, limitations neither redo nor autotools have. Such as putting generated files in a subdirectory (sounds simple, right?).

                                                                            1. 2

                                                                              I love not going to an office, but I have a family. How many of you who find remote working lonely live alone or with people you’re not close with?

                                                                              1. 4

                                                                                I’m curious about this too. I’m working from home, with family around too, and don’t miss interactions in the office. Even when I worked in an office, I tried to keep those to a minimum, and preferred days where I just went by without talking to anyone directly (we did communicate through computers, mind you). But then, I’m a bit of a recluse…

                                                                                1. 3

                                                                                  I live alone. It’s lonely, but it was lonely when I had an onsite job too. Having people around does not remove that feeling. It takes people that you can really connect with at a deeper level. Like family or real friends.

                                                                                  1. 2

                                                                                    I don’t live alone but have before.

                                                                                    Currently living with my partner and a friend who’s living 50% at our place due to a long-distance relationship.

                                                                                    Living alone and working remotely was really hard, because I would easily go through days and sometimes weeks without actually seeing anyone I know. All depends on your surrounding social life of course. I’ve never been particularly social, and now moved to a city (country even) where I don’t know anyone, and I’m not great at making friends. So I decided to go back to an office after doing that for a year.

                                                                                    Sometimes I think that I can’t actually stand either permanently, but just need to switch every year or two until I get fed up.

                                                                                    My actual idea situation might be unlimited remote working while living close to the office so I can come in if I feel like it in the morning, though that robs me of the ability to move countries regularly, which is a thing I do.

                                                                                  1. 6

                                                                                    I have worked on-site at various companies for a bit below two decades, and have been slowly transitioning to remote since late 2017. I went fully remote this September. It has its challenges, indeed. The lack of social interaction was a plus for me, as I’m a bit of a recluse, but I understand many people aren’t, and need other people beside their immediate family to interact with. My advice? Don’t try to find that within the company you work for. Go to the gym, take dance lessons in the afternoon, go swimming in the morning, and in general find people to meet outside of work. It’s better for your mental health, because you’ll dissociate from work and let your mind rest. These people will be around when you go and work for a new company. Just to name a few perks.

                                                                                    Being in an office is limiting. Working remotely - in many cases - gives you opportunities you did not have before. Higher flexibility. Use the time you’d spend commuting to meet people. Small things like walking out your home to a local coffee shop and exchanging a few words with the barista every day may seem like a small, useless thing, but it isn’t. Going to the library and picking up a book every week or so is another thing I didn’t do before, but now I can’t imagine not doing. The random interactions with strangers who share my interests is nice, even for a recluse. People recommending other books - likewise. Turns out that there’s even a local reading group I could join (and I might do just that at some point)! There are at least two roleplaying groups, both open to new members. There would likely be other possibilities if I looked further, but I’m already overwhelmed by the possibilities. Not having to go to an office opened up a whole new world.

                                                                                    When working remotely, you are not confined to your own home office, nor to a coworking space. Keep that in mind, and you’ll be able to figure out how you can improve your daily life, be that social interaction, more rest, or anything else you deem necessary.

                                                                                    1. 6

                                                                                      I used to love hiking. I still do, but with 1 year old twins, our hiking opportunities are rather limited. Nevertheless, I still consider it a hobby, just one I don’t have the opportunity to enjoy at the moment. In due time, we’ll throw ourselves into the woods as a family, and all shall be well.

                                                                                      We’ll find a nice, hidden place, take out the dice and play some D&D. Because RPG is another hobby of mine, and the two can be combined quite well!

                                                                                      In ages past, my hobbies were hacking on my personal projects, but since then, I learned that hobbies that take me outside are much more fun. They allow me to recharge, it’s a different scenery, not the same old stuff all day in front of monitors. Going outside is refreshing. 20 year old me would have disagreed, but thankfully I’m not that guy anymore =)

                                                                                      1. 4

                                                                                        I can’t take anyone’s attempt at a “save the web!” movement seriously, who has previously had the opportunity to do just that and block DRM in HTML, but failed to do so. If one had the option to do the right thing, but did not, how come they want to “save the web” now? Why not back when they had the opportunity? And why should I trust they’ll deliver?

                                                                                        1. 2

                                                                                          I can’t take anyone’s attempt at a “save the web!” movement seriously, who has previously had the opportunity to do just that and block DRM in HTML, but failed to do so.

                                                                                          And you don’t think that the browser vendors would have implemented HTML5 DRM anyways, or the media companies continued using stuff like Flash? “Blocking” DRM by the W3C was a rubber stamp move in either direction as it would have happened anyways; picking to standardize the DRM would probably be marginally better than non-standardized DRM.

                                                                                          1. 4

                                                                                            picking to standardize the DRM would probably be marginally better than non-standardized DRM.

                                                                                            No. If DRM wouldn’t have been standardized, the chances are high, there would be subtle differences between implementations. Which in turn, would make it that much harder to apply DRM to content. That would have been a win, even if only a small one. Not to mention that not standardizing DRM would have sent a very different message.

                                                                                        1. 9

                                                                                          They make it clear; they signed on to participate in a meritocracy with reputation rewards, and they think that is being taken way from them.

                                                                                          Oh look, we’re back at that meritocracy bullshit, and asserting that people develop the kernel for some imaginary reputation rewards. I’m sure there’s some pride in working on the kernel, but that being a significant factor? C’mon.

                                                                                          This is nothing more than another “Look at me, I’m still relevant!!1!” take by ESR, dressed up in fancy words to sound legit.

                                                                                          1. 1

                                                                                            Oh look, we’re back at that meritocracy bullshit

                                                                                            What BS? As far as I was aware, the kernel was perhaps the most meritocratic institution we have today. If there’s any project which ticks those boxes, it’s linux.

                                                                                            I’m sure there’s some pride in working on the kernel, but that being a significant factor?

                                                                                            Why do you think they do it? Getting paid doesn’t count, as the kernel had much development before people started to get paid for it.

                                                                                            This is nothing more than another “Look at me, I’m still relevant!!1!” take by ESR, dressed up in fancy words to sound legit.

                                                                                            I have to admit, there does seem to be a bit of that feeling on his blog lol

                                                                                            1. 1

                                                                                              What BS? As far as I was aware, the kernel was perhaps the most meritocratic institution we have today. If there’s any project which ticks those boxes, it’s linux.

                                                                                              Oh, but it doesn’t. Unless you’re part of the small elite, it’s nowhere near “meritocratic”. There have been many, many takes on this topic, like this in 2009, or this from 2014, with plenty of other links. They may not specifically mention the kernel, but it applies there just as well.

                                                                                              Getting paid doesn’t count, as the kernel had much development before people started to get paid for it.

                                                                                              Because they had an itch to scratch, or enjoyed working in a particular area. Pride and reputation rewards (whatever those may be) are not sustainable motivators, and never were. For very few people, maybe. For ESR, most likely - but ESR has little to do with the kernel. (Perhaps there’s a correlation there, somewhere, hm… :P)

                                                                                          1. 4

                                                                                            I love these, and I’m fascinated by this style of programming, but does anyone here have any real-world experience using this or tools like this to accomplish anything? I’d love to read some anecdotes about industrial uses of logic programming and/or constraint solving (and for the record, yes, I’m familiar with Watson, I mean any personal experience).

                                                                                            1. 9

                                                                                              I’ve used this before when building supply ordering systems for production processes. At the time, we had a number of supplies which figured out the old way of ordering widgets (buy from whoever can give us everything in a single shipment) and they started to price gouge us. I came in and rewrote it as a constraint problem, allowing us to split all of the shipments based off of arrival time, cost of shipping and cost of goods. Ended up working really well, after about two months the suppliers had to shift to a better pricing model or loose out on our business.

                                                                                              1. 3

                                                                                                I would like to hear more about this. Maybe good to write an article vs lobsters comment.

                                                                                                1. 3

                                                                                                  fascinating! thank you for responding.

                                                                                                2. 7

                                                                                                  It’s not “industrial” experience, but for the Hy language, I built a static analysis tool that can suggest code transformations and the like, called hydiomatic. The transformation rules are built in miniKanren, and look like this:

                                                                                                  ;; (+ x (+ ...)) => (+ x ...)
                                                                                                  [`(+ ~?x (+ . ~?xs)) `(+ ~?x . ~?xs)]
                                                                                                  

                                                                                                  Adding similar rules is incredibly easy, all thanks to miniKanren. The tool is modeled after a similar tool for Clojure, kibit. Rules are applied recursively, until no more transformations are possible, so things like (+ 1 (+ 2 (+ 3 (+ 4)))) become (+ 1 2 3 4) in the end.

                                                                                                  I also built a (now defunct) tool to help me arrange windows, also based on miniKanren: wynck.

                                                                                                  All of these provided solutions for things I needed, and did so much more elegantly than if I had to do them without using miniKanren.

                                                                                                  1. 1

                                                                                                    wow, so thats really cool! and serendipitous, I just started getting back to python yesterday. I’m really intrigued by this though, I see the note about “limitations” in the readme, it seems like you’d be hard pressed to make gains with a tool like this, isn’t this essentially an NP-complete task?

                                                                                                    1. 2

                                                                                                      There are lots of problem domains out there where the general case is NP-Hard, but real world examples are usually tractable.

                                                                                                1. 4

                                                                                                  It’s all easy to tell people to switch from X to Y (browser, OS, antivirus, etc.) but you can’t just go preaching when the alternatives aren’t quite the same. Sure you have Firefox (or any other flavour) and while I’d love to fully switch, it isn’t quite there yet. You can tell people to switch to some Linux distro or to install LineageOS but that comes with losing certain features or apps (try doing gamedev from Linux for example).

                                                                                                  And Firefox won over IE because it was better not for the fact IE back in the XP days was crap with its ActiveX madness. And same with the general switch to Chrome, it performed better.

                                                                                                  The bottom line for me is: make better alternatives to cover the general use case and people WILL switch (because their “techy” friend installs it for them) but they probably won’t just to get away from privacy issues if it gives them less headaches.

                                                                                                  1. 7

                                                                                                    same with the general switch to Chrome, it performed better

                                                                                                    Most people did not care that it performed “better”.

                                                                                                    They just saw the ads. On every google page. Including the search front page.

                                                                                                    1. 6

                                                                                                      Pretty sure Chrome grew its popularity when Firefox became quite sluggish, together with its strong presence in smartphones.

                                                                                                      1. 8

                                                                                                        Yeah, it is easy to forget how amazing Chrome was versus the competition in 2008. Other browsers were covered in garbage and layers of UI, Chrome was minimalist. When other browsers would crash when you went to a bad webpage, chrome just lost a tab due to the process separation. Even at initial release, Chrome was much faster than the competition. It also had the omnibar which felt like the “right way”.

                                                                                                      2. 3

                                                                                                        Watch the Google Chrome announcement video

                                                                                                        They compare it side-by-side with Internet Explorer. It shows that, for JavaScript, Chrome was around 100 times faster. For rendering it was around 3 times faster. The tab isolation, simpler user experience etc was also a serious win.

                                                                                                        These types of improvements did matter to a lot of people.

                                                                                                        1. 2

                                                                                                          The ads gave Google an opportunity to win people over, but ads alone don’t convince anyone to commit to a product. IMO by the time Chrome ads started popping up on Google properties, Chrome had already won.

                                                                                                          When Chrome came out it had superior UX to Firefox on every front. Performance, extensions, sync, transparent auto-updates, omnibar: everything was better and simpler for the 90% use-case. I specifically remember switching my parents and grandparents to Chrome because they kept getting stuck on old versions of Firefox and/or extensions would randomly stop working (namely ABP; about once a quarter I would get a call complaining that “the ads are back”). Chrome solved that problem for me.

                                                                                                          I’m a big fan of Mozilla but Firefox has always been a funky browser for nerds. It dominated IE because Microsoft had made zero technical investments for years and years. Firefox has made great strides competing with Chrome, but it hasn’t made any huge leaps and it still has rough edges. I think Mozilla as an organization struggles to put out products that are uncompromisingly great for the non-technical user.

                                                                                                          1. 2

                                                                                                            It dominated IE because Microsoft had made zero technical investments for years and years.

                                                                                                            Uh, when did Firefox “dominate IE”? Even after major EU legal wins, etc, Firefox was second until Chrome came with an even bigger backer that the regulators hadn’t smacked yet and ate everyone’s lunch.

                                                                                                            1. 1

                                                                                                              Uh, maybe it was too strong a word. But the market-share numbers are distorted by the incapability of corporate IT to move off IE at that time. That’s why the lifecycles of IE 6/7/8 were so drawn out.

                                                                                                              My recollection of that era is that anyone who understood what a browser was and had the ability to choose whichever one they wanted was using Firefox.

                                                                                                            2. 2

                                                                                                              Wow, I had forgotten auto-update, that might have been the most important feature!

                                                                                                              When Chrome was released, it actually lacked both extensions and sync, but the per-tab process and auto-update were killer features – plus general performance.

                                                                                                              1. 1

                                                                                                                When Chrome was released, it actually lacked both extensions and sync

                                                                                                                It got them in 2010, shortly before the first release for macOS, which is probably what I’m remembering as the initial release. It didn’t surpass Firefox and IE in market share until 2012.

                                                                                                            3. 2

                                                                                                              Most people did not care that it performed “better”.

                                                                                                              I don’t think this is true. At the time, both IE and FF were very slow and frustrating for people. A crash in either would take down the entire browser. “Updating their browser” was something their tech friends would tell them to do, and they wouldn’t do. Chrome was automatically updated, simpler, faster, more stable (re: crashing) and it was less complicated (at least in UI – omnibar, better on smaller screen). I think it won due to fitness for purpose, not ads.

                                                                                                            4. 6

                                                                                                              What about Firefox “isn’t quite there”?

                                                                                                              1. 5

                                                                                                                Firefox is not “quite there” because developers today mostly create Chrome apps, and consider other browsers as an afterthought. On desktop, and even more on Android, I often need to switch back to Chrome because the app I’m using doesn’t work on Firefox or is way too slow.

                                                                                                                Technically it’s very easy to get a website to work on any browser, but we don’t create websites anymore, often even plain text articles are “apps”, with JS all over the place and this is mostly designed to work on Chrome only.

                                                                                                                1. 1

                                                                                                                  Firefox isn’t quite there because developers don’t target it. Developers don’t target Firefox because it isn’t quite there.

                                                                                                                  I understand and agree with your point, but this isn’t really something Mozilla can do much about (other than actually gaining back market share).

                                                                                                                2. 4

                                                                                                                  I’ve tried to adopt Firefox seriously many times over the years, but every time the support for multi-user didn’t cut it for me.

                                                                                                                  I maintain two profiles in Chrome, a professional and a personal one. I’ve tried to replicate it with Firefox profiles, then later with containers, but the UX is not fitting my use case.

                                                                                                                  1. 2

                                                                                                                    Firefox lacks Chrome’s --app switch for example. That launches a window without the tab bar and the URL bar (essentially, only a webview). It’s super-sweet. Firefox does not support it out of the box, and all solutions I found involved setting up a separate profile. Chrome allows me to have these “apps” in the same profile, so they have access to the same extensions, I can open tabs from them, in my main browser window.

                                                                                                                    It’s a stupidly powerful feature if you have a few webapps you want to treat as apps instead of tabs.

                                                                                                                    1. 12

                                                                                                                      That sounds like a very very specific feature though, that maybe 1% of the people might use.

                                                                                                                      For the rest, Firefox is a perfectly good browser which (so far) seems to follow better privacy practices than Chrome.

                                                                                                                      1. 2

                                                                                                                        That sounds like a very very specific feature though, that maybe 1% of the people might use.

                                                                                                                        You’d be surprised how many people use this. Makes it so much easier to use a website as an app, and unlike the common Electron apps, allows one to use extensions with it. But even if only 1% used it, for that 1%, Firefox is not quite there.

                                                                                                                        Also, Electron. Tons of stuff is built on it, and it uses Chrome under the hood.

                                                                                                                        Firefox is a perfectly good browser which (so far) seems to follow better privacy practices than Chrome.

                                                                                                                        Yeah, like those experiments, or DNS-over-HTTPS which sends all DNS requests to Cloudflare. Or the integrated Pocket. Those might spy on me less, but it’s only marginally better.

                                                                                                                        1. 2

                                                                                                                          I hope for your sake that it’s way more than 1% usage. Google has a history of removing features that not many people use [1].

                                                                                                                          [1] I still prefer using Google Maps over anyone else but over time, I’ve had features I use removed due to lack of utilization. It’s annoying. Second only to the UI constantly changing.

                                                                                                                          1. 1

                                                                                                                            I believe a place that chrome apps are more commonly used is enterprise. It basically gives an easy way to put your internal CRUD webapp on the start menu with an icon and if you use the extended support some additional features. I suspect this is what keeps –app alive more than the at-home users use of it.

                                                                                                                            I have seen orgs with 30+ “chrome apps” in the default image. Actually probably the biggest category of apps on those deploys. Nevermind of course Chromebooks.

                                                                                                                          2. 1

                                                                                                                            But even if only 1% used it, for that 1%, Firefox is not quite there.

                                                                                                                            That’s nonsense. 1% might use it, and that’s probably an overestimate. For how many of them is it a dealbreaker? Even fewer. Probably far fewer. It’s a really insignificant feature.

                                                                                                                            Yeah, like those experiments

                                                                                                                            I don’t know what this means, could you elaborate?

                                                                                                                            or DNS-over-HTTPS which sends all DNS requests to Cloudflare.

                                                                                                                            DNS-over-HTTPS does not send all DNS requests to Cloudflare, and even if it did it would still be more secure than insecure DNS which sends all DNS requests to anyone listening, including Cloudflare if they wanted to.

                                                                                                                            Or the integrated Pocket.

                                                                                                                            Don’t like it? Don’t use it. I fail to see how this is ‘spying’ on you.

                                                                                                                            1. 0

                                                                                                                              It’s a really insignificant feature.

                                                                                                                              For you, yes. For me, it is essential. It doesn’t matter how many use it, for those who do, Firefox is not quite there. For everyone else, it might be, good for them.

                                                                                                                              I don’t know what this means, could you elaborate?

                                                                                                                              Look for Firefox studies. Granted, you have to opt in to them right now (like you used to be able to opt in to logging into Chrome), but then you’re opting in to pretty much all studies. This is just a step away from what Chrome’s doing now, and sending your browsing data to third parties, disguised as studies is even less honest.

                                                                                                                              DNS-over-HTTPS does not send all DNS requests to Cloudflare, and even if it did it would still be more secure than insecure DNS which sends all DNS requests to anyone listening, including Cloudflare if they wanted to.

                                                                                                                              Err, yes, it does send all DNS requests originating from Firefox through Cloudflare. It does fall back to regular DNS, but if enabled, it first goes through them. Not saying I trust my ISPs DNS servers, but I do trust my ISP to be far less competent at mining my data than Cloudflare.

                                                                                                                              1. 2

                                                                                                                                Firefox studies are completely opt-in. They’re in an options window most people apparently never open. To compare this to Google forcing you to send them all your browsing data if you so much as log into GMail through their browser is ridiculous.

                                                                                                                                DNS over HTTPS

                                                                                                                                Doesn’t even look like this is out of nightly, it’s a feature you have to enable through the about:config page… I mean come on man, you cannot seriously be arguing this is a breach of privacy. They’re both completely opt-in.

                                                                                                                                DNS over HTTPS sends your DNS traffic to a DNS-over-HTTPS provider. I’m sure it’s possible to change which provider it is. I wouldn’t be surprised if Google switched DNS in Chrome to go to 8.8.8.8 by default anyway. Certainly they widely encourage people to do so without telling them that this gives Google again all their browsing history, and more besides.

                                                                                                                                1. 1
                                                                                                                                  1. 1

                                                                                                                                    Firefox studies are completely opt-in

                                                                                                                                    So was Chrome’s login until recently. I’m not going to trust a for-profit corporation to respect my privacy forever. Especially when those studies are marketed as harmless things, yet, send a whole lot of data to third parties (not even to Mozilla, but third parties).

                                                                                                                                    I’m sure it’s possible to change which provider it is

                                                                                                                                    It is, but there are currently two public DNS-over-HTTPS providers: Cloudflare and Google. Yay. You can run your own, yes, but not even 0.1% of users will ever do that. Besides you can also disable Chrome’s login thing if you really want to, with a flag: go to chrome://flags/#account-consistency, and set it to disabled.

                                                                                                                                    It’s an internal flag, and may or may not go away, but for the moment, it gets the job done, and I get to keep –app too.

                                                                                                                                    1. 1

                                                                                                                                      So was Chrome’s login until recently.

                                                                                                                                      It isn’t now. Now is what matters.

                                                                                                                                      I’m not going to trust a for-profit corporation to respect my privacy forever.

                                                                                                                                      Then why are you trusting Google to respect your privacy, given that they have never done so and Mozilla have nearly always done so. Mozilla has always acted in good faith wrt. privacy. Google has not. Yet you defend Google and attack Mozilla. Why?

                                                                                                                                      Especially when those studies are marketed as harmless things, yet, send a whole lot of data to third parties (not even to Mozilla, but third parties).

                                                                                                                                      So don’t enable them then. They’re completely optional and opt-in. I don’t understand why you think being able to opt into something is anywhere near comparable to being forced to give data.

                                                                                                                                      It is, but there are currently two public DNS-over-HTTPS providers: Cloudflare and Google. Yay. You can run your own, yes, but not even 0.1% of users will ever do that.

                                                                                                                                      So don’t enable it then. How is it Mozilla’s fault there aren’t more DNS-over-HTTPS providers? Get your ISP to provide it.

                                                                                                                                      Besides you can also disable Chrome’s login thing if you really want to, with a flag: go to chrome://flags/#account-consistency, and set it to disabled.

                                                                                                                                      It’s opt-out, in other words. Opt-out = might as well be mandatory for most users. On the other hand, opt-in = might as well not exist for most users. Most users are never ever going to enable anything opt-in and never ever going to disable anything opt-out.

                                                                                                                                      It’s an internal flag, and may or may not go away, but for the moment, it gets the job done, and I get to keep –app too.

                                                                                                                                      I’ve already explained how you can get the same functionality as --app in Firefox: go fullscreen, disable toolbars.

                                                                                                                                      1. 1

                                                                                                                                        Now is what matters.

                                                                                                                                        Now I can disable the sign-off in Chrome and Chromium. Chromium doesn’t send my data to Google. They both support the feature I want. If now is all that matters, then there is zero argument in favour of Firefox, as Chromium does precisely what I want, and am already using it.

                                                                                                                                        Thank you.

                                                                                                                          3. 3

                                                                                                                            Firefox and Chrome have different sets of features. They overlap significantly but not exactly. It’s easy to cherry-pick features either of them have that the other doesn’t. That doesn’t mean that Firefox isn’t a perfectly acceptable replacement for Chrome.

                                                                                                                            I have no clue why you’d want to launch a window without a tab bar and URL bar. Oh no, a couple of bars at the top of my screen, that’s far worse than sending all my browsing history to Google.

                                                                                                                            1. 1

                                                                                                                              That doesn’t mean that Firefox isn’t a perfectly acceptable replacement for Chrome.

                                                                                                                              It is, if you don’t need the features it does not have. If you do, it is a deal breaker. (No size fits all and all that)

                                                                                                                              I have no clue why you’d want to launch a window without a tab bar and URL bar.

                                                                                                                              And I have no clue why you’d want to launch more than one browser window with tab and URL bars. But, to illustrate: I have two screens, and on my secondary, I have Mastodon & Discord open, in a frame-less chrome window. Whatever link I click there, if it leads away from the domain, it opens in a new tab. I never leave the “app” itself. Why would I need a tab and an URL bar there? Those just make it too easy to navigate away. Not having them removes that problem, and also makes them look almost like a native app, which is great.

                                                                                                                              Small thing, yes, but so convenient that I’d rather patch Chrome to remove the login requirement than to figure out how to do the same with firefox. The former is considerably easier.

                                                                                                                              If you don’t need this feature, sure, use Firefox or whatever.

                                                                                                                              (Note: I’m not saying Chrome is better. It isn’t. I’m saying Firefox lacks useful features Chrome has, and as such, is not quite there for those of us who want those features. I’d love to switch way from Chrome, but haven’t found a browser that supports the extensions I use, and app windows. As soon as I find one, I’ll be jumping ship. I’m pretty sure it won’t be Firefox though.)

                                                                                                                              1. 2

                                                                                                                                FF actually had the “apps” feature before Chrome even was released.

                                                                                                                                Sadly it was killed off.

                                                                                                                                1. 1

                                                                                                                                  Yeah, I remembered Firefox having it, and arrived at the same page, and was even more disappointed :/

                                                                                                                                  Mind you, Prism isn’t the same - it’s separate from the main browser, chrome’s –app is not (and that’s the great thing about it; I can get the separate think with Firefox with a kiosk add-on, but that’s not what I’m aiming for).

                                                                                                                                  1. 1

                                                                                                                                    It actually felt very similar, I would go so far as to say most of the way Chrome’s –app was inspired by the Prism extension. It used the same core in a different XULrunner and could be created just like you do in Chrome from the menu. Created desktop icons, had unique window idents, the whole deal. It had to be a bit more separate because back then there wasn’t process isolation per tab in FF, and one of prisms major goals was to avoid crashing the main browser.

                                                                                                                                2. 0

                                                                                                                                  In Firefox in full screen mode you can hide toolbars (includes URL bar and tab bar). I use this to watch full screen videos sometimes. You don’t have to have it actually covering your full screen either, if you use a proper window manager like dwm that can resize windows that ask to be fullscreen.

                                                                                                                                  I really mean no offence when I say this, but your argument is bad. You can’t have everything you want. If you prioritise ‘app windows’ over security and privacy that’s your call, of course, but it’s a bad argument to claim that Firefox isn’t a satisfactory replacement for Chrome because it doesn’t have ‘app windows’. By that logic, Chrome is a wholly unsatisfactory replacement for Firefox, for the reason that it’s insecure crap that gives all my browsing data to Google…

                                                                                                                                  1. 1

                                                                                                                                    You just said they made a bad argument… then in literally the next sentence admitted that for their requirements it was a good argument… they DO prioritize ‘app windows’.

                                                                                                                                    Their argument was simply that it isn’t a “perfectly acceptable replacement” within the requirements they laid forth of “having app window support”. This makes their argument well reasoned and coherent. If you want to attack one of their premises, you can do that – but that is another argument.

                                                                                                                                    You then go on to attack the premise and claim their requirement is not an actual requirement, and can be replaced with some set of outside tooling. I don’t believe you proved your case on that front based on the short point you made about dwn. They referenced other features as well.

                                                                                                                                    I personally have unsuccessfully tried to replace chrome apps a number of times with FF or even other browsers. I never got it working the way I wanted it – window identification issues mostly, and in a few cases webapps not playing well with being forcefully resized. So currently I use chrome only for these “apps” and I use FF as my primary browser.

                                                                                                                                    As for Chrome not being a satisfactory replacement for FF for you – that also seems to be true. With your implied premise of being opposed to Google’s data collection practices, obviously Chrome is unacceptable for you. That argument is also coherent with those premises. I won’t say you have a “bad argument” because within the premises you implied, it is a good one. You value different things – neither argument is bad or wrong.

                                                                                                                                    1. 1

                                                                                                                                      In short: their argument was a response to a question asking why Firefox was not generally suitable as a replacement for Chrome. In that context it’s bad.

                                                                                                                                      1. 0

                                                                                                                                        That doesn’t mean that Firefox isn’t a perfectly acceptable replacement for Chrome.

                                                                                                                                        Your high bar of “perfectly acceptable” was simply not met. It lacks features the poster needs. If you claim features don’t matter then what does exactly?

                                                                                                                                        1. 1

                                                                                                                                          In short: their argument was a response to a question asking why Firefox was not generally suitable as a replacement for Chrome. In that context it’s bad.

                                                                                                                                    2. 1

                                                                                                                                      But I don’t run those windows full screen - they’re clamped to a screen half, so fullscreen is not an option. Been there, tried it. I could change my WM, but that’s another workaround that doesn’t work, because then I’d have to switch to one that can resize fullscreen apps, and still do everything my current one does. No thanks. I’ll patch the login stuff out of Chrome instead.

                                                                                                                                      And yes, Chrome is crap. But I can work around its most recent stupid far more easily than I can add app windows to Firefox. So Chrome is still a better browser for me, unfortunately.

                                                                                                                                      Again, I’m not saying Firefox is not a satisfactory replacement for most people. I’m saying it is not suitable for me, that there are things in Chrome that Firefox does not have, yet, people depend on, and for those people, Firefox is not quite there yet.

                                                                                                                                      1. 0

                                                                                                                                        But I don’t run those windows full screen - they’re clamped to a screen half, so fullscreen is not an option. Been there, tried it. I could change my WM, but that’s another workaround that doesn’t work, because then I’d have to switch to one that can resize fullscreen apps, and still do everything my current one does. No thanks. I’ll patch the login stuff out of Chrome instead.

                                                                                                                                        So in other words the problem is that you’re using a crap window manager. How is that Firefox’s fault? You choose to use a crap WM, that’s fine, but don’t go around threads about browsers crapping on Firefox just because you make poor choices elsewhere in your setup.

                                                                                                                                        You can’t patch anything out of Chrome. Doesn’t work like that. You can patch Chromium, but Chromium isn’t Chrome.

                                                                                                                                        And yes, Chrome is crap. But I can work around its most recent stupid far more easily than I can add app windows to Firefox. So Chrome is still a better browser for me, unfortunately.

                                                                                                                                        No, you cannot work around Chrome sending all your browsing data to Google. Chrome is built from the ground up to send your browsing data to Google. It’s untrusted proprietary software. You cannot work around that.

                                                                                                                                        Again, I’m not saying Firefox is not a satisfactory replacement for most people. I’m saying it is not suitable for me, that there are things in Chrome that Firefox does not have, yet, people depend on, and for those people, Firefox is not quite there yet.

                                                                                                                                        You were defending the comment that said ‘It’s all easy to tell people to switch from X to Y (browser, OS, antivirus, etc.) but you can’t just go preaching when the alternatives aren’t quite the same. Sure you have Firefox (or any other flavour) and while I’d love to fully switch, it isn’t quite there yet.’ I’m sorry, but that’s a broad statement about Firefox that suggests it’s missing important core browsing features. Not that it’s missing some tiny obscure feature you personally use but which most people have never heard of and wouldn’t want anyway.

                                                                                                                                        (and which you can emulate in Firefox if you use a decent window manager)

                                                                                                                                        1. 2

                                                                                                                                          So in other words the problem is that you’re using a crap window manager.

                                                                                                                                          No, my problem is that Firefox does not implement a feature I use. My window manager is fine, thank you very much. That fact that the only way to make an app emulate a feature I use is to work it around in WM, by ignoring a full screen request and doing something else is not a solution. That is a crude hack.

                                                                                                                                          You can’t just go around telling people “Go use a different browser and a different WM”. That’s about the same level of good advice as “Tired of systemd? Just go use OpenBSD!”. It doesn’t work like that.

                                                                                                                                          You can patch Chromium, but Chromium isn’t Chrome.

                                                                                                                                          Yeah, but I can patch it out from Chromium. Or disable with a flag. And still keep –app, and won’t have to switch to a whole new WM. If I used firefox, my task would be a whole lot harder.

                                                                                                                                          You were defending the comment that said ‘It’s all easy to tell people to switch from X to Y (browser, OS, antivirus, etc.) but you can’t just go preaching when the alternatives aren’t quite the same. Sure you have Firefox (or any other flavour) and while I’d love to fully switch, it isn’t quite there yet.’

                                                                                                                                          And I stand by my defense: you can’t tell people to change, when the alternatives lack important features. It just happens YOU don’t consider the same features important. I’ll give you an analogy:

                                                                                                                                          • I’m tired of systemd, for reason X.
                                                                                                                                          • Use OpenBSD.
                                                                                                                                          • But OpenBSD does not support my hardware.
                                                                                                                                          • It is your fault for making poor hardware choices, it is easy to run OpenBSD on proper hardware.

                                                                                                                                          That’s how you sound like now.

                                                                                                                                          1. 2

                                                                                                                                            No, my problem is that Firefox does not implement a feature I use. My window manager is fine, thank you very much. That fact that the only way to make an app emulate a feature I use is to work it around in WM, by ignoring a full screen request and doing something else is not a solution. That is a crude hack.

                                                                                                                                            It’s not a crude hack. It’s a normal expected feature of any window manager: to be able to resize windows.

                                                                                                                                            1. 1

                                                                                                                                              It’s not a crude hack. It’s a normal expected feature of any window manager: to be able to resize windows.

                                                                                                                                              Not fullscreen ones. Very few can resize those.

                                                                                                                                              1. 1

                                                                                                                                                Most window managers are bad, I guess. Most things are bad.

                                                                                                                                3. 1

                                                                                                                                  How do you use this feature? It sounds interesting, but it’s never occurred to me. When you say ‘webapps’, do you mean browser extensions or things that would ordinarily be packaged as android/iOS apps? Or something else entirely?

                                                                                                                                  1. 4

                                                                                                                                    It is even simpler than you are thinking. Basically when you create a “app” out of a website what happens is you get a shortcut that does the following:

                                                                                                                                    • opens a browser instance with no browser ui components, it is just the page loaded in a window.
                                                                                                                                    • gives that window a custom id (so your window manager can tell it apart from other windows for rules and such)
                                                                                                                                    • gives it a taskbar entry
                                                                                                                                    • gives it an icon
                                                                                                                                    • puts a link to it in your menu system if supported
                                                                                                                                    • puts a link to it on your desktop if supported

                                                                                                                                    I use a ton of them, right now I am running in “app” mode:

                                                                                                                                    • IRCCloud
                                                                                                                                    • WhatsApp Web
                                                                                                                                    • Google Keep
                                                                                                                                    • Google Music
                                                                                                                                    • Fastmail Inbox
                                                                                                                                    • Pocketcasts
                                                                                                                                    • Todoist
                                                                                                                                    • Trello
                                                                                                                                    • Tweetdeck
                                                                                                                                    • Dungeon Crawl Web Tiles
                                                                                                                                    • Youtube.TV

                                                                                                                                    I run these as “apps” because I have rules that put them on certain desktops or monitors, and I like them having their own taskbar entries.


                                                                                                                                    I actually use Firefox as my main browser – and one of my annoyances with you these chrome “apps” is that if I click a link from like IRCCloud – it always opens in chrome because well – it is already IN chrome. I wish I could set them up to use the system default browser.

                                                                                                                                    1. 2

                                                                                                                                      The latter, things that would be packaged as android/ios/electron apps. I use slack, discord, mastodon like this, because I want them always-on, without accidentally navigating away, but links still opening in my main window (on another screen), and with my extensions available so I can tweak my experience, block trackers, and so on. Since I want these always on, and separate from my main browser, there is zero purpose for a tab or url bar on them. They feel much more like an app than a browser window would, yet, I have more control than if I ran a (non-free, usually) native app.

                                                                                                                                      1. 1

                                                                                                                                        I segregate websites that are not good actors but that I still use (Facebook, LinkedIn, Instagram) using single-site browsers, via Fluid. Fluid uses a completely different local storage instance for every “app” you create, so you don’t have to worry about being tracked around. This allows me to ratchet up the level of privacy I ask for from my browser without worrying about breaking functionality on those web “apps” I use.

                                                                                                                                        As much as I despise it, this is also why I use the Electron versions of Spotify and Slack.

                                                                                                                                    2. 1

                                                                                                                                      I was going to say the memory footprint and its overall smoothness but I don’t have data to back that up, so it’s just a feeling.

                                                                                                                                      I try to go back to FF out of principle but I guess there is something in Chrome which keeps winning me over.

                                                                                                                                    3. 1

                                                                                                                                      Of course Firefox is “there”; it’s been “there” for longer than Chrome’s even existed.

                                                                                                                                      1. 1

                                                                                                                                        make better alternatives to cover the general use case and people WILL switch (because their “techy” friend installs it for them)

                                                                                                                                        This strategy has never worked.

                                                                                                                                      1. -6

                                                                                                                                        It’s just an emacs.d for Emacs, nothing special. I would be far more impressed by regular, open-source Emacs using Common Lisp instead of Emacs Lisp.

                                                                                                                                        1. 13

                                                                                                                                          That’s being a bit uncharitable. Emacs ‘distributions’ (really, custom emacs.d setups) serve a valuable function: taking vanilla Emacs and customising it along witha lot of packages.

                                                                                                                                          Like you, I would love a Common Lisp Emacs, but this is great too, in its own way. It definitely looks nice. I don’t use a Mac, but if I did, maybe I’d use this.

                                                                                                                                          1. 1

                                                                                                                                            Out of curiosity, why would you use this over your current Emacs configuration?

                                                                                                                                            1. 1

                                                                                                                                              I wouldn’t, because I’m using prelude on Linux, but this looks very nice and pretty if one is using macOS.

                                                                                                                                            2. -6

                                                                                                                                              How these emacs.d distributions are “valuable” in any way? If you want to type text and don’t care at all, just get notepad.exe, VS Code, Sublime Text or another silly tool that kids use these days.

                                                                                                                                              The thing about Emacs is to just start with bare bones and add features and improvements to your .emacs only if you need to, instead of reusing other people’s configuration which you won’t read or even understand, as it’s mostly overcomplicated to cover extensive cases for many users at once.

                                                                                                                                              1. 18

                                                                                                                                                How these emacs.d distributions are “valuable” in any way?

                                                                                                                                                They’re an excellent learning tool. They’re a source of new ideas for other users. They provide a way to demonstrate the possibilities. They provide a service to other users looking for a similar experience without the pain of having to do it themselves.

                                                                                                                                                another silly tool that kids use these days.

                                                                                                                                                Frankly, that’s just rude and uncalled for.

                                                                                                                                                The thing about Emacs is to just start with bare bones and add features and improvements to your .emacs only if you need to, instead of reusing other people’s configuration which you won’t read or even understand, as it’s mostly overcomplicated to cover extensive cases for many users at once.

                                                                                                                                                That’s how you use Emacs. That’s not how everyone use Emacs. There are no rules in this case. It’s open source software for a reason.

                                                                                                                                                1. 6

                                                                                                                                                  This version actually does a bit of work to set the command key on Macs to become a Super key, then doing remapping so that a user can press Cmd+O to open a file instead of C-x C-f.

                                                                                                                                                  The documentation is actually quite well-written, I’m impressed.

                                                                                                                                                  1. 3

                                                                                                                                                    Thanks! I’ve tried to describe as much as possible so that someone not familiar with Emacs might want to try it.

                                                                                                                                                  2. 6

                                                                                                                                                    The thing about Emacs is to just start with bare bones and add features and improvements to your .emacs only if you need to, instead of reusing other people’s configuration which you won’t read or even understand, as it’s mostly overcomplicated to cover extensive cases for many users at once.

                                                                                                                                                    That may be how you use Emacs, but it is certainly not the only way. There is absolutely nothing wrong with using a configuration built by someone else. There is nothing wrong with not understanding how it does what it does. It gets the job done? Success! It allows one to ease into Emacs from a point they feel comfortable with? Success!

                                                                                                                                                    Custom emacs.d distributions are very, very valuable. Not just for people new to Emacs, for veterans too: there’s so much one can learn from others. I’ve been using Emacs for over 18 years, and to this day, when I come across a custom emacs.d distribution that has anything interesting about it (be that looks, key bindings, organization, packages used, you name it), I will look through it and borrow any good ideas. Some may stick, some may not, but I learn something useful from every single one of them. And that makes my Emacs so much the better.

                                                                                                                                                2. 2

                                                                                                                                                  It’s not Common Lisp but Guile, but… Does this qualify ? https://www.emacswiki.org/emacs/GuileEmacs

                                                                                                                                                1. 3

                                                                                                                                                  Incidentally, I’m looking at https://www.lambda.cd/ right now, which seems to be in the same ballpark as Drone, but probably with even less assumptions about what build steps do.

                                                                                                                                                  1. 3

                                                                                                                                                    Using Clojure for the build script is neat, I like it, but like many others, LambdaCD fails short on some of my key requirements:

                                                                                                                                                    • Builds should be isolated, preferably running in a container.
                                                                                                                                                    • It should support triggering builds on pull requests, too.

                                                                                                                                                    LambdaCD doesn’t appear to do either out of the box. A quick look suggests that one can build both on top of it, but I’d rather not, when there are other options which do what I need out of the box. Still, there are some good ideas there, will be keeping an eye on it. Thanks for mentioning it!

                                                                                                                                                    1. 2

                                                                                                                                                      It does the triggering thing, although right now it’s a separate plugin (which they apparently want to ship with the main library at some point): https://github.com/flosell/lambdacd-git#using-web--or-post-commit-hooks-instead-of-polling

                                                                                                                                                      Can you explain more about isolation? My simplistic view on it was that one could simply shell out to docker build ., and generally rely on docker itself to manage images. Am I missing some gotcha here?

                                                                                                                                                      1. 3

                                                                                                                                                        Yeah, that notification thing looks good enough for implementing pull requests, though the pipeline will need to be set up in every case to support that scenario, since the pipeline is responsible for pulling the source too. Thus, it must be ready to pull it from a branch, or a different ref, or tag, or whatever. Having to implement this for every single repo is not something I’d like to do. Yes, I could implement a function to do that, and remember to use it in every pipeline, but… this is something I’d expect the CI system to do for me.

                                                                                                                                                        Looking further into LambdaCD, this part of the HOWTOs suggest that while pipelines are code, they are not in the same repository as the code to build. This means that when I add a new project, I need to touch two repos now. If I have a project with more than one branch, and I want to run different pipelines in the branches, this makes that much more complicated. For example, I have a master and debian/master branch: on master I do the normal CI stuff, on debian/master, I test the packaging only, or perhaps in addition; or I’m implementing a new feature, which requires a new dependency, so I want that branch to have that dependency installed too - both of these would be cumbersome. If, like in the case of Drone, or Travis, if the pipeline is part of the source repo, neither of these is a problem: I simply adjust .drone.yml / .travis.yml, and let the system deal with it.

                                                                                                                                                        Additionally, if someone else implements a feature, and submits a pull request, I want them to be able to modify the pipeline, to add new dependencies, or whatever is needed for the feature. But I do not want to give them access to all of my pipelines, let alone my host system. I don’t think this can be achieved with LambdaCD’s architecture.

                                                                                                                                                        Can you explain more about isolation? My simplistic view on it was that one could simply shell out to docker build ., and generally rely on docker itself to manage images. Am I missing some gotcha here?

                                                                                                                                                        It’s not that easy. First, I don’t want to run docker build .. I don’t need to build a new image for every project I have. I want each of my stages to execute in a container, by default, with no other option. I do not want the pipeline to have access to the host system under normal conditions. To better highlight what goes on under the hood, lets look at an example. See this Drone control file for example, which on one hand is reasonably simple, but it achieves quite a few things.

                                                                                                                                                        The dco and signature-check stages execute in parallel, in two different containers, using two different images (with the sources mounted as a volume). The latter only on tag events. Under the hood, this pulls down the image if it’s not available locally yet, runs them in docker with the sources mounted, and fails the build if any of them fail.

                                                                                                                                                        The bootstrap and tls-certificate stages run parallel again, using the same image, but two containers. This way if I change anything outside of the shared source directory, that won’t cause a conflict. This allows me to install a different set of packages in parallel, and not have a conflict.

                                                                                                                                                        The stable-build and unstable-build stages also run parallel, and so on.

                                                                                                                                                        There’s also a riemann service running in the background, which is used for some of the test cases.

                                                                                                                                                        Shelling out to docker is easy, indeed. Orchestrating all of the above - far from it. It could be implemented in LambdaCD too, with wrapper functions/macros/whatever, but this is something I don’t want to deal with, something which Drone does for me out of the box, and it’s awesome.

                                                                                                                                                        1. 1

                                                                                                                                                          Thank you very much for such a detailed response! I’ll give it a thorough thinking because you seem to approach the problem from a completely different side from mine, so may be I need to rethink everything.

                                                                                                                                                          For example, instead of having every project define its own pipeline I’d rather have a single pipeline defined in my CD system which would work for all projects. So it will have logic along the lines “if it’s the master branch deploy to production, if it’s a PR, just run tests”. For it to work, all project will have to follow conventions on how they get built, how they get tested.

                                                                                                                                                          This is something I implemented successfully in the past with Jenkins, but now I’m looking for something more palatable.

                                                                                                                                                          1. 2

                                                                                                                                                            So it will have logic along the lines “if it’s the master branch deploy to production, if it’s a PR, just run tests”.

                                                                                                                                                            Yeah, that makes sense, and might be easier with a global pipeline. Perfectly doable with pipelines defined in the projects themselves too, even if that’s a bit more verbose:

                                                                                                                                                            pipeline:
                                                                                                                                                              tests:
                                                                                                                                                                image: some/image
                                                                                                                                                                commands:
                                                                                                                                                                  - make tests
                                                                                                                                                            
                                                                                                                                                              deploy_production:
                                                                                                                                                                image: some/image
                                                                                                                                                                commands:
                                                                                                                                                                  - deploy
                                                                                                                                                                when:
                                                                                                                                                                  event: [push, tag]
                                                                                                                                                                  branch: master
                                                                                                                                                            

                                                                                                                                                            With Drone, this will run tests for everything, PRs, pushing to any branch, tagging. The deploy_production stage will only be run for the master branch, and only on push and tag (this excludes PRs, pushes to any other branch, or tags that aren’t on master). Granted, with a single pipeline, this can be abstracted away, which is nicer. But per-project, in-source pipelines grant me the flexibility to change the pipeline along with the rest of the project. When adding new dependencies, or new testing steps, this is incredibly convenient, in my experience.

                                                                                                                                                            Mind you, there’s no solution that fits all use cases. If you mostly have uniform projects, a global pipeline has many benefits over per-project ones. For a company with well controlled, possibly internal repos, likewise. My case is neither of those: I have a bunch of random projects, each with their own nuances, there’s very little in common. For me, a per-project pipeline is more useful.

                                                                                                                                                            1. 1

                                                                                                                                                              If you mostly have uniform projects, a global pipeline has many benefits over per-project ones. For a company with well controlled, possibly internal repos, likewise. My case is neither of those: I have a bunch of random projects, each with their own nuances, there’s very little in common.

                                                                                                                                                              This sums it up nicely!

                                                                                                                                                  1. 4

                                                                                                                                                    I recently deployed Drone as my self-hosted CI solution, so I’m working on a blog post about how I arrived there, and also on a few plugins for it, to automate/simplify some of the things I need it to do.

                                                                                                                                                    1. 2

                                                                                                                                                      Look forward to reading. Just looking at drone vs concourse vs gocd now.

                                                                                                                                                      1. 1

                                                                                                                                                        Post is now up, concourse & gocd included (though, neither in depth, because they failed to meet my requirements quite early :/).

                                                                                                                                                    1. 4

                                                                                                                                                      Obviously, if we intend to make Wayland a replacement for X, we need to duplicate this functionality.

                                                                                                                                                      Perhaps a less than popular opinion, but: No, you don’t. If you want to replace A with B, you don’t need to replicate every mistake A made. Then B wouldn’t be much else than A’, with old bugs and new.

                                                                                                                                                      Don’t get me wrong, X’s network transparency might have been useful at some point - it isn’t now.

                                                                                                                                                      1. 8

                                                                                                                                                        Practice speaks otherwise, many people use it daily.

                                                                                                                                                        1. 1

                                                                                                                                                          That a lot of people use something daily doesn’t mean it is good, or needs to be replicated exactly. Running GUI programs remotely, and displaying them locally IS useful. It does not require network transparency, though.

                                                                                                                                                          1. 1

                                                                                                                                                            Require? Perhaps not. Makes things easier on some ways though.

                                                                                                                                                        2. 6

                                                                                                                                                          X’s network transparency might have been useful at some point - it isn’t now.

                                                                                                                                                          I use it 5+ days a week - it is still highly useful to me.

                                                                                                                                                          You’re right that fewer and fewer people know about it and use it - e.g. GTK has had a bug for many years that makes it necessary to stop Emacs after having opened a window remotely over X, and it’s not getting fixed, probably because X over network is not fashionable any more, so it isn’t prioritized.

                                                                                                                                                          1. 2

                                                                                                                                                            What is the advantage of X remoting over VNC / Remote Desktop?

                                                                                                                                                            I remember using it in the past and being confused that File -> Open wasn’t finding my local files, because it looks exactly like a local application.

                                                                                                                                                            I also remember that there were some bandwidth performance reasons. I don’t know if that is still applicable if applications use more of OpenGL and behave more like frame-buffers.

                                                                                                                                                            1. 7

                                                                                                                                                              Functional window management? If I resize a window to half screen, I don’t want to see only half of some remote window.

                                                                                                                                                              1. 2

                                                                                                                                                                Over a fast enough network, there’s no visible or functional difference between a local and remote X client. They get managed by the same wm, share the same copy/paste buffers, inherit the same X settings, and so on. Network transparency means just that: there’s no difference between local and remote X servers.

                                                                                                                                                                1. 1

                                                                                                                                                                  It is faster, and you get just the window(s) of the application you start, integrated seamlessly in your desktop. You don’t have to worry about the other machine having a reasonable window manager setup, a similar resolution etc. etc.

                                                                                                                                                                  In the old days people making browsers, e.g. Netscape, took care to make the application X networking friendly. That has changed, and using a browser over a VDSL connection is only useful in a pinch - but running something remote like (graphical) Emacs, I prefer to do over X.

                                                                                                                                                              2. 1

                                                                                                                                                                I’d like to see something in-between X and RDP. Window-awareness built-in, rather than assuming a single physical monitor, and window-size (and DPI) coming from the viewer would by themselves be a big start.

                                                                                                                                                                Edit: Ideally, pairing this with a standard format for streaming compressed textures, transforms, and compositor commands could solve a lot of problems, including the recent issue where we’re running up against physical bandwidth limitations trying to push pixels to multiple hi-def displays.

                                                                                                                                                                1. 2

                                                                                                                                                                  FWIW I agree with you. It also so happens that something is coming soon enough .. https://github.com/letoram/arcan/wiki/Networking

                                                                                                                                                              1. 6

                                                                                                                                                                I blog about… things that interest me. Nowadays, that’s mostly keyboard firmware, but I used to write about Hylang, logging, and various other topics too. There will be non-keyboard content in the future too (bunch of Perl-related things are to be expected in the next few months).

                                                                                                                                                                1. 5

                                                                                                                                                                  A few of you here assert that voting works fine as it is, on paper, counted by humans. It does not, and is stupidly easy to attack. All you have to do, is have a few members in the counting committee. Let me tell you a few recent examples from Hungary!

                                                                                                                                                                  We had an election earlier this year, the ruling party got 2/3 of the seats in the parliament. The country was divided into voting districts, and each district had a committee. They handed out the papers, watched for fraud, and counted the votes once voting closed. There were quite a few districts where papers were handed out wrong, which, in some cases, rendered half the votes invalid. There were cases where votes were intentionally miscounted - but nothing happened, because the overall committee asserted that recounting wouldn’t change the outcome.

                                                                                                                                                                  In previous elections, when my father was part of one of the committees, he witnessed another member of the committee failing to stamp a paper only when giving it to someone they knew would vote for a party that was an opponent of the party of the committee member. How many such “errors” were made? How many intentionally, how many by accident?

                                                                                                                                                                  There are so many ways to attack paper-based voting, and all of this is being done today. It’s not just some theoretical fear. It’s not limited to my country - this is just where I have reliable information from. But even if we forget about intentional attacks, and only focus on accidents, I don’t think it is unreasonable to think that by the end of the day, when people get tired, they make mistakes. Forgetting a stamp, giving wrong papers, failing to check credentials are all things we’ve seen, all things that can influence the outcome.

                                                                                                                                                                  Thing is, paper-based voting is not fine. It does not work well. It’s not secure, not anymore than voting machines. It’s simply something we are used to and perhaps unconsciously, ignore the disadvantages.

                                                                                                                                                                  1. 2

                                                                                                                                                                    “All you have to do, is have a few members in the counting committee.”

                                                                                                                                                                    And with computers, you just need one person with physical or remote access to the device. So, computer-based method is still worse than human-based method.

                                                                                                                                                                    1. 1

                                                                                                                                                                      I disagree. To tamper with a voting machine, you need one person with physical or remote access, and sufficient knowledge to carry out an attack. This is quite limiting.

                                                                                                                                                                      With paper-based voting with humans, if the committee members fail to correctly verify people, the system is easy to abuse. From my experience, I only need to persuade one specific member of the committee, to be a bit more lax about checking identities and whatnot. That’s not a high bar to jump, and you don’t need a person with special knowledge, just one at the right spot at the right time, and overlooking a fake ID is much easier than tampering with a machine physically. Stupidly easy to deny as well.

                                                                                                                                                                      (Yeah, if you have remote access to a voting machine, that’s going to be fucked up. But lets assume we’re not that incompetent, shall we.)

                                                                                                                                                                      1. 1

                                                                                                                                                                        “and sufficient knowledge to carry out an attack”

                                                                                                                                                                        You don’t need that. You just need a readily-available exploit plus instructions on how to use it. Someone else can develop it with a one-time, up-front cost. Easier if there’s only a few suppliers to target. That’s how the malware market works right now for desktops. For voting machines, that might be as simple as plugging USB sticks into specific devices or as “hard” as disassembling them to connect something to internal parts.

                                                                                                                                                                        “ if the committee members fail to correctly verify people, the system is easy to abuse”

                                                                                                                                                                        Which is why we have recounts with lots of people in the town checking paper votes. A failure mode of that was the accused getting to determine which pieces of paper they looked at. That’s an easy solution to fix.

                                                                                                                                                                  1. 8

                                                                                                                                                                    Speaking as a C programmer, this is a great tour of all the worst parts of C. No destructors, no generics, the preprocessor, conditional compilation, check, check, check. It just needs a section on autoconf to round things out.

                                                                                                                                                                    It is often easier, and even more correct, to just create a macro which repeats the code for you.

                                                                                                                                                                    A macro can be more correct?! This is new to me.

                                                                                                                                                                    Perhaps the overhead of the abstract structure is also unacceptable..

                                                                                                                                                                    Number of times this is likely to happen to you: exactly zero.

                                                                                                                                                                    C function signatures are simple and easy to understand.

                                                                                                                                                                    It once took me 3 months of noodling on a simple http server to realize that bind() saves the pointer you pass into it, so makes certain lifetime expectations on it. Not one single piece of documentation I’ve seen in the last 5 years mentions this fact.

                                                                                                                                                                    1. 4

                                                                                                                                                                      It once took me 3 months of noodling on a simple http server to realize that bind() saves the pointer you pass into it

                                                                                                                                                                      Which system? I’m pretty sure OpenBSD doesn’t.

                                                                                                                                                                      https://github.com/openbsd/src/blob/4a4dc3ea4c4158dccd297c17b5ac5a6ff2af5515/sys/kern/uipc_syscalls.c#L200

                                                                                                                                                                      https://github.com/openbsd/src/blob/4a4dc3ea4c4158dccd297c17b5ac5a6ff2af5515/sys/kern/uipc_syscalls.c#L1156

                                                                                                                                                                      1. 2

                                                                                                                                                                        Linux (that’s the manpage I linked to above). This was before I discovered OpenBSD.

                                                                                                                                                                        Edit: I may be misremembering and maybe it was connect() that was the problem. It too seems fine on OpenBSD. Here’s my original eureka moment from 2011: https://github.com/akkartik/wart/commit/43366d75fbfe1. I know it’s not specific to that project because @smalina and I tried it again with a simple C program in 2016. Again on Linux.

                                                                                                                                                                          1. 1

                                                                                                                                                                            Notice that I didn’t implicate the kernel in my original comment, I responded to a statement about C signatures. We’d need to dig into libc for this, I think.

                                                                                                                                                                            I’ll dig up a simple test program later today.

                                                                                                                                                                            1. 2

                                                                                                                                                                              Notice that I didn’t implicate the kernel in my original comment, I responded to a statement about C signatures. We’d need to dig into libc for this, I think.

                                                                                                                                                                              bind and connect are syscalls, libc would only have a stub doing the syscall if anything at all since they are not part of the standard library.

                                                                                                                                                                      2. 2

                                                                                                                                                                        Perhaps the overhead of the abstract structure is also unacceptable..

                                                                                                                                                                        Number of times this is likely to happen to you: exactly zero.

                                                                                                                                                                        I have to worry about my embedded C code being too big for the stack as it is.

                                                                                                                                                                        1. 1

                                                                                                                                                                          Certainly. But is the author concerned with embedded programming? He seems to be speaking of “systems programming” in general.

                                                                                                                                                                          Also, I interpreted that section as being about time overhead (since he’s talking about the optimizer eliminating it). Even in embedded situations, have you lately found the time overheads concerning?

                                                                                                                                                                          1. 5

                                                                                                                                                                            I work with 8-bit AVR MCUs. I often found myself having to cut corners and avoid certain abstractions, because that would have resulted either in larger or slower binaries, or would have used significantly more RAM. On an Atmega32U4, resources are very limited.

                                                                                                                                                                        2. 1

                                                                                                                                                                          Perhaps the overhead of the abstract structure is also unacceptable..

                                                                                                                                                                          Number of times this is likely to happen to you: exactly zero.

                                                                                                                                                                          Many times, actually. I see FSM_TIME. Hmm … seconds? Milliseconds? No indication of the unit. And what is FSM_TIME? Oh … it’s SYS_TIME. How cute. How is that defined? Oh, it depends upon operating system and the program being compiled. Lovely abstraction there. And I’m still trying to figure out the whole FSM abstraction (which stands for “Finite State Machine”). It’s bad enough to see a function written as:

                                                                                                                                                                          static FSM_STATE(state_foobar)
                                                                                                                                                                          {
                                                                                                                                                                          ...
                                                                                                                                                                          }
                                                                                                                                                                          

                                                                                                                                                                          and then wondering where the hell the variable context is defined! (a clue—it’s in the FSM_STATE() macro).

                                                                                                                                                                          And that bind() issue is really puzzling, since that haven’t been my experience at all, and I work with Linux, Solaris, and Mac OS-X currently.

                                                                                                                                                                          1. 1

                                                                                                                                                                            I agree that excessive abstractions can hinder understanding. I’ve said this before myself: https://news.ycombinator.com/item?id=13570092. But OP is talking about performance overhead.

                                                                                                                                                                            I’m still trying to reproduce the bind() issue. Of course when I want it to fail it doesn’t.

                                                                                                                                                                        1. 28

                                                                                                                                                                          That is a very reductionist view of what people use the web for. And I am saying this as someone who’s personal site pretty much matches everything prescribed except comments (which I still have).

                                                                                                                                                                          Btw, Medium, given as a positive example, is not in any way minimal and certainly not by metrics given in this article.

                                                                                                                                                                          1. 19

                                                                                                                                                                            Btw, Medium, given as a positive example, is not in any way minimal and certainly not by metrics given in this article.

                                                                                                                                                                            Chickenshit minimalism: https://medium.com/@mceglowski/chickenshit-minimalism-846fc1412524

                                                                                                                                                                            1. 13

                                                                                                                                                                              I wouldn’t say medium even gives the illusion of simplicity (For example, on the page you linked, try counting the visual elements that aren’t blog post). Medium seems to take a rather contrary approach to blogs, including all the random cruft you never even imagined existed, while leaving out the simple essentials like RSS feeds. I honestly have no idea how the author of the article came to suggest medium as an example of minimalism.

                                                                                                                                                                              1. 8

                                                                                                                                                                                Medium started with an illusion of simplicity and gradually got more and more complex.

                                                                                                                                                                                1. 3

                                                                                                                                                                                  I agree with your overall point, but Medium does provide RSS feeds. They are linked in the <head> and always have the same URL structure. Any medium.com/@user has an RSS feed at medium.com/feed/@user. For Medium blogs hosted at custom URLs, the feed is available at /feed.

                                                                                                                                                                                  I’m not affiliated with Medium. I have a lot of experience bugging webmasters of minimal websites to add feeds: https://github.com/issues?q=is:issue+author:tfausak+feed.

                                                                                                                                                                              2. 3

                                                                                                                                                                                That is a very reductionist view of what people use the web for.

                                                                                                                                                                                I wonder what Youtube, Google docs, Slack, and stuff would be in a minimal web.

                                                                                                                                                                                1. 19

                                                                                                                                                                                  Useful.

                                                                                                                                                                                  algernon hides

                                                                                                                                                                                  1. 5

                                                                                                                                                                                    YouTube, while not as good as it could be, is pretty minimalist if you disable all the advertising.

                                                                                                                                                                                    I find google apps to be amazingly minimal, especially compared to Microsoft Office and LibreOffice.

                                                                                                                                                                                    Minimalist Slack has been around for decades, it’s called IRC.

                                                                                                                                                                                    1. 2

                                                                                                                                                                                      It is still super slow then! At some point I was able to disable JS, install the Firefox “html5-video-everywhere” extension and watch videos that way. That was awesome fast and minimal. Tried it again a few days ago, but didn’t seem to work anymore.

                                                                                                                                                                                      Edit: now I just “youtube-dl -f43 ” directly without going to YouTube and start watching immediately with VLC.

                                                                                                                                                                                      1. 2

                                                                                                                                                                                        The youtube interface might look minimalist, but under the hood, it is everything but. Besides, I shouldn’t have to go to great lengths to disable all the useless stuff on it. It shouldn’t be the consumer’s job to strip away all the crap.

                                                                                                                                                                                      2. 2

                                                                                                                                                                                        That seems to be of extreme bad faith though.

                                                                                                                                                                                        1. 11

                                                                                                                                                                                          In a minimal web, locally-running applications in browser sandboxes would be locally-running applications in non-browser sandboxes. There’s no particular reason any of these applications is in a browser at all, other than myopia.

                                                                                                                                                                                          1. 2

                                                                                                                                                                                            Distribution is dead-easy for websites. In theory, you have have non-browser-sandboxed apps with such easy distribution, but then what’s the point.

                                                                                                                                                                                            1. 3

                                                                                                                                                                                              Non-web-based locally-running client applications are also usually made downloadable via HTTP these days.

                                                                                                                                                                                              The point is that when an application is made with the appropriate tools for the job it’s doing, there’s less of a cognitive load on developers and less of a resource load on users. When you use a UI toolkit instead of creating a self-modifying rich text document, you have a lighter-weight, more reliable, more maintainable application.

                                                                                                                                                                                              1. 3

                                                                                                                                                                                                The power of “here’s a URL, you now have an app running without going through installation or whatnot” cannot be understated. I can give someone a copy of pseudo-Excel to edit a document we’re working together on, all through the magic of Google Sheet’s share links. Instantly

                                                                                                                                                                                                Granted, this is less of an advantage if you’re using something all the time, but without the web it would be harder to allow for multiple tools to co-exist in the same space. And am I supposed to have people download the Doodle application just to figure out when our group of 15 can go bowling?

                                                                                                                                                                                                1. 4

                                                                                                                                                                                                  They are, in fact, downloading an application and running it locally.

                                                                                                                                                                                                  That application can still be javascript; I just don’t see the point in making it perform DOM manipulation.

                                                                                                                                                                                                  1. 3

                                                                                                                                                                                                    As one who knows JavaScript pretty well, I don’t see the point of writing it in JavaScript, however.

                                                                                                                                                                                                    1. 1

                                                                                                                                                                                                      A lot of newer devs have a (probably unfounded) fear of picking up a new language, and a lot of those devs have only been trained in a handful (including JS). Even if moving away from JS isn’t actually a big deal, JS (as distinct from the browser ecosystem, to which it isn’t really totally tied) is not fundamentally that much worse than any other scripting language – you can do whatever you do in JS in python or lua or perl or ruby and it’ll come out looking almost the same unless you go out of your way to use particular facilities.

                                                                                                                                                                                                      The thing that makes JS code look weird is all the markup manipulation, which looks strange in any language.

                                                                                                                                                                                                      1. 3

                                                                                                                                                                                                        JS (as distinct from the browser ecosystem, to which it isn’t really totally tied) is not fundamentally that much worse than any other scripting language

                                                                                                                                                                                                        (a == b) !== (a === b)

                                                                                                                                                                                                        but only some times…

                                                                                                                                                                                                        1. 3

                                                                                                                                                                                                          Javascript has gotchas, just like any other organic scripting languages. It’s less consistent than python and lua but probably has fewer of these than perl or php.

                                                                                                                                                                                                          (And, just take a look at c++ if you want a faceful of gotchas & inconsistencies!)

                                                                                                                                                                                                          Not to say that, from a language design perspective, we shouldn’t prize consistency. Just to say that javascript is well within the normal range of goofiness for popular languages, and probably above average if you weigh by popularity and include C, C++, FORTRAN, and COBOL (all of which see a lot of underreported development).

                                                                                                                                                                                                  2. 1

                                                                                                                                                                                                    Web applications are expected to load progressively. And that because they are sandboxed, they are allowed to start instantly without asking you for permissions.

                                                                                                                                                                                                    The same could be true of sandboxed desktop applications that you could stream from a website straight into some sort of sandboxed local VM that isn’t the web. Click a link, and the application immediately starts running on your desktop.

                                                                                                                                                                                                  3. 1

                                                                                                                                                                                                    I can’t argue with using the right tool for the job. People use Electron because there isn’t a flexible, good-looking, easy-to-use cross-platform UI kit. Damn the 500 mb of RAM usage for a chat app.

                                                                                                                                                                                                    1. 4

                                                                                                                                                                                                      There are several good-looking flexible easy to use cross-platform UI kits. GTK, WX, and QT come to mind.

                                                                                                                                                                                                      If you remove the ‘good-looking’ constraint, then you also get TK, which is substantially easier to use for certain problem sets, substantially smaller, and substantially more cross-platform (in that it will run on fringe or legacy platforms that are no longer or were never supported by GTK or QT).

                                                                                                                                                                                                      All of these have well-maintained bindings to all popular scripting languages.

                                                                                                                                                                                                      1. 1

                                                                                                                                                                                                        QT apps can look reasonably good. I think webapps can look better, but I haven’t done extensive QT customization.

                                                                                                                                                                                                        The bigger issue is 1) hiring - easier to get JS devs than QT devs 2) there’s little financial incentive to reduce memory usage. Using other people’s RAM is “free” for a company, so they do it. If their customers are in US/EU/Japan, they can expect reasonably new machines so they don’t see it as an issue. They aren’t chasing the market in Nigeria, however large in population.

                                                                                                                                                                                                        1. 5

                                                                                                                                                                                                          Webapps are sort of the equivalent of doing something in QT but using nothing but the canvas widget (except a little more awkward because you also don’t have pixel positioning). Whatever can be done in a webapp can be done in a UI toolkit, but the most extreme experimental stuff involves not using actual widgets (just like doing it as a webapp would).

                                                                                                                                                                                                          Using QT doesn’t prevent you from writing in javascript. Just use NPM QT bindings. It means not using the DOM, but that’s a net win: it is faster to learn how to do something with a UI toolkit than to figure out how to do it through DOM manipulation, unless the thing that you’re doing is (at a fundamental level) literally displaying HTML.

                                                                                                                                                                                                          I don’t think memory use is really going to be the main factor in convincing corporations to leave Electron. It’s not something that’s limited to the third world: most people in the first world (even folks who are in the top half of income) don’t have computers that can run Electron apps very well – but for a lot of folks, there’s the sense that computers just run slow & there’s nothing that can be done about it.

                                                                                                                                                                                                          Instead, I think the main thing that’ll drive corporations toward more sustainable solutions is maintenance costs. It’s one thing to hire cheap web developers & have them build something, but over time keeping a hairball running is simply more difficult than keeping something that’s more modular running – particularly as the behavior of browsers with respect to the corner cases that web apps depend upon to continue acting like apps is prone to sudden (and difficult to model) change. Building on the back of HTML rendering means a red queen’s race against 3 major browsers, all of whom are changing their behaviors ahead of standards bodies; on the other hand, building on a UI library means you can specify a particular version as a dependency & also expect reasonable backwards-compatibility and gradual deprecation.

                                                                                                                                                                                                          (But, I don’t actually have a lot of confidence that corporations will be convinced to do the thing that, in the long run, will save them money. They need to be seen to have saved money in the much shorter term, & saying that you need to rearchitect something so that it costs less in maintenance over the course of the next six years isn’t very convincing to non-technical folks – or to technical folks who haven’t had the experience of trying to change the behavior of a hairball written and designed by somebody who left the company years ago.)

                                                                                                                                                                                                        2. 1

                                                                                                                                                                                                          I understand that these tools are maintained in a certain sense. But from an outsider’s perspective, they are absolutely not appealing compared to what you see in their competitors.

                                                                                                                                                                                                          I want to be extremely nice, because I think that the work done on these teams and projects is very laudable. But compare the wxPython docs with the Bootstrap documentation. I also spent a lot of time trying to figure out how to use Tk, and almost all resources …. felt outdated and incompatible with whatever toolset I had available.

                                                                                                                                                                                                          I think Qt is really good at this stuff, though you do have to marry its toolset for a lot of it (perhaps this has gotten better).

                                                                                                                                                                                                          The elephant in the room is that no native UI toolset (save maybe Apple’s stack?) is nowhere near as good as the diversity of options and breadth of tooling available in DOM-based solutions. Chrome dev tools is amazing, and even simple stuff like CSS animations gives a lot of options that would be a pain in most UI toolkits. Out of the box it has so much functionality, even if you’re working purely vanilla/“no library”. Though on this points things might have changed, jQuery basically is the optimal low-level UI library and I haven’t encountered native stuff that gives me the same sort of productivity.

                                                                                                                                                                                                          1. 3

                                                                                                                                                                                                            I dunno. How much of that is just familiarity? I find the bootstrap documentation so incomprehensible that I roll my own DOM manipulations rather than using it.

                                                                                                                                                                                                            TK is easy to use, but the documentation is tcl-centric and pretty unclear. QT is a bad example because it’s quite heavy-weight and slow (and you generally have to use QT’s versions of built-in types and do all sorts of similar stuff). I’m not trying to claim that existing cross-platform UI toolkits are great: I actually have a lot of complaints with all of them; it’s just that, in terms of ease of use, peformance, and consistency of behavior, they’re all far ahead of web tech.

                                                                                                                                                                                                            When it comes down to it, web tech means simulating a UI toolkit inside a complicated document rendering system inside a UI toolkit, with no pass-throughs, and even web tech toolkits intended for making UIs are really about manipulating markup and not actually oriented around placing widgets or orienting shapes in 2d space. Because determining how a piece of markup will look when rendered is complex and subject to a lot of variables not under the programmer’s control, any markup-manipulation-oriented system will make creating UIs intractably awkward and fragile – and while Google & others have thrown a great deal of code and effort at this problem (by exhaustively checking for corner cases, performing polyfills, and so on) and hidden most of that code from developers (who would have had to do all of that themselves ten years ago), it’s a battle that can’t be won.

                                                                                                                                                                                                            1. 5

                                                                                                                                                                                                              It annoys me greatly because it feels like nobody really cares about the conceptual damage incurred by simulating a UI toolkit inside a doument renderer inside a UI toolkit, instead preferring to chant “open web!” And then this broken conceptual basis propagates to other mediums (VR) simply because it’s familiar. I’d also argue the web as a medium is primarily intended for commerce and consumption, rather than creation.

                                                                                                                                                                                                              It feels like people care less about the intrinsic quality of what they’re doing and more about following whatever fad is around, especially if it involves tools pushed by megacorporations.

                                                                                                                                                                                                              1. 2

                                                                                                                                                                                                                Everything (down to the transistor level) is layers of crap hiding other layers of different crap, but web tech is up there with autotools in terms of having abstraction layers that are full of important holes that developers must be mindful of – to the point that, in my mind, rolling your own thing is almost always less work than learning and using the ‘correct’ tool.

                                                                                                                                                                                                                If consumer-grade CPUs were still doubling their clock speeds and cache sizes every 18 months at a stable price point and these toolkits properly hid the markup then it’d be a matter of whether or not you consider waste to be wrong on principle or if you’re balancing it with other domains, but neither of those things are true & so choosing web tech means you lose across the board in the short term and lose big across the board in the long term.

                                                                                                                                                                                            2. 1

                                                                                                                                                                                              Youtube would be a website where you click on a video and it plays. But it wouldn’t have ads and comments and thumbs up and share buttons and view counts and subscription buttons and notification buttons and autoplay and add-to-playlist.

                                                                                                                                                                                              Google docs would be a desktop program.

                                                                                                                                                                                              Slack would be IRC.

                                                                                                                                                                                              1. 1

                                                                                                                                                                                                What you’re describing is the video HTML5 tag, not a video sharing platform. Minimalism is good, I do agree, but don’t mix it with no features at all.

                                                                                                                                                                                                Google docs would be a desktop program.

                                                                                                                                                                                                This is another debate around why using the web for these kind of tasks, not the fact that it’s minimalist or not.