Threads for bargap

  1. 6

    After getting into some really annoying OpenAPI YAML files, and then fighting with it in docker ecosystem and elsewhere, I’m pretty over it.

    For all the pissing and moaning, I am perfectly content to use JSON for everything. The only features it is actually missing in my opinion are:

    • Heredoc support
    • Multi-line string support
    • RFC3339 date support
    • Better Unicode support
    • Proper support for 754 floating point special values ( +/- inf, nan, etc.)

    That’s it. That’s all I want. Everybody wants to add other shit–knock it off.

    1. 3

      Heredoc support Multi-line string support RFC3339 date support Better Unicode support Proper support for 754 floating point special values ( +/- inf, nan, etc.)

      This. I’ve been using TOML for some things lately and other than array of tables and table of tables it just sort of works.

      1. 1

        I believe the problem with YAML is that it tries to be both a human-facing configuration language a machine-friendly interchange language. I really like UCL for separating the two concerns. UCL provides a set of rich features for things like includes with priority-based merging and unit suffixes but can also take a config directory and merge the result into a single JSON document (or some other serialisation). Your front end can take complex UCL structures but then send the back end a single blob that’s easier to parse.

        1. 1

          JSON is also missing binary-data support, and needs it badly.

          1. 1

            You can base-64 encode binary data and store it as a string, so it doesn’t make my list.

            1. 1

              Ah, but there is no way in JSON to indicate that a string contains Base64-encoded binary data, rather than is a string which happens to decode to Base64 without errors. As an example, is the string “your” Base64-encoded binary data, or an English word?

              1. 1

                There’s also no way to tell if a field 1.0 is dealing with pounds or kilograms, right?

                That’s a type problem, which JSON mostly doesn’t (and in my opinion, shouldn’t) provide.

                1. 1

                  I don’t think it’s a typing issue, so much as it’s a value issue: what is the value of the string "foot"? Is it the bytes 146, 157, 157, 164 or is it the bytes 126, 138, 45?

                  Although, if types don’t matter, one might argue against distinguishing "2.0" and 2.0. Heck, we could just adopt Tcl literals, where everything is a string. Instead of {"foo":2, "bar": "baz"} we could just have foo 2 bar baz. That wouldn’t bother me too much, to be honest, but I think most folks wouldn’t care for it!

        1. 6

          Strongly disagree that moving Emacs development to a proprietary site rather than a mailing list would be an improvement. I also think that it would be a mistake to get rid of copyright assignment — this is an important defense against copyright lawsuits, and preserves the GNU Project’s freedom of movement.

          The only thing I really disagree with the FSF’s stewardship of the project on has been the decisions to make things technically less elegant in hopes of preventing proprietary usage of the tools. This is, I think, never the right answer. Yes, software should be free: it should also be elegant. We can’t force software hoarders to free their software, but we do control ourselves, and we should always write elegant solutions and produce quality software. If others use it for bad ends, well, that is their bad choice.

          1. 8

            Strongly disagree that moving Emacs development to a proprietary site rather than a mailing list would be an improvement.

            Letting people contribute to discussions not on a mailing list does not require proprietary software.

            1. 6

              The problem is not owning your own stuff. If Github decides it just plain doesn’t like you anymore, you’re done. You can go on Twitter and appeal and do everything else, but if Github gets it in its little Microsoft-owned corporate head that you are, somehow, not good, you’re gone and there’s nothing anyone can do. I think Emacs is worth a bit more than that.

              1. 6

                This doesn’t respond to what the previous comment said. One can host their own forge, and something like Sourcehut would allow people used to mailing lists to continue with little to no changes to their workflow.

                1. 1

                  AFAIK that was being considered at some point, but Sourcehut is sadly still in it’s alpha-stage (thought it’s stable enough for me).

            2. 7

              Strongly disagree that moving Emacs development to a proprietary site rather than a mailing list would be an improvement. I also think that it would be a mistake to get rid of copyright assignment — this is an important defense against copyright lawsuits, and preserves the GNU Project’s freedom of movement.

              I guess you assumed I meant “move the development to GitHub”, which I wouldn’t mind, but I was thinking more something like “use an instance of GitLab”, which is free software. There are many other similar options.

            1. 5

              Prelude is a wonderful starter config for Emacs. Thanks for the years of hard work!

              1. 2

                You’re welcome!

              1. 5

                Note that: Inheritance is also necessary to allow polymorphism …

                That’s not actually true: you can get polymorphism without inheritance, e.g. with overloading or generic functions.

                1. 7

                  This touches on a key reason I think OOP debates get so heated; the article describes OOP as three things mashed together, and people talk about it like it’s one thing.

                  It turns out encapsulation is really great! But inheritance is awful, and polymorphism is … occasionally useful? So of course if you talk about these things using one word, you’re not going to have a productive or fruitful debate.

                  Say what you mean.

                  1. 1

                    I would place inheritance in the rarely useful category.

                    It’s well suited to controls in a GUI and sometimes it can be a reasonable solution.

                    interface ICollection<T>
                    {
                        // if item is null throws ArgumentNullException
                        void Add(T item);
                        // ... many more methods here
                        // if item is null throws ArgumentNullException 
                        void Remove(T item);
                        // if items is null throws ArgumentNullException        
                        void AddRange(IEnumerable<T> items)
                    }
                    

                    Interfaces don’t allow you to enforce design invariants; any class that implements this interface can choose whether or not to allow null arguments to Add, Remove, and AddRange.

                    An alternative to defining an interface is to use an abstract class and the template method pattern.

                    public abstract Collection<T>
                    {
                        protected Collection<T>()
                        {
                            // code here
                        }
                    
                        // more code here...
                    
                        public sealed void Add(T item)
                        {
                            if (item == null)
                            {
                                throw new ArgumentNullException(nameof(item));
                            }
                            AddCore(item);
                        }
                    
                        // more code here...
                    
                        public sealed void Remove(T item)
                        {
                            if (item == null)
                            {
                                throw new ArgumentNullException(nameof(item));
                            }
                            RemoveCore(item);
                        }
                    
                       public sealed void AddRange(IEnumerable<T> items)
                        {
                            if (items == null)
                            {
                                throw new ArgumentNullException(nameof(items));
                            }
                            int itemIndex = 0;
                            foreach(T item in items)
                            {
                                if (item == null)
                                {
                                    string message = $"Item {itemIndex} in items is null";
                                    throw new ArgumentNullException(nameof(items), message);
                                }     
                                AddCore(item);
                            }
                        }
                    
                        // Child class must override this method.
                        protected abstract void AddCore(T item);
                        
                        // other methods that the child class must override...
                    
                        // Child class must override this method.
                        protected abstract void RemoveCore(T item);
                    }
                    

                    This use of inheritance allows the implementer of Collection to enforce invariants and reduce the burden required to implement its API. It’s certainly not always appropriate but the same is true of any other technique.

                    Alternatives to this design include at least the following:

                    • Having clients implement an interface that is passed to Collection’s constructor.
                    • Passing higher-order functions to Collection’s constructor.
                    • Traits if they are supported by the language.
                    1. 1

                      Subtyping is useful and code reuse is useful. Inheritance is a way of tightly coupling code reuse and subtyping but it leads to some odd patterns. For example, in Objective-C NSMutableString is a subclass of NSString but it’s not really subtype in a useful sense because it you can’t use it as a drop-in replacement: the immutability of NSString is an explicit and useful part of its interface. In reality you have a composition of string-like and mutable vs immutable. Being able to reuse the generic string-like logic in custom implementations is useful but conflating the ideas of ‘reuses implementation of generic string-like behaviour’ and ‘is a subtype of an immutable string’ often causes more problems than it solves. This is why traits or mixins and structural and algebraic type systems are increasingly popular.

                1. 16

                  Email is a widely implemented, federated, decentralized protocol. This inherently makes it closer to the internet that I want to be using. It’s worth emphasizing protocol, and not user interface. That means that I don’t need to force other people to interact with it the way I do.

                  On top of that, I find that I really dislike dealing with juggling and testing patches through pull requests. The experience just kind of feels clunky. I’d rather just pipe the email to patch(1) from my editor, test things out, comment on it, and if I like it, apply it with git am. But then again, I’ve met very few web UIs that I enjoy using.

                  I’ll take pull requests on github – code is code – but if you send me pull requests on github, don’t be surprised if it takes an email or two to for me to remember to review it.

                  1. 12

                    It’s worth emphasizing protocol, and not user interface.

                    I feel this is the kind of mindset that makes all these systems doomed to be relegated to comparatively small corners of the internet, rather than being the mainstream. At the end of that day what people really care about is Getting Stuff Done™ and not some fairly abstract argument about some protocol or the nature of the internet. Regardless of the validity of that argument, actually getting stuff done is just more important.

                    There’s loads of comparatively simple improvements that could be made to email (or IRC for that matter) which would vastly improve the UX. A good start might be adding a simple way to do basic typographical formatting which doesn’t bring in all of HTML/CSS, but people be like “nonono, plain text monospaced 78 column wrapped (or 76? 74? 72?) without attachments is the One True Way™ to send emails!” So the UX sucks. And thus few people use it.

                    I think this lack of pragmatism and “hacker conservatism” is really unhelpful and ultimately self-defeating. What we really need is a good look at email and the pain points people are running in to, and solve them in a way that makes it all less painful. This might require a compromise or two. This will, of course, never happen. I mean, we still haven’t solved bloody email wrapping problems after 40+ years even though the solution is simple and straightforward.

                    1. 4

                      But on the other hand ‘just get stuff done!’ leads to all sorts of negative side effects. One ought not just do things — one should do the right things, the right way.

                      1. 4

                        I think the solution to that is to start building protocols/applications/systems/specifications that do things the right way and allow people to get stuff done. Simply put, if the vast majority of people do things “the wrong way”, then there’s probably something wrong with “the right way” that prevents them from using it.

                        Most people just aren’t very idealistic when it comes to these kind of things. I think that’s okay because there’s a lot of things in the world to be idealistic about, and you can’t be about everything.

                    2. 3

                      On top of that, I find that I really dislike dealing with juggling and testing patches through pull requests.

                      I think the article is pretty clear that Github and Github-style pull requests are not the only alternative (and probably not a great choice).

                    1. 4

                      Martin says that it should be possible to read a single source file from top to bottom as narrative, with the level of abstraction in each function descending as we read on, each function calling out to others further down. This is far from universally relevant. Many source files, I would even say most source files, cannot be neatly hierarchised in this way. And even for the ones which can, an IDE lets us trivially jump from function call to function implementation and back, the same way that we browse websites. Outside of a book, do we still read code from top to bottom? Well, maybe some of us do.

                      I strongly think that one should still write code to be written, and not rely on an IDE to navigate it. This isn’t because I think we should avoid using powerful tools (I use Emacs, after all!) but because I think that powerful tools can lure us into writing systems more complex than they should be. It is kind of like the saying that you should never write the cleverest code you can, because debugging is twice as difficult as writing — and thus writing the cleverest code you can requires that you be twice as clever as you are when you debug it. I think that the corollary is that code which relies on the skill multiplier of a good IDE to write requires an IDE with twice the multiplier to debug.

                      1. 1

                        Did you mean to say “write code to be read”, or was that first sentence actually talking about writing code for the end purpose of writing code?

                        1. 1

                          Doh, yes — that is exactly what I meant to write!

                      1. 9

                        If you’re thinking of learning Perl or starting a new project in Perl, you might want to reconsider.

                        I don’t see anything controversial with this statement. You can apply it to any number of languages, not just Perl - Common Lisp, Pascal, COBOL. And I say this as a Perl aficionado.

                        Most languages never make it past compiling themselves. Perl has had a great run and is still super-fun and useful for those that know it.

                        1. 6

                          Hey, I start new projects in Common Lisp! It’s still a great choice.

                          1. 3

                            And I start personal projects in Perl… it doesn’t mean that corporations with multi-year maintenance horizons do, though.

                            1. 2

                              AFAIK google uses lisp and has contributed to sbcl. And fastmail uses perl.

                              1. 2

                                If Google uses lisp it’s for something incredibly specific and obscure. You absolutely could not start a new lisp project at Google.

                                1. 4

                                  The shambling corpse of ITA Software perhaps?

                                  1. 1

                                    I actually don’t know. I could look it up, but I couldn’t say if I did. ¯\_(ツ)_/¯

                        1. 8

                          I did run a site on werc for some time in the past. After dealing with its particularity it becomes a great midpoint between having a static site and having a dynamic site.

                          Of course, in my view, it is always more preferable to have a static site in majority of individual use cases.

                          1. 12

                            I would like to see more work put into engines which are static for normal users, but dynamic for logged-in users, e.g. the site author. It would be neat to integrate static site generation with dynamic posts, WebMentions &c.

                            1. 2

                              Varnish is probably what prevents that nice thing to happen, by doing the same thing as NAT for IPv4: it works without rethinking everything.

                          1. 48

                            I’ve read through a lot of these kind of discussions in the last week, and one thing that really strikes me is that they consist almost entirely of white people discussing this. This seems a bit odd to me because there are plenty of non-white programmers as well. I’d like to think that these people are more than articulate enough to raise these kind of issues themselves if they have a desire to, but thus far I gave not really seen much of that.

                            Quite frankly, I find that the entire thing has more than a bit of a “white saviour” smell to it, and it all comes off as rather patronising. It seems to me that black people are not so fragile that they will recoil at the first sight of the word “master”, in particular when it has no direct relationship to slavery (it’s a common word in quite a few different contexts), but reading between the lines that kind-of seems the assumption.

                            For me personally – as a white person from a not particularly diverse part of the world – this is something where I think it’s much wiser to shut up and listen to people with a life experience and perspective very different than mine (i.e. black people from different parts of the world), rather than try and make arguments for them. I think it’s a very unfortunate that in the current climate these voices are not well heard since both the (usually white) people in favour and opposed to this are shouting far too loud.

                            1. 28

                              It’s called White guilt. Superficial actions like changing CS terms and taking down statues are easy ways to feel better about oneself while avoiding the actual issue (aka: bike-shedding).

                              1. 5

                                I had the same thought: this is something that is easy to have an opinion about and feels achievable. That makes it very attractive to take action on, independent of the actual value it has.

                                1. 8

                                  It is easier to change the name of a git default branch and put that on your CV as an action demonstrating you are not racist, than it is to engage in politics and seek to change some of the injustices that still remain.

                                  1. 6

                                    Or to put it really on point: it’s easier for GitHub to talk about changing the default branch name on repos created on GitHub from ‘master’ to ‘main’ than it is for them to cut their contract with ICE.

                              2. 14

                                It’s not like you can guess someone’s race from a gravatar. Not to mention, one of the liberating features of the Internet is being able to hide your identity and be treated for what you say in stead of what you are. On the flip side that does mean everybody sees everyone as an adolescent white male.

                                In any case, there’s a black engineer expressing their thanks in the comment section of the OP.

                                1. 11

                                  I probably wasn’t too clear about this, but I did not guess anyone’s skin colour; I just looked at their profile pictures, names, etc. For example the author of this post is clearly white, as are the authors of the IETF draft he linked (I did a quick check on this), everyone involved in the Go CL was white, and in the Rubocop discussion everyone was white as well as far as I could tell – certainly the people who were very much in favour of it at the start. There certainly are non-white people participating – anonymously or otherwise – but in general they seem to be very much a minority voice.

                                  Or, to give an analogy, while I would certainly support something like Black Lives Matter in various ways, I would never speak on the movement’s behalf. It’s simply not my place to do so.

                                  On the flip side that does mean everybody sees everyone as an adolescent white male.

                                  Yeah … that’s true and not great. I try not to make assumptions on the kind of person I’m speaking to, but “talking” to just a name is very contrary to human social interaction and it’s easy to have a mental picture that’s similar to yourself and those around you. This is kind of what I was getting at: sharing of different experiences and perspectives is probably by far the most helpful thing and constructive thing that can move this debate (as well as several other things) forward, instead of being locked in the shouting match it is today.

                                  I have no illusions that this will happen, because far too many people seem far too eager to comment on the matter, and to be honest I’ve been guilty of that as well.

                                2. 15

                                  If we look back at how visceral the reaction to these types of ideas can be, and especially how that response is so often personally directed, it should be no surprise that someone who feels in any way marginalized or at risk in the software community might be reluctant to speak up.

                                  1. 15

                                    OK, so I think you’re referring to the Reddit Go thread (which was a dumpster fire of “I’m not racist but…” comments; for someone to get so upset about someone else’s internal code base is proof of some underlying issue).

                                    Here’s some things to think about:

                                    • “It seems entirely white people discuss this”: There’s a really obvious reason for this. Look at Google’s diversity numbers: their value of hiring vs attrition places the number of black people at Google at 3.7%. And yet the census reports 12.1% in the US are African American. Who do you think is going to be discussing this? They’re not here. They can’t be part of this conversation. Worse, black people leave Google faster than other demographics, so even when they get there they decide they don’t like it more and leave. Why would you work hard for your whole life to get a job at Google and then decide to leave? What is it about the software engineering environment that is toxic? Why bother getting upset and making a noise when you’ve already decided it’s hopeless and given up?
                                    • “It has a white savior smell”: It is incumbent on the privileged class to show allyship and help build equality for the underprivileged. It is unacceptable to put on blinkers and go “they’ll work it out”, as it ignores the systemic reasons why inequity exists. A big difference about what is happening now is that white people are going out to the streets and showing their allyship. These protests are very similar to those in Ferguson, except in Ferguson it was all black people. Nothing happened. Now that white people have come out, suddenly people start talking about “movements”. You can’t look to black people in CS and say “you overcome all the systemic problems” just like we can’t look to women in CSand say “you overcome all the systemic problems and please suck it up when you get battered with toxic behavior that’s just the way we are lol.” For the privileged class to sit back is for the privileged class to approve of what happens. “White savior” is a weaponized term to say that if you are white, you don’t get to help. Actually, if you are white, you absolutely should be helping.
                                    • “you should listen rather than make arguments for them”: Again, we are back to who do you listen to? Representation is so horrifically low. The Go thread raised up anyone who identified as black, had the same viewpoint as the mob and held that viewpoint as representative for the whole black community. You can’t just ask someone on the street and say “there you go, he said it”. You have to talk. And talk. And talk. And talk. To as many people as you can. Over and over again. I am so glad Google has the Black Googlers Network for exactly that sort of discussion.

                                    Names mean something. master/slave has clearly had it’s time. whitelist/blacklist (as in the Go thread) is unnecessary, a term that we basically invented, and is easily replaced. Would I change master to main? Probably not. But I’m certainly not going to come and say that attempting to move the needle, even if it doesn’t work or the needle move only a fraction, shouldn’t be attempted.

                                    Anecdote: Google offers a number of optional diversity training. I went to one that showed this video. I was in tears. It was so foreign to me and so horrific that I was crying at work and had to leave the room. That video is the result of white America doing nothing.

                                    1. 12

                                      I’m not really referring to the Reddit thread as such. Not only is Reddit really anonymous, so much of the time I have no idea who I’m dealing with, Reddit also has its fair share of … unpleasant … people. On Twitter Nate Finch mentioned he banned a whole truckload of people who had never posted in /r/golang before coming in from whatever slimepit subreddit they normally hang out in. Unfortunately, this is how things work on Reddit. There were some interesting good-faith conversations, but also a lot of bad-faith bullshit. I was mostly referring to the actual CL and the (short) discussion on that.

                                      As for Google diversity, well, Google is just one company from one part of the world. The total numbers of developers in India seems comparable or greater than the number of developers in the US, for example. I’ve also worked with many Brazilian developers over the years, so they also seems to have a healthy IT industry. There are plenty of other countries as well. This is kind of what I meant with the “outside of the Silicon Valley bubble” comment I removed. Besides, just because there are fewer of them doesn’t mean they don’t exist (3.7% is still >4k people) or that I need to argue things in their place.

                                      It’s one thing to show your allyship, I’m all in favour of that, but it’s quite another thing to argue in their place. I have of course not read absolutely anything that anyone has written on this topic, but in general, by and large, this is what seems to be happening.

                                      This is something that extends just beyond the racial issue; I’ve also seen people remove references to things like “silly” as ableist, but it’s not entirely clear to me that anyone is actually bothered by this other than the (undoubtedly well-intentioned) people making the change.

                                      The Go thread raised up anyone who identified as black, had the same viewpoint as the mob and held that viewpoint as representative for the whole black community.

                                      Yeah, this is a problem: “here’s a black person saying something, therefore [..]”. Aside from the fact that I wouldn’t trust such a post without vetting the account who made it (because, you know, /r/AsABlackMan) a single person commenting doesn’t represent anything other than that single person.

                                      An initiative from something like the Black Googler Network would probably be much more helpful than some random GitHub PR with little more than “please remove oppressive language” true-ism.

                                      If you’re telling people who have been used to these terms for years or decades that all of the sudden it’s racist and oppressive without any context or explanation, then it’s really not that strange that at least some people are going to be defensive. I really wish people would spend a lot more thought and care in the messaging on this; there is very little effort spent on actually building empathy for any of this; for the most part it’s just … accusations, true-isms, shouting. You really need to explain where you’re coming from, otherwise people are just going to be confused and defensive.

                                    2. 4

                                      This seems a bit odd to me because there are plenty of non-white programmers as well, especially if you look beyond the Silicon Valley bubble.

                                      Silicon valley is full of nonwhite programmers. White people are somewhat underrepresented in Silicon Valley compared to their percentage of the American population. And of course most of the world is not America.

                                      1. 3

                                        I’ve actually never been to the States, much less the Silicon Valley. I just dimly remember reading somewhere that it’s mostly white, but I probably just remembered wrong. I’ll just remove that part since it doesn’t matter for my point and I clearly don’t know what I’m talking about with that 😅

                                        1. 4

                                          In my previous company in SV (I was a remote engineer abroad, everybody else US based) we had literally 1 person on the team that was born and raised in the US, everybody else was from somewhere else. India and China were dominant, but not the only other countries.

                                          Other teams looked pretty much the same. CEO (+founder), VP of Eng and all team leads in Engineering were non US born and almost all non white too.

                                          I am now working for a different company with head-quarters in SF and it is a bit different. We still have pretty big mix of backgrounds (I don’t know how to express it better, what I mean is that they are not decedents of white Europeans). We seem to have more people that were born in the US yet are not white.

                                          Our European office is more “white” if you will, but still very diverse. At one point we had people from all (inhabited) continents working for us (place of birth), yet we were only ~30 people in total.

                                        2. 2

                                          Well, it’s full of programmers from Asian countries, to the point where I wouldn’t call their presence diverse. Being a Chinese/Indian/White male isn’t diversity, it’s a little bit more diverse. So while “nonwhite” is accurate, it’s not really the end game. Software engineering is massively underrepresented in women and in Black and Latinx.

                                          1. 6

                                            So who exactly sets the rules on what is diverse enough? Is it some committee of US Americans or how does that work?

                                            1. 1

                                              Ah okay so here we see the problem. It’s only diversity when there aren’t enough of them, then it stops counting as diversity once you actually have diversity and the goalposts shift once again.

                                          2. 4

                                            Quite frankly, I find that the entire thing has more than a bit of a “white saviour” smell to it, and it all comes off as rather patronising. It seems to me that black people are not so fragile that they will recoil at the first sight of the word “master”, in particular when it has no direct relationship to slavery (it’s a common word in quite a few different contexts), but reading between the lines that kind-of seems the assumption.

                                            Agreed that black folks are in the main far too sensible to care about this kind of thing.

                                            I don’t know that it is really so much about being a ‘white saviour’ (although that may be part of it); rather, I see it more as essentially religious: it is a way for members of a group (in this case, young white people) to perform the rituals which bind the group together and reflect the moral positions the group holds. I don’t mean ‘religious’ here in any derogatory way.

                                            1. 9

                                              Not sure about this specific issue, but in general there’s so much systemic stuff that it’s a bit much to ask black communities alone to speak up for everything. It’s emotionally exhausting if we don’t shoulder at least some of the burden, at the same time listening to and amplifying existing voices.

                                              To be honest I’d never really thought about the ‘master’ name in git before, and think there might be larger issues we need to tackle, but it’s a pretty low effort change to make. Regardless, the naming confused me anyway when I first used git and then just faded into the background. I’ll let black people speak up if they think it’s overboard, however, although I’d imagine there’d be different perspectives on this.

                                              1. 3

                                                Not sure about this specific issue, but in general there’s so much systemic stuff that it’s a bit much to ask black communities alone to speak up for everything. It’s emotionally exhausting if we don’t shoulder at least some of the burden, at the same time listening to and amplifying existing voices.

                                                Yeah, I fully agree. I don’t think they should carry all the burden on this and it’s not just helpful but our responsibility to be supportive both in words and action. But I do think they should have the initiative. Otherwise it’s just a bunch of white folk sitting around the table musing what black folk could perhaps be bothered by. Maybe the conclusions of that might be correct, but maybe they’re not, or maybe things are more nuanced.

                                              2. 2

                                                Really couldn’t disagree more — one of the big repository hosting services had this discussion just the other week. Much of the agitation came from Black employees, particularly descendants of enslaved Africans brought to America.

                                                I agree with you on one count, though: if you’re white and you don’t have any particular investment in this issue, you should probably keep your opinion on it to yourself.

                                                1. 4

                                                  Which discussion in particular are you referring to?

                                                  1. 2

                                                    The idea that this is being primarily driven by white people, specifically as a “white savior” exercise. The word “master” does bring up a painful legacy for lots of Black people, and with the context as muddled as it is with “git master,” it makes sense to defer to them on how they perceive it, especially in an industry where they’re so underrepresented.

                                                    1. 3

                                                      You mentioned that:

                                                      one of the big repository hosting services had this discussion just the other week. Much of the agitation came from Black employees

                                                      So I was wondering if you have a link or something to that discussion? I’d be interested.

                                                      1. 3

                                                        I wish I had something to share — the conversations have been internal and I wouldn’t want to breach confidentiality (any more than I already have). Once we’ve all forgotten about this, if there’s a blog post to share, I’ll thread it here.

                                                        1. 3

                                                          Ah cheers, I didn’t realize it was an internal thing.

                                                1. 10

                                                  Using red for instances where it has not been done and green for when it has been done creates the impression that doing it is good and not doing it is bad which is presumably not what you’re going for. Colour usage matters for perceptual reasons.

                                                  1. 5

                                                    I’m not designing my blog for anyone who cares more about the color of a checkmark than the use of language that makes people feel uncomfortable. Thanks.

                                                    1. 1

                                                      Ah I misinterpreted your position on the issue. My bad!

                                                    2. 3

                                                      I would prefer using green for when it is not done and red for when it is done.

                                                    3. 6

                                                      Do you know how good your sample is? Taken at face value, this list would seem to indicate that the real social power lies with those who advocate for change rather than those who wish terms to remain the same. I say this because almost every single instance on your list resulted in a change.

                                                      1. 5

                                                        And imagine situation where they rename everything once… but actual problems do not disappear. What a nightmare

                                                        1. 5

                                                          Good question. It’s definitely not a representative sample– I’ve added a disclaimer to the post.

                                                        2. 5

                                                          Another one (from 2020) for your collection: https://github.com/psf/black/issues/1363

                                                          1. 1

                                                            Thank you, I’ve added it!

                                                        1. 4

                                                          I have been doing a bit of JavaScript lately, and my thought so far is that the sync/async divide is a mistake, exposing details which shouldn’t matter in general. Seems like either code should always appear synchronous (and the runtime should do what’s necessary in the background) or it should always be asynchronous. But maybe I am missing something!

                                                            1. 7

                                                              C# solved this by doing both. Named async functions that return a value need a Task<> type. The async keyword is there for anonymous functions (which have inferred types).

                                                              The await keyword avoids “callback hell” but because you’re dealing with a reified Task and not just a colored function you can also call other functions on it and define strategies and such.

                                                                1. 1

                                                                  Great article! I think that’s part of why writing JavaScript has been so painful for me: I normally write in Go, which as Bob points out does all this right, and just works.

                                                                2. 6

                                                                  the sync/async divide is a mistake

                                                                  It is. Of course, the problem is, everyone puts up with this async/sync divide because of backwards compatibility.

                                                                  An ideal distillation of this would involve an async-only runtime, with a programming model that is sync by default. If you wanted to do async-style things, you could, but it’d be opt-in, and only for the type of work that was traditionally async, such as receiving from N sockets at once. Think of something along the lines of Win32’s WaitForMultipleObjects() as a primitive.

                                                                1. 3

                                                                  you want a modicum of security, so shell and tcl and php are out.

                                                                  What is wrong with TCL’s security? If anything, it is very easy to sandbox TCL — or at least I thought so.

                                                                  1. 7

                                                                    I recently had to write some JavaScript, and this was my own experience too. I chalk a lot of it up to my own inexperience with the ecosystem, but I also think that there’s a fair amount of accidental complexity. When I use modern JavaScript, with async/await, promises, anonymous functions &c. it feels a lot like it is trying to be a proper dynamic language like Lisp, but it is hindered by its syntax and its legacy.

                                                                    Honestly, I would rather write Lisp or even Scheme.

                                                                    1. 4

                                                                      Honestly, I would rather write Lisp or even Scheme.

                                                                      How about clojurescript? That’s a lisp with pretty good support for JS.

                                                                      There are a bunch of other lisps that compile to JS, too: https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS#lisp-scheme

                                                                    1. 35

                                                                      My view when systemd first crossed my radar (around the time Debian was making it’s decision about supporting/adopting systemd or not), I of course saw a lot of commentary about the negative aspects of the project.

                                                                      I’d imagine those criticism are still true: it seems unlikely the people involved in this have softened their views or language.

                                                                      But what has changed is my appreciation for the technical benefits of systemd as an init manager (and a few related tasks, e.g. the timers stuff to replace cron). I’m not that thrilled about the ever-increasing scope of the project as a whole, but I don’t use Linux as a desktop OS, so I think I’m shielded from a lot of the impact it has on e.g. Gnome etc.

                                                                      I tried (and eventually succeeded, from memory) to write an init script for a process, using the Debian provided ‘start-stop-daemon’ and an existing init file as a guide. This was not a productive or enjoyable experience for me, at all. I’d say I’m quite comfortable with shell as a scripting language in general, but the idiosyncrasies of producing a reliable init script were confusing and non obvious to me at the time.

                                                                      These days, I don’t think twice about either creating new systemd units, or using drop-ins to customise existing ones - does everything always work the first time? No. Is it an order of magnitude easier than a sysvinit script (IMO) to identify why it doesn’t do what you expect, and find a solution that will do what you expect? Generally yes.

                                                                      Edit: typo

                                                                      1. 18

                                                                        This is the thing I’ve loved most about systemd. Writing an init script for one distribution is a PITA. Writing one that works on multiple different linux distros makes me tear my effing hair out. The complexity of writing a shell script that conforms to certain parameters with a wide variety of “helpers” seems out of whack with what I want to do: ie: fire up a process and leave it in the background.

                                                                        Also, an init system that cannot track what child processes it has started, and needs a complicated system of pidfile management to control the process that doesn’t even work in many cases (it breaks as soon as the machine or process crashes, or gets killed without the proper signal being sent beforehand), is barely able to call itself “an init system”. It’s just what we always had, so in the proper UNIX way, everyone just dealt with it and nobody pointed out the big elephant in the room, in that it sucked hard.

                                                                        Now. systemd has it’s problems, and over-reach is definitely in there. I can’t count the number of times that I’ve had to figure out the “new hotness” way of configuring a GD static network interface, and every time I look at it systemd has new capabilities that it probably shouldn’t have. ( Following jwz’s maxim, I can’t wait for the systemd mail client), but pretending sysvinit was all good was insanity.

                                                                        1. 13

                                                                          It always bothers me a bit when systemd is compared to just init scripts, because those are not the only two options available (and never have been). I don’t really blame the casual Linux user like you, but on more than a few occasions the systemd people used “well, in init scripts it sucks even worse” as fallacious defence of their own shortcoming (you don’t need to rant, rave, and insult to be toxic).

                                                                          1. 8

                                                                            The only commonly used init system in Linux, used by all the major distros, was sysvinit. Yes, there was OpenRC, and upstart, and others, but none of them were ever widely adopted. Yes, Ubuntu developed upstart and it solved some of the problems in sysvinit, but was never widely adopted, so if you were writing a daemon for anything other than ubuntu, it was back to sysvinit, and all the pain that entailed. It’s great that there are other init systems that solve the problem, but if none of them are ever adopted, there’s really no value in it for people who write daemons.

                                                                            1. 7

                                                                              OpenRC is essentially just a continuation of sysV init, with all problems with it. I actually just have OpenRC start runit on my Alpine system, as that’s just easier than writing those scripts. I never looked at upstart.

                                                                              daemontools and the various projects it inspired (runit, s6, freedt, a few others) always seemed like a good solution to me. It solves most of the issues from SysV init and gives 90% of systemd for most use cases, but in a much smaller package. I don’t know why it was never widely adopted; perhaps it was timing, lack of documentation, lack of advocacy, or something else.

                                                                              1. 5

                                                                                For daemontools, it’s likely the fact that djb has a tendency to release a project and then immediately stop maintaining it, so there becomes a slurry of patches with no canonical blessed set for distros to maintain, and no upstream merging them.

                                                                                1. 2

                                                                                  Yeah, that partly explains daemontools; there’s also the whole license issue, which didn’t become clear until 2007 (when djb finally released his stuff as public domain; before that he rejected that a license was needed at all; also a problem with qmail, djbdns) which is why people needed to maintain patches instead of a “daemontools-maintianed” repo or whatnot.

                                                                                  But runit stems from 2004, and there are other daemontools-like systems from the same time period. So I don’t think that djb’s idiosyncrasy fully explain it.

                                                                                2. 3

                                                                                  Ah, daemontools. I can answer that one. Daemontools started as a project by Dan J Bernstein (hereafter referred to as djb), who is a brilliant mathematician and cryptologist, but the license for some of his projects, including daemontools is … troubling to a lot of the distributions, and he can be, well, prickly, to put it politely.

                                                                                  Wikipedia has the license as Public Domain, but ISTR that if you didn’t distribute it precisely as was specified he would complain a lot. It meant that a lot of distributions that wanted to use his software shied away from it.

                                                                                  It’s pretty awesome, but it still doesn’t solve a lot of the pain points that systemd solves.

                                                                                  This is all vague rememberings from about 20 years ago, but having dealt with djb in the past, I can definitely understand the reticence on the part of distributions to package his software, or rely on it for critical functionality. He makes Lennart look like a softy in comparison.

                                                                                  1. 2

                                                                                    runit is used in Void Linux which is a somewhat popular non-SystemD distro. It’s straight-forward to use.

                                                                                    1. 1

                                                                                      Yeah, I use Void; it’s comparatively small though (although gaining in popularity a bit as an Arch alternative, partly thanks to runit).

                                                                                  2. 3

                                                                                    Even if you were just targeting Ubuntu, upstart was pretty buggy and feature deficient. You could wedge it so bad that you had to reboot while iterating on a job. I’m pretty happy that systemd takes a features-welcome approach. Every time I think that I’ll have to use a shell stub I can find what I need with some man page searching.

                                                                                  3. 3

                                                                                    Right, I’m aware there are other options out there, and you’re right they should be part of the conversation when a distro is making decisions about what init to support in its packages.

                                                                                    But, for someone using a distro, even someone writing packages for a distro, you need to support what the distro supports. Yes you could also support extra init systems but you need to support what the distro supports.

                                                                                    1. 2

                                                                                      Yeah, I’m not faulting you for not mentioning it in your previous comment, it’s more of a general commentary about the wider discussion 😅

                                                                                  4. 5

                                                                                    I’m genuinely curious how someone can downvote an opinion as “incorrect”.

                                                                                    Oh wait never mind I just remembered this is the internet and someone will always be there to say “you’re wrong”

                                                                                    1. 6

                                                                                      I’ve had all sorts of things -1’d as “incorrect” or “troll” where I really struggle seeing how either can apply. Write a lengthy reply going out of my way to make sure it’s nuanced: -2 troll… Great, thanks 😒 Like you said: welcome to the internet 🤷‍♂️

                                                                                      1. 3

                                                                                        I’ve noticed this as well. Lobsters has always had explicit downvote reasons to discourage downvoting for silly things like “I disagree” or “your opinion clashes with my worldview and I’m salty.” But as we’ve grown I see those kinds of downvotes more and more.

                                                                                    2. 1

                                                                                      Systemd definitely achieves several good things, but it has technical, social and political faults. It is an improvement over init scripts, but it is also many other things — and some of those are strict regressions (I am thinking specifically of how it wantonly breaks nohup). Is systemd-as-it-is an improvement over a better system which doesn’t exist? I really don’t know.

                                                                                      1. 2

                                                                                        The kill-user-processes-on logout thing is no doubt annoying the first time you encounter it, but I’d suggest that it’s at worst a case of incorrect defaults (I honestly don’t even know what the upstream or distro defaults are).

                                                                                        I’m certain it has technical/approach faults, but in the grand scheme of things that one is pretty easy to ‘solve’.

                                                                                    1. 9

                                                                                      But here is where the problem lies, it’s surprisingly rare that I find myself editing only one file at a time.

                                                                                      And that’s why Emacs exists. It even has a best-in-class set of vim keybindings. And it has a wonderful extension language. It’s a Lisp Machine for the 21st century!

                                                                                      1. 15

                                                                                        That just means he needs to learn more Vim. It does indeed support tabs, and splits too, and IMO does it better than most IDEs. And you can get a file tree pretty easily too with Nerdtree. I have no issues with editing a bunch of files at once in Vim. Features like being able to yank into multiple registers is much more of a help there.

                                                                                        1. 8

                                                                                          I suspect one problem people have with vim and editing multiple files is that they only know about buffers, which can be a little tricky to work with, but I don’t think many people realise it does actually have tabs too.

                                                                                          I frequently open multiple files with vim -p file1 file2 which opens each file in a tab, and you can use gt, gT, or <number>gt to navigate them. There’s also :tabe[dit] in existing sessions to open a file in a new tab.

                                                                                          I generally find this pretty easy to work with and not much harder than doing something like Cmd-[ / Cmd-] as in some IDEs.

                                                                                          1. 3

                                                                                            There is some debate on whether tabs should be used this way in Vim. I used to do it this way and then I installed LustyJuggler and edited all my files without tabs.

                                                                                            But if it works for you, more power to you!

                                                                                            1. 3

                                                                                              As a sort-of an IDE power user, I would argue that editor tabs are a counter-productive feature: https://hadihariri.com/2014/06/24/no-tabs-in-intellij-idea/.

                                                                                              1. 2

                                                                                                That said, while you can work with tabs like this, that’s not entirely the idea of them. Tabs in Vim are more like “window-split workspaces” where you can keep your windows in some order that you like. With one buffer in one window per tab you do get a pretty similar workflow to tabs in other editors, but then again you could get a similar workflow with multiple buffers in one window even before Vim got tabs.

                                                                                                Guess tabs fall in the tradition of vim naming features different than one would imagine: buffers is what people usually understand as files, windows are more like what other editors call splits and tabs are more like workspaces.

                                                                                                1. 4

                                                                                                  Oh, to be clear I don’t have one buffer per tab. I do tend to use them more like workspaces as you say. Typically each of my tabs has multiple splits or vsplits and I’ll go back and forth between buffers - but having tabs to flip back and forth between semi-related things can be useful on a smaller screen too.

                                                                                              2. 3

                                                                                                One of the reasons why I love vim is that I find a lot easier to edit multiple files at once. I can open then with :vsp and :sp and shift-ctrl-* my way around them very fast, with NERDtree I can open a directory folder in any of these windows, locate the file, and there you go, I have them arranged in whatever way I want. It makes it super easy to read the multiple files and copy things around. I like my auto-complete simple, I find autocomplete distracting, so I just use ctrl-n, but I’m aware this is a fringe opinion, if you want a more feature rich autocomplete, You complete me works pretty fine for people that like these. Also, I can open any terminal with :terminal… My vim usually looks more like this https://i.redd.it/890v8sr4kz211.png nothing with to do with 1 file per time.

                                                                                                Does vim makes me super faster than everyone else? Probably not, it’s just a text editor, but it’s very maleable and I’ve been coding for many years now and I haven’t ever seen the need to not use it. When I need to work on a new language I just install a bunch of new plugins and things get solved.

                                                                                                Nothing against VS Code, but it’s also only super powerful with the right plugins and configurations, there’s more of it out of the box, but without them it would also just be a simple text editor.

                                                                                                1. 2

                                                                                                  What’s a good resource to start learning emacs?

                                                                                                    1. 1

                                                                                                      I gave emacs a try through mg(8), a small editor that ressemble emacs a lot (no LISP though) and is part of the default OpenBSD system. It comes with a tutorial file that takes you on a tour to discover the basics of emacs, starting with the navigation. This is like vimtutor, and it’s great !

                                                                                                      It also let you discover emacs as a text editor, AND NOTHING MORE! Which is refreshing and helped me reconsider its usefulness for editing text 😉

                                                                                                  1. 5

                                                                                                    I guess this is a bit off-topic, but here we go:

                                                                                                    This isn’t the first time Mozilla has gone over its users and overrode settings without asking. This makes me uncomfortable, so I’m considering alternatives. Which browser have you been using?

                                                                                                    1. 7

                                                                                                      The problem is that Firefox is the best browser, but the best isn’t good enough.

                                                                                                    1. 3

                                                                                                      I use Android, because I want to own my phone. Google is pretty bad about respecting ownership, but Apple is worse. And when it comes to privacy I can make an Android phone respect my privacy.

                                                                                                      I want to be able to run my own and others’ software on my phone; I want to be able to run Linux; I want to be able to run a real Firefox; I want to be able to run software that angers Google and Apple. I can do that with Android: I cannot do that with iOS. There’s just no competition.

                                                                                                      Edit: also, I want a headphone jack. I do not want a high-latency, flakey wireless solution when there is a low-latency, reliable wired alternative.

                                                                                                      1. 22

                                                                                                        Bram’s benchmarks are not using LuaJit. So when he mentions my benchmarks (on the mailing list at least) and presents the Vimscript2 vs Lua benchmarks, this is confusing. LuaJit is 10x faster.

                                                                                                        The Vim9 benchmarks are always structured as function definitions, because the Vimscript2 optimizer won’t work at script scope (i.e. outside of a function). And it sounds like “lambdas” will continue to be slow.

                                                                                                        The main disappointment for me is that existing Vimscript plugins won’t benefit from Vimscript2 optimizations, because Vimscript2 is a different language. If authors must rewrite plugins then I would prefer a well-engineered language (like Lua) instead of Bramscript.

                                                                                                        Given how bigoted and petty people are about syntax, my grand prediction is that the unpaired } will be the most disliked feature of Bramscript.

                                                                                                        1. 19

                                                                                                          If authors must rewrite plugins then I would prefer a well-engineered language (like Lua) instead of Bramscript.

                                                                                                          You know, Lisp would be a good choice for a well-engineered choice to extend an editor …

                                                                                                          1. 4

                                                                                                            Given how bigoted and petty people are about syntax, my grand prediction is that the unpaired } will be the most disliked feature of Bramscript.

                                                                                                            I remember people mocking it in Zimbu, so you’re right on the money.

                                                                                                            1. 3

                                                                                                              Out of interest - is Lua interpreter of VimL still in the making or it is paused indefinitely? That would be interesting thing to see in the future.

                                                                                                              But I agree, if there is plan to replace VimL with another implementation then it would be the best to either use WASM and compile any language to it or to use LuaJIT/V8 instead.

                                                                                                              1. 8

                                                                                                                Somewhat counter-intuitively, to make Lua the more popular/standard choice, it could be a good idea to make a translator from Lua to VimScript2, and then proceed to not support VimScript2 in NeoVim. This way, for plugin developers who want to support both Vim9 and NeoVim, Lua would be the reasonable “cross-platform” choice, automatically giving their plugins wider adoption with no extra effort required.

                                                                                                                I remember reading an article long ago which explained how this exact dynamic worked for some technology, but can’t surface any specific details from my memory. I kinda think it was maybe about Sun and Java, but not sure. I think it might possibly be called something like “platformization of a technology” by business people, but also not 100% sure about it. Basically, the idea is to force one’s competitor to become “just” exchangeable infrastructure. Ok, I think I remember now, and the article’s thesis about the Sun story was, that by making Java free, they wanted to make their hardware more popular, but instead they painted themselves into a corner of being “just an exchangeable platform/infrastructure for running Java”, where they were squashed by others.

                                                                                                                1. 6

                                                                                                                  This idea also comes up when talking about the python 2 to 3 transition. If, instead of releasing a 2to3 tool, they had released a 3to2 tool, folks might have focused on developing for 3 earlier.

                                                                                                                  1. 3

                                                                                                                    The biggest problem with Python 2 ↔️ 3 thing is that it’s virtually impossible to reliable translate code due to the nature of the changes in Python 3 and Python’s lack of typing info. Functions that previously returned/accepted str now return bytes, and it’s very hard to reliably detect 100% of all cases in Python.

                                                                                                                    1. 1

                                                                                                                      You’re right, and that’s part of why they started using mypy for everything at dropbox– to catch edge cases when transitioning.

                                                                                                                  2. 5

                                                                                                                    you’re thinking of spolsky’s commoditize your complements

                                                                                                                    1. 1

                                                                                                                      So it seems indeed, thanks!

                                                                                                                  3. 6

                                                                                                                    is Lua interpreter of VimL still in the making or it is paused indefinitely?

                                                                                                                    Why continue it? The patch is there for anyone to try. It’s too slow according to its author (ZyX), who later used parts of that work to implement the VimL parser in C (see :help nvim_parse_expression() ).

                                                                                                                    Once you have a parser it doesn’t really matter whether it was written in Lua or C. Problem is, Nvim currently only has a parser for VimL expressions–i.e. half of the language. ZyX later disappeared, perhaps driven mad or perhaps realizing that text editors are not a very good thing to spend one’s life on.

                                                                                                                    1. 3

                                                                                                                      Out of interest - is Lua interpreter of VimL still in the making or it is paused indefinitely? That would be interesting thing to see in the future.

                                                                                                                      It’s paused.

                                                                                                                    2. 3

                                                                                                                      Considering that conversion tools from Python, JavaScript, and TypeScript are mentioned, I would expect that a VimScript → VimScript2 tool would also be included.

                                                                                                                      1. 7

                                                                                                                        Such a tool could target any language, and therefore doesn’t answer the question “why Bramscript instead of an established, well-engineered, existing language”.

                                                                                                                        1. 2

                                                                                                                          Converting from VimScript to VimScript2 is probably going to be easier than converting it to pretty much anything else. Note that those Python/JS tools aren’t necessarily expected to be complete (” Ideally a conversion tool can take Python, JavaScript or Typescript code and convert it to Vim script, with only some things that cannot be converted.”).

                                                                                                                          Arguably, using VimScript is easier as you can use any ex commands without frobbing about. I think there is some value to that.

                                                                                                                          I believe Bram previously stated he doesn’t like Lua much (can’t find ref for that right now), and just “plug and play” a programming language in Vim is probably not so easy; the only two mainstream(ish) easily pluggable languages I can think of are Lua and Tcl.

                                                                                                                          But perhaps most importantly, I think Bram just likes working on this kind of stuff; he said so pretty explicitly actually: “Yes, it’s going to be a lot of work. But it’s the kind of work I enjoy doing”.

                                                                                                                          1. 4

                                                                                                                            But perhaps most importantly, I think Bram just likes working on this kind of stuff; he said so pretty explicitly actually: “Yes, it’s going to be a lot of work. But it’s the kind of work I enjoy doing”.

                                                                                                                            Creating language is fun, maintaining it - not so much.

                                                                                                                            1. 1

                                                                                                                              Bram has been doing this for a while… I think he’s perfectly capable to judge and decide what he finds “fun” or not.

                                                                                                                              1. 2

                                                                                                                                Still, I find having “fun” while creating language isn’t the main problem. The main problem is that others need then to deal with your language. And using another, established, and maintained by someone else, language in general is much easier. This would also provide access to broader amount of optimisations, implementations, libraries, etc. Ok it is nice that someone wants to create language, but IMHO Bram isn’t the best language designer out there. I would be much more happy if he would rather decide to go with something that is already there, and there is a lot of languages/technologies to pick:

                                                                                                                                • Lua
                                                                                                                                • many embeddable Lisps
                                                                                                                                • MRuby
                                                                                                                                • JavaScript

                                                                                                                                Or even ignore all of that and go with WASM so the language in which the extension is written doesn’t matter at all. The last thing I think would be the best option IMHO in current state, as even current VimL interpreter could be compiled as a WASM blob instead of being “built in” into editor itself. This would provide us a lot of flexibility and potential speedups by using well-established VMs.

                                                                                                                                1. 1

                                                                                                                                  having “fun” while creating language isn’t the main problem. The main problem is that others need then to deal with your language

                                                                                                                                  So don’t use Vim then, if you don’t want to do that. You don’t “need” to deal with this language; there are plenty of options.

                                                                                                                                  Aside from the technical arguments (which I don’t really care about, as I think it doesn’t really matter much), I find this kind of reasoning weird.

                                                                                                                                  1. 2

                                                                                                                                    Oh yeah, the ultimate argument - if you do not like part of X then GTFO. The “you do not like your government - go live somewhere else” argument. So instead of making things we like, we get attached to, we should abandon them instead of trying making them better. That is marvellous idea, that I completely ignore and treat as a lowest point of reasoning. I like Vim, I like using it, I like some ideas behind it, and I want it to be better and better. Partially that is why I have switched to NeoVim now, because I seen it as an advancement over stagnated Vim development in pre-8.0 version.

                                                                                                                                    Aside from the technical arguments (which I don’t really care about, as I think it doesn’t really matter much)

                                                                                                                                    Technical arguments are THE arguments, anything else doesn’t matter. Unfortunately, for me, Bram has very high NIH syndrome which I think that we all can agree that this is bad thing. “Making new things” because it seems “easy and fun” rarely is a good thing. There is a lot of work already done in matter of the performance, usefulness, libraries, and all the stuff around it, and ditching them just because? Does the Bram knows better? Is he some kind of the god that can do everything better than others? I highly doubt so. Nanos gigantum humeris insidentes is thing we should do, and reducing internal complexity of Vim is IMHO good thing. See how much of completely dead code (that could never end in Vim as the flags were excluding themselves) were removed by NeoVim.

                                                                                                                                    Just in case, I do not say that NeoVim is better than Vim, but for sure it make Vim advance faster since it became a thing. I like that both projects make advance the Vi-like editing, sometimes in way I like, sometimes in way I have doubts, but still, if you do not evolve, you are doomed.

                                                                                                                                    1. 2

                                                                                                                                      Does releasing something on the internet and having people use it automatically mean you have a responsibility to listen to “users” who feel they know better than you what to work on or how to fix problems?

                                                                                                                                      The problem with a lot of the discussion here is that there is nothing wrong with chiming in (“hey, I think solution X might be better for reasons Y and Z”), but there is a sense that something should be done different. And that is a rather entitled and toxic attitude.

                                                                                                                                      Imagine someone coming on your issue tracker and saying “hey, you should do X, because NIH”, and you reply that you don’t like X, and then this person would persist in telling me that I really should use X. I don’t know what your response would be, but mine would be to tell that person to get lost rather quickly. If my project is useful to you: great! And I’ll gladly accept suggestions, but telling me what I should do? Yeah nah, that’s crossing a line.

                                                                                                                                      I don’t see how Vim is any different from my small personal project.

                                                                                                                                      NIH syndrome which I think that we all can agree that this is bad thing.

                                                                                                                                      No, I don’t agree. Vim is Bram’s project. He works on it for fun. He likes inventing languages for fun. So he invents a language.

                                                                                                                            2. 0

                                                                                                                              But perhaps most importantly, I think Bram just likes working on this kind of stuff; he said so pretty explicitly actually: “Yes, it’s going to be a lot of work. But it’s the kind of work I enjoy doing”.

                                                                                                                              That only thing that troubles me about your conclusion, is the delicacy with which you reached it :) That is, it is obvious to anyone watching the vim_dev mailing list and studying Vim’s architecture, that most decisions are driven by NIH fetish.

                                                                                                                              1. 2

                                                                                                                                So? It’s Bram’s project; he works on it for fun, he works on the kind of things he finds fun.

                                                                                                                                1. 1

                                                                                                                                  Pretty sure that’s not the tagline on vim.org, nor in the help files, nor does Bram himself raise such an invincible retort against criticism. But it’s a comfortable reductionist hole for ending discussions.

                                                                                                                      1. 11

                                                                                                                        Brave is just a browser which hides ads (which every browser should do, because ads are a cancer on the Internet) and displays its own (which no browser should do — but users are free to install whatever software they want). And hey, it even adds a way for sites to make money if they want.

                                                                                                                        I don’t use Brave, I’ve never downloaded it, but it’s a-okay by me. Don’t want people to view your content without paying? Then don’t display it to them.

                                                                                                                        1. 10

                                                                                                                          Besides potentially putting ads on sites that have deliberately chosen not to run any, Brave has done some other sketchy things. I don’t know if they still do, but they used to run those “we’re fundraising on behalf of this site” notices showing on sites that had no affiliation with them at all. Hopefully Eich finally got or listened to some lawyers and was told why that’s a bad idea, but it’s always seemed to me to be one of the classic desperate tactics of a certain class of crypto-fundraising scam.

                                                                                                                          1. 2

                                                                                                                            There should at the very least be some program for websites to say that no, they’re not interested in money from Brave (that’s the idea, right? Brave puts ads on the website and gives a portion of the revenues to the website owner?).

                                                                                                                            1. 8

                                                                                                                              My understanding is that Brave removes a site’s ads, and adds their own, then holds the money made by the impression hostage, splitting the money with the content creator if they ever come forward.

                                                                                                                              1. 4

                                                                                                                                Brave does not add their own ads to a site. They block the sites ads and provide a way for people to tip registered publishers, or auto-donate a share of a set amount based on time spent on the site. If the site is not registered they don’t receive the tips and they are returned to the donator.

                                                                                                                                Brave has its own ads that are part of the application and appear as pop up notifications unrelated to the site being visited. These are opt-in and users get a share of the ad revenue for seeing them.

                                                                                                                                1. 4

                                                                                                                                  If the site is not registered they don’t receive the tips and they are returned to the donator.

                                                                                                                                  Right, so by using Brave you’re standing on Madison Avenue in NYC screaming “HERE’S PAYMENT FOR YOUR CONTENT!” but their office is actually in Hollywood. It’s not stealing if they don’t accept my payment, right?

                                                                                                                                  1. 2

                                                                                                                                    Ko te mea whakarapa kē, I’m not familiar with American geography so don’t get your analogy. But it doesn’t matter - I wasn’t debating Brave’s model, I was correcting your misunderstanding of how Brave works.

                                                                                                                                    1. 3

                                                                                                                                      I get it. Thanks for pointing out my misunderstanding! As for US geography, the two locations are on opposite sudes of the US. Point being, if I try to pay you, and you don’t take my money because I am trying to pay in the wrong place, I didn’t pay.

                                                                                                                                    2. -1

                                                                                                                                      It’s not stealing full stop, any more than looking inside the books at a bookstore is.

                                                                                                                                      1. 3

                                                                                                                                        Bookstores could choose to sell books in shrink wrap, but choose not to.

                                                                                                                                        If ad based businesses wanted to give their content away for free, they wouldn’t put ads on their pages. It’s all about intent, and by blocking ads, you intend to deprive the creator from their source of revenue for your use of their content. Why isn’t that theft?

                                                                                                                                        1. 2

                                                                                                                                          Bookstores could. If I opened the shrinkwrap, read the book, put it back on the shelf and left, I would not have committed theft (possibly property damage).

                                                                                                                                          Websites could refuse to show me their content until I view an ad. They could even quiz me on the ad to make sure I paid attention. If I somehow circumvent that, I’m committing illegal access to a computer system (which, I believe, is a felony in the USA).

                                                                                                                                          Theft deprives the victim of property, which is taken by the thief.

                                                                                                                                          Now, you could argue that it’s wrong (fwiw, I’m sympathetic to that view), but if you use words contrary to their straightforward definitions (in law), I’m going to call bullshit.

                                                                                                                                  2. 2

                                                                                                                                    It seems they can add ads to site without ads. The original article complains about this (for example, in the very last paragraph). I wonder where ads are added and I would also be worried if ads are presented in my own ad-free website.

                                                                                                                                    1. 2

                                                                                                                                      Definitely; if a portion of my userbase started seeing ads on my personal website, I would seriously consider at least adding a banner or something telling them that the ads they see aren’t mine and that their browser is adding ads on my ad-free page.

                                                                                                                                      Actually, I should probably get Brave and check out how that whole thing works.

                                                                                                                                      1. 2

                                                                                                                                        It seems ads are displayed as notifications. See https://whatisbat.com/2019/04/25/how-to-turn-on-brave-ads-and-earn-bat-with-the-brave-browser/ for a screenshot. Fine by me.

                                                                                                                                        1. 5

                                                                                                                                          Ah, if it just blocks ads in the web content area and keeps all ads in the chrome or in notifications or someplace else where it’s obviously from the browser itself, that’s not really an issue at all.

                                                                                                                              1. 2

                                                                                                                                He’s not wrong about some facets of what he says, particularly that given a real-world identity one can just rely on the existing legal system to enforce contracts. But here’s the thing: the existing legal system is really, really expensive (in the U.S., we spend about 38% of GDP on government). Is it possible to use something like a blockchain to provide many of the same benefits more cheaply and/or more accountably and/or with less susceptibility to corruption?

                                                                                                                                I don’t know, but it’s an interesting question. We’ll always need some form of physical government to provide physical security, but do we need a government to provide financial security?

                                                                                                                                1. 4

                                                                                                                                  Is it possible to use something like a blockchain to provide many of the same benefits more cheaply and/or more accountably and/or with less susceptibility to corruption?

                                                                                                                                  I’m a big cryptocurrency fan but I don’t think that anything like blockchains could possibly provide any government services in any sort of useful fashion. It very quickly degrades to real world identity problems that cannot be solved well without trust. If you have trust, you don’t need a blockchain.

                                                                                                                                  1. 3

                                                                                                                                    the existing legal system is really, really expensive (in the U.S., we spend about 38% of GDP on government)

                                                                                                                                    Enforcing legal rules (courts and law enforcement) is a small part of that budget.

                                                                                                                                    https://www.thebalance.com/u-s-federal-budget-breakdown-3305789

                                                                                                                                    The discretionary budget will be $1.426 trillion. More than half goes toward military spending, including the Department of Veterans Affairs and other defense-related departments. The rest must pay for all other domestic programs. The largest are Health and Human Services, Education, and Housing and Urban Development.