When Tim Peters won the 2017 Python Distinguished Service Award, he had already been working on Python for over 20 years. In the early 1990s, he started with the pre-release 0.9.1 version. It did not have classes, and the assignment operator was the same as the comparison operator.
I'll quote a few choice bits from this feel-good article, which describes the context surrounding the award.
When Tim Peters started working on Python, his first advice for Guido van Rossum was that programmers want to add ints and floats. From the beginning, Python had both kinds of numbers, just like today, but adding them together then required a cumbersome type-cast. Peters argued that Python should implicitly convert ints to floats, like most other languages, for programmers' sake: "That is a very common operation for anyone who works with floating point numbers," Van Rossum recalls him saying, "so you’ve got to do it this way."
It continues
Ever since, Peters has pushed the language in this direction. He insists that Python should be a practical language that caters to the needs of programmers, and he has a knack for guiding design debates to achieve this goal.
And
In Guido van Rossum's estimation, Peters's biggest contribution to the community has been his years of answering questions and guiding debates on the Python mailing list, writing each message precisely and cheerfully. PSF director Thomas Wouters agrees: "Tim is just never flustered. He always takes it in good humor and it definitely has an effect on everyone else, as well." Even an experienced developer like Carol Willing says that when she sees a post from Peters on a topic she knows, she'll take the time to read it for new insights or new ways of explaining."
And finally
[I]n design debates, Peters invented a notion of "channeling Guido" to free Van Rossum from the overflow of emails. He claimed to act like a spirit medium speaking with Van Rossum's voice, but this understates Peters's influence. "He was a mentor for me," says Van Rossum. "He combines incredible technical skills with insight into what the person he's communicating with is missing or needs to see, with a patient way of explaining. He showed me that style of communicating which I strive for but can't always do."
I am thankful to be able to call myself one of Tim's friends. I worked with him and the rest of Python Labs for a couple of years in the early 2000s. Tim was a hugely positive influence on me throughout my Python career.
Before I had ever spoken to Tim, he was already legendary. He had worked for Cray Research writing compilers for supercomputers, and for Dragon Systems, writing speech-to-text software at a time when such a task was considered largely impossible. He took up Python on a lark in its very early days, becoming something like Python's second real user after Guido.
Guido came to rely on Tim heavily. Tim will demur about this, but as far as I can tell, Tim and Guido were largely partners in the design evolution of very early Python, and before most important features made it in to Python, you could be sure that they had been examined from every angle, shaken, stirred, and thunk about very hard by both of them.
Tim often played the role of gatekeeper and polisher. You have Tim to thank at least partially if you were a refugee from Java or Microsoft languages, which made excuses for their sprawling verbosity, complexity, and poor readability. Python, at the time, made none of those and had none of that (it now does). Tim was crucial in ensuring it stayed that way during his most active years. He will claim differently, but, by my observation, it is no accident that Python ballooned in complexity after his exit as day-to-day core developer. Perhaps this was more due to the resignation of Guido as BDFL and the new Steering Council model, which was also coincident, but not having Tim around didn’t help either.
It was pure joy to read Tim's Usenet and mail list posts, which were full of humor and good nature and measured positivity and not a little winking darkness. They somehow resonated with me on my journey from becoming a new programmer to a not-so-new programmer and they lit a path to becoming one on which you could be dramatically competent without becoming cryptic and insufferable. He was intensely knowledgeable, and unfailingly precise when arguing for or against some design change. But he was always gentle and patient and matter-of-fact, preferring to use humor and warmth rather than bile and authority as the currency in which he dealt.
Tim penned "the Zen of Python" ("beautiful is better than ugly...") which can be seen via "import this" to this day. You can see a bit of his wonderful humor and style in the prelude to his introduction of the poem . His enthusiasm was infectious, and in the days when he was most involved, most everyone could be witnessed spouting Tim-isms (winks and "'lys" and whatnot).
When I did get the chance to work with Tim, he was just as influential. He had absolutely no pretensions. If I hadn’t already known him to be a computer savant, I would have assumed he was a biker or mechanic due to his long grey locks, full mustache and and working-class fashion sense. I would later find out that he had indeed worked at Harley-Davidson. I think he’s originally from Wisconsin, but an East- or West-Coaster not fluent in Midwest tongues could be excused for believing his disarming accent is Chicagoan. He seemed just like a regular-looking neighborhood punch-the-clock guy, not unlike all the mechanics and deliverymen and cooks and dishwashers and event staff I’d worked around as a kid and in my 20s. Except he was pretty much the smartest guy in every room he entered.
Tim’s demeanor and lack of pretense inspired me to think that despite my own lack of education and pedigree, with enough effort and grace, that I might become a half-competent programmer. And eventualy I did. But before meeting Tim, it was not a given. I was alienated by the pretensions of my community peers, and I was often reminded that they were not necessary only by Tim.
He was somewhat private. He could often be found with a pen and paper outside the building just standing alone, staring blankly off into space, presumably thinking about some mind-boggling algorithmic topic with which he had just been charged by our CTO, or perhaps mentally designing some aspect of a pet project, scribbling something every few minutes. He applied himself to our code, which included a custom database written in C and Python. He diagnosed and fixed a data-destroying bug in that byzantine codebase for our largest customer. This saved the account, and likely gave us enough runway for another year or so.
Everyone who worked there was in awe of his programming and debugging skills, and while we tried our best to let the poor man be, we often asked him questions, many of which were pedestrian and dull. I remember one of our teammates trying to engage him into a debugging session, claiming that some fault seemed to happen every six runs. He smiled winkingly and asked "have you grepped the source for six?" It was a minor jab but given the sincerity of the question, and the person from which it had come, it occurred to me at the time that it might not be the worst theory of debugging from which to start.
Tim was a Director of the Python Software Foundation from 2001 to 2014, bringing Python across an uncanny valley from a time where it was "interesting but ignorable" to "the planet's default language" along with a cast of other incredible people. If you use Python, it’s not in small part due to Tim.
When I started my own open source projects, it was Tim whom I channeled during design discussions and sprints. I quite consciously used tricks I had learned from him to make the process fun and welcoming. Rather than become prickly about some technical conflict, I would try to use low-brow humor to defuse things and I would try very hard to learn everything I could about the topic before responding such that I could gain and rely on the respect of other contributors. I often failed, of course, because I'm not Tim, but I was at least a twentieth a Tim, and at the time, I think my co-contributors would have agreed that the projects I led were fun and worthwhile to work on.
It is in this way that Tim's influence is likely most obvious to people today, because I'm not the only one who channeled him; any Python project started between 1995 and 2010 has a bit of Tim culture in it.
Personally, I consider Tim to be Python, maybe even more than Guido is Python (sorry, Guido, and I know Tim will disagree). Although Python is a wonderful language even today, without Tim's immense knowledge, willingness to debate its design, and infectious communication style, in my estimation, it would likely have been consigned to the dustbin of history like most other programming languages.
Of course, I have never mentioned any of this to Tim, whom would almost certainly be embarrassed by the gushing, but I think he knows that he has influenced many, many people not just with his code and design sense but with his humility and lack of posturing. Amongst my circle of programming friends, if you say a bad word about Tim, you best be prepared for a long day. Some of them went on to become management bigwigs, and they would happily admit that their management style has a lot of Tim in it.
So I wish I could say it came as a surprise to read this communication from Python's Steering Council released a few days ago with the summary
"The Steering Council, following a recommendation from the PSF’s Code of Conduct Workgroup, has decided to suspend a Core Developer for three months."
That Core Developer is, of course, Tim.
The offenses which Tim is accused of within that document include the following (quoting the Steering Council message):
- Overloading the discussion of the bylaws change (47 out of 177 posts in topic at the time the moderators closed the topic), which created an atmosphere of fear, uncertainty, and doubt, which encouraged increasingly emotional responses from other community members. The later result of the vote showed 81% support for the most controversial of the bylaws changes, which demonstrates the controversy was blown out of proportion.
- Defending “reverse racism” and “reverse sexism”, concepts not backed by empirical evidence, which could be seen as deliberate intimidation or creating an exclusionary environment.
- Using potentially offensive language or slurs, in one case even calling an SNL skit from the 1970s using the same slur “genuinely funny”, which shows a lack of empathy towards other community members.
- Making light of sensitive topics like workplace sexual harassment, which could be interpreted as harassment or creating an unwelcoming environment.
- Casually mentioning scenarios involving sexual abuse, which may be inappropriate or triggering for some audiences.
- Discussing bans or removals of community members, which may be seen as publishing private information without permission.
- Dismissing unacceptable behavior of others as a “neurodivergent” trait, which is problematic because it creates a stereotype that neurodivergent people are hard to interact with and need special treatment.
- Excessive discussion of controversial topics or past conflicts, which could be seen as sustained disruption of community discussions.
- Use of potentially offensive terms, even when self-censored or alluded to indirectly.
- Making assumptions or speculations about other community members’ motivations and/or mental health.
I am going to take time to address these charges one by one, as I have carefully read the conversations to which the Steering Council's announcement makes reference. I believe their claims to be misleading. I wish this was unnecessary, but our current times seem to require it. The public portion of these discussions is available mostly in this Discourse thread. There are several others, but the discussion is largely in the same style.
"Overloading the discussion of the bylaws change (47 out of 177 posts in topic at the time the moderators closed the topic), which created an atmosphere of fear, uncertainty, and doubt"
The discussion began about a proposed bylaws change which would cede to the PSF Board the power to strip a Python Fellow of their Fellowship status without a majority vote of the entire Python membership. Because the bylaws change notification was sent to the "PSF-Vote" mail list, discussion started there. Unfortunately, the maillist is private, and has since been placed on announce-only. Some folks may then assume that Tim was a monster in these messages, because you can't see them. I saw them. He was not. He never is.
Discussion then resumed on Discourse. The style from Tim that you see on Discourse is what was in the PSF-Vote discussion. If anyone disbelieves this, I will try to compile his messages from this maillist into some web page by yoinking them out of my mail client. I urge you to not make me do this, because you will only be disappointed, and I’m not entirely sure how to do it these days.
Anyone whom has communicated with Tim in the past knows that he is not short on words when he is digging into an issue. He is never mean or disrespectful, but he does not shy away from attempting to identify flaws in designs he is not fully on board with. Unfortunately, the folks who were pushing for the bylaws change were less than forthcoming about why such a change was required. Tim did his best to pull out of them the rationale for why the bylaws change was required.
The reason Tim posted so many messages ("47 out of 177") is because the folks he was addressing were unwilling to defend the bylaws change except in the most generic of ways. Tim was asking for theoretical specific circumstances under which the Board would exert its power to de-Fellow someone, and many messages were traded trying to reach some example scenario. An example scenario was never divulged, the Board just effectively said "we need the power, there are reasons." Along the way, others were displeased by Tim's temerity to ask for specifics, and engaged him, and he engaged them as well, always respectfully.
What does "creating an atmosphere of fear, uncertainty, and doubt" mean? Other than channeling accusations of 1990s Microsoft, it means nothing to me. Did he "encourag[e] increasingly emotional responses from other community members?" I couldn't know. It is those community members' responsibility to keep in check their emotional responses in a dry thread the only purpose of which is to question the Board, of course. Tim certainly kept his own in check.
"Defending “reverse racism” and “reverse sexism”"
Tim defended neither of these, only engaging in a conversation with someone who had, noting that in globally diverse communities that the required narrative may be more complex than oppressor-oppressed by simple binary color of skin.
"Using potentially offensive language or slurs, in one case even calling an SNL skit from the 1970s using the same slur “genuinely funny”, which shows a lack of empathy towards other community members."
Tim was trying to avoid using the word "slut." A so-named package on PyPI had been removed by Python admins due to its offensiveness, and Tim was making a point about this being one of the only times the board had done something non-unanimously, in reference to suggesting that the Board should require a unanimous consent vote internally to de-Fellow someone.
He obliquely referenced the SNL sketch (BTW, it's sketch, not skit, a skit is what you perform at a Cub Scouts meeting, SNL is sketch comedy) that had Dan Akroyd serially using the word in a time when SNL had indeed been genuinely funny such that he did not need to mention it explicitly but so everyone could understand which word he meant. He explicitly did not say the word. He mentioned that SNL had been funny at this time to date it more precisely, and not even that the sketch itself had been funny, and did not claim that the sketchy was funny simply due to the word.
"Making light of sensitive topics like workplace sexual harassment, which could be interpreted as harassment or creating an unwelcoming environment."
and
"Casually mentioning scenarios involving sexual abuse, which may be inappropriate or triggering for some audiences."
Tim never mentioned sexual abuse. He relayed a story in which his bosses at a company never actually required that a high-office accused offender attend sexual harassment training, but made the entire remainder of the company attend instead, pointing out poor management practices that were appropriate in the context of the discussion. No one made light of anything. Tim was as serious as Tim ever gets.
"Discussing bans or removals of community members, which may be seen as publishing private information without permission."
Tim discussed past removals of community members, although never naming them without permission, at least in cases where their identities weren't already obviously public. I think this just boils down to "discussing bans," which Tim believes the general shape of shouldn't be so secret, although he is not crass enough to dox private constituents. I agree with him. He isn’t a hypocrite about this either, he volunteered that the recent ban announcement was about him (it is unmentioned in the announcement) cheerfully in this Register article.
"Dismissing unacceptable behavior of others as a “neurodivergent” trait"
In the context of the bylayws change discussions, Tim detailed his relationship with a prickly core developer who was maniacal about a particular bit of stdlib code, whom he considered neurodivergent, and lamented that that person had been removed, because their code was top-notch. He then started a thread questioning if Python was accepting of such people. The accusation is accurate, except in the characterization of "unacceptable" perhaps. The characterizations certainly were not unacceptable to me.
"Excessive discussion of controversial topics or past conflicts"
Although details are not provided, one may guess. Mine is that during the conversation about the Board assuming powers it did not yet have, Tim mentioned examples of these controversies in a bid to get the Board to describe why the new powers were necessary. Examples are clarifying and necessary in tight spots like this, and Tim tried his best to draw some out. It was not done simply for kicks.
"Use of potentially offensive terms, even when self-censored or alluded to indirectly."
This presumably refers to Tim not using the word "slut" in describing the removal of a PyPI package of the same name, which he replaced in conversation with "XXXX", again, in a conversation about non-unanimous board decisions, again not just for shock value or fun. Why is it mentioned twice in Tim’s list of offenses? Your guess is as good as mine.
"Making assumptions or speculations about other community members’ motivations and/or mental health."
I can only assume that this boils down to "questioning the motivations of the Board." But Tim didn't even question the motivations of the current board, but some future board. He was attempting to protect Python against the overreach of a future Board, like an engaged person concerned about a vaguely democratic community. Please remember that Tim was a PSF Director for thirteen years (and so was on the Board for those years), and is not some yahoo fresh off Reddit looking for a fight.
So.
All of the claims I make above can be verified by reading the bylaws change Discourse topic, a follwing thread about censure, and a thread about “neurodivergence”, save for the rump of messages that preceded it on PSF-Vote. If I’ve gotten anything wrong, I’ll be happy to retract or correct. While much of the disagreement is down to style and interpretation, I hope you’ll agree that many of the accusations are simply wrong. If past is prelude, this temporary ban without challenge will eventually lead to a permanent one. That would be tragic; not for Timmy, but for Python. (Even worse, you’ll have to read another of my blog posts at that time.)
I’m disappointed in the decision of the Steering Council. Questioning authority when you’ve previously had such authority for such a long time should be valued. But I am not surprised to see their decision, because apparently today’s world does not possess the same values that made Python what it is today. Instead, Python is now a grey, humorless, corporate place. The Steering Council and CoC Working Groups assume they can simply get away with asserting their correctness, crushing any dissent gracelessly, and relying on Python now being too big to fail. They’re probably right. That is a shame. Being now too big to fail is in no small part due to Tim being exactly whom he is within the threads that they derive their accusations from, and he deserves better.
He at least deserves support. If not from the various soulless machines that now run Python, from actual human beings. I’m disappointed to not see more support for Tim from the community that owes him so much. People who know this is wrong, and whom have so far stayed silent should not. If Python is now only top-down unquestionable authority henceforth ruled by a faceless ubercouncil, so be it, but I suspect (and hope) that allowing others to walk sheep-like into that future without a peep in service of preserving your own purported respectability will weigh on your conscience for a good long time.
Before it banned him, the Steering Council took an earlier swipe at a collection of people, including Tim. One of the conclusions it reached at that time was that someone “[u]tiliz[ed] emojis and turns of phrase in ways that can be misconstrued or perceived entirely differently by different people.” Presumably this nefarious emoji-terrorist was Tim. That charge didn’t make it in to the ban announcement.
I’m glad. The Steering Council needs to get a grip. When the wink emoji becomes a prelude to pyschic harm and a measure of your own paranoia instead of a signature device used by one of your most valuable and legendary contributors, you’re in for some tough times. 😉
As far as the Board goes: dealing with criticism of Board members, criticism of the policies of the Board, and answering questions in a meaningful way are well within the remit of Board members and Directors. During the process, members of both the Steering Group and the Board seemed to feel personally slighted when their non-responses were not accepted at face value by Tim and others. But leadership doesn’t work that way. You can’t censure and ban your way out of accountability, even if providing that accountability is awkward and delicate. Perhaps when former Board members and Directors are asking questions, you should swear them to secrecy, and make an effort to privately tell them the truth, such that they aren’t required to pester you on public venues until you find it necessary to ban them. They can then assure the folks whom have excellent reason to trust them that all is well without divulging sensitive information.
Python used to be fringe and surplus to requirements. But it was fun. It was fun in a way that Perl, or Java, or ASP, or PHP were not. This was the most important part of Python to me when I started using it, and this was not in a small part due to the efforts of people like Tim. It is now the planet’s default language, but it is no longer fun, and it will miss opportunities as a result.
how-far-we’ve-fallen-and-there-are-still-miles-to-go’ly y’rs <0.5 wink>
-Chris