Recently I removed my books from being free and started charging for them partially because I found out that "members of the Python Software Foundation" were actively trying to have my book censored. I received chat logs, screenshots, and confirmations from various colleagues proving this and after pulling my book the evidence grew. As I write this, PSF board members are actively contacting people to gather information and find out who is telling me for damage control, rather than simply issuing a statement that my mistreatment should stop. This blog post is my attempt to officially state why this is wrong and to warn others who may be considering Python in the future.
As you read this, I want you to imagine if you wrote your opinion on Python 3, or a library, or anything else, and then this happened to you. Imagine thousands of Python programmers deciding that you don't deserve to work and make a living because you don't like Python 3. Imagine being called "douchelord", "asshole", "dick", and having people claim that you are unqualified to do your job.
It's my experience that if organizations are doing these things to me--a 6'2" tall 200lbs CIS white male with stature in the industry--then they'll do it to you too. Continue reading if you want to see what they are doing, why it's wrong, and what you should do as a Python programmer with less stature.
Recently members of the PSF have been contacting me and stating certain things online that indicate their next move is to attempt to claim the following:
- That the abuse of PSF privilege to ostracize and censor me is not significant because "anyone can become a PSF member by filling out a form."
- That it did not happen because it was not in the PSF's meeting minutes that they were going to do this.
- That it was not the PSF because it was not coordinated by them, but just individual actors that they cannot control.
- And since PSF board members themselves didn't do this, it cannot be "PSF members".
- That they are allowed to claim my book should be read because my criticisms of Python 3 demonstrate I do not know how to teach Python 3.
- We do not single Zed out. He's crazy and paranoid.
My answer to these claims before they come out are:
- If it is that easy to become a PSF member, then you should not allow people to tell anyone they are a PSF member until they've earned some sort of rank. Since people do use their PSF membership as status, and it's not clear what their role is, then by joining and saying they are a part of the PSF they represent the PSF and are responsible for behaving according to the Code of Conduct. Otherwise, why do you have a Code of Conduct if nobody has to adhere to it?
- I'm pretty sure anyone who's watched The Wire knows that you don't write down conspiracies in your meeting minutes, but I never said the PSF is coordinating an attack against me. I said that PSF members are using their position to influence people to censor my book. However, now that I know the PSF board is contacting people to build the case that my claims are irrational, I guess they are coordinating their actions.
- Without a solid statement against such behavior by PSF members the PSF board is allowing the behavior that is convenient to them. The proper response should have been to denounce this behavior by anyone in the PSF, and to issue a formal apology to me for this behavior. Not doing so signals that this behavior is condoned, and it means they won't enforce the CoC on anyone who is a member.
- The purpose of the PSF board is to manage the foundation, and part of doing that is to established the behavior requirements of members. If members are allowed to sabotage other people in the community for dissenting opinions, then by doing nothing, and by not publicly stating that this is wrong, they are involved. In addition, this behavior is explicitly outlined as wrong in the PSF CoC, so why aren't PSF member reminded of this and told to stop? Is mailman broken or something? Does their blogging software not work anymore? The Wiki is broken?
- I am an established contributor and the author of possibly the most popular Python education book ever. I'm also an established software developer who's code is/was used by a very large number of companies in multiple languages. I am not an idiot when it comes to computer science despite what they may say. Given that, it must be that Python 3 is too difficult to use if I'm not qualified to teach it. That seems absurd since they claim Python 3 is not much different from Python 2, and I already wrote a Python 2 book. So which is it? Python 3 is easy to use and better than but similar to Python 2, which means I can teach it? Or, Python 3 is too difficult for even me--an established expert in teaching and using Python--to use? The real truth is the people saying this are attempting to discredit me for simply disagreeing with their 20 year failure plan. Disagreement does not show incompetence and lack of understanding. Disagreement in this regard means I took a compiler design class and know how a virtual machine should work.
- My book is the only book with a critique on Stack Overflow Python. My book is the only book many PSF members have publicly said to avoid, and mostly only after I wrote my criticisms. That is the definition of "singling out." However, they are right that I'm not the only person they've singled out. Armin Ronacher wrote a critical post about Python 3's unicode and was also singled out and ridiculed for his expert opinion. Armin is a monster in Python, and probably one of the best coders out there, and he also was called an idiot among other things.
One of the purposes of the PSF is to grow the Python language community, and to do that you need the trust of people who plan to use Python in their next projects. Using it in your projects, learning it, basing companies on it, and working in the community is based on an idea, or unwritten contract, that you will be able to work. That, by helping to build something you'll get an economic return and an ability to openly talk about the main topic of the community: Python.
My crime so far has been to state publicly that I disagree with how Python 3 is implemented and the direction it has gone for the last 20 years. For stating my opinion publicly I was ridiculed, PSF members immediately told people to not read my book, said that I was unqualified to teach, contacted other authors to have my book removed from their books, wrote "critique" web pages for only my book and no others, and others called me "douchebag", "chode", "asshole", "dick", and many other names.
All because I don't like Python 3, and I'm honest about it. I still wrote my Learn Python 3 The Hard Way because I value my reader's needs, but I'm not going to do that without informing people I disagree with the direction of Python. I am not going to cover for the mistakes of others, or further their propaganda, and I feel that an informed person is better equipped to deal with these problems than someone who is lied to about the quality of Python 3. If a beginner goes into Python 3 knowing that there's 4, 5, or maybe 6 ways to format strings and that unicode is a pain, then they won't be so frustrated by it.
For informing people what I think about Python 3, other Python community members feel I deserve revenge. Yet, the PSF code of conduct states:
Members of the community are open to collaboration, whether it's on PEPs, patches, problems, or otherwise. We're receptive to constructive comment and criticism, as the experiences and skill sets of other members contribute to the whole of our efforts. We're accepting of all who wish to take part in our activities, fostering an environment where anyone can participate and everyone can make a difference.
The PSF board will attempt to claim they have no control over their members, but if they have a Code of Conduct, and never actually remind people of it or throw anyone out for violating it, then why do they have one? PSF members and (board members past and present) are in control of important Reddit channels but do nothing. Rather than enforce the CoC the PSF board has been contacting my friends and me trying to find out who is telling me my information. That is intimidation and coercion and it needs to stop.
The proper response is to find out who is using back channels to intimidate me, throw them out of the PSF, and then issue a statement that my treatment by the Python community has been unfair and over the top insane. All I did was reasonably state that I disagree with how Python 3 is implemented and managed. I don't like the technology or the propaganda and intimidation tactics. That is perfectly reasonable to say and Python board members have even told me they agree with me. The proper response is to then talk about why Python 3 is this way, justify the decisions, or just ignore me because I still wrote a Python 3 book and I'm entitled to my opinions.
Instead, people at the PSF went and did the complete inverse and now everyone who uses Python feels justified in leveling a crazy amount of abuse at one person for saying he doesn't like Python 3.
If I were a Python developer, a company basing a solution on Python, or a student, I would be very cautious when dealing with the Python Software Foundation, its members, and its board. This behavior from the PSF has happened to me and to other people I know, and it doesn't take much to see that this is not a conspiracy theory at all. The main issue is that, while this behavior is in every organization, the PSF claims to have a Code of Conduct that forbids it.
Python is a great language, and even though it has flaws, Python 3 is totally fine. You just have to be aware of the limitations and frustrations you'll have. The problem is, anyone trying to tell you those frustrations has to wrap it in a mantle of deference or they receive abuse, so most people don't tell you what they really think. Several prominent Python programmers were willing to tell me privately they agree with me, but won't publicly because of this kind of abuse.
In closing, I leave you with this paragraph of the PSF CoC:
Members of the community are respectful. We're respectful of others, their positions, their skills, their commitments, and their efforts. We're respectful of the volunteer efforts that permeate the Python community. We're respectful of the processes set forth in the community, and we work within them. When we disagree, we are courteous in raising our issues.
My criticisms of Python 3 were respectful, but honest and direct. I simply stated what I felt about Python 3 and how it has been managed poorly for 20 years. There should be nothing wrong with doing that in a community that claims to have respect for people's efforts and welcomes criticism.
In return members of the Python community and the PSF have been abusive to me and definitely not respecting my skills or commitments to Python. I'll reiterate that I donated a book for free that was read by 12.5 million people on my single small website alone. The actual reach of my book is potentially far beyond that. The majority of people claiming my commitment to Python doesn't deserve respect haven't even done 1/1000th that much to promote Python around the world. Despite my incredibly generous donation, at great cost to me, I was treated with vitriol, anger, and attempts to destroy what little money I did make from the book.
All because I don't like Python 3's strings.
If you are a smaller fish than me then you should be very cautious when dealing with PSF members and this particular section of the Python community. If they're willing to do this to me then who knows what they'll do to someone like you.