1. 2

    Can technical terms not be emphasized this way? “Today’s post is all about <em>malloc</em> and dynamic memory.” If I were reading that aloud, I might put a little pause around malloc so everybody hears it.

    1. 3

      <ehem> wold be even better! “Today’s post is all about <ehem>malloc</ehem>”.

      1. 1

        I think <i> would be better for technical terms: <i>malloc</i>. You are pronouncing “malloc” differently, but not because you are stressing it. Your change of voice is similar to the change in voice you might use when quoting a book title, which should also be marked up with <i>: “But what about <i>The Wind in the Willows</i>?”.

        1. 4

          If you want to be even more semantic you could use the dfn and cite tags: <dfn>malloc</dfn> and <cite>The Wind in the Willows</cite>.

          1. 3

            Good find with the <dfn> tag, but I’m not sure that <cite> could replace <i> for the book title. From the description of <cite> it sounds like it could, but the HTML demo on that MDN page includes a book title written with <i>, with <cite> wrapped around it, as in “check out <cite><i>The Wind in the Willows</i> by Kenneth Grahame</cite>”. Making the situation more confusing, the page says that the W3C and the WHATWG specs conflict on whether <cite> can include more than the book title.

            1. 1

              Good catch. To make things even more confusing, the MDN page also says,

              Typically, browsers style the contents of a <cite> element in italics by default.

              So maybe it’s best just to stay away from that one, or at least to treat it as a semantic-only tag and handle the formatting yourself. (Some of those example uses would traditionally be formatted in quotes, not italics, so maybe that’s just as well.)

      1. 81

        I beg all my fellow crustaceans to please, please use Firefox. Not because you think it’s better, but because it needs our support. Technology only gets better with investment, and if we don’t invest in Firefox, we will lose the web to chrome.

        1. 59

          Not because you think it’s better

          But that certainly helps too. It is a great browser.

          • privacy stuff — the cookie container API for things like Facebook Container, built-in tracker blocker, various anti-fingerprinting things they’re backporting from the Tor Browser
          • honestly just the UI and the visual design! I strongly dislike the latest Chrome redesign >_<
          • nice devtools things — e.g. the CSS Grid inspector
          • more WebExtension APIs (nice example: only on Firefox can Signed Pages actually prevent the page from even loading when the signature check fails)
          • the fastest (IIRC) WASM engine (+ now in Nightly behind a pref: even better codegen backend based on Cranelift)
          • ongoing but already usable Wayland implementation (directly in the official tree now, not as a fork)
          • WebRender!!!
          1. 7

            On the other hand, WebSocket debugging (mostly frame inspection) is impossible in Firefox without an extension. I try not to install any extensions that I don’t absolutely need and Chrome has been treating me just fine in this regard[1].

            Whether or not I agree with Google’s direction is now a moot point. I need Chrome to do what I do with extensions.

            As soon as Firefox supports WebSocket debugging natively, I will be perfectly happy to switch.

            [1] I mostly oppose extensions because of questionable maintenance cycles. I allow uBlock and aXe because they have large communities backing them.

            1. 3

              Axe (https://www.deque.com/axe/) seems amazing. I know it wasn’t the focus of your post – but I somehow missed this when debugging an accessibility issue just recently, I wish I had stumbled onto it. Thanks!

              1. 1

                You’re welcome!

                At $work, we used aXe and NVDA to make our webcomponents AA compliant with WCAG. aXe was invaluable for things like contrast and missing role attributes.

              2. 3

                WebSocket debugging (mostly frame inspection) is impossible in Firefox without an extension

                Is it possible with an extension? I can’t seem to find one.

                1. 1

                  I have never needed to debug WebSockets and see no reason for that functionality to bloat the basic browser for everybody. Too many extensions might not be a good thing but if you need specific functionality, there’s no reason to hold back. If it really bothers you, run separate profiles for web development and browsing. I have somewhat more than two extensions and haven’t had any problems.

                  1. 1

                    I do understand your sentiment, but the only extension that I see these days is marked “Experimental”.

                    On the other hand, I don’t see how it would “bloat” a browser very much. (Disclaimer: I have never written a browser or contributed to any. I am open to being proved wrong.) I have written a WebSockets library myself, and it’s not a complex protocol. It can’t be too expensive to update a UI element on every (websocket) frame.

                2. 5

                  Yes! I don’t know about you, but I love the fact that Firefox uses so much less ram than chrome.

                  1. 2

                    This was one of the major reasons I stuck with FF for a long time. It is still a pronounced difference.

                  2. 3

                    honestly just the UI and the visual design! I strongly dislike the latest Chrome redesign >_<

                    Yeah, what’s the deal with the latest version of Chrome? All those bubbly menus feel very mid-2000’s. Everything old is new again.

                    1. 3

                      I found a way to go back to the old ui from https://www.c0ffee.net/blog/openbsd-on-a-laptop/ (it was posted here a few weeks ago):

                      Also, set the following in chrome://flags:

                      • Smooth Scrolling: (personal preference)
                      • UI Layout for the browser’s top chrome: set to “Normal” to get the classic Chromium look back
                      • Identity consistency between browser and cookie jar: set to “Disabled” to keep Google from hijacking any Google > - login to sign you into Chrome
                      • SafeSearch URLs reporting: disabled

                      (emphasis mine)

                      1. 1

                        Aaaaaaaand they took out that option.

                    2. 1

                      The Wayland implementation is not usable quite yet, though, but it is close. I tried it under Sway, but it was crashy.

                    3. 16

                      I switched to Firefox last year, and I have to say I don’t miss Chrome in the slightest.

                      1. 13

                        And those with a little financial liberty, consider donating to Mozilla. They do a lot of important work free a free and open web.

                        1. 10

                          I recently came back to Firefox from Vivaldi. That’s another Chromium/Webkit based browser and it’s closed source to boot.

                          Firefox has improved greatly in speed as of late and I feel like we’re back in the era of the mid-2000s, asking people to chose Firefox over Chrome this time instead of IE.

                          1. 2

                            I’d love to switch from Vivaldi, but it’s simply not an option given the current (terrible) state of vertical tab support in Firefox.

                            1. 2

                              How is it terrible? The hiding of the regular tab bar is not an API yet and you have to use CSS for that, sure, but there are some very good tree style tab webextensions.

                              1. 2

                                The extensions are all terrible – but what’s more important is that I lost the belief that any kind of vertical tab functionality has any chance of long-term survival. Even if support was added now, it would be a constant battle to keep it and I’m frankly not interested in such fights anymore.

                                Mozilla is chasing their idealized “average user” and is determined to push everyone into their one-size-fits-all idea of user interface design – anyone not happy with that can screw off, if it was for Mozilla.

                                It’s 2018 – I don’t see why I even have to argue for vertical tabs and mouse gestures anymore. I just pick a browser vendor which hasn’t been asleep on the wheel for the last 5 years and ships with these features out of the box.

                                And if the web in the future ends up as some proprietary API defined by whatever Google Chrome implements, because Firefox went down, Mozilla has only itself to blame.

                                1. 2

                                  The extensions are all terrible – but what’s more important is that I lost the belief that any kind of vertical tab functionality has any chance of long-term survival. Even if support was added now, it would be a constant battle to keep it and I’m frankly not interested in such fights anymore. The whole point of moving to WebExtensions was long term support. They couldn’t make significant changes without breaking a lot of the old extensions. The whole point was to unhook extensions from the internals so they can refactor around them and keep supporting them.

                                  1. 0

                                    That’s like a car manufacturer removing all electronics from a car – sure it makes the car easier to support … but now the car doesn’t even turn on anymore!

                                    Considering that cars are usually used for transportation, not for having them sit in the garage, you shouldn’t be surprised that customers buy other cars in the future.

                                    (And no, blaming “car enthusiasts” for having unrealistic expectations, like it happens in the case of browser users, doesn’t cut it.)

                                    1. 3

                                      So you’d rather they didn’t improve it at all? Or would you rather they broke most extensions every release?

                                      1. 3

                                        I’m not @soc, but I wish Firefox had delayed their disabling of old-style extensions in Firefox 57 until they had replicated more of the old functionality with the WebExtensions API – mainly functionality related to interface customization, tabs, and sessions.

                                        Yes, during the time of that delay, old-style extensions would continue to break with each release, but the maintainers of Tree Style Tabs and other powerful extensions had already been keeping up with each release by releasing fixed versions. They probably could have continued updating their extensions until WebExtensions supported their required functionality. And some users might prefer to run slightly-buggy older extensions for a bit instead of switching to the feature-lacking new extensions straight away – they should have that choice.

                                        1. 1

                                          What’s the improvement? The new API was so bad that they literally had to pull the plug on the existing API to force extension authors to migrate. That just doesn’t happen in cases where the API is “good”, developers are usually eager to adopt them and migrate their code.

                                          Let’s not accuse people you disagree with that they are “against improvements” – it’s just that the improvements have to actually exist, and in this case the API clearly wasn’t ready. This whole fiasco feels like another instance of CADT-driven development and the failure of management to reign in on it.

                                          1. 3

                                            The old extension API provided direct access to the JavaScript context of both the chrome and the tab within a single thread, so installing an XUL extension was disabling multiprocess mode. Multiprocess mode seems like an improvement; in old Firefox, a misbehaving piece of JavaScript would lock up the browser for about a second before eventually popping up a dialog offering to kill it, whereas in a multiprocess browser, it should be possible to switch and close tabs no matter what the web page inside does. The fact that nobody notices when it works correctly seems to make it the opposite of Attention-Deficient-Driven-Design; it’s the “focus on quality of implementation, even at the expense of features” design that we should be encouraging.

                                            The logical alternative to “WebExtension For The Future(tm)” would’ve been to just expose all of the relevant threads of execution directly to the XUL extensions. run-this-in-the-chome.xul and run-this-in-every-tab.xul and message pass between them. But at that point, we’re talking about having three different extension APIs in Firefox.

                                            Which isn’t to say that I think you’re against improvement. I am saying that you’re thinking too much like a developer, and not enough like the poor sod who has to do QA and Support triage.

                                            1. 2

                                              Improving the actual core of Firefox. They’re basically ripping out and replacing large components every other release. This would break large amount of plugins constantly. Hell, plugins wouldn’t even work in Nightly. I do agree with @roryokane that they should have tried to improve it before cutting support. The new API is definitely missing many things but it was the right decision to make for the long term stability of Firefox.

                                              1. 1

                                                They could have made the decision to ax the old API after extension authors adopted it. That adoption failed so hard that they had to force developers to use the new API speaks for itself.

                                                I’d rather have extension that I have to fix from time to time, than no working extensions at all.

                                      2. 1

                                        Why should Mozilla care that much about your niche use case? They already have a ton of stuff to deal with and barely enough funding.

                                        It’s open source, make your own VerticalTabFox fork :)

                                        1. 3

                                          Eh … WAT? Mozilla went the extra mile with their recent extension API changes to make things – that worked before – impossible to implement with a recent Firefox version. The current state of tab extensions is this terrible, because Mozilla explicitly made it this way.

                                          I used Firefox for more than 15 years – the only thing I wanted was to be left alone.

                                          It’s open source, make your own VerticalTabFox fork :)

                                          Feel free to read my comment above to understand why that doesn’t cut it.

                                          Also, Stuff that works >> open source. Sincerely, a happy Vivaldi user.

                                          1. 2

                                            It’s one of the laws of the internet at this point: Every thread about Firefox is always bound to attract someone complaining about WebExtensions not supporting their pet feature that was possible with the awful and insecure old extension system.

                                            If you’re care about “non terrible” (whatever that means — Tree Style Tab looks perfect to me) vertical tabs more than anything — sure, use a browser that has them.

                                            But you seem really convinced that Firefox could “go down” because of not supporting these relatively obscure power user features well?? The “average user” they’re “chasing” is not “idealized”. The actual vast majority of people do not choose browsers based on vertical tabs and mouse gestures. 50% of Firefox users do not have a single extension installed, according to telemetry. The majority of the other 50% probably only have an ad blocker.

                                            1. 3

                                              If you’re care about “non terrible” (whatever that means — Tree Style Tab looks perfect to me) vertical tabs more than anything — sure, use a browser that has them.

                                              If you compare the current state of the art of vertical tabs extensions, even Mozilla thinks they suck – just compare them to their own Tab Center experiment: https://testpilot.firefox.com/static/images/experiments/tab-center/details/tab-center-1.1957e169.jpg

                                              Picking just one example: Having the navigation bar at a higher level of the visual hierarchy is just wrong – the tab panel isn’t owned by the navigation bar, the navigation bar belongs to a specific tab! Needless to say, all of the vertical tab extensions are forced to be wrong, because they lack the API do implement the UI correctly.

                                              This is how my browser currently looks like, for comparison: https://i.imgur.com/5dTX8Do.png

                                              But you seem really convinced that Firefox could “go down” because of not supporting these relatively obscure power user features well?? The “average user” they’re “chasing” is not “idealized”. The actual vast majority of people do not choose browsers based on vertical tabs and mouse gestures. 50% of Firefox users do not have a single extension installed, according to telemetry. The majority of the other 50% probably only have an ad blocker.

                                              You can only go so far alienating the most loyal users that use Firefox for specific purposes until the stop installing/recommending it to their less technically-inclined friends and relatives.

                                              Mozilla is so busy chasing after Chrome that it doesn’t even realize that most Chrome users will never switch. They use Chrome because “the internet” (www.google.com) told them so. As long as Mozilla can’t make Google recommend Firefox on their frontpage, this will not change.

                                              Discarding their most loyal users while trying to get people to adopt Firefox who simply aren’t interested – this is a recipe for disaster.

                                          2. 1

                                            and barely enough funding

                                            Last I checked they pulled in half a billion in revenue (2016). Do you believe this is barely enough?

                                            1. 2

                                              For hundreds of millions users?

                                              Yeah.

                                        2. 1

                                          At least with multi-row tabs in CSS you can’t dragndrop tabs. That’s about as bad as it gets.

                                        3. 2

                                          Are vertical tabs so essential?

                                          1. 3

                                            Considering the change in screen ratios over the past ten years (displays get shorter and wider), yes, it absolutely is.

                                            With vertical tabs I can get almost 30 full-width tabs on screen, with horizontal tabs I can start fishing for the right tab after about 15, as the tab width gets increasingly smaller.

                                            Additionally, vertical tabs reduce the way of travel substantially when selecting a different tab.

                                            1. 1

                                              I still miss them, didn’t cripple me, but really hurt. The other thing about Tree (not just vertical) tabs that FF used to have was that the subtree was contextual to the parent tree. So, when you opened a link in a background tab, it was opened in a new tab that was a child of your current tab. For doing like documentation hunting / research it was amazing and I still haven’t found its peer.

                                          2. 1

                                            It’s at least partially open source. They provide tarballs.

                                            1. 4

                                              https://help.vivaldi.com/article/is-vivaldi-open-source/

                                              The chromium part is legally required to be open, the rest of their code is like readable source, don’t get me wrong that’s way better than unreadable source but it’s also very wut.

                                              1. 2

                                                Very wut. It’s a weird uneasy mix.

                                                1. 1

                                                  that’s way better than unreadable source but it’s also very wut.

                                                  I wouldn’t be sure of that. It makes it auditable, but has legal ramifications should you want to build something like vivaldi, but free.

                                            2. 8

                                              firefox does not get better with investment, it gets worse.

                                              the real solution is to use netsurf or dillo or mothra, so that webmasters have to come to us and write websites that work with browsers that are simple enough to be independently maintained.

                                              1. 9

                                                Good luck getting more than 1‰ adoption 😉

                                                1. 5

                                                  good luck achieving independence from Google by using a browser funded by Google

                                                  1. 1

                                                    I can achieve independence from Google without using netsurf, dillo, or mothra; to be quite honest, those will never catch on.

                                                    1. 2

                                                      can you achieve independence from google in a way that will catch on?

                                                      1. 1

                                                        I don’t think we’ll ever get the majority of browser share back into the hands of a (relatively) sane organization like Mozilla—but we can at least get enough people to make supporting alternative browsers a priority. On the other hand, the chances that web devs will ever feel pressured to support the browsers you mentioned, is close to nil. (No pun intended.)

                                                        1. 0

                                                          what is the value of having an alternative, if that alternative is funded by google and sends data to google by default?

                                                          1. 1

                                                            what is the value of having an alternative

                                                            What would you like me to say, that Firefox’s existence is worthless? This is an absurd thing to insinuate.

                                                            funded by google

                                                            No. I’m not sure whether you’re speaking in hyperbole, misunderstood what I was saying, and/or altogether skipped reading what I wrote. But this is just not correct. If Google really had Mozilla by the balls as you suggest, they would coerce them to stop adding privacy features to their browser that, e.g., block Google Analytics on all sites.

                                                            sends data to google by default

                                                            Yes, though it seems they’ve been as careful as one could be about this. Also to be fair, if you’re browsing with DNT off, you’re likely to get tracked by Google at some point anyway. But the fact that extensions can’t block this does have me worried.

                                                            1. 1

                                                              i’m sorry if i misread something you wrote. i’m just curious what benefit you expect to gain if more people start using firefox. if everyone switched to firefox, google could simply tighten their control over mozilla (continuing the trend of the past 10 years), and they would still have control over how people access the web.

                                                              1. 1

                                                                It seems you’re using “control” in a very abstract sense, and I’m having trouble following. Maybe I’m just missing some context, but what concrete actions have Google taken over the past decade to control the whole of Mozilla?

                                                                1. 1

                                                                  Google has pushed through complex standards such as HTTP/2 and new rendering behaviors, which Mozilla implements in order to not “fall behind.” They are able implement and maintain such complexity due to funding they receive from Google, including their deal to make Google the default search engine in Firefox (as I said earlier, I couldn’t find any breakdown of what % of Mozilla’s funding comes from Google).

                                                                  For evidence of the influence this funding has, compare the existence of Mozilla’s Facebook Container to the non-existence of a Google Container.

                                                                  1. 1

                                                                    what % of Mozilla’s funding comes from Google

                                                                    No word on the exact breakdown. Visit their 2017 report and scroll all the way to the bottom, and you’ll get a couple of helpful links. One of them is to a wiki page that describes exactly what each search engine gets in return for their investment.

                                                                    I would also like to know the exact breakdown, but I’d expect all those companies would get a little testy if the exact amount were disclosed. And anyway, we know what the lump sum is (around half a billion), and we can assume that most of it comes from Google.

                                                                    the non-existence of a Google Container

                                                                    They certainly haven’t made one themselves, but there’s nothing stopping others from forking one off! And anyway, I think it’s more so fear on Mozilla’s part than any concrete warning from Google against doing so.

                                                                    Perhaps this is naïveté on my part, but I really do think Google just want their search engine to be the default for Firefox. In any case, if they really wanted to exert their dominance over the browser field, they could always just… you know… stop funding Mozilla. Remember: Google is in the “web market” first & the “software market” second. Having browser dominance is just one of many means to the same end. I believe their continued funding of Mozilla attests to that.

                                                                    1. 2

                                                                      It doesn’t have to be a direct threat from Google to make a difference. Direct threats are a very narrow way in which power operates and there’s no reason that should be the only type of control we care about.

                                                                      Yes Google’s goal of dominating the browser market is secondary to their goal of dominating the web. Then we agree that Google’s funding of Firefox is in keeping with their long-term goal of web dominance.

                                                                      if they really wanted to exert their dominance over the browser field, they could always just… you know… stop funding Mozilla.

                                                                      Likewise, if Firefox was a threat to their primary goal of web dominance, they could stop funding Mozilla. So doesn’t it stand to reason that using Firefox is not an effective way to resist Google’s web dominance? At least Google doesn’t think so.

                                                                      1. 1

                                                                        Likewise, if Firefox was a threat to their primary goal of web dominance, they could stop funding Mozilla. So doesn’t it stand to reason that using Firefox is not an effective way to resist Google’s web dominance?

                                                                        You make some good points, but you’re ultimately using the language of a “black or white” argument here. In my view, if Google were to stop funding Mozilla they would still have other sponsors. And that’s not to mention the huge wave this would make in the press—even if most people don’t use Firefox, they’re at least aware of it. In a strange sense, Google cannot afford to stop funding Mozilla. If they do, they lose their influence over the Firefox project and get huge backlash.

                                                                        I think this is something the Mozilla organization were well aware of when they made the decision to accept search engines as a funding source. They made themselves the center of attention, something to be competed over. And in so doing, they ensured their longevity, even as Google’s influence continued to grow.

                                                                        Of course this has negative side effects, such as companies like Google having influence over them. But in this day & age, the game is no longer to be free of influence from Google; that’s Round 2. Round 1 is to achieve enough usage to exert influence on what technologies are actually adopted. In that sense, Mozilla is at the discussion table, while netsurf, dillo, and mothra (as much as I’d love to love them) are not and likely never will be.

                                                  2. 3

                                                    Just switch to Gopher.

                                                    1. 5

                                                      Just switch to Gopher

                                                      I know you were joking, but I do feel like there is something to be said for the simplicity of systems like gopher. The web is so complicated nowadays that building a fully functional web browser requires software engineering on a grand scale.

                                                      1. 3

                                                        yeah. i miss when the web was simpler.

                                                        1. 1

                                                          I was partially joking. I know there are new ActivityPub tools like Pleroma that support Gopher and I’ve though about adding support to generate/server gopher content for my own blog. I realize it’s still kinda a joke within the community, but you’re right about there being something simple about just having content without all the noise.

                                                    2. 1

                                                      Unless more than (rounded) 0% of people use it for Facebook, it won’t make a large enough blip for people to care. Also this is how IE was dominant, because so much only worked for them.

                                                      1. 1

                                                        yes, it would require masses of people. and yes it won’t happen, which is why the web is lost.

                                                    3. 2

                                                      I’ve relatively recently switched to FF, but still use Chrome for web dev. The dev tools still seem quite more advanced and the browser is much less likely to lock up completely if I have a JS issue that’s chewing CPU.

                                                      1. 2

                                                        I tried to use Firefox on my desktop. It was okay, not any better or worse than Chrome for casual browsing apart from private browsing Not Working The Way It Should relative to Chrome (certain cookies didn’t work across tabs in the same Firefox private window). I’d actually want to use Firefox if this was my entire Firefox experience.

                                                        I tried to use Firefox on my laptop. Site icons from bookmarks don’t sync for whatever reason (I looked up the ticket and it seems to be a policy problem where the perfect is the enemy of the kinda good enough), but it’s just a minor annoyance. The laptop is also pretty old and for that or whatever reason has hardware accelerated video decoding blacklisted in Firefox with no way to turn it back on (it used to work a few years ago with Firefox until it didn’t), so I can’t even play 720p YouTube videos at an acceptable framerate and noise level.

                                                        I tried to use Firefox on my Android phone. Bookmarks were completely useless with no way to organize them. I couldn’t even organize on a desktop Firefox and sync them over to the phone since they just came out in some random order with no way to sort them alphabetically. There was also something buggy with the history where clearing history didn’t quite clear history (pages didn’t show up in history, but links remained colored as visited if I opened the page again) unless I also exited the app, but I don’t remember the details exactly. At least I could use UBO.

                                                        This was all within the last month. I used to use Firefox before I used Chrome, but Chrome just works right now.

                                                        1. 6

                                                          I definitely understand that Chrome works better for many users and you gave some good examples of where firefox fails. My point was that people need to use and support firefox despite it being worse than chrome in many ways. I’m asking people to make sacrifices by taking a principled position. I also recognize most users might not do that, but certainly, tech people might!? But maybe I’m wrong here, maybe the new kids don’t care about an open internet.

                                                      1. 1

                                                        I once tried to implement this for an in-browser editor using the tab-size CSS property, only to find that no browsers implement that property fully. The CSS standard says that you should be able to pass any distance such as 17px to set the width of each tab character, but in practice browsers only support passing an integer such as 2, which makes the width an exact multiple of the width of the font’s space character.

                                                        It’s a shame that no text formatting API I have ever seen makes implementing elastic tabstops easy.

                                                        Though, thinking about the above limitation of CSS implementations, maybe it would be possible to combine tab-size with a web font that changes tab characters to be one pixel wide? The unicode-range property of a @font-face declaration can be used to specify that the font is only used to render certain characters.

                                                        1. 2

                                                          This article is unnecessarily hard to read because of its plain-text nature and Pastebin.com’s styling. Here is a formatted version I made so I could read it more easily: https://gist.github.com/roryokane/d02addfa9329c579f15daef5b4ebae2f

                                                          1. 1

                                                            Looks nice! Thanks!

                                                          1. 2

                                                            The OptiCSS part of CSS Blocks, a sub-library that compiles stylesheets for peformance, seems to do the same thing as the existing library Styletron. Styletron does the same splitting of rules into a rule for each set of styles that is shared across elements, followed by giving multiple classes to elements that assemble all subsets of rules they need. Styletron’s introductory blog post explains more about the concept.

                                                            1. 21

                                                              This is a beautiful technology. It is very sad that many people will ignore this because of Oracle v. Google lawsuit. What a tragedy.

                                                              1. 15

                                                                This looks suspiciously like an “embrace, extend, and extinguish” play by Oracle to the observer.

                                                                1. 16

                                                                  Anything from them potentially is one just due to their legal team. I’m avoiding it specifically for that. Java, too, just in case.

                                                                  1. -1

                                                                    It’s all open source.

                                                                    1. 4

                                                                      That’s copyright law mostly with patent provisions in some licenses for the specific work as is. That leaves patents for how it’s used or combined with other software. Oracle, Microsoft, and IBM in particular like to file lots of those. I dont know if any are on GraalVM because just looking triples the damages. I never look.

                                                                      1. 2

                                                                        I’m not a lawyer, but openJDK, which now includes Graal, is GPL licenced which includes patent protection.

                                                                        1. 1

                                                                          This is incorrect; the patent grant applies to the official OpenJDK builds but not forks of OpenJDK.

                                                                          1. 1

                                                                            Do you have a source for that? That wouldn’t be GPL then under my understanding.

                                                                            The GPL seems relatively clear on this: http://openjdk.java.net/legal/gplv2+ce.html

                                                                            1. 3

                                                                              If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

                                                                              Seems to me that the patent clause is opt-in rather than required. OpenJDK uses the GPL v2, which lacks the clear patent grants of v3.

                                                                              See also https://www.skife.org/java/jcp/2010/12/07/the-tck-trap.html and the lawsuits Oracle fired at Google. (The patent claims ended up getting thrown out because Google has excellent lawyers in that case.)

                                                                              Edit: more details about the weak language used around patents in v2: https://www.infoq.com/articles/java-dotnet-patents

                                                                              In 2004 Dan Ravicher, senior counsel for the Free Software Foundation, warned about the weak patent guarantees for BSD and GPL and recommended attaching patent grants.

                                                                              1. 2

                                                                                With further digging it seems that Oracle joined the OIN and OIN explicitly covers the openJDK for patents:

                                                                                http://www.openinventionnetwork.com/community-of-licensees/

                                                                                https://www.zdnet.com/article/linux-patent-defense-group-expands-open-source-protection/

                                                                                1. 2

                                                                                  Thank you. That is very interesting reading. Sounds like the waters are muddy and we need an actual lawyer to chime in.

                                                                                  I partially side with Oracle on the Google case (excluding copyrighting APIs). Google had plenty of opportunity to licence Java from Sun, or indeed to buy Sun entirely, but they chose to incompatibly re-implement it and developers have been paying the price for that choice ever since. But it looks like Google finally did the right thing in the end: http://www.fosspatents.com/2015/12/google-switches-to-open-source-license.html

                                                                        2. 1

                                                                          Not all of it. The GraalVM Downloads page makes it clear that there are two versions of GraalVM: Community Edition (CE) and Enterprise Edition (EE). GraalVM EE is closed-source, and it’s the only version with support for macOS and with “additional performance, security, and scalability”.

                                                                          1. 1

                                                                            The developers have stated the only reason for the macos absence is they haven’t gotten around to it yet, and also there is currently no difference in performance.

                                                                    1. 2

                                                                      The terminal app iTerm2 for macOS has this feature built-in. Just activate the menu item View > Show Timestamps (⇧⌘E) to display an overlay with the timestamps of every line in history. You don’t even have to turn the feature on before running the command to profile – iTerm2 is always saving past timestamps just in case.

                                                                      1. 5

                                                                        Some extra details from the linked bug report and commit:

                                                                        • What about triple-dot ranges that exclude the end value? The bug report said “I don’t think ary[1...] (exclusive) is meaningful.” Despite this, I see from the commit that endless ranges with triple-dot were implemented. There is only one test case that uses the range in a way other than inspecting its attributes, and that test shows that a 3...nil range iterates over the same numbers as a 3..nil range when passed to Array#fill.

                                                                        • What about infinite ranges in the other direction, (..0) and (nil..0)? They could theoretically be used for checking if a number is less than 100, for example. Well, they are not part of this feature because it would be too hard to implement in Ruby’s grammar:

                                                                          It is better to have ary[..1] as a consistency. But it will cause a shift/reduce conflict. Anyway, ary[0..1] looks not so bad to me since it have no cursed negative index. So I don’t push it.

                                                                        1. 2

                                                                          Couldn’t you apply a unary minus to the infinite range and get the same thing? Or am I missing something?

                                                                          1. 1

                                                                            Good point, I hadn’t even thought of the negative infinity case.

                                                                          1. 12

                                                                            It’s not fashionable, but perl took from Larry Wall’s linguist background the concept of ‘it’ - i.e. the “thing we are talking about”.

                                                                            It’s spelt “$_” explicitly in perl, but also many operations use $_ implicitly if no arg is given (e.g. regex/sub, print, etc). Also the looping constructs (for/map/grep) bind $_ to the ‘current element’. So you can:

                                                                            print for @lines;
                                                                            

                                                                            and have:

                                                                            • the for loop loop over each element in the array/list
                                                                            • bind ‘$_’ as a (mutable!) alias to each list element
                                                                            • invoke print (which defaults to $_ in the absence of other args)

                                                                            Or:

                                                                            while (<STDIN>) {   # Loop over each line on input
                                                                              chomp;            # remove trailing \n
                                                                              s/foo/bar/;       # regex-and-replace
                                                                              say;              # Print to stdout with \n
                                                                            }
                                                                            

                                                                            The schwartzian transform (https://en.wikipedia.org/wiki/Schwartzian_transform) uses this, and also the convention/feature that in a block/lambda passed to ‘sort’, the two items under comparison are ‘$a’ and ‘$b’. Which are hence sufficiently magic that you should never use them for any other purpose in perl :-)

                                                                            1. 4

                                                                              There’s also a great section on anaphoric macros in On Lisp.

                                                                              1. 2

                                                                                anaphoric macros create a name that must be referenced to actually refer to it though. I guess in Perl, it’d be roughly equivalent to super lisp pseudocode:

                                                                                (defparameter *it* (make-parameter #f))
                                                                                
                                                                                ;; str defaults to *it* if called without arg
                                                                                (define (chomp (str *it*))
                                                                                   ....)
                                                                                
                                                                                (define (say (str *it*))
                                                                                     ...)
                                                                                
                                                                                (let loop ((*it* (get-line)))
                                                                                    (if *it*
                                                                                       (begin
                                                                                          (set *it* (chomp))
                                                                                          (set *it* (sub ...))
                                                                                          (say)
                                                                                          ...)))
                                                                                
                                                                              2. 2

                                                                                The jQuery library for JavaScript also supports a similar feature. In a function passed to $.each, this will be the current array element, and in an event handler, this will be the element that the event was fired on (which I think matches the browser’s DOM event handlers). The handlers can also take those same variables as optional function parameters if you want to name them.

                                                                              1. 5

                                                                                As a semi tangent, I seriously think github should have an integration for paid support or ticket bounties that are only claimable by org members. Perhaps there would be some challenges, but I think there is a need to allow:

                                                                                • Developers to get paid for all this free work they dish out.
                                                                                • A way to give a carrot to projects to fix rare bugs. Sometimes a bug affects only one person, and it will never be fixed unless they do it themselves (which is not an efficient because of all the extra setup/learning).
                                                                                1. 3

                                                                                  Bountysource is a third-party website that already does this. It takes a cut of payments as its business model.

                                                                                  1. 1

                                                                                    Thanks for the link. Looks interesting, I may post some bounties.

                                                                                1. 6

                                                                                  Wow I couldn’t agree more with his assertions around e-mail. I’m seeing a generational divide happen, ADD youngsters are telling me “Email is awful!” on a fairly regular basis now. WHY? I’ve yet to get an actual, viable, useful answer.

                                                                                  Mostly what I get is “It’s so 5 minutes ago”.

                                                                                  1. 6

                                                                                    This is a good point. Email and Slack are just communication tools. The workplace is full of low-quality communication because most workplaces are low in quality: inept management, no real desire to motivate people, stupid projects, and crappy ideas. The problem never was email itself. Nor is it Slack per se.

                                                                                    It’s like the common comment about dating sites: the sites are a solved problem, but people are broken.

                                                                                    Now, Jira is evil and should die in a taint fire. That’s just an objective fact.

                                                                                    1. 3

                                                                                      I’m on board with your core sentiment here, and broadly characterizing a generation as suffering from a disability isn’t much better of a rationale than those “youngsters” are giving you for not liking email.

                                                                                      (Having spent a decade as a teacher and middle school administrator before venturing into dev work, I’m well aware of the very real challenges of keeping the attention of people younger than me…)

                                                                                      Not trying to poke you in the eye (metaphorically or otherwise). Just saying… 🍻

                                                                                      1. 2

                                                                                        What’s doubly amusing about your choice of wording is that I am in fact blind in one eye and low vision in the other, so go ahead and poke away as long as it’s the left side :)

                                                                                        And, to address the meat of what you’re saying, you’re right. I had no business being cavalier about the term ADD. Thanks for pointing that out.

                                                                                        I need to find a new turn of phrase to describe the ever shortening attention span of humans :)

                                                                                        1. 2

                                                                                          Haha… Well clearly I stepped in it there with my choice of metaphor. 🤦🏻‍♂️

                                                                                          Agreed. We definitely need a better shorthand for shrinking attention spans…

                                                                                      2. 2

                                                                                        My main issue with email is that unless everyone uses the same email client and email client settings things become a mess. Some people add replies at the bottom of the chain, others at the top. Some people use HTML email, some don’t. Some people have signatures 8 miles long.

                                                                                        It’s just so darn messy.

                                                                                        What I like about instant messaging is that it is quicker, (to me) more organized, and most of his arguments against it are mostly due to not knowing how to set status. If you don’t want to be distracted set yourself to “do not disturb”. I haven’t worked with a team where this was a problem (assuming you do eventually answer questions).

                                                                                        1. 2

                                                                                          It doesn’t have to be messy. HTML versus not should be transparent to you (I use mutt for work) - the top posting problem is a larger issue, and I blame Google and Microsoft. They’ve attempted to make mail act like IM.

                                                                                          There is only one true way to respond to email messages, and it was defined in RFC-1855

                                                                                          1. 2

                                                                                            I’m not saying it has to be messy, I’m just saying it is in the real world. And while I could start sending mail that complies with RFC-1855, I still have to deal with everyone who sends me mail and doesn’t comply to any standard.

                                                                                            HTML versus not should be transparent to you

                                                                                            How? I use outlook at work because I need it for meeting requests, shared address books, etc.

                                                                                            1. 1

                                                                                              So, wait, you’re complaining about HTML email because you choose to use a GUI client?

                                                                                              Fascinating, captain :)

                                                                                              I too use Outlook/Exchange for meetings, but that’s all I use it for. My mail pipeline is fetcmail/procmail and mutt and it works famously with Exchange. Google it and see :)

                                                                                              Your point about not being able to control unruly senders is valid, but I’m not sure that merits throwing the baby out with the bath water.

                                                                                        2. 2

                                                                                          Email has good properties, but I see many problems with email that other tools avoid:

                                                                                          • With email, it’s harder to jump into an existing conversation. You can’t just visit a link and read the existing conversation. You have to wait for someone to post something new to the mailing list, or ask someone to forward you the discussion so far. And then you have to read the previous messages with a zig-zag path – read top to bottom within each message, but read the list of messages bottom to top.

                                                                                          • The culture of email suggests that you surround your message with salutations and sign-offs. In most environments, every time you write a new email, you have to write “Hi John,” or “Greetings all,” at the beginning, and then “Thanks, Rory” or “Sincerely, Rory” at the end. It takes time away from writing the content of the message, time that is usually not worth the signaling it provides.

                                                                                          • In some companies, emails have signatures at the bottom that repeat information you already know such as the contact information of the company. It requires more scrolling and mental filtering to see the actual content.

                                                                                          • Emails have a sending delay and require writing subject lines. This makes them less appropriate for messages that should be sent in real time, because they are relevant to a real-time conversation. For example, if you are telling a coworker about a relevant blog post and why they should read it, it’s better if you can just paste the URL into a message with them and they get it instantly.

                                                                                          • Emails can’t be edited. If you make a stupid typo or forget an attachment, you have no choice but to either accept the error or to send another email with the correction. If you send a correction email, all readers have to manually apply in their heads your described patch to the original email – no one can apply the fix so the others don’t have to. And if someone else sends an email with a subject line that is revealed to be irrelevant, you can’t change the subject line to focus future discussion – the best you can do is send a correction email.

                                                                                        1. 2

                                                                                          Though this article was published recently, the author is out of touch with the current versions of software.

                                                                                          Chat, at least on slack, isn’t grouped or threaded.

                                                                                          Slack supports threads now. Any top-level message can be replied to in that messages thread. People aren’t notified of new messages in a thread unless they are following it.

                                                                                          My company, which has about 35 regular users of Slack, uses that feature often. I find it easy to keep track of the current conversations.

                                                                                          I agree that rooms don’t provide much separation of topics, but at least there is the #random room by default, so people are discouraged from posting funny links to the work-related rooms.

                                                                                          SO has become relatively shitty now, and replaced docs for a lot of OSS libs.

                                                                                          I don’t see the relevance of the official Stack Overflow website, which still supports the same features it used to, when the context is about a hypothetical company-specific Stack Overflow. But this statement is out of date. Stack Overflow deleted their experimental Documentation section of the site, and migrated worthy Examples from there into normal questions and answers.

                                                                                          1. 4

                                                                                            I’d argue that slack threads are even MORE annoying and distracting. They’re an unneeded and poorly implemented abstraction when the actual solution to room overcrowding and noise is to simply get your own room.

                                                                                          1. 6

                                                                                            Happy to see people writing screensavers. In many ways, they’ve outlived their namesake purpose, but there is still something so charming about them! I also recently wrote a mac os screen saver (for my first time) and unfortunately found that the fragment shader I wrote really heats up my machine.

                                                                                            1. 3

                                                                                              They’re possibly still useful on display types that burn in in the modern day like OLED - and for people still on plasma and god forbid, CRTs, they still have a use.

                                                                                              1. 6

                                                                                                Is a screen saver better than just turning the monitor off (i.e. turning turning monitor output off which makes the screen go into standby mode)? Are/were people using screen savers just to avoid the few seconds the monitor needs to turn back on or is there another reason?

                                                                                                1. 2

                                                                                                  Certain screensavers can help with burn in on OLED displays, turning the display off does not help. I don’t know the actual science behind it, I just know it worked on an OLED display I had that had burn in. ;)

                                                                                                  1. 2

                                                                                                    Note that a screensaver is unlikely to have that property unless it was designed to. Those screen-healing screensavers usually use colored geometric patterns.

                                                                                                    I remember one of the patterns in such a screensaver was a series of black and white vertical stripes that slowly scrolled sideways. I once had the idea of making a free clone of that screensaver, so I replicated that pattern in Quartz Composer, Apple’s visual programming tool for generating graphics. I never remade any of the other patterns though.

                                                                                            1. 3

                                                                                              I think, personally, I would solve this by calling git log twice, and joining the inputs. Nowhere near as clean, but easier to escape (no special characters).

                                                                                              I would love to see how to solve this with OSH, as an extension of this post. Seeing a real problem that I can empathise with concretely, and then having “OSH will fix this ;)” feels like a tease!

                                                                                              1. 3

                                                                                                If I’m understanding you correctly, I think the joining solution is a little fragile with respect to:

                                                                                                1. Inputs with multiple lines. What if I wanted the full git commit description and not just the first line?
                                                                                                2. If there are 4 fields, which there are in the real problem, then you need 4 invocations of git log. Or at least you need an invocation per field that contains spaces.

                                                                                                Also I’ve used the “join” or “paste” commands and I honestly find them very difficult.

                                                                                                As for Oil, that’s unfortunately a little far off (hence the call for help in the post!). OSH is the bash clone, so you will solve it the same way as bash.

                                                                                                Oil is the new language, and one improvement is would be a way to store structured data in memory! In particular, tables!

                                                                                                I’ve summarized some notes here:

                                                                                                https://github.com/oilshell/oil/wiki/Oil-and-the-R-Language

                                                                                                The slogan is that “the output of ls and ps are tables”. And the output of git log is a table. So Oil will be able to parse arbitrary data and store the “correct” values in memory. Then it can serialize them to any output format. So bash has the paradigm:

                                                                                                $ input | process text in a hacky and probably incorrect way | output
                                                                                                

                                                                                                Oil will still allow that. You can play fast and loose if you want. But it will also allow:

                                                                                                $ input | properly deserialized | structured data | properly serialize | output
                                                                                                
                                                                                                1. 2

                                                                                                  I also thought of @dominicm’s solution, but you’re right, that solution has problems.

                                                                                                  The simplest solution I can think of, while being obviously safe against adversarial input, would be a script in a scripting language. The key improvement over “the pedantic solution” in the blog post is that you don’t actually need a Git API. You just need a language that can easily call system commands. What’s more, you can fetch the information for just one commit at a time with something like git log HEAD~3 -n 1, which avoids having to stitch together git log’s output for multiple commits.

                                                                                                  Using those ideas, here is how I would do it in Ruby, calling out to Git with system:

                                                                                                  #!/usr/bin/env ruby
                                                                                                  require 'cgi'
                                                                                                  
                                                                                                  def escaped_git_log_part(commits_back_from_head, format)
                                                                                                    log_output = system "git log HEAD~#{commits_back_from_head} " +
                                                                                                      "-n 1 --pretty='format:#{format}'"
                                                                                                    CGI.escapeHTML(log_output)
                                                                                                  end
                                                                                                  
                                                                                                  puts '<table>'
                                                                                                  0.downto(4).each do |commits_back|
                                                                                                    part_H = escaped_git_log_part(commits_back, '%H')
                                                                                                    part_h = escaped_git_log_part(commits_back, '%h')
                                                                                                    part_s = escaped_git_log_part(commits_back, '%s')
                                                                                                    puts "<tr>
                                                                                                      <td> <a href='https://example.com/commit/#{part_H}'>#{part_h}</a> </td>
                                                                                                      <td>#{part_s}</td>
                                                                                                    </tr>"
                                                                                                  end
                                                                                                  puts '</table>'
                                                                                                  

                                                                                                  It’s kind of repetitive, but good enough for a safe but quick-to-write shell script, I think.

                                                                                              1. 5

                                                                                                The full-page link, for mobile: https://codepen.io/tomhodgins/full/oeKOOO/. This should be the actual link – the markup powering this article is irrelevant.

                                                                                                1. 3
                                                                                                1. 6
                                                                                                  1. That book A Fire Upon the Deep sounds awesome. Reminder: Wikipedia pages about books are about 90% spoilers.

                                                                                                  2. uh yeah you can get rooted by a PNG these days… When I was a boy, it was safe to download .exe files, so long as you didn’t RUN them before at least inspecting the visible strings inside… Of course, all that quickly changed as automatic parsing of incoming data became the norm.

                                                                                                  1. 7

                                                                                                    A Fire Upon the Deep and prequel A Deepness In The Sky are great. Pass on the other sequels, they’re not very good.

                                                                                                    1. 7

                                                                                                      Deepness is probably my sentimental favorite scifi novel of all time. This passage from it should be fun to this audience: http://akkartik.name/post/deepness

                                                                                                      1. 7

                                                                                                        And it inspired Lobsters’s own @drmaciver to write Programmers at Large (worldbuilding notes), which I’ve really been enjoying.

                                                                                                        1. 3

                                                                                                          At this point my distraction alarm pinged. I’d passed some threshold of deviance from my intended task and it was making sure I was aware of that.

                                                                                                          Man, I could do with one of those. So long as I got to set it of course.

                                                                                                          1. 1

                                                                                                            Mine would probably be more useful the less control I had over it.

                                                                                                    2. 3

                                                                                                      I’d say those 2 novels are legitimate part of the SF canon at this point. Vinge got major props for being hip to Usenet back in the day (and who can say? Store-and-forward is probably going to be the best communication for interplanetary distances).

                                                                                                      The thing that rubbed me the wrong way with A Fire… was the telepathic aspects of the Tines. But otoh this is a universe where for some reason technology works differently depending on how far you are from the galactic center so who really cares amirite?

                                                                                                      1. 3

                                                                                                        Were they actually telepathic? My recollection is that they were meant to communicate by extremely broad-band audio, but ICBW.

                                                                                                        1. 5

                                                                                                          They weren’t telepathic. They communicated via audio, mostly above the range of human hearing. There’s a technological development midway through the story that makes it unambiguously audio.

                                                                                                        2. 3

                                                                                                          for some reason technology works differently depending on how far you are from the galactic center

                                                                                                          The reason this happens, though not how it works, is explained later in the book.

                                                                                                        3. 3

                                                                                                          It’s fantastic. Recommended, along with it’s prequel A Deepness in the Sky.

                                                                                                          I wouldn’t bother with the sequel that was published recently though: I really didn’t think it matched up to the previous two books at all, which was a great shame.

                                                                                                          1. 2

                                                                                                            NB. You should read Fire before Deepness - the latter works standalone but gains additional depth when the reader has more information about the context gained from reading Fire.

                                                                                                        1. 8

                                                                                                          Is there a non-HTTPS version of this site for those of us too weak-willed to join the Glorious Anti-Certificate-Authority Rebellion?

                                                                                                            1. 3

                                                                                                              For those who missed it, here is Tedu’s explanation of why he is using a self-signed HTTPS certificate: https://www.tedunangst.com/flak/post/moving-to-https. (You might have to add a temporary exception to view that page.)

                                                                                                              1. 1

                                                                                                                Just click to ignore the warning? :)

                                                                                                                1. 2

                                                                                                                  Not possible in all browsers. E.g. Firefox Focus can’t read tedu’s blog.

                                                                                                                  1. 1

                                                                                                                    Terrible habit to get into. Better to read the google cache.

                                                                                                                    1. 2

                                                                                                                      Wait, does that mean that Google’s cache does not validate the certificate?

                                                                                                                1. 10

                                                                                                                  I really want to like Firefox, but it feels increasingly clear that Mozilla doesn’t seem to consider anyone who wants to adapt any of the choices Mozilla made for him/her to be part of their target audience anymore.

                                                                                                                  I don’t really know what their target audience actually is to which they are trying to pull off a Gnome-like pivot, but given the fall in market-share it’s baffling that retaining existing users doesn’t seem to play a more important role.

                                                                                                                  Having tried the nightlies of Firefox 57, Mozilla has basically reset my browser usage to a vanilla install. All my extensions will stop working (marked as “legacy” – and I only have three: mouse gestures, an ad-blocker and tree-style tabs) and my theme causes tabs to crash on load (which I only use because the default theme keeps gradually eating more and more screen space).

                                                                                                                  While I’m positive that a solution can be found for mouse gestures and ad-blocking, it seems that tree-style tabs (or any kind of UI customization) is thoroughly dead. Even if they addressed the dozen of bugs that were filed to get tabs working again, it’s quite clear that the required level of visual integration to avoid making it look like a second-class citizen will not be supported anymore with WebExtensions.

                                                                                                                  The whole switch to WebExtensions feels like going from a positive, user-empowering stance of helping and encouraging users and extension developers to adapt their browsing experience to their liking, to a model where the possibilities of customization and extension is severely limited to protect the users from potential harm that seems to lurk behind every extension.

                                                                                                                  1. 21

                                                                                                                    It’s not just about protecting users from harm, it’s also about:

                                                                                                                    1. Performance. By restricting extensions to APIs we can ensure they will run silky smooth.
                                                                                                                    2. Compatibility. Old style extensions broke anytime the random internal thing they depended on changed, so developers would constantly have to be updating their addons. Web extensions are one last major breaking change for addon developers, and then they never have to worry about compatibility again.
                                                                                                                    3. Portability. Web extensions can be shared across browsers, so developers don’t need to write multiple versions of their addons anymore just to support Firefox+Chrome. Given a choice between supporting only one of Firefox or Chrome, 95% of developers were already choosing Chrome (I made that number up, but probably). This equalizes the gap.
                                                                                                                    4. Security. Like you mentioned, it will be very hard to write malware when that malware is restricted to known APIs.

                                                                                                                    There are a lot of really good reasons to make this switch. And while it will be frustrating to a lot of loyal users and developers, I think it will be the right decision in the long term. I’m feeling the pain too, a bunch of my extensions no longer work either. But I’m confident I’ll either find replacements in due time, or adapt my workflow to live without them.

                                                                                                                    Btw, u-block origin already has a web extension posted to their AMO dev channel.

                                                                                                                    1. 19

                                                                                                                      Since I don’t see many people sharing this sentiment, I just want to chime in as a long-time Firefox user and say that I’ve been really pleased with the work in Firefox over the past several years. Performance has improved massively, and it seems like every time I open the developer tools, I find some cool new thing I didn’t know about before. I’ve also gotten a lot of mileage out of several of the experiments in TestPilot. All in all, I’m quite pleased.

                                                                                                                      Keep up the great work!

                                                                                                                      1. 3

                                                                                                                        Thanks! Much appreciated :)

                                                                                                                        1. 2

                                                                                                                          As another random data point, I don’t remember ever even having a real problem with Firefox.

                                                                                                                          But now the new version worries me because there might not be a good mouse gesture plugin available.. soooo if you wouldn’t terribly mind implementing mouse gestures the way Opera v12 had them, that would be nice :)

                                                                                                                          1. 2

                                                                                                                            As another random data point, I don’t remember ever even having a real problem with Firefox.

                                                                                                                            But now the new version worries me

                                                                                                                            Likewise, Firefox has always been great for me, but only because I use an extension which allows me to rebind the keys. This extension doesn’t exist for Chrome because Chrome hard-codes ctrl-n to “open a new window” for security theater reasons. (I can’t remember the last time I opened a new browser window on purpose, but it wasn’t in the past decade.) If Firefox starts copying Chrome in that regard I’ll be forced to choose between staying on the old version forever or spending half my day closing those seventeen windows that just opened because I was trying to scroll down.

                                                                                                                            1. 1

                                                                                                                              I found this: https://addons.mozilla.org/en-US/firefox/addon/foxy-gestures/

                                                                                                                              Not sure if it solves your use case or not though.

                                                                                                                              1. 2

                                                                                                                                Just tried it, doesn’t really work. (In the sense of “fails to save any changes and crashes reproducibly”.)

                                                                                                                        2. 2

                                                                                                                          Thanks for the note on uBlock. The dev channel thing was quite hidden, but I found it.

                                                                                                                          Well, all I can say is that I think it is sad to see that Firefox is switching from the software repository approach popular on Linux distributions to the walled garden approach of app stores (like on Windows/Mac).

                                                                                                                          I can understand why it is more convenient for developers this way, but I don’t try to be a developer of every technology I use. (Ok, I’m still sitting on this reproducible Firefox crasher and I installed the debug symbols to figure out where it comes from … but sometimes I just want to be a user.)

                                                                                                                          Currently my only hope is that the official roll-out of WebExtension gets delayed just enough for another Firefox ESR release based on the current code. This would give me another few years out of Firefox, but in the long term I really don’t see a future for me on Firefox. That’s kind of sad because I have been an user since it was called Netscape Navigator.

                                                                                                                          It’s kind of clear that vertical tabs will never be a first-class citizen with WebExtensions (even under the assumption that all of the dozen current bug reports get sorted out).

                                                                                                                          Firefox’ stance reminds me of the saying “if the government is unhappy with its citizens, it should swap out its citizens” and the CADT that happened with Gnome. (XFCE user ever since.)

                                                                                                                          1. 1

                                                                                                                            Well, all I can say is that I think it is sad to see that Firefox is switching from the software repository approach popular on Linux distributions to the walled garden approach of app stores (like on Windows/Mac).

                                                                                                                            Would you mind clarifying? The distribution model for WebExtensions is the same as for non-WebExtensions. Or are you referring to the use of sandboxing?

                                                                                                                            1. 1

                                                                                                                              Having to beg Firefox developers to allow me to make the changes I want to my browser feels counter to everything Mozilla stood for in the past.

                                                                                                                              1. 1

                                                                                                                                I see. On the other end, every API exposed to extensions becomes something that Mozilla has to commit to maintaining into the future, imposing architectural constraints. This was most painfully evident in the long process of the e10s (multiprocess) roll-out.

                                                                                                                        3. 5

                                                                                                                          There is a tree style tabs in “Firefox Testpilot”, that’s not going to break because of the API changes

                                                                                                                          1. 2

                                                                                                                            Are you talking about Tab Center? That’s sadly not a tree style tabs extension, merely a vertical tabs extension. But yes, the point remains that you can write functional alternative tab bars with the new API.

                                                                                                                            1. 3

                                                                                                                              From what I have seen, the UI from tab center will not be supported with official WebExtensions.

                                                                                                                              For instance, the obnoxious sidebar header will be mandatory: https://github.com/Croydon/vertical-tabs-reloaded/issues/13#issuecomment-294589274 That’s a killer for me, right there.

                                                                                                                              This is what I currently have: http://imgur.com/a/OemGy

                                                                                                                              This is what I’d like to have: http://imgur.com/a/cWEsE

                                                                                                                              This is probably the best I will get with WebExtensions: https://addons.cdn.mozilla.net/user-media/previews/full/185/185415.png

                                                                                                                              Thanks, but no, thanks.

                                                                                                                            2. 1

                                                                                                                              The test pilot has ended, and I can’t find a way to install the add-on now. Which is a shame, because they had one feature that would have actually improved my experience: Tabs taking the whole area on the left side, instead of being under the location bar. https://testpilot.firefox.com/static/images/experiments/tab-center/details/tab-center-1.ceef2f45.jpg

                                                                                                                              I’d love to have a tab extension doing that.

                                                                                                                            3. 4

                                                                                                                              holy hell, another tree-style-tabs-er - people don’t understand us. - I moved to vivaldi cos chrome had no capability to do vertical tabs (and always felt strangely icky on chrome). Vivaldi has vertical tabs but not tree style :(, is all chrome under the hood but with plenty of customizability and most of the “i wish i hads” from firefox. It started out buggy when i was using it but has generally gotten better. not OSS is the only thing that mildly annoys me.

                                                                                                                              I personally jumped away from firefox when i eventually got sick of it regularly slowing down after a few hours of use (to the point of barely scrolling while rendering another tab i had just middle clicked on)

                                                                                                                              that said, none of the news coming out of the ff camp is making me think “wow i should totally give it another shot”. Your comment only reinforces that - I hate not having control over other people’s stupid decisions on my system.

                                                                                                                              1. 6

                                                                                                                                There are dozens of us using tree-style-tabs.

                                                                                                                              2. 3

                                                                                                                                https://addons.mozilla.org/en-US/firefox/addon/tree-tabs/ is the Tree Style Tabs replacement. It’s not as good, but it’s improving.

                                                                                                                                I switched to https://addons.mozilla.org/en-US/firefox/addon/tab-center-redux/ and it’s pretty great.

                                                                                                                                1. 2

                                                                                                                                  I tried them all. They are quite restricted in what they can do, and the mandatory tab header makes it pretty clear that stuff like this will always be a second-class citizen under WebExtensions.

                                                                                                                                  Think about it: Why doesn’t the “official” tab bar get one of these headers, too? Because it is completely jarring and obnoxious. Firefox devs know it sucks, so they don’t follow these rules, but everyone else has.

                                                                                                                                  1. 4

                                                                                                                                    and the mandatory tab header makes it

                                                                                                                                    It’s not “mandatory”. There are bugs open for a webextension API for removing it, and Firefox devs seem to be open to adding one. This API doesn’t exist now, but you’re painting it as if it will never exist.

                                                                                                                                    This stuff is still new, and will improve over time as new APIs get added. Like I said, “it’s not as good, but it’s improving”.

                                                                                                                                    Please assume good faith.

                                                                                                                                    1. 3

                                                                                                                                      It seems like from Mozilla’s perspective the sidebar header is not a bug, but desired behavior: https://github.com/Croydon/vertical-tabs-reloaded/issues/13#issuecomment-294589274

                                                                                                                                      I’d love to see the tickets though, because I couldn’t find anything in the official bug tracker (but maybe I used the wrong search terms).

                                                                                                                                      And that’s not the only issue: it seems like the place is fixed to be beneath the location bar, either at the left or right side, falling way short of Tab Center.

                                                                                                                              1. 10

                                                                                                                                This is a nice summary for someone who might have written JS a decade ago. It hits the main points in the field of ‘weird things you have to do to write JavaScript these days’. But there’s one major omission - package managers. I still have a hard time explaining to myself why we have bower, npm, and yarn all solving the same problem with varying degrees of success.

                                                                                                                                1. 11

                                                                                                                                  Bower is officially deprecated. Yarn was created to solve problems that existed in npm < 5 [1]. With the release of npm 5+, you can ignore package managers other than npm at this point.

                                                                                                                                  [1] Exactly reproducible dependency trees & performance being the main ones.

                                                                                                                                  1. 1

                                                                                                                                    [1] Exactly reproducible dependency trees

                                                                                                                                    Did they remove the ability to re-publish a given version of a package? Hopefully - if not, this feature is just a cake-lie.

                                                                                                                                      1. 1

                                                                                                                                        Great! Do you have more info on the “reproducible” stuff? I am not finding mention of it.

                                                                                                                                        1. 1

                                                                                                                                          From the npm 5 release announcement:

                                                                                                                                          npm will --save by default now. Additionally, package-lock.json will be automatically created unless an npm-shrinkwrap.json exists. (#15666)

                                                                                                                                          This package-lock.json is what provides reproducible dependency trees. It’s the equivalent of Yarn’s yarn.lock.

                                                                                                                                          1. 3

                                                                                                                                            Well. I guess I have a different meaning of reproducible.. Previous versions of NPM would have variance in things like Makefiles that gyp puked out.. this meant that something that was “npm shrinkwrap’d” and then tar’d up, would be different every time. This is the reproducability I was hoping for.. guessing the lock file doesn’t give me that.. But I will play around and see.

                                                                                                                                            1. 2

                                                                                                                                              Not sure if it’s possible to enforce that. You would need to ensure that any postinstall hooks are deterministic, so no calls to Math.random() or new Date().

                                                                                                                                              You also would have to forbid making network requests, accessing the filesystem and really anything that leaves pure javascript land.

                                                                                                                                              1. 1

                                                                                                                                                Yeah. No idea about that aspect. :-/

                                                                                                                                      2. 1

                                                                                                                                        It still seems like yarn is faster, according to a few blog posts. The margin is much closer, however.

                                                                                                                                        1. 1

                                                                                                                                          If nothing else, it’s much more consistent. At my company I’ve been migrating our apps from using bower and npm packages to exclusively npm packages, and setting our build servers to use yarn instead of npm. It solved our issue with npm intermittently crashing our builds.

                                                                                                                                        2. 1

                                                                                                                                          I use yarn because it’s way faster than npm, doesn’t even compare. I develop under WSL though so maybe the difference is more noticeable there.

                                                                                                                                          1. 2

                                                                                                                                            I use yarn because it’s way faster than npm

                                                                                                                                            This has not been my personal experience. npm 5 has been consistently as fast or faster than yarn in my testing on Windows 10. YMMV.

                                                                                                                                            1. 1

                                                                                                                                              I’ve just tried deleting the node_modules directory in my current project with 780 packages and ran npm install- it took 53s. Then I’ve done this again and ran yarn install and it finished in 27s. It’s possible it’s something specific to my project or to the fact that I’m running under WSL (maybe npm hits some under-optimised part of it), but anyway in my particular case it’s indeed faster with yarn.

                                                                                                                                      1. 4

                                                                                                                                        Marking possible improvements (TODOs) in the code

                                                                                                                                        This one is a personal annoyance of mine. When in the history of software development has anyone browsed through a codebase and implemented a TODO that some other developer left?

                                                                                                                                        The two main cases I see TODO comments seem to be:

                                                                                                                                        1. The developer is acknowledging that they know the code could blow up under some circumstances, but are passing the buck of creating a more robust implementation to the poor sap who gets the bug report about it when it inevitably goes wrong.

                                                                                                                                        2. The developer intends to actually do the work in the coming days and is using the codebase as a work tracking system.

                                                                                                                                        1. 2

                                                                                                                                          When in the history of software development has anyone browsed through a codebase and implemented a TODO that some other developer left?

                                                                                                                                          Er, a month ago, when I did this. I was adding a new string to the translations JSON file for some component. In the section of strings for that component, I saw a TODO to reorganize them by grouping the strings better. While I was there, I did that reorganization and put my new string in the correct place for that new organization.

                                                                                                                                          I can’t say whether it was a good idea for that developer to leave that TODO there. Maybe they were being lazy, or maybe writing that comment was all they had time to do. But the comment did point me in the right direction by pointing out what area of code I might have trouble understanding, due to its bad organization. And that TODO did end up getting done, months later, thanks to that comment.

                                                                                                                                          1. 2

                                                                                                                                            Also, 3. The developer is passively-aggressively taking a potshot at someone else’s code that annoys them, but not enough to fix it.