1. 5

    Adopting the Contributor Covenant

    I am not too happy about this. I believe that all users should be treated equally, but something about these recent CoC changes just destroys communities:


    Off topic, I see that you are the author of the linked post. I also see that you have more posts than comments:


    Is it your intention to just use this platform to advertise for GitHub?

    1. 17

      I think codes of conduct are good. They’re important for making community norms explicit, and as tools to change community norms that are inappropriate. Both of these are important for marginalized members of the community.

      Something important to remember is the paradox of tolerance. If you’re willing to tolerate the intolerant, the intolerant will eventually turn the community into an intolerant community.

      The code of conduct that git has adopted is a pretty relaxed one. As long as you’re not a jerk you won’t even have to think about it.

      1. 10

        I’m not a CoC-fan either (though primarily because it implicates corporate professionalism (ala anti hacker culture) than freedom of speech issues), but I still wonder. What examples are there the “Contributor Covenant” in practice. When has it helped in ways that a simple “be kind and respectful” wouldn’t have?

        Also don’t forget that it’s this specific document that’s far more controversial than any self-written community guidelines or mailing list rules. I for example still don’t understand what’s so great about it specifically. You say it makes community norms explicit, but most of the time, it’s just a copy-pasted document from outside said community.

        1. 4

          While I think that code of conducts are probably a good thing, I don’t share your optimism about the Contributor Covenant.

          I admit I haven’t read the CC closely since a very early version[0], but what I remember of it was quite vague (perhaps this is what you mean by “relaxed”?). Moreover, its focus on “professionalism” thoroughly undermines its goals of inclusion, and (for people whom that isn’t reason enough) is counter to the hacker ethos.

          If you’re looking for a code of conduct similar to the CC, better (not perfect IMO, but much better!) examples include the Slack, Rust, and Django CoCs.

          [0]: which I really wanted to like, up until I suggested a minor clarification to the text and then was … promptly blocked by the author.

          [1]: Note: a one- or two- page CoC isn’t nearly enough space to make community norms explicit to the point where every decision to fire or censure a moderator won’t devolve into a flamewar (worse yet, it may invite exegesis). For comparison, the IWW—which wikipedia describes as an anarchist organization—has a process document that is about about 100 pages long. A CoC is not a process document.

          1. 2

            Thanks for the link regarding the use of the word “professionalism”. I’d like to note that the term is last in a list of stuff that’s example of what not to do, so it’s not front and foremost in the main text.

            I’d also like to note that the term “hacker ethos” is similarly coded, as “hacker culture” is historically coded male and privileged. If there are attempts to reclaim the term, I’d love to have some more information to read about that.

            I do agree that the CC is maybe a bit too brief, and not enough to prevent acrimonious rules-lawyering.

            1. 4

              “hacker culture” is historically coded […] privileged

              Is it? Before these excessive amounts of money poured into tech in the late 90s, being part of hacker culture implied a certain danger in general society, socially but also physically.

              (no argument on it historically being a male domain)

              1. 2

                Re: the term “privileged” - up until the late 90s, just accessing a piece of computing machinery implied access to quite a bit of disposable income. I realize the word has more connotations than just material wealth, but it’s certainly a big part of it.

                1. 5

                  I grew up in a western “working poor” situation and got my home computer in 1990. It was horribly outdated by that point, but computing access was one of these situations where “trickle down” actually worked because those with the money had lots of motivation to go with the latest and greatest and got to get rid of their stuff from last year. Two or three iterations later it became affordable for those who didn’t really have the money but the interest in pursuing the topic.

                  Sure, somewhere in the poorer parts of Africa or Asia widespread access to computing is still not a given today (although smartphones are making inroads), but that’s generally not what the people mean when designating others as “privileged”.

                  1. 4

                    Stepping back from a particular time period, “hacker culture” has a long history, and that history is mostly students at prestigious universities and colleges (MIT, Stanford). Now, not all of these students were personally affluent, but by attending these seats of learning they were privileged.

                    In the aggregate, it was easier to get involved in computing and hacking if you were part of an affluent milieu, or if you were not, was encouraged to study - and more importantly, had the opportunity to study, instead of for example, working for a living. Both contexts imply disposable “income” - either in money, or in the acceptance of opportunity cost in preparing a young person for higher education.

                    1. 3

                      Both contexts imply disposable “income” - either in money, or in the acceptance of opportunity cost in preparing a young person for higher education.

                      So Europeans (no matter their intersectionality in other aspects) are off the scale thanks to access to higher education being taken care of, for the most part.

                      If we collect some more of these properties that cover entire continents, everybody is privileged, rendering the term meaningless.

                      1. 4

                        Higher education in much of Europe may be gratis in regards to attendance fees, etc, but there are not enough places for everyone who wishes to attend them. So you still have a situation where more well-to-do are able to prepare their offspring for the competition of attending by extra study time, language study abroad, etc etc.

                        Anyway, I don’t think it’s productive to continue this discussion. We obviously have different meanings of the word “privileged”, and that’s where the rub lies. Thanks for taking the time to respond.

              2. 2

                I’d also like to note that the term “hacker ethos” is similarly coded, as “hacker culture” is historically coded male and privileged.

                Male yes, but I think irrelevant. Privileged, no.

                It’s pretty tough to pin down a strict definition of “hacker ethos.” To me it means tinkering with computers and soaking in the culture of bbs and meetups and reading through books like Steven Levy’s Hackers [0] and stacks of 2600.

                But I’m fairly young and there are many different experiences.

                Historically, and currently, the vast majority has been written by males but I think the hacker ethos is not exclusive to non-males and the difference is around curiosity and knowledge sharing over anything gender-specific.

                Note that I think it includes many characteristics of culture that aren’t specific to hacking.

                But I don’t think the hacker ethos is privileged at all. It’s focus on low resource environments and DIY and sharing is as close to anti-privileged as you can get.

                My own first experiences with computers was through a public school and library and I didn’t have access to computing resources for many years. MIT hackers were great, but they aren’t everyone. Visiting hackers in many countries shows similar tinkerers and low/zero resource learning systems. It was really neat meeting hackers in Kampala who grew up programming on raspberry pis, getting electricity through creative means because their home didn’t have the electricity grid.

                So while there were certainly hackers with lots of resources, there were (and still are) many without privilege.

                [0] https://en.wikipedia.org/wiki/Hackers:_Heroes_of_the_Computer_Revolution

            2. 3

              Codes of conduct should only be needed if and when bad conduct repeatedly and systematically occurs. I have never come across any such bad conduct in my many years of working on free software so I can only assume it is not wide-spread. It would be enlightening to see some examples of the bad conduct which led the Git project into adopting this code. If there are none they’re on thin ice in adopting it as far as I’m concerned, especially since these codes themselves often lead to strife.

              1. 6

                Codes of conduct should only be needed if and when bad conduct repeatedly and systematically occurs

                By that time it’s too late, the damage is done.

                Much like political constitutions, it’s best to get these things in place before things get bad, and when everyone is on the same page.

                1. 10

                  It’s possible that the way that you experience the world is not the way that marginalized people experience the world. And maybe we should be focusing on making it easier for them to contribute, rather than the people who are least marginalized.

                  Git is part of the larger open source community, and part of the larger computer science community, both of which have had many problems over the years. You can find many examples of this if you google “open source sexual harassment”. Linus Torvalds, who started the Git project, is famous for his abusive rants. When we’ve seen so many examples of fires breaking out in other similar projects, it seems sensible to get a fire extinguisher.

                  1. 13

                    Linus Torvalds, who started the Git project, is famous for his abusive rants

                    His rants were abusive in the regard of someone who he considered “dumb” at the time, or similar. To my knowledge he wasnt ranting at someone because of their race or gender identity. Do you have evidence to the contrary? Else it comes off as you slandering him, which I wont stand for.

                    1. 6

                      It’s possible that the way that you experience the world is not the way that marginalized people experience the world

                      I’m not sure it’s wise to tell random folks you likely never met (or in case of standardized documents: whole communities) that they’re not marginalized as if speaking from authority.

                      1. 2

                        Linus Torvalds, who started the Git project, is famous for his abusive rants.

                        I love Linus “rants” and they are not abusive, they just use colorful language, which is refreshing.

                        You can only interpret these texts as abusive if you are less than 12 years old.

                        1. 10

                          (the twitter link leads to a post in which SS calls Ted Tso a ‘rape apologist’)

                          Please note, I am not diminishing what rape is, and or any particular person’s experience. However, I am challenging the use of statistics that may be hyperbolic and misleading … – Ted Tso

                          That Ted Tso?

                          Throwing epithets does not a truth make. In this case Tso was called a ‘rape apologist’ but that does not make him one, it only means someone attached a label to him because he dared to disagree. Disagreement is not the same as bad conduct. Sometimes it can be solved by discussion, sometimes there is no solution other than acceptance of the fact that people disagree. Let it be, let them be, they have the same right to an opinion as you have.

                          (to make it clear, I realise that cup posted this link as an example of how these policies lead to strife)

                          1. 10

                            Remember the Halloween documents [1], Microsoft’s infamous plan to derail free software in general and Linux in particular? Just image what they would have been able to achieve by strategically calling out developers as ‘rape apologists’ and such.

                            Maybe someone did realise this after all? Identity politics is a potentially devastating way to break up communities, and many of these ‘codes of conduct’ can be traced back to this type of politics.

                            [1] https://en.wikipedia.org/wiki/Halloween_documents

                      2. 4

                        I am not too happy about this. I believe that all users should be treated equally, but something about these recent CoC changes just destroys communities:

                        I’m actually rather surprised that it all happened so quietly. I guess it was overshadowed by the RMS-situation.

                        1. 8

                          Me neither, identity politics - the basis of the contributor covenant - has no place in free software communities - or any other community for that matter. It only serves to create factions where none should be, it raises (often trivial) differences between individuals to their defining characteristics and uses those to split communities into groups, groups into hierarchies of oppressed and oppressors. To what purpose, other than to create strife? It is totally antithetical to the famous New Yorker cartoon of the dog-with-a-keyboard telling the world that “on the internet, nobody knows you’re a dog” [1].

                          Sendmail was written is and maintained by Eric Allman who was and is openly gay. He’s married to Marshal McKusick of BSD fame. Nobody cared. Nobody cares. That is how it should be and how it was, but that is not how it will be if identity politics really takes hold because Allman will find himself pushed into a certain slot (white [-10] middle-aged [-6] gay [+7] man [-10]) instead of just being known as ‘the guy who developed Sendmail’. Same for McKusick, Same for, well, everyone else.

                          The History [2] and Talk [3] section on the Contributor Covenant article [4] on Wikipedia is telling in this respect: criticism is silenced with a claims of ‘The situation is completely solved.There is no need for this outdated section’.

                          [1] https://en.wikipedia.org/wiki/On_the_Internet,_nobody_knows_you%27re_a_dog

                          [2] https://en.wikipedia.org/wiki/Contributor_Covenant

                          [3] https://en.wikipedia.org/wiki/Talk:Contributor_Covenant

                          [4] https://en.wikipedia.org/w/index.php?title=Contributor_Covenant&action=history

                          1. 3

                            New contributors can be assured that the Git community is behind this adoption with the introduction of the Code of Conduct, Acked-by 16 prominent members of the Git community.

                            … out of 1316 contributors currently listed on https://github.com/git/git.

                            1. 1

                              Thanks. I was trying to learn what such a vague statement meant.

                            2. 3

                              I also see that you have more posts than comments […] Is it your intention to just use this platform to advertise for GitHub?

                              All five posts are “Git highlights” blog posts. Nothing is specific to GitHub, other than their being hosted on GitHub’s blog.

                            1. 2

                              Hmm, this looks pretty cool. I wonder how it compares to IHaskell

                              1. 6

                                Steve could also be ruthless with his feedback. In my first meeting with him to present what I had been working on (which was held on a Saturday morning), he looked at the demo for 5 minutes and told me I had “ruined NeXTSTEP” (the software platform).

                                What a garbage human being. I’m glad he’s dead–he promoted toxic culture and practices that as a sector we’re all still working to purge.

                                1. 4

                                  I strongly recommend Pirates of Silicon Valley if you want to see more of their personalities. Wozniak says it’s the only one that depicts them accurately. Here’s clips of jobs.

                                  Regarding OP, the next thing he does is go on stage getting applauded for others’ work. Bill Burr did my favorite standup on Steve Jobs talking about that. It applies to a lot of other leaders in the tech industry, too.

                                  1. 2

                                    Both the TV movie and the book it’s based on, Fire in the Valley, are quite wonderful.

                                    1. 2

                                      “I GOT THE LOOT, STEVE!”

                                      I love that movie.

                                    2. 2

                                      Somehow, when it comes to Jobs, “I’m glad he’s dead” is more appropriate coming from friendlysock than from angersock.

                                      1. 2

                                        He almost ran me over once, on his way to park his Mercedes across two handicapped spaces. I’m glad that bitch is on ice.

                                      1. 23

                                        Nix is one of those tools where you don’t know what you aren’t getting until you get it. There are so many things wrong with this post, but I only know that because I spent weeks wrestling with lots of those issues myself.

                                        You basically need to read all the nix pills (https://nixos.org/nixos/nix-pills/), the nix manual, the nixpkgs manual and the nixos manual in a loop gradually filling in what is going on… which takes a long time.

                                        Nix is very confusing at first, but enables things that you would not have thought possible once you know what you are doing. The core people don’t seem to evangelize much because it is just one of those tools that solved their problems so well, they don’t have to care about the outside world anymore.

                                        I use nixos for my laptop, desktop and a few servers, have all my machines config under version control and can roll the machines back to any version whenever I want, remote administer them, build an install on one computer, test it in a VM and then ship it with a single command to another machine. I won’t go back to another OS despite there being room for improvement, because no other OS comes close in terms of what you can do (my path has been windows -> ubuntu -> arch linux -> freebsd -> openbsd -> nixos).

                                        1. 18

                                          I use NixOS on everything and completely agree. It’s a massive investment. It was worth it for me, but it shouldn’t have to be a massive investment. Need better tooling and docs.

                                          1. 5

                                            Yeah, there are lots of things I wish I could explain, but the explanations take a large investment. Take for example the complaint about making a new language instead of using something existing… It seems sensible on the surface, until you understand deeply enough to know why laziness is needed, and features like the pervasive use of interpolation to generate build scripts… Once you understand those, you know why a new language was made.

                                            The lack of tooling IS a valid complaint, and the fact the language isn’t statically typed could also be a valid complaint, but the community is growing despite all those issues, which is a good sign.

                                            1. 6

                                              I’m hoping https://github.com/haskell-nix/hnix will help with that point, and the tooling.

                                          2. 6

                                            You basically need to read all the nix pills (https://nixos.org/nixos/nix-pills/), the nix manual, the nixpkgs manual and the nixos manual in a loop gradually filling in what is going on… which takes a long time.

                                            I’ve tried reading all of this but I found it all horribly confusing and frustrating — until I read the original thesis on it, which I still think is (perhaps surprisingly) still the best resource for learning how nix works. It’s still a pretty big investment to read, but imho it’s at the very least a much less frustrating experience than bouncing from docs to docs.

                                            (I wonder if the same is true of the NixOS paper?)

                                            1. 3

                                              How do you manage secrets in configuration files? Passwords, ssh keys, tls certs and so on. If you put them into a nix-store they must be world-readable, right?

                                              One could put a reference to files outside the store in configuration files, but then you loose a bit of the determinism of NixOS and it’s not always easily possible with third-party software to load e.g. passwords from an external file anyways.

                                              Besides the learning curve, that was the single big problem which kept me from diving deeper into the nix ecosystem so far.

                                              1. 7

                                                You are right, no passwords should ever go in the nix store.

                                                The encryption key for my backup script is in a private root owned file I put under /secrets/ . This file is loaded in my cron job so the nix store simply references the secret but doesn’t contain it. This secret dir isn’t under version control, but is backed up with encrypted backups.

                                                Every daemon with secret config I have seen on nixos has a “password file” option that does the same thing.

                                                1. 3

                                                  How do you manage secrets in configuration files?

                                                  For my desktop machine I use pass with a hardware key. E.g. nix (home-manager) generates an .mbsyncrc with

                                                  PassCmd "pass Mail/magnolia"

                                                  For remote machines, I use nixop’s method for keeping keys out of the store:


                                                2. 1

                                                  Nix is one of those tools where you don’t know what you aren’t getting until you get it. There are so many things wrong with this post

                                                  I have to disagree, but not with the second sentence - I was sure as I wrote the post that it was full of misconceptions and probably outright errors. I wrote it in part to capture those in the hopes that someone can use them to improve the docs.

                                                  But to disagree with the first sentence, I was keenly aware through the learning and writing that I was missing fundamental concepts and struggling to fill the gaps with pieces from other tools that didn’t quite fit. If there is indeed a whole ‘nother level of unknown unknowns, well, that’s pretty disheartening to me.

                                                  1. 1

                                                    I can’t speak for your experience, but that’s how it was for me anyway, on the plus side it also meant nix solved more problems I was having after I understood better. I even thought nix was over complicated to the point I started writing my own simpler package manager, only to find nix had solved problems I ran into before I knew what they were.

                                                1. 4

                                                  The subtext of this article is hilarious: that GPG is so hard to use that someone decided that it might be less painful to just rewrite the damn thing.

                                                  1. 6

                                                    It’s no secret that GPG shows its age, but the part that the author has rewritten is still only a small fraction of gnupg’s features.

                                                    1. 2

                                                      agreed. another reading - the part of gpg worth using is not worth using gpg for, given the bulk that comes with it.

                                                    1. 3

                                                      Cool (and encouraging) analysis. Does this account for putting extensions in the default-extensions in a .cabal file?

                                                      1. 3

                                                        It doesn’t. I’d expect at least the relative frequency to be similar, but this could very well increase how frequently extensions pop up. But I think that it’s probably much more common to enable extensions on a file-by-file basis than a project basis.

                                                        It’d be cool to see what effect adding those back has, but it’s probably not doable with the GitHub API.

                                                        1. 5

                                                          I wouldn’t be surprised if adding it in pushed the most popular ones higher, because why worry about which files need OverloadedStrings? But that’s just a random guess, and it may be that not enough people use the feature for it to matter.

                                                      1. -1

                                                        As one insignificant user of this language, please stop adding these tiny edge case syntax variations and do something about performance. But I am one small insignificant user …

                                                        1. 58

                                                          This is exactly the attitude that leads to maintainers’ burn outs.

                                                          Do realize this:

                                                          • Adding syntax variations is not done at the expense of performance, different volunteers are working on what’s more interesting to them.
                                                          • Python is not a product, and you’re not a paying customer, you don’t get to say “do this instead of that” because none of the volunteer maintainers owes you to produce a language for you. Just walking by and telling people what to do with their project is at the very least impolite.
                                                          • If you want something to happen in an open source project, volunteer to do it.

                                                          (None of this is aimed at you personally, I don’t know who you are. I’m dissecting an attitude that you’ve voiced, it’s just all too common.)

                                                          1. 23

                                                            Python is not a product, and you’re not a paying customer, you don’t get to say “do this instead of that” because none of the volunteer maintainers owes you to produce a language for you. Just walking by and telling people what to do with their project is at the very least impolite.

                                                            I agree with the general direction of your post, but Python is a product and it is marketed to people, through the foundation and advocacy. It’s not a commercial product (though, given the widespread industry usage, you could argue it somewhat is). It’s reasonable of users to form expectations.

                                                            Where it goes wrong is when individual users claim that this also means that they need to be consulted or their consultation will steer the project to the better. http://www.ftrain.com/wwic.html has an interesting investigation of that.

                                                            1. 2

                                                              Where it goes wrong is when users claim that this also means that they need to be consulted or their consultation will steer the project to the better.

                                                              Wait, who is the product being built for, if not the user? You can say I am not a significant user, so my opinion is not important, as opposed to say Google which drove Python development for a while before they focused on other things, but as a collective, users’ opinions should matter. Otherwise, it’s just a hobby.

                                                              1. 5

                                                                Sorry, I clarified the post: “individual users”. There must be a consultation process and some way of participation. RFCs or PEPs provide that.

                                                                Yet, what we regularly see is people claiming how the product would be a better place if we listened to them (that, one person we never met). Or, alternatively, people that just don’t want to accept a loss in a long-running debate.

                                                                I don’t know if that helps clarifying, it’s a topic for huge articles.

                                                                1. 3

                                                                  I often find what people end up focusing on - like this PEP - is bike shedding. It’s what folks can have an opinion on after not enough sleep and a zillion other things to do and not enough in depth knowledge. Heck I could have an opinion on it. As opposed to hard problems like performance where I would not know where to start, much less contribute any code, but which would actually help me and, I suspect, many other folks, who are with some sighing, migrating their code to Julia, or, like me, gnashing their teeth at the ugliness of Cython.

                                                                  1. 4

                                                                    Yeah, it’s that kind of thing. I take a harsh, but well-structured opinion any time and those people are extremely important. What annoys me is people following a tweet-sized mantra to the end, very much showing along the path that they have not looked at what is all involved or who would benefit or not knowing when to let go off a debate.

                                                            2. 17

                                                              Adding syntax variations is not done at the expense of performance, different volunteers are working on what’s more interesting to them.

                                                              Regrettably, a lot of languages and ecosystems suffer greatly from the incoherence that this sort of permissive attitude creates.

                                                              Software is just as much about what gets left out as what gets put in, and just because Jane Smith and John Doe have a pet feature they are excited about doesn’t mean they should automatically be embraced when there are more important things on fire.

                                                              1. 8

                                                                the incoherence that this sort of permissive attitude creates

                                                                The Haskell community would’ve just thrown PEP 572 behind {-# LANGUAGE Colonoscopy #-} and been done with it.

                                                                Sure, this doesn’t get us out of jail free with regard to incoherence, but it kicks down the problem from the language to the projects that choose to opt-in.

                                                                1. 2

                                                                  I find it hard to see this as a good thing. For me, it mostly highlights why Haskell is a one-implementation language… er, 2 ^ 227 languages, if ghc --supported-extensions | wc -l is to be taken literally. Of course, some of those extensions are much more popular than others, but it really slows down someone trying to learn “real world” Haskell by reading library code.

                                                                  1. 3

                                                                    Of course, some of those extensions are much more popular than others

                                                                    Yeah, this is a pretty interesting question! I threw some plots together that might help explore it, but it’s not super conclusive. As with most things here, I think a lot of this boils down to personal preference. Have a look:


                                                                2. 4

                                                                  Yes. Exactly this. One of the things I value about Python is its syntactic clarity. It is the most decidedly un-clever programming language I’ve yet to encounter.

                                                                  It is that way at the expense of performance, syntactic compactness, and probably some powerful features that could make me levitate and fly through the air unaided if I learned them, but I build infrastructure and day in, day out, Python gets me there secure in the knowledge that I can pick up anyone’s code and at the VERY LEAST understand what the language is doing 99% of the time.

                                                                3. 4

                                                                  I find that “people working on what interests them” as opposed to taking a systematic survey of what use cases are most needed and prioritizing those is a hard problem in software projects, and I find it curious that people think this is not a problem to be solved for open source projects that are not single writer/single user hobby projects.

                                                                  Python is interesting because it forms core infrastructure for many companies, so presumably they would be working on issues related to real use cases. Projects like numpy and Cython are examples of how people see an important need (performance) and go outside the official language to get something done.

                                                                  “If you want something to happen in an open source project, volunteer to do it.” is also one of those hostile attitudes that I find curious. In a company with a paid product of course that attitude won’t fly, but I suspect that if an open source project had that attitude as a default, it would gradually lose users to a more responsive one.

                                                                  As an example, I want to use this response from a library author as an example of a positive response that I value. This is a library I use often for a hobby. I raised an issue and the author put it in the backlog after understanding the use case. They may not get to it immediately. They may not get to it ever based on prioritization, but they listened and put it on the list.

                                                                  Oddly enough, I see this kind of decent behavior more in the smaller projects (where I would not expect it) than in the larger ones. I think the larger ones with multiple vendors contributing turn into a “pay to play” situation. I don’t know if this is the ideal of open source, but it is an understandable outcome. I do wish the hostility would decrease though.

                                                                  1. 13

                                                                    Performance has never been a priority for Python and this probably won’t change, because as you said, there are alternatives if you want Python’s syntax with performance. Also its interoperability with C is okeish and that means that the small niche of Python’s users that use it for performance critical operations that are not already supported by Numpy, Numba and so on, will always be free to go that extra mile to optimize their code without much trouble compared to stuff like JNI.

                                                                    If you want raw performance, stick to C/C++ or Rust.

                                                                    1. 3

                                                                      I also observe the same tendency of smaller projects being more responsive, but I think the issue is scale, not “pay to play”. Big projects get so much more issue reports but their “customer services” are not proportionally large, so I think big projects actually have less resource per issue.

                                                                    2. 0

                                                                      He did say “please”.

                                                                    3. 7

                                                                      please stop adding these tiny edge case syntax variations and do something about performance.

                                                                      There’s a better forum, and approach, to raise this point.

                                                                      1. 2

                                                                        I guess you are saying my grass roots campaign to displace “Should Python have :=” with “gradual typing leading to improved performance” as a higher priority in the Python world is failing here. I guess you are right :)

                                                                      2. 2

                                                                        Have you tried Pypy? Have you tried running your code through Cython?

                                                                        Have you read any of the zillion and one articles on improving your Python’s performance?

                                                                        If the answer to any of these is “no” then IMO you lose the right to kvetch about Python’s performance.

                                                                        And if Python really isn’t performant enough for you, why not use a language that’s closer to the metal like Rust or Go or C/C++?

                                                                        1. 6

                                                                          Yes to all of the above. But not understanding where all the personal hostility is coming from. Apparently having the opinion that “Should := be part of Python” is much less important than “Let’s put our energies towards getting rid of the GIL and creating a kickass implementation that rivals C++” raises hackles. I am amused, entertained but still puzzled at all the energy.

                                                                          1. 5

                                                                            There was annoyance in my tone, and that’s because I’m a Python fan, and listening to people kvetch endlessly about how Python should be something it isn’t gets Ooooold when you’ve been listening to it for year upon year.

                                                                            I’d argue that in order to achieve perf that rivals C++ Python would need to become something it’s not. I’d argue that if you need C++ perf you should use C++ or better Rust. Python operates at a very high level of abstraction which incurs some performance penalties. Full stop.

                                                                            1. 5

                                                                              This is an interesting, and puzzling, attitude.

                                                                              One of the fun things about Cython was watching how the C++ code generated approaches “bare metal” as you add more and more type hints. Not clear at all to me why Python can not become something like Typed Racket, or LISP with types (I forget what that is called) that elegantly sheds dynamism and gets closer to the metal the more type information it gets.

                                                                              Haskell is a high level language that compiles down to very efficient code (barring laziness and thunks and so on).

                                                                              Yes, I find this defense of the slowness of Python (not just you but by all commentators here) and the articulation that I, as one simple, humble user, should just shut up and go away kind of interesting.

                                                                              I suspect that it is a biased sample, based on who visits this post after seeing the words “Guido van Rossum”

                                                                              1. 8

                                                                                My hypothesis is that people who want performance are minority among Python users. I contributed to both PyPy and Pyston. Most Python users don’t seem interested about either.

                                                                                1. 3

                                                                                  For me that has been the most insightful comment here. I guess the vast majority of users employ it as glue code for fast components, or many other things that don’t need performance. Thanks for working on pypy. Pyston I never checked out.

                                                                                2. 5

                                                                                  Not clear at all to me why Python can not become something like Typed Racket, or LISP with types (I forget what that is called) that elegantly sheds dynamism and gets closer to the metal the more type information it gets.

                                                                                  Isn’t that what mypy is attempting to do? I’ve not been following Python for years now, so really have no horse in this race. However, I will say that the number of people, and domains represented in the Python community is staggering. Evolving the language, while keeping everyone happy enough to continue investing in it is a pretty amazing endeavor.

                                                                                  I’ll also point out that Python has a process for suggesting improvements, and many of the core contributors are approachable. You might be better off expressing your (valid as far as I can see) concerns with them, but you might also approach this (if you care deeply about it) by taking on some of the work to improve performance yourself. There’s no better way to convince people that an idea is good, or valid than to show them results.

                                                                                  1. 5

                                                                                    Not really. Mypy’s goal is to promote type safety as a way to increase program correctness and reduce complexity in large systems.

                                                                                    It doesn’t benefit performance at all near as I can tell, at least not in its current incarnation.

                                                                                    Cython DOES in fact do this, but the types you hint with there are C types.

                                                                                    1. 2

                                                                                      Ah, I thought maybe MyPy actually could do some transformation of the code, based on it’s understanding, but it appears to describe itself as a “linter on steroids,” implying that it only looks at your code in a separate phase before you run it.

                                                                                      Typed Racket has some ability to optimize code, but it’s not nearly as sophisticated as other statically typed languages.

                                                                                    2. 3

                                                                                      Be aware that even Typed Racket still has performance and usability issues in certain use cases. The larger your codebase, the large the chance you will run into them. The ultimate viability of gradual typing is still an open question.

                                                                                    3. 3

                                                                                      In no way did I imply that you should “shut up and go away”.

                                                                                      What I want is for people who make comments about Python’s speed to be aware of the alternatives, understand the trade-offs, and generally be mindful of what they’re asking for.

                                                                                      I may have made some false assumptions in your case, and for that I apologize. I should have known that this community generally attracts people who have more going on than is the norm (and the norm is unthinking end users posting WHY MY CODE SO SLOW?

                                                                                      1. 2

                                                                                        Hey, no problem! I’m just amused at the whole tone of this set of threads set by the original response (not yours) to my comment, lecturing me on a variety of things. I had no idea that (and can’t fathom why) my brief comment regarding prioritization decisions of a project would be taken so personally and raise so much bile. What I’m saying is also not so controversial - big public projects have a tendency to veer into big arguments over little details while huge gaps in use cases remain. I saw this particular PEP argument as a hilarious illustration of this phenomenon in how Python is being run.

                                                                                        1. 3

                                                                                          Thinking about this a little more - sometimes, when languages ‘evolve’ I feel like they forget themselves. What makes this language compelling for vast numbers of programmers? What’s the appeal?

                                                                                          In Python’s case, there are several, but two for sure are a super shallow learning curve, and its tendency towards ‘un-clever’ syntax.

                                                                                          I worry that by morphong into something else that’s more to your liking for performance reasons, those first two tenets will get lost in the shuffle, and Python will lose its appeal for the vast majority of us who are just fine with Python’s speed as is.

                                                                                          1. 1

                                                                                            Yes, though we must also remember that as users of Python, invested in it as a user interface for our code ideas, we are resistant to any change. Languages may lose themselves, but changes are sometimes hugely for the better. And it can be hard to predict.

                                                                                            In Python’s 2.x period, what we now consider key features of the language, like list comprehensions and generator expressions and generators, were “evolved” over a base language that lacked those features altogether, and conservatives in the community were doubtful they’d get much use or have much positive impact on code. Likewise for the class/type system “unification” before that. Python has had a remarkable evolutionary approach over its long 3-decade life, and will continue to do so even post-GvR. That may be his true legacy.

                                                                                3. 1

                                                                                  Heh. I think this is an example of the Lobste.rs rating system working as it should :) I posted an immoderate comment borne of an emotional response to a perfectly reasonable reply, and end up with a +1: +4 -2 troll, -1 incorrrect :)

                                                                                1. 2

                                                                                  Yes, that is a better description…

                                                                                  Except for the perception problem.

                                                                                  It goes something like this… “I’m an important person, if what you were saying was important, I would understand it, I haven’t clue about the intricate details of this problem you’re describing, so it can’t be important.”

                                                                                  ie. Humans discount whatever they don’t understand. Ever heard the phrase, “Don’t overload me with details, just give me the Big Picture”?

                                                                                  So called “Technical Debt” is all thousands of fine fine tiny nitty gritty messy dirty concrete details, as soon as you start describing them…. you have lost.

                                                                                  Eyes glaze over and refocus on nice Big Juicy Money Making Features.

                                                                                1. 1

                                                                                  The sexist behavior of those guys at Sun was just disgusting. It’s good she wrote about this.

                                                                                  But at the first beer bust I went to, two of the sales guys were standing around rating the women…only they called them “units.

                                                                                  Bob Coe once told me he did not have to interview the candidates for his Administrative Assistant position. I should simply ask each candidate to link her hands behind her head with her elbows pointing forward and walk toward the wall. If her elbows were the first part of her anatomy to touch the wall, she was eliminated from candidacy. All applicants whose breasts touched first, he would interview

                                                                                  1. 2

                                                                                    it really is beyond the pale of what I would consider possible in a professional work environment.

                                                                                    1. 2

                                                                                      I’m really glad she kept with it after the blowback she got!

                                                                                      I wonder why we don’t hear these “horror stories” as much from HR folks (who presumably have far more visibility of them than engineers!) as often, but I suppose that it’s probably a much bigger career risk to call out this stuff publicly when your job description is basically to deal with all of it and make sure it doesn’t become a legal or PR issue.

                                                                                      1. 1

                                                                                        One may wonder how Bob Coe would have found assistants if this was a 100% encouragement or direct order. Good thing we moved from boys-will-be-boys to disgusting, otherwise someone could really use this as a guideline in recruitment!

                                                                                      1. 12

                                                                                        This is a long series, and each story is better than the last, but you have to fiddle around with blog sidebar whenever you want to find the next installment. (That’s one thing I won’t miss from the Blogger Era…). Here’s one from Part 3 (of 23):

                                                                                        “Hey, Nancy,” he began, “I cannot make it into work today.”

                                                                                        “OK,” I said, “I will let Linc know” (Linc Holland, the man who has never won an argument with me).

                                                                                        “Are you OK?” I asked.

                                                                                        “Well, yes, but I have a little problem….”

                                                                                        “What’s up?” I naively asked.

                                                                                        “ I am in jail.” Johnny replied.

                                                                                        “Oh no!” I exclaimed.

                                                                                        “What happened?” I was now thinking we had a problem with a DUI or scofflaw issue and knowing Johnny as I did, I could picture him sitting in some police holding cell refusing to post bond on principle.

                                                                                        “Well, I was at my mom’s house on Thanksgiving and I got into an argument with my brother-in-law and things escalated and, well, someone got stabbed in the arm with the turkey fork.”

                                                                                        “Johnny, do you need bail money?” I asked, trying not to laugh out loud. “Are you sitting in jail because your family will not bail you out after impaling your brother-in-law?”

                                                                                        “No,” Johnny said, “The judge won’t set bail, I have to serve 90 days”.

                                                                                        “Why?” I asked.

                                                                                        “Well, I do not qualify for bail because of my previous manslaughter conviction.” Johnny said…as if it was a fact that we all had at our fingertips.

                                                                                        Now, I have to say, and I think most folks who know me will agree, that I am rarely at a loss for words. But Johnny stumped me. I sat there, dumbfounded for what felt like a long time….then I heard Johnny put coins in a payphone and that snapped me back. “What conviction, Johny?”

                                                                                        “When I was 17, I was joining a gang in LA. There was an altercation with another gang…someone was shot. I never even saw the gun, but I was slow over a fence and the police caught me. I served 5 years in prison.” I needed time to figure out what we were going to do,“I have to think about this, Johnny. Can you call me back later today?”


                                                                                        Linc and I caucused on this and decided Johnny had to be at work that month or we were going to blow the quarter.

                                                                                        I called the judge on Johnny’s case and begged for a work release program It was agreed that Johnny could do work release for two months and then he would have to serve a full month in jail. It was not easy, but the judge was a bit of a technofile and he was delighted to help Sun. Johnny was happy. He wanted to get back to work and spending the nights in the county jail was better than spending all day there.

                                                                                        Q4 was great. Johnny did a great job. We all breathed a sigh of relief.

                                                                                        Then Johnny needed to go to jail for a month.

                                                                                        Sun was pretty big by this time. It had policies and procedures and a few personnel police had been hired. I knew that I could not just let Johnny go away for a month without an explanation. He couldn’t be paid, he couldn’t take vacation…and we were not going to fire him.

                                                                                        I processed what I thought was the appropriate paper work and crossed my fingers.

                                                                                        Crawford Beveridge called me a few days later.

                                                                                        “Nance, talk to me about Johnny DLP” he said.

                                                                                        “What do you want to know?” I asked.

                                                                                        “ I have been told you have placed him on educational leave, is that right?”

                                                                                        “Yes.” I replied.

                                                                                        “Is he studying at an institution of of higher education?” asked Crawford.

                                                                                        “He is in an institution.” I replied.

                                                                                        “What is he learning?” asked CB.

                                                                                        “Uh, not to bend over for the soap?” I answered.

                                                                                        “OK,” said the unflappable Crawford, “so long as you think he is getting an education, I will approve this.”

                                                                                        I will always love Crawford Beveridge.

                                                                                        When I left Sun, Johnny DLP sent me an adorable note. I hope he is well and staying out of trouble.

                                                                                        1. 4

                                                                                          “Software carpentry” is an interesting term that betrays some interesting ideological positions. The first time I heard that term is from Kevin Sullivan at UVa, who uses it to differentiate his class from JavaSchools (software “carpentry” vs software “engineering”).

                                                                                          He teaches CS1 (a mixed class of majors and non-majors) in Idris. I was skeptical at first (Idris? for freshmen?), but the resulting retention rate and “switching intended major to CS” rate were really impressive.

                                                                                          Unfortunately, I can neither remember these numbers off the top of my head, nor find where they’re posted online, but I think it raises an interesting question:

                                                                                          Should we be teaching undergrads carpentry, engineering, or science?

                                                                                          1. 7

                                                                                            Note that software carpentry is specifically for teaching students in the sciences skills for computational competency, not CS students. I think “carpentry” is an appropriate phrase to use for the sorts of computing grad students in the sciences typically need to do.

                                                                                            1. 2

                                                                                              Yeah, I think this is exactly the way in which Kevin Sullivan uses it too: He used to say that when building a house, you have carpenters and you have civil engineers. Usually you have both, but they each have their roles and the engineer better be able to know carpentry when necessary, but mostly shouldn’t be a carpenter — but most of the time when you’re a carpenter you’re not building a house or any such large ambitious project that lots of people work on and depend on. Unlike civil engineers, carpenters are more likely to have their own practice and most carpenter-hours are spent (perhaps not anymore with the rise of automation, but for the metaphor…) building furniture by themselves and a few other people.

                                                                                              Ideally, we could answer the question I raised simply with “it depends”. Clearly if someone wants to be a carpenter, you should teach them carpentry, and if someone wants to be an engineer, you should teach them engineering, etc.

                                                                                              But when you have these massive almost “one-size-fits-all” CS1 classes (especially somewhere like UCSD mentioned in the OP, where every year, the department asks for a better student-to-faculty ratio, and every year, the administration sends us students faster than we can hire faculty) it’s not clear at all. Some of your students will go on to be carpenters, some engineers, some scientists, and they don’t know which yet.

                                                                                              And even for the sciences, it’s not always cut-and-dry. Nearly every proteomics grad student is a carpenter, but what does a physicist do? Still mostly carpentry, but there’s also these giant legacy projects in Fortran 77 that you wish involved more engineering and less carpentry. I haven’t been a physicist for a little while, but I have no doubt that there are more of them piling up every day. So we’re doing the right thing teaching scientists carpentry, but it seems that perhaps one of every few should probably still be an “engineer”.

                                                                                              Once I added the term “software carpentry” to my vocabulary, these sort of concerns became immediately visible! It’s a powerful concept that packs up a surprisingly large amount ideas about the structure of writing code itself.