1. 1

    I get the author’s point about the Z component being broken. If the library behaves incorrectly but the dependent program uses the incorrect behavior to get functionality, once the incorrect behavior is fixed in the library, the program will stop working. But the library will now be working correctly!

    I think semver is not able to solve this issue, but it can mitigate against it: thorough testing and quality analysis before a 1.0.0 release is made is necessary, and careful review of anything that comes afterward.

    1. 1

      If strictly adhering to SemVer, wouldn’t the correct approach be to change the default behaviour, while still providing a fallback for the old incorrect behaviour? You could then provide a deprecation notice and actually remove the old incorrect behaviour with the next major version.

      I think the problem is that libraries rarely do this (especially for “trivial” fixes) because it’s a PITA. But that’s not really SemVer’s fault.

      1. 1

        But that doesn’t solve the problem: dependents upgrade to Z+1 and their stuff breaks, which is expressly not what should happen when doing that under semver. Semver in this case tells you to bump the major version. I don’t mind, it works and it does satisfy the semver specification. I don’t have a problem with stupidly high major versions, since it’s all meaningless anyway, only the differentials are meaningful. Fundamentally going from 98 to 101 is the same as going from major version 3 to 6.

        1. 1

          Yeah, I think we’re on the same page. Either you figure out a way to fix the bug in a manner that’s backwards compatible, or you bump the major version. In practice people rarely do this for Z level fixes, but that’s more of a problem with how people interpret SemVer than with the philosophy itself.

    1. -1

      I disagree with Stallman here.

      If you surrender your data, then you do not have any right over them. If you upload your photos to facebook, then facebook has them.

      For public utility, it is fine to restrict the collection and usage of personal data. But for private corporations, the private individuals should be able to decide for themselves if giving a corporation access to your entire search history for wifi access at the coffee shop is worth it.

      1. 25

        More and more we are getting forced to use services that spy on us. Cash is being phased out for credit cards and mobile payments. I can’t even pay for parking at my uni without installing their mobile app. We need laws to protect us from these companies because they are impossible to 100% avoid.

        1. [Comment removed by author]

          1. 40

            Governments aren’t there to protect you.

            That is literally what governments are for.

            1. 3

              Not anymore… at least here where I live, Government is composed of people and people will have their own agendas which might not include protecting other people or even obeying the laws they’ve passed. I see government as an instrument of power, some will use this power to help society, others to accumulate wealth at the expense of society.

              1. 31

                What your particular government does and what the purpose of the government is are two separate topics.

                1. 2

                  That is true but still, you can probably agree with me that when dealing with the real world, the creators intention has very little bearing in whatever usage people do of something. For example: the web was a way to share scientific hypertext and now we’re doing crazy stuff with it, or, tide pods were supposed to be used for laundry… governments, much like many other human creations happened over time, in different places, with different purposes. Monarchy is government but one can argue that historically it was not meant to protect people, dictatorships also work that way. We can say that the “platonic ideal of a pure and honest government” is to protect people but thats just us reasoning after the fact. There are no “letter of intention” about creation of government which all governments across time and space need to follow. What we perceived as “purpose” has very little meaning to what actually happens.

                  Personally, I find most interesting when things are not used accordingly to the creators intention, this creative appropriation of stuff by inventive users is at the same time what spurs a lot of cool stuff and what dooms us all, we here in Brazil have a moniker for it “Jeitinho Brasileiro” which could be translated as an affectionate version of “the brazilian way”. Everyone here is basically born in a fractal of stuff whose real world usage does not reflect its ideal purpose to the point that it is IMHO what makes us creative and cunning.

                  1. 3

                    Monarchy is government but one can argue that historically it was not meant to protect people…

                    Well, monarchy was actually a simple protection racket. It enabled a significant growth of the agricultural society through stabilization of violent power — no raids, just taxes.

                    We can say that the “platonic ideal of a pure and honest government” is to protect people…

                    That’s unreasonable. Establishment of a democratic government is just a consensus seeking strategy of it’s electorate. A move from a simple racket to a rule of law that is a compromise of various interests.

                    In feudalism, people choose other people to follow. In democracy, people chose policies to enact. Both systems are very rough and fail in various ways, but democracy has evolved because it just makes more people a lot less unhappy than an erratic dictator ever can.

                    … people will have their own agendas which might not include protecting other people or even obeying the laws they’ve passed…

                    You seem to be alienated from the political process and perceive your government as something that is not actually yours to establish and control. That’s a very dangerous position for you to take, since government has a monopoly on violence. Of course others won’t take you automatically into consideration. That’s what you do every time you do virtually anything — you never take the full situation into account.

                    But you just can’t quite ditch the government… otherwise your neighbor might try building a nuclear reactor using whatever he got from the Russians, which is something you (and perhaps a few other neighbors) might be against. Then on the other hand, he might convince a few others that the energy will be worth it… so you meet up, decide on some rules that will need to be followed so as to prevent an armed conflict and in the end, some who originally opposed the project might even join it to ensure it’s safety and everyone will benefit from the produced energy.

                    1. 5

                      Friend, lets agree to disagree. What you say do make sense, I am not saying you’re talking bullshit or anything like that, on the contrary, I find your arguments plausible and completely in tune with what I’ve learned at the university buuuuut my own country has been a monarchy, an “empire”, a monarchy again, a republic, a dictatorship, a republic again, an who knows what will happen before 2018 ends.

                      Our experience, is vastly different than what is explained above. I haven’t said we’re out of the political process, heck, I’ve organized demonstrations, helped parties I was aligned with, entered all the debates I could long ago, I was a manager for a social program, and am married to an investigative journalist. I am no stranger to political processes, but it is a very simplistic approach to say “(…) your government as something that is (…) yours to establish and control”, this sidesteps all the historical process of governments here and how the monopoly of violence is used by the powerful (which might or might not be actual government) with impunity on anyone who tries to pull government into a different path. Couple weeks ago, one of our councilwoman was executed by gunshots to her car (where a friend of mine was as well as she worked for her), killing our rising star politician, and the driver, and forever traumatizing my friend. I have tons of stories about people dying while trying to change things. Talking about the root of feudalism is meaningless to whatever is happening today. Today people die for defending human rights here (and elsewhere).

                      Academic and philosophical conversations about the nature and contracts of government are awesome but please, don’t think this shit is doable, lots of people here died trying to improve the lifes of others. I don’t know if you’ve ever been to a place like here, those conversations don’t really apply (we still have them though).

                    2. 1

                      I do think it’s important for people to have the power to keep the government accountable. Without checks and balances the government looks after its own interests as opposed to those of its constituents.

                  2. 7

                    I clicked at your profile with absolute certain that you’d be from Brazil. Now I’m kinda depressed I was right.

                    1. 4

                      Can spot a Brazilian from miles away right? Don’t know if I laugh or cry that we’re so easy to recognize through our shared problems.

                    2. 3

                      I can feel your pain (and I admire your courage for talking in a public space about the issues you see in your government).

                      But @Yogthos is right: we should not be afraid of our governments, at least not of democratic ones.

                      In democracy the government literally exists to serve people. If it doesn’t, it’s not a democracy anymore.

                      1. 3

                        @soapdog @yogthos @dz This is an interesting discussion for me (though not appropriate for lobste.rs). Any interest in discussing this together, say over email or something else. I’ve always wanted to discuss this topic of government vs individual corporations but it’s a complex subject and hard to keep devolving into a bar-fight.

                        1. 0

                          Change the name then, not the definition of what it is.

                        2. 2

                          Shouldn’t governments primariy govern? For whatever reason, but usually something along the lines of “the common good” or “to protect (individual) rights”? But sometimes sadly also in the interests of the more powerful in society…

                          1. 0

                            Why do you believe that is the purpose of governments? Can you imagine a situation where something recognized as a government doesn’t protect it’s citizens in some cases?

                            Is the government supposed to protect you if you put your hand in a garbage disposal, slip in the shower, or attempt suicide?

                          2. 11

                            Governments aren’t there to protect you.

                            They’re definitely there to protect us. However, they’re also their own separate entity. They’re also a group of ambitious, often-lying people with a variety of goals. They can get really off track. That’s why the folks that made the U.S. government warned its people needed to be vigilant about it to keep it in check. Then, its own agents keep the individuals or businesses in check. Each part does its thing with discrepencies corrected by one of the others hopefully quickly. The only part of this equation failing massively is the people who won’t get the scumbags in Congress under control. They keep allowing them to take bribes for laws or work against their own voters. Fixing that would get a lot of rest in line.

                            We have seen plenty of protection of individuals by laws, regulations, and courts, though. Especially whenever safety is involved. In coding, the segment with highest-quality software on average right now is probably group certifying to DO-178B for use in airplanes since it mandates lots of activities that reduce defects. They do it or they can’t sell it. The private sector’s solution to same problem was almost always to lie about safety while reducing liability with EULA’s or good legal teams. They didn’t produce a single, secure product until regulations showed up in Defense sector. For databases, that wasn’t until the 1990’s with just a few products priced exhorbitantly out of greed. Clearly, we need a mix of private and public action to solve some problems in the marketplace.

                            1. 0

                              Governments shouldn’t impose speed limits, people should just drive at reasonably safe speeds.

                              Just because a particular behaviour might be most beneficial to a person, does not mean they will do it. Because consumers’ behaviour has not changed (and will not), this type of surveillance has proliferated to the point it’s nearly impossible to escape, even for the most dedicated privacy advocate.

                              1. 2

                                Funny you should mention that…the setting of speed limits to drive revenue irrespective of actual engineering and human factors is pretty well documented at this point.

                          3. 5

                            For public utility, it is fine to restrict the collection and usage of personal data. But for private corporations, the private individuals should be able to decide for themselves if giving a corporation access to your entire search history for wifi access at the coffee shop is worth it.

                            But that’s precisely what fails when dealing with Facebook et al, isn’t it?

                            No matter how assiduously you or I might refuse to sign up for Facebook and its ilk, block their tracking scripts, refuse to upload our photos, our text messages, our data – other people sign up for these things, and give these services permission to index their photos and text message logs etc, and Facebook builds a comprehensive shadow profile of you and I anyways.

                            There is no avoiding or opting out of this short of opting out of all human contact, at this point, and the “simple”-sounding solution of “let every individual decide for themselves!” completely fails to engage with the collective consequences that everyone is losing privacy regardless of what decision they make individually.

                            When your solution doesn’t engage with reality, it’s not useful.

                            1. 4

                              But for private corporations, the private individuals should be able to decide for themselves if giving a corporation access

                              This will be true when everybody will be able to program and administrate a networking system.

                              That’s the only way people can understand what they are giving and for what.

                              Till then, you must protect them from people who use their ignorance against them.

                              1. 1

                                You can’t protect people from their own ignorance, long-term, except by education.

                                1. 3

                                  You have to. No citizen can foresee the effects of all their actions. The technology we use today is too complicated to understand all of it.

                                  That’s why generally everything needs to be safe by default.

                                  1. 3

                                    The technology we use today is too complicated to understand all of it.

                                    The entire field of engineering is predicated on being able to do things without understanding how they work. Ditto beer brewing, baking, cooking, and so forth.

                                    That’s why generally everything needs to be safe by default.

                                    Bathtubs are not safe by default. Kitchen knives are not safe by default. Fire is not safe by default. Even childbirth isn’t safe by default, and you’d think that would’ve been solved generations ago by evolution.

                                    No citizen can foresee the effects of all their actions.

                                    Then why would we trust policies enacted by a handful of citizens deemed able to create laws any more than individual citizens making their own decisions? That’s a far riskier proposition.

                                    ~

                                    We can’t make the world safe for people that won’t learn how to be safe, and efforts to do so harm and inhibit everybody else.

                                    1. 6

                                      The entire field of engineering is predicated on being able to do things without understanding how they work. Ditto beer brewing, baking, cooking, and so forth. … You can’t protect people from their own ignorance, long-term, except by education.

                                      Try buying an oven that will spontaneously catch fire just by being on. It’s going to be complicated, because there are mandatory standards. And it’s a good thing they are this reliable, right? Leaves us time to concentrate on our work.

                                      Then why would we trust policies enacted by a handful of citizens deemed able to create laws any more than individual citizens making their own decisions? That’s a far riskier proposition.

                                      Because a lot of shouting from many sides went into the discussions before the laws were enacted. Much like you discuss your network infrastructure policies with your colleagues instead of just rewiring the DC as you see fit every once in a while.

                                      1. 3

                                        The entire field of engineering is predicated on being able to do things without understanding how they work. Ditto beer brewing, baking, cooking, and so forth.

                                        No.

                                        Engineering is about finding solutions by using every bit of knowledge available.

                                        Ignorance is an enemy to fight or work around, but for sure it’s not something to embrace!

                                        That’s why generally everything needs to be safe by default.

                                        Bathtubs are not safe by default. Kitchen knives are not safe by default. Fire is not safe by default. Even childbirth isn’t safe by default, and you’d think that would’ve been solved generations ago by evolution.

                                        I agree that we should work to make programming a common knowledge, like reading and writing so that everyone can build his computing environment as she like.

                                        And to those who say it’s impossible I’m used to object that they can read, write and count just because someone else, centuries before, said “no, it’s possible to spread this knowledge and we have the moral duty do spread it”.

                                        But all your example are wrong.

                                        They are ancient technologies and techniques that are way simpler than programming: humans have learnt to master them and teach each generation how to do so.

                                        We have to protect people.

                                        The states and laws can help, but the first shield of the people against the abusive use of technology are hackers.

                                        We must spread our knowledge and ethics, not exploit the ignorance of others for a profit.

                                1. 2

                                  You can edit user.js which has the same format. Modifications to prefs.js will be overwritten.

                                  1. 1

                                    Oh right :)

                                1. 7

                                  One wonders why not just, say, use JSON for this.

                                  1. 24

                                    I believe the prefs format predates JSON (or at least JSON’s popularity), and changing it now is a non-starter as it would break everyone’s user preferences. Even this changeset whose only backwards incompatible changes were fixing some glaringly obvious bugs caused some reports of failing CI around the web.

                                    We could try to migrate prefs files to a new format, but that would be a high risk/low reward operation.

                                    1. 5

                                      We could try to migrate prefs files to a new format, but that would be a high risk/low reward operation.

                                      I wish you folks would do that. :(

                                      1. 19

                                        Would you volunteer to respond to all the breakage reports it might cause?

                                        I may sound bitter now, but when a maintainer says something is too hard/risky, and a random user replies with “yeah, you should do it anyway” disregarding who is it that’s going to deal with problems, it’s just utterly disrespectful.

                                        1. 17

                                          Respect doesn’t enter into it–hell, I even agree with the assessment that the work is high-risk/low-reward…then again, I feel the proposed fix has some of the same issues. Like, the parser has worked well-enough that refactoring is maybe not a good use of time.

                                          If the decision is made “We must refactor it”, then it makes sense to go one step further and fix the underlying file format anyways. Then again, Mozilla has a history of derping on file formats.

                                          As for “all of the breakage reports it might cause”, given that the docs themselves discourage direct editing of files, it would seem that there probably isn’t a huge amount of breakage to be concerned about. Further, if the folks are clever enough to write a neat parser for the existing format, I’m quite sure they’re clever enough to write a tool that can correctly convert legacy config files into a new thing.

                                          (And again, it’s common advice that there are no user-servicable parts inside good chunks of it, because it’s a derpy file format.)

                                          Like, just to hammer this home, here is the format of a prefs.js file:

                                          # Mozilla User Preferences
                                          
                                          /* Do not edit this file.
                                           *
                                           * If you make changes to this file while the application is running,
                                           * the changes will be overwritten when the application exits.
                                           *
                                           * To make a manual change to preferences, you can visit the URL about:config
                                           */
                                          
                                          user_pref("accessibility.typeaheadfind.flashBar", 0);
                                          user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1520626265);
                                          user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1520626385);
                                          user_pref("app.update.lastUpdateTime.browser-cleanup-thumbnails", 1520640065);
                                          user_pref("app.update.lastUpdateTime.experiments-update-timer", 1520626145);
                                          user_pref("app.update.lastUpdateTime.recipe-client-addon-run", 1520626025);
                                          user_pref("app.update.lastUpdateTime.search-engine-update-timer", 1520625785);
                                          user_pref("app.update.lastUpdateTime.telemetry_modules_ping", 1520625905);
                                          user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1520626505);
                                          
                                          <snip>
                                          

                                          There is no reason that this shouldn’t be in a sane file format (read: JSON). This could be accomplished with a conversion tool, and gracefully deprecated.

                                          Edit:

                                          It even already contains JSON!

                                          user_pref("browser.onboarding.tour.onboarding-tour-performance.completed", true);
                                          user_pref("browser.pageActions.persistedActions", "{\"version\":1,\"ids\":[\"bookmark\",\"bookmarkSeparator\",\"copyURL\",\"emailLink\",\"sendToDevice\",\"pocket\",\"screenshots\"],\"idsInUrlbar\":[\"pocket\",\"bookmark\"]}");
                                          user_pref("browser.pagethumbnails.storage_version", 3);
                                          
                                          1. 7

                                            No disrespect taken :)

                                            For the record, I agree a standard format would be better. Also for the record I’ve never even looked at the prefs code before, so my statement was coming more from experience knowing how much the tiniest changes can blow up on the scale of the web.

                                            You never know, maybe we’ll support JSON and the legacy format at some point, but that smells like it might be unnecessary complexity to me.

                                            1. 2

                                              You said unnecessary complexity. Normally, I’d either say that’s a good thing or suggest a simple subset if it’s something like JSON. If Firefox already supports JSON, wouldn’t there already be a component included that could be called to handle it? Is that inaccessible? Or does it suck so much it’s worth rolling and including ones’ own parser that’s not a cleaned-up, subset of JSON? Just curious given Firefox is an older, big project.

                                              1. 5

                                                The pref parser is a small isolated module, so I don’t think it would be technically difficult to implement (bear in mind I’m not familiar with it at all).

                                                The complexity I’m referring to was more around ux, maintenance, and support, that come with providing two different ways of doing the same thing.

                                          2. 2

                                            ““yeah, you should do it anyway” disregarding who is it that’s going to deal with problems, it’s just utterly disrespectful.”

                                            Bringing up respect and morals when a FOSS project uses non-standard formats instead of standard ones that already existed with tooling people could’ve used? And that definitely would need extra work or fixes later? I doubt they were thinking of morality when they did it. More like “Let’s implement this feature the way I feel like doing it with my preferences and constraints right now.” Kind of a similar mindset to many people asking them for changes.

                                            A better question would be, “Is replacing non-standard stuff in the browser with well-supported, standardized stuff worth the effort to fix the breakage?” In this case, I’m not sure without knowing more specifics. The general answer for file formats is “Yes wherever possible for interoperability and ecosystem benefits.”

                                            1. 6

                                              non-standard formats instead of standard ones that already existed with tooling people could’ve used

                                              That’s untrue, the grandparent comment mentions this probably predates JSON’s popularity.

                                              Edit: Yeah, the bug itself is 17 years old, and the prefs format is probably older. Wikipedia says “Douglas Crockford originally specified the JSON format in the early 2000s;”, which means that at best the prefs format came around the same time Crockford first specified it, and at worst it probably came into being a couple eyears earlier.

                                              1. 1

                                                Good thinking on the history. I did say “standard formats,” not JSON. Before JSON, the formats I used included LISP-style sexprs for easy parsing, Sun’s XDR, ASN.1, and XML. I also hoped simpler ones gaining popularity would lead to secure or verified implementations. That was effortless for LISP-based syntax with Galois doing a verified ASN.1 later. Most went with the overcomplicated formats or hand-rolled their own each with problems. For XML, I found I could just use a subset of it close to basic HTML tags that made it easier for someone to convert later with standard or customer tooling.

                                                So, those were among alternative approaches back in those days that many projects were taking. Except LISP syntax which only LISPers were using. ;)

                                      2. 3

                                        Or Toml, since that’s Rust’s go-to data markup language.

                                        1. 4

                                          That’d be just a little too cute.

                                      1. 23

                                        GitHub URLs are pretty badly designed.

                                        For example, /contact is their contact page, and /contactt is a user profile.

                                        Apparently, there’s a hardcoded list of ”reserved words” in the code, and when someone adds a new feature, they add the word/path segment there and check that it’s not taken by a user.

                                        So it could perhaps be the case that they’re adding some feature related to malware?

                                        1. 13

                                          That could very well be the case – and I’d be totally fine with that. I understand being coded into a corner, and wanting to fix things for the greater good at the expense of a few users.

                                          I just can’t figure out why, for the sake of “privacy and security”, they don’t want to tell me.

                                          1. 16

                                            I think this is absurd behavior on GitHub’s part, and you’re right to be upset by it.

                                            Since you do seem curious, I have a guess why they’re being so evasive, and it’s pretty simple: They’re a large organization. The person you’re talking to would probably need to get approval from both legal and PR teams to tell you about their product plan before it’s launched. I have no information on how busy GitHub’s lawyers and PR people are, but I would expect an approval like that to take a few weeks. Based on what they told you about the timeframe, it sounds like they want to launch their feature sooner than that.

                                            What I’d really like to know is whether this is a one-off, or whether they’ve done it to other people before. It seems like their URL scheme will require it pretty frequently…

                                            1. 7

                                              The person you’re talking to would probably need to get approval from both legal and PR teams to tell you about their product plan before it’s launched.

                                              Which is why I didn’t single out the support representative that contacted me; they clearly were not in the decision process for any of this, and I don’t want to cause them any undue grief/trouble past my first email reply asking for clarification.

                                              To be clear: I don’t really care about the malware username, other than it’s a pretty cool name. I’m more interested in the reason behind why the forced rename.

                                              Lots of people (read: salty News of Hacker commenters) say it’s obvious (wanting to reserve the /malware top level URL) and call me dumb for even asking, but no one has given me any evidence other than theories and suppositions. Which is great! I love thinking and hypothesizing.

                                              1. 5

                                                I don’t have any documented evidence other than anecdotal, but when I worked at a similar company with an almost identical URL structure this was one of the hardest parts of launching a new top level feature. It turns out recognizable words make for good usernames… so it’s almost impossible to find one that’s still available when working on a new feature. The choice ends up being between picking a horrible URL or displacing one user to make it easier to find.

                                                It’s also worth noting that GitHub has a habit of being very secretive about what they’re working on - it’s almost impossible to get information about known bugs which have been reported before, let alone information about a potential new feature.

                                                I would be willing to bet that this is being done for something we’ll hear about in the next year or two.

                                          2. 11

                                            We made a team that was just the unicode pi symbol and GitHub assigned us the url /team/team.

                                            1. 4

                                              That’s a great unicode hack.

                                            2. 11

                                              The curse of mounting user paths directly to /. When in doubt, always put a namespace route on it.

                                              1. 6

                                                That was my thought as well. I would imagine they want it as a landing page for some new feature or product.

                                              1. 3

                                                This is such a crucial plugin. I absolutely hate reading through all the cruft just to get the recipe. Its a shame I don’t use Chrome as my daily driver but I do appreciate you for making this.

                                                1. 3

                                                  What browser are you using most often to look at recipes? I was thinking about porting to FF if there’s traction on this one.

                                                  edit: ok fellas, you talked me into it, I’ll work on a FF plugin this weekend

                                                  1. 4

                                                    I’ll add a second request for FF support, it’s easier than ever these days as they both use web extensions: https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension

                                                    1. 3

                                                      Yep, I’m a Firefox user. I think there’s enough of us now to make it worth your while. I would offer a helping hand but I have never made a browser extension so I don’t think I’d be much help.

                                                      1. 2

                                                        I also use firefox and would be interested in this extension.

                                                    1. 11

                                                      I think I would have preferred the source code….

                                                      1. 3

                                                        I could go either way on this. On the one hand, our intellectual property laws are horrible, and the game is 20 yrs old, so who cares?

                                                        But, on the other, I’d be pissed if I lost my camera and someone decided to dump the contents on imgur.

                                                        I think the reason there is any debate around this is because the owner is a giant, and successful game corporation, which seemingly has nothing to lose from sharing the source. But if that were actually true, why wouldn’t they on their own terms?

                                                        1. 9

                                                          Many game publishers would rather have their game rot into obscurity and make no profits than share the code. Abandonware is so common these days. I think it’s mostly rooted in a bad theoretical perspective of how the software market works.

                                                          1. 2

                                                            According to an IP lawyer friend of mine, software companies are often afraid that if their source gets out it will more likely be discovered that they accidentally infringed someone else’s IP in ways they weren’t even aware of.

                                                            1. 1

                                                              This is the reason for most of the NDA’s in the hardware industry. It’s a patent minefield. Any FOSS hardware might get taken down. I don’t know as much about the software industry except that big players like Microsoft and Oracle patent everything they can. A quick Google looking for video game examples got me this article. Claims included in-game directions, d-pad, and unlocking secrets but I haven’t vetted this article’s claims by reading the patents or anything.

                                                            2. 1

                                                              Many game publishers would rather have their game rot into obscurity and make no profits than share the code.

                                                              I think it comes down to thing, actually: Do you believe in the betterment of society (sharing), or do you believe in maximizing profits (greed)? In the last 20 years, we’ve seen this go from strictly white and black, to a full color spectrum. Blizzard, even Microsoft, are somewhere in the middle, but neither of them have shared much of their core, profit producing, products.

                                                              I think it’s mostly rooted in a bad theoretical perspective of how the software market works.

                                                              Can you clarify a bit? I think what you’re saying might be similar to what I’m thinking… that the media industries have not yet adapted from “copies” sold as a metric of success, despite tons of evidence and anecdotes suggesting other ways to success.

                                                              1. 1

                                                                We’re saying the same thing yes. It’s hard for businesses to realize that price discrimination can go down to $0 and you can still make a hearty profit.

                                                            3. 1

                                                              I bet there’s a lot of code in there that’s still heavily used in their games today, so probably not accurate to say they have nothing to lose.

                                                              1. 1

                                                                One would imagine! Though, the engines of 1998 vs. the engines of 2018 have probably changed quite significantly.

                                                          1. 25

                                                            I think ads are the worst way to support any organization, even one I would rate as highly as Mozilla. People however are reluctant to do so otherwise, so we get to suffer all the negative sides of ads.

                                                            I just donated to Mozilla with https://donate.mozilla.org, please consider doing the same if you think ads/sponsored stories are the wrong path for Firefox.

                                                            1. 14

                                                              Mozilla has more than enough money to accomplish their core task. I think it’s the same problem as with Wikimedia; if you give them more money, they’re just going to find increasingly irrelevant things to spend it on. Both organizations could benefit tremendously from a huge reduction in bureaucracy, not just more money.

                                                              1. 9

                                                                I’ve definitely seen this with Wikimedia, as someone who was heavily involved with it in the early years (now I still edit, but have pulled back from meta/organizational involvement). The people running it are reasonably good and I can certainly imagine it having had worse stewardship. They have been careful not to break any of the core things that make it work. But they do, yeah, basically have more money than they know what to do with. Yet there is an organizational impulse to always get more money and launch more initiatives, just because they can (it’s a high-traffic “valuable” internet property).

                                                                The annual fundraising campaign is even a bit dishonest, strongly implying that they’re raising this money to keep the lights on, when doing that is a small part of the total budget. I think the overall issue is that all these organizations are now run by the same NGO/nonprofit management types who are not that different from the people who work in the C-suites at corporations. Universities are going in this direction too, as faculty senates have been weakened in favor of the same kinds of professional administrators. You can get a better administration or a worse one, but barring some real outliers, like organizations still run by their idiosyncratic founders, you’re getting basically the same class of people in most cases.

                                                              2. 21

                                                                So Mozilla does something bad, and as a result I am supposed to give it money?? Sorry, that doesn’t make any sense to me. If they need my money, they should convince me to donate willingly. What you are describing is a form of extortion.

                                                                I donate every month to various organizations; EFF, ACLU, Wikipedia, OpenBSD, etc. So far Mozilla has never managed to convince me to give them my money. On the contrary, why would I give money to a dysfunctional, bureaucratic organization that doesn’t seem to have a clear and focused agenda?

                                                                1. 9

                                                                  They may be a dysfunctional bureaucratic organisation without a focused agenda (wouldn’t know as I don’t work for it) which would surely make them less effective, but shouldn’t the question instead be how effective they are? Is what they produce a useful, positive change and can you get that same thing elsewhere more cost-effectively?

                                                                  If I really want to get to a destination, I will take a run-down bus if that is the only transport going there. And if you don’t care about the destination, then transport options don’t matter.

                                                                  1. 17

                                                                    They may be a dysfunctional bureaucratic organisation without a focused agenda (wouldn’t know as I don’t work for it) which would surely make them less effective, but shouldn’t the question instead be how effective they are? Is what they produce a useful, positive change and can you get that same thing elsewhere more cost-effectively?

                                                                    I am frequently in touch with Mozilla and while I sometimes feel like fighting with windmills, other parts of the org are very quick moving and highly cost effective. For example, they do a lot of very efficient training for community members like the open leadership training and the Mozilla Tech speakers. They run MDN, a prime resource for web development and documentation. Mozilla Research has high reputation.

                                                                    Firefox in itself is in constant rebuild and is developed. MozFest is the best conferences you can go to in this world if you want to speak tech and social subjects.

                                                                    I still find their developer relationship very lacking, which is probably the most visible part to us, but hey, it’s only one aspect.

                                                                    1. 9

                                                                      The fact that Mozilla is going to spend money on community activities and conferences is why I don’t donate to them. The only activity I and 99% of people care about is Firefox. All I want is a good web browser. I don’t really care about the other stuff.

                                                                      Maybe if they focused on what they’re good at, their hundreds of millions of dollars of revenue would be sufficient and they wouldn’t have to start selling “sponsored stories”.

                                                                      1. 18

                                                                        The only activity I and 99% of people care about is Firefox.

                                                                        This is a very easy statement to throw around. It’s very hard to back up.

                                                                        Also, what’s the point of having a FOSS organisation if they don’t share their learnings? This whole field is fresh and we have maintainers hurting left and right, but people complain when organisations do more then just code.

                                                                        1. 6

                                                                          To have a competitive, web browser we can trust plus exemplary software in a number of categories. Mozilla couldve been building trustworthy versions of useful products like SpiderOak, VPN services, and so on. Any revenue from business licensing could get them off ad revenue more over time.

                                                                          Instead, they waste money on lots of BS. Also, they could do whaf I say plus community work. It’s not either or. I support both.

                                                                          1. 8

                                                                            To have a competitive, web browser we can trust plus exemplary software in a number of categories. Mozilla couldve been building trustworthy versions of useful products like SpiderOak, VPN services, and so on. Any revenue from business licensing could get them off ad revenue more over time.

                                                                            In my opinion, the point of FOSS is sharing and I’m pretty radical that this involves approaches and practices. I agree that all you write is important, I don’t agree that it should be the sole focus. Also, Mozilla trainings are incredibly good, I have actually at some point suggested them to sell them :D.

                                                                            Instead, they waste money on lots of BS. Also, they could do whaf I say plus community work. It’s not either or. I support both.

                                                                            BS is very much in the eye of the beholder. I also haven’t said that they couldn’t do what you describe.

                                                                            Also, be aware that they often collaborate with other foundations and bring knowledge and connections into the deal, not everything is funded from the money MozCorp has or from donations.

                                                                            1. 1

                                                                              “Also, Mozilla trainings are incredibly good, I have actually at some point suggested them to sell them :D.”

                                                                              Well, there’s a good idea! :)

                                                                          2. 3

                                                                            That’s a false dichotomy because there are other ways to make money in the software industry that don’t involve selling users to advertisers.

                                                                            It’s unfortunate, but advertisers have so thoroughly ruined their reputation that I simply will not use ad supported services any more.

                                                                            I feel like Mozilla is so focused on making money for itself that it’s lost sight of what’s best for their users.

                                                                            1. 2

                                                                              That’s a false dichotomy because there are other ways to make money in the software industry that don’t involve selling users to advertisers.

                                                                              Ummm… sorry? The post you are replying to doesn’t speak about money at all, but what people carry about?

                                                                              Yes, advertising and Mozilla is an interesting debate and it’s also not like Mozilla is only doing advertisement. But flat-out criticism of the kind “Mozilla is making X amount of money” or “Mozilla supports things I don’t like” is not it

                                                                            2. 3

                                                                              This is a very easy statement to throw around. It’s very hard to back up.

                                                                              Would you care to back up the opposite, that over 1% of mozilla’s userbase supports the random crap Mozilla does? That’s over a million people.

                                                                              I think my statement is extremely likely a priori.

                                                                              1. 1

                                                                                I’d venture to guess most of them barely know what Firefox is past how they do stuff on the Internet. They want it to load up quickly, let them use their favorite sites, do that quickly, and not toast their computer with malware. If mobile tablet, maybe add not using too much battery. Those probably represent most people on Firefox along with most of its revenue. Some chunk of them will also want specific plugins to stay on Firefox but I don’t have data on their ratio.

                                                                                If my “probably” is correct, then what you say is probably true too.

                                                                            3. 5

                                                                              This is a valid point of view, just shedding a bit of light on why Mozilla does all this “other stuff”.

                                                                              Mozilla’s mission statement is to “fight for the health of the internet”, notably this is not quite the same mission statement as “make Firefox a kickass browser”. Happily, these two missions are extremely closely aligned (thus the substantial investment that went into making Quantum). Firefox provides revenue, buys Mozilla a seat at the standards table, allows Mozilla to weigh in on policy and legislation and has great brand recognition.

                                                                              But while developing Firefox is hugely beneficial to the health of the web, it isn’t enough. Legislation, proprietary technologies, corporations and entities of all shapes and sizes are fighting to push the web in different directions, some more beneficial to users than others. So Mozilla needs to wield the influence granted to it by Firefox to try and steer the direction of the web to a better place for all of us. That means weighing in on policy, outreach, education, experimentation, and yes, developing technology.

                                                                              So I get that a lot of people don’t care about Mozilla’s mission statement, and just want a kickass browser. There’s nothing wrong with that. But keep in mind that from Mozilla’s point of view, Firefox is a means to an end, not the end itself.

                                                                              1. 1

                                                                                I don’t think Mozilla does a good job at any of that other stuff. The only thing they really seem able to do well (until some clueless PR or marketing exec fucks it up) is browser tech. I donate to the EFF because they actually seem able to effect the goals you stated and don’t get distracted with random things they don’t know how to do.

                                                                        2. 3

                                                                          What if, and bear with me here, what they did ISN’T bad? What if instead they are actually making a choice that will make Firefox more attractive to new users?

                                                                        3. 9

                                                                          The upside is that atleast Mozilla is trying to make privacy respecting ads instead of simply opening up the flood gates.

                                                                          1. 2

                                                                            For now…

                                                                        1. 12

                                                                          It’s a good story, but the headline (just copied from CBC, not av’s fault!) is entirely wrong. Computer code didn’t put people in jail. An oppressive government put people in jail.

                                                                          1. 1

                                                                            I think both interpretations could be correct. The laws of the regime are wholly unethical, so I agree blame lies mostly with the government. But the Gülenists who created the link back to bylock did so knowing that innocent (in the eyes of the law) people might be incarcerated under the laws of the regime. The authors are partly culpable.

                                                                            Of course, “Oppressive regime throws innocents in jail” isn’t going to get as many clicks.

                                                                            1. 1

                                                                              This is an excellent point. I’m not a Turk myself, but I hate Erdogan and the Islamist political views he represents. If Turkey were within my sphere of immediate political concern (rather than a country I have no particular connection to), I could easily see myself supporting the coup attempt itself, let alone a communications app connected with it. So seeing people legally exonerated for doing something that I think ought to be completely legitimate brings me no joy.

                                                                              For an analogy closer to home, imagine that this article was about people trying desperately to prove that they were being falsely accused of using was Gab, because their jobs were at stake.

                                                                            1. 2

                                                                              The only thing I’m undecided about is tagging as a prefix for the title. Examples:

                                                                              Refactor: moves foo into bar

                                                                              Frontend: handle frobnicator requests

                                                                              1. 2

                                                                                I like to tag when I have a large(ish) commit series that spans multiple modules. It helps me (and others) identify at a glance which commit is modifying what. Though this approach only makes sense if you have embraced micro-commits.

                                                                                That said, I don’t think I would ever tag something as ‘refactor’. To me that’s just something that should be in the message itself.

                                                                              1. 6

                                                                                One of the biggest differences is design philosophy. Like you noticed, mercurial is much simpler than git by default. This is largely because many of the features are hidden behind extensions (built-in or otherwise) or config options. Mercurial, when configured for it, is every bit as powerful as git.

                                                                                Concepts I’d highly recommend familiarizing yourself with are: DAG, phases, revsets, templates, changeset evolution

                                                                                Built-in extensions I recommend include: rebase, purge, pager, shelve, show, color, progress, histedit, fsmonitor

                                                                                External extensions: evolve (this is an official one, highly recommended), absorb, bookbinder

                                                                                I sort of liken hg to vim and git to atom. Tweaking mercurial to your liking takes a lot of time and effort, but is well worth the effort in the long run.

                                                                                1. 7

                                                                                  What hg calls “branches” are entirely different from git branches. They are generally meant to be permanent, and shouldn’t be used if no one else would ever want to pull them in. A good application of hg branches, would be to have a “dev” branch that merges into the “stable” branch from time to time.

                                                                                  From here on out, when I say “branch” I mean it in the sense of a git branch.

                                                                                  People often say “bookmarks” are the equivalent of git branches, but this is a bit misleading. Bookmarks are, very simply, a tag that automatically updates when it is activated and you make a new commit. A bookmark only knows the direct commit it is applied to, nothing more.

                                                                                  So how do you create a “git-like” branch in mercurial? You update to any non-head revision and commit. This creates a new (unnamed) branch on the DAG. You can see it by running hg log -G, or better hg show work (after enabling the show extension in your hgrc). All bookmarks do are add a string label to these unnamed branches which can help you track them a bit better. They are not necessary to do branching however, many of my colleagues just use revision numbers and hg show work to keep track of it all.

                                                                                  Finally, there is an experimental feature called “topics” being developed. It’s currently packaged in the “evolve” extension, so this needs to be installed separately. I won’t go into much detail on topics here, but they can enable more “git-like” branching workflows than heads + bookmarks can.

                                                                                  1. 4

                                                                                    Bookmarks are, very simply, a tag that automatically updates when it is activated and you make a new commit.

                                                                                    Strictly speaking, this is exactly what a git branch is too: just a ref. People use the word “branch” in git loosely, though, to refer to both the ref and the commits reachable from that ref. Actually, most of the time people use it in the latter sense without having a firm grasp that the former is all that is happening.

                                                                                    There are some UI ways in which git branch-refs are handled differently than hg-branches, for example, git calls a “merge” what may only be advancing a git branch-ref and has no merge-like qualities at all (i.e. no merging of files, thus no potential to resolve conflicts and certainly no merge commit). It is for this reason that hg merge does not advance bookmarks in hg and instead says that there is no merge to be done. Another UI difference is that git also has additional markers called remote branches that are another ref but one that is only moved by different parts of the UI i.e. push/pull/fetch commands.

                                                                                    1. 2

                                                                                      I’ve actually switched to describing classic Mercurial branches as “labels” to people coming from Git, and just telling them to use bookmarks and to always make a bookmark called @ when they start. That, combined with Bitbucket natively supporting obsolete markers, usually helps them get used to the Hg workflow more easily (since things like rebase now do what you’d expect and cleanly allow pushing with deprecation).

                                                                                    1. 5

                                                                                      Great rundown! The article hints at an important point in the mono vs multi debate without explicitly stating it: complexity of scale can’t be solved by your choice of vcs strategy. In either case, a sufficiently large and complicated architecture is going require a lot of in-house tooling to ensure everything runs smoothly.

                                                                                      1. 34

                                                                                        Using the nightlies, holy poop it made me switch back to firefox.

                                                                                        1. 6

                                                                                          Same here. I actually switched to the betas when 58 starting being the nightlies. Only issue for me was hangouts, but my company recently switched away from hangouts so its not a problem anymore.

                                                                                          1. 9

                                                                                            My issues is that WebExtensions are not as powerful as older ones. Now it’s all “chromey” in it’s limitations.

                                                                                            1. 27

                                                                                              This really is a good thing for privacy and security.

                                                                                              1. 20

                                                                                                Also performance and compatibility.

                                                                                                1. 1

                                                                                                  I’m curious why it’s a performance win. I would think spinning up an isolated JS virtual machine for each extension would be significantly more expensive and slower than the old compiled extensions.

                                                                                                  1. 9

                                                                                                    Old extensions weren’t compiled. The new ones don’t get their own JS VM. Performance win here is likely by cutting of old, crufty, synchronous APIs (mostly internal, but was hard to remove if used by lots of popular addons). This is easier once you declare them legacy.

                                                                                                    1. 7

                                                                                                      It was previously the case that a poorly written add-on could slow down all facets of Firefox in general. Now that the only way to hook into Firefox’s internals are via well-defined and optimized APIs, this should happen much less often.

                                                                                                      1. 4

                                                                                                        It also allows the firefox devs to iterate quickly without worry of breaking extensions as there is a defined interface for extensions that they need to worry about.

                                                                                                2. 3

                                                                                                  I have two questions about that:

                                                                                                  One, I want the same theme capability as I’ve always had. I want Firefox to look like it does for me now, not like the stock Firefox. Is that possible?

                                                                                                  Two, I want ad blocking and script blocking and all the other privacy-enhancing add-ons to work as well, not like they do in Chrome where the bad stuff is fundamentally still loaded, it’s just hidden at some point in the rendering cycle. Is that possible?

                                                                                                  1. 6

                                                                                                    You can still manually edit userChrome.css. Complete Themes are not supported in >= 57.

                                                                                                    Blocked stuff is not “fundamentally still loaded”, not even in Chrome I think?!? E.g. Privacy Badger here returns {cancel: true} in an onBeforeRequest interception handler. IIRC the “just hidden” stuff is from very early days of Chrome extensions

                                                                                                    1. 1

                                                                                                      For addons, the answer is yes. See the Privacy add-on collection or other featured extensions

                                                                                                      Your look and feel question is hard to answer, without knowing what Firefox looks like to you now. :) If you insist that tabs should be round, it’s not going to be easy, but possible.

                                                                                                      1. 2

                                                                                                        I insist that tabs go below the address bar, like they did in in the original Firefox and like they do now with the right add-on: https://addons.mozilla.org/en-US/firefox/addon/classicthemerestorer/

                                                                                              1. 6

                                                                                                So, I guess I need to come to terms with the fact that in 2017 everybody writes using by-lines that generate the most splash. I guess I can’t fault them for that.

                                                                                                But I get very skeptical whenever I hear someone use the phrases “dead” or even “dying”.

                                                                                                I have a different conclusion - the web is one particular medium that’s well adapted to certain kinds of interactions. Big companies are trying to get beyond that and move into areas that aren’t optimized for that kind of interactivity with home assistants and the like.

                                                                                                The web isn’t dying at all. Sure, a few big sites are responsible for most of the traffic, and that’s fine. There still exists an incredibly rich, varied web should you care to look past the big three - this site and others like it are proof of that.

                                                                                                1. 5

                                                                                                  It might be more accurate to say “at risk of dying” given the author makes a few assumptions (net neutrality, trinet), but the worst case scenario described in the article doesn’t sound all that far-fetched to me.

                                                                                                  Sure, there will always be a small niche of people who will continue to use the web. But I think the author defines “dead” as not collectively relevant. Just like how vinyl has no relevance to modern society despite a niche of people who still collect them.

                                                                                                  1. 3

                                                                                                    I started research on making of a search engine for this varied web. It would not index sites serving ads and possibly e-commerce. I would like to also penalize JavaScript use at least as an option. At the beginning I would use Adblock rulesets like the Easy List - if there is a match I do not index the site.

                                                                                                    I hope that this would remove most crap out there with some minor collateral damage. Also that the index would be small enough that a little fish like me could do it without massive cost or infrastructure.

                                                                                                    1. 1

                                                                                                      Do you want to penalize JavaScript use, or do you want to ignore its existence and just index what can be seen with JavaScript totally off? (Of course, some sites can be viewed with JS and CSS off, but not with JS off and CSS on; maybe you do not like that)

                                                                                                      1. 2

                                                                                                        I’m not sure.

                                                                                                        At least penalize - they would have lower ranking. Maybe give user an option to not show them. Probably for the first version not including them at all would be the simplest thing to do. Some later version could attempt to classify used JavaScript.

                                                                                                        I would like it to index information first and not care much about web apps. I’m wondering if it would make sense to distribute whole index via torrent. Then search could be done locally. But for this too make sense it would have to be in an order of, at most, tens of gigabytes. The problem would be to make updates as small as possible and also to not use prohibitive amount of CPU time.

                                                                                                        I’m almost totally green in this area.

                                                                                                        1. 1

                                                                                                          I think a nice site is one that you can curl | lynx --dump without suffering. Known-bad ad/tracker networks can be grepped in between, but is checking for JS even worth it? The recommended mode of using the index is with JS completely off anyway (and if content is loaded via JS, the site will get classified as garbage with no useful content — a classification that you need even for zero-JS-carrying sites).

                                                                                                          In concrete terms: do you consider indexing Lobste.rs discussions a bad idea?

                                                                                                      2. 1

                                                                                                        I know a lot of people who would very much love such a search engine. Let us know if you actually implement this!

                                                                                                    1. 3

                                                                                                      I agree this is cool, but these are not things that should be used daily, changing history is stupid. Pretty much the only reason I can see using a tool like this is to immediately back out a password(or other secret) committed by mistake. But really the right answer is just change the password/secret, make a new commit removing it and note that this is not valid anymore, let the history stand as people making mistakes and move along with life.

                                                                                                      1. 13

                                                                                                        I disagree. One area where this is insanely useful on a daily workflow is code review, because it gives you the best of both worlds: the mainstream, published history can be the versions of the patches that were finally accepted, with all fixes and any squashing or splitting that needed to happen, but if I need to later ask questions like, “why was this particular solution done here, rather than the alternatives?”, then I stand a much higher chance of being able to trivially answer that within the SCM by tracking obsolete versions of that changeset. This is a huge improvement, in practice, from trying to discover what GitHub PRs existed for a given commit and track those histories entirely through the GitHub UI.

                                                                                                        1. 1

                                                                                                          hrm. for me, code review belongs in the other person’s branch.. if Tootie wants me to merge her stuff, then I’ll look at her code on her branch/repo and then merge into the main branch/repo. i.e. hg incoming -vp <Tootie's repo>

                                                                                                          But if you were doing code-review ala github or other methods, then I can see where this could be useful.

                                                                                                          1. 1

                                                                                                            Does that mean you’re not doing CI? You might want to consider setting up a CI server - it’s very useful.

                                                                                                            1. 1

                                                                                                              I’m not sure where you got no CI from what I said… but yes, I’m all for CI/CD. On push to the central VCS server (regardless of repo/branch), Jenkins will go forth and run some tests, etc. If it happens to be the main stable(or dev/test/etc) branch, it will also deploy. I definitely agree it’s useful.

                                                                                                              The nice thing about my method is it’s decentralized, and anyone can use whatever tools they want to do code review, much like the Linux Kernel. If Tootie wants 500 feature branches or repo’s, then she can have them, organized however she wants. When it’s time to merge into the main branch, the main server repo(s) require a gpg signature from 1 other developer (via the commitsigs extension) – it’s just a test that’s run as part of the CI run, which effectively makes our code reviews GPG signed.

                                                                                                              1. 1

                                                                                                                Ah, I see, your central server has all the in-development branches. The nice thing about the evolve workflow is that you can have a publishing server that has a canonical linear history where all the tests pass on every commit. It takes some tooling and discipline to get there, but the benefit is that bisect is always useful and it’s easier to follow how the codebase evolved over periods when many developers were working simultaneously.

                                                                                                                1. 1

                                                                                                                  For us, every push, regardless of branch/repo gets tested by Jenkins, a commit hook on our central repo calls into Jenkins to run. Can you explain more about your workflow and how it works? I think maybe I’m missing something. How does every commit get tested?

                                                                                                                  1. 1

                                                                                                                    After passing code review from one or two other developers, and after the test bot certifies that the tests pass on every commit in the series, a bot rebases the series onto the current default branch and then pushes to the publishing server. In principle one could also squash the series into a single commit but that means that each commit is no longer as easy to read. We like to keep commits atomic and manageable to review by a person without getting overwhelmed by a huge diff.

                                                                                                                    1. 1

                                                                                                                      Assuming I understand you correctly, this is how it works:

                                                                                                                      So developer A makes a small change, commits it, pushes it to Server A. Server A then runs tests, assuming pass - dev A begs 1-2 other devs to review their commit. After code review is signed off (via what mechanism?) a bot rebases it onto some new repo, and pushes to Server B. Server B then does the standard CI/CD stuff and deploys?

                                                                                                        2. 7

                                                                                                          changing history is stupid

                                                                                                          Mercurial keeps track of whether a changeset is public (because you pushed it/someone pulled it) or draft. By default, Evolve-related commands (rebase, prune, fold, evolve, and others), will only change unpublished history, that is the changesets that are still in draft mode: this prevents you from accidently editing history others may already depend on. As Gecko says, it’s a pleasure to be able to edit history without destroying the old history.

                                                                                                          You can also share a history that you mutate, e.g. with a close colleague or with yourself on another device. Create a so-called ‘non-publishing’ repo: changesets pushed to this repository remain in draft mode. Evolve now supports sharing your history mutations. It’s a rare use case, but it’s supported; and Evolve’s notion of ‘obsolesence’ and ‘successor changesets’ is what makes it possible to support it at all.

                                                                                                          1. 3

                                                                                                            Yes, Mercurial is awesome, I’m not disagreeing, it’s what I use. Like I said this is very cool, but I think as a daily driver it’s not a good idea to use. That it doesn’t destroy old history like Git does is indeed a breath of fresh air. I’m not at all disagreeing with how it’s implemented/what it does. It’s great the tool exists for when you need it, I just don’t think one should be using it all the time.

                                                                                                          2. 4

                                                                                                            In addition to code review, another reason to modify history on a daily basis is to avoid broken commits. It’s generally good practice to avoid landing any commits that lead to a broken state (in build or tests). Otherwise other contributors who happen to rebase onto the busted commit will be left wondering whether or not their changes are responsible for the failures.

                                                                                                            Rather than committing a “bustage” fix on top, much better to change history and make sure the broken commit never makes it into upstream in the first place.

                                                                                                            1. 1

                                                                                                              For large teams, or where you are not able to communicate in basically real-time, I can see this being useful. For smaller teams and/or where real-time communication(i.e. a chat channel/etc) I don’t see this as a big deal. But I can agree there are times where this would be useful, but if you are breaking builds on a daily basis.. maybe you are doing something wrong? :P

                                                                                                          1. 3

                                                                                                            I agree with the “unneccessary urgency” observation: this is a clever trick. I never knew the actual last time was shown in the tooltip. However, I do like the fact that this urgency allows you to make quick decisions and book sooner: otherwise, you might spend a lot of time pondering your choices.

                                                                                                            Perhaps this post should be taken with a grain of salt: the author clearly booked a hotel which was not nice. However some guests prefer to stay in these kinds of “party-goer” hotels and might give a very high rating. So it seems fair that Booking shows these positive reviews:

                                                                                                            9.6: “Great location for canal street night out” 10: “… Had an unforgettable after party” 10: “Great place to stay, especially to party”

                                                                                                            It seems that guests that go to sleep at only 4 o’clock don’t mind the bar below. The blog author finally reconciles and takes the blame: “To be fair, this is more of the hotel’s fault than Booking’s. Also, I should have read the fine print.”

                                                                                                            1. 7

                                                                                                              I think the point of that anecdote was that the categories skew ratings very high. It’s almost impossible for a hotel to get less than 2-3 stars as they’ll all have at least some redeeming qualities. With a traditional 5 star rating system you can bet there would be a lot of 1 star reviews due to the noise, but that’s not the case here because the staff happens to be friendly. It also seems like booking.com only displays the most positive reviews (which is common practice on many sites.. but still).

                                                                                                              1. 3

                                                                                                                They don’t (we use them constantly). You can also filter reviews by guest type like family, business traveler etc. to find those that are more likely from those with similar expectations. It is always a good idea to ignore best reviews and check those with lower scores (can filter on that too).

                                                                                                                Reviews are not completely reliable (are they anywhere?) and booking certainly uses a lot of dark patterns, but I don’t think it is that difficult to have a generally positive experience. Unless my wife and I are so much luckier or more capable than others, which I doubt.

                                                                                                                1. 3

                                                                                                                  I’ve had much worse experience with TripAdvisor than Booking as far as being able to narrow down reviews to “people like me”.

                                                                                                            1. 1

                                                                                                              This project seems misguided for a couple of reasons.

                                                                                                              For starters, the public’s money is not used for the public’s benefit, but the politicians’ and their cronies’.

                                                                                                              The BigCorps that produce government software want to have all of their projects last as long as possible, because they want to keep charging their outrageous fees for as long as possible. That’s the point of being a crony contractor.

                                                                                                              If the government started producing genuinely reusable libraries and components, that would reduce the amount of time required to finish projects, which would make the cronies unhappy.

                                                                                                              And if the cronies can’t get a satisfying return on investment for their bribes, they’ll bribe politicians less, and that would make politicians unhappy.

                                                                                                              Clearly, the quality of government software is not going to improve any time soon, because quality is simply not a concern.

                                                                                                              And even if most public software was actually released as open source, it would be 90%+ badly written crap that no one will actually use for anything.

                                                                                                              1. 10

                                                                                                                This petition was set up by the FSFE. Their reason d’être is this kind of policy work. You can argue all day how there are always larger problems left to tackle, the FSFE will do the work they do regardless of those other problems.

                                                                                                                Have you heard that many years from now, the sun will explode? You know, I still signed this petition anyway!

                                                                                                                1. 0

                                                                                                                  So are you telling me that wasting time and effort on trying to achieve something that’s impossible is a good thing?

                                                                                                                  1. 8

                                                                                                                    It’s better than not even trying.

                                                                                                                    1. 0

                                                                                                                      I kind of hope you’re trolling, for your sake.

                                                                                                                      But if you see someone trying to fly by flapping his arms really fast, will you encourage him to keep trying, because it’s “better than not even trying”?

                                                                                                                    2. 1

                                                                                                                      So, I’m quite curious because I think you & I have started from almost the same idea and ended up at opposite conclusions.

                                                                                                                      I’d agree with you that the defining feature of government is the threat of force to take from the populace (some governments do other stuff to, but that’s the difference between ‘government’ and ‘not a government’).

                                                                                                                      In my travels, I’ve noticed that there’s a lot of variation between different governments; some impoverish their people terribly, whilst others give back much of their tax revenue in public works.

                                                                                                                      I had assumed that the difference there was that in some jurisdictions, people have collectively demanded concessions, and some of those concessions had been granted.

                                                                                                                      It sounds like you don’t think it’s possible to achieve that, which makes me curious what your explanation is for the differences between governments.

                                                                                                                      1. 1

                                                                                                                        You’re almost guaranteed to be trying to troll me, but I’m tempted to respond. Good job!

                                                                                                                        1. 1

                                                                                                                          Depends what you mean by troll. I’m very likely to ask (many) follow up questions when I don’t follow your logic, and I’ll hassle you quite a bit if I think you’re being mendacious, but you’ve stated a pretty straightforward argument so far.

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

                                                                                                                                This usage of the else keyword seems like an occasional useful but of semantic sugar, but dang, could they have at least chosen a different keyword? The word “else” makes absolutely no sense here! Fully exhausting a for loop doesn’t seem like an “else,” that seems like the normal usage of a for loop. In my opinion, it should have been called something like “then” to make it clear that it’s a continuation. Before I read this article, I assumed that the else keyword after a for loop would only execute if the loop never ran.

                                                                                                                                1. 3

                                                                                                                                  The most common use case is searching for a particular value using the for loop. If found, a break is then executed and the else block is skipped. If no value is found, the else block is executed. This makes “else” make a little more sense as the keyword.

                                                                                                                                  1. 3

                                                                                                                                    Think of for/else like an if statement where the condition is evaluated multiple times. It’s basically just a more expressive version of:

                                                                                                                                    if any(c for c in conditions):
                                                                                                                                        # at least one condition is True
                                                                                                                                    else:
                                                                                                                                        # no condition is True
                                                                                                                                    

                                                                                                                                    In your mind, just replace for with if and it makes a sort of sense.

                                                                                                                                    1. 2

                                                                                                                                      I can’t seem to find a link, but I vaguely remember Guido remarking that he wishes he’d named it “nobreak”, which makes a lot more sense for me.

                                                                                                                                      1. 1

                                                                                                                                        Python is unfortunately heavy with syntax. Expressing for/else in a language like Haskell, Ocaml, and I assume Rust, is something more likely (and easily) done in a library.