Diseased Open Source Software Community - it's about ethics in Code of Conducts

  • 🐕 I am attempting to get the site runnning as fast as possible. If you are experiencing slow page load times, please report it.
In which the mentally ill author of Python's Requests library scams the community for $30k while not even doing any of the work (Tom Christie does). (archive)

SAT 04 MAY 2019

[Content Warning: parts of this post could be triggering for those who have experienced gaslighting or other forms of abuse]
Kenneth Reitz is a famous Python developer, best-known for founding the Requests project. Until a few years ago, I'd never interacted with him in any serious way, but I thought highly of him.
I appreciated (and still appreciate) his design taste, and emphasis on usability and beauty. Requests is a piece of critical infrastructure that holds up large parts of the software world; his puckish insistence that it's actually an "art project" appealed to my anarchist sympathies. I admired (and still admire) his openness with his mental health struggles. When I was starting my project Trio, I wanted to emphasize its friendliness and accessibility, so I borrowed his "for humans" tagline, and started the documentation by quoting him.
Then I started working on adding async support to requests.
A timeline of async in Requests, and the Requests 3 fundraiser
In August 2017, I started working on adding async support to urllib3, which is the underlying HTTP library that Requests uses. This was highly experimental. Historically, the state of the art was that you had one HTTP client library for synchronous code, one for Twisted, one for Tornado, one for asyncio, and so on – each maintained as independent projects that didn't share code. Everyone knows this is silly, but it's very challenging to fix: you need deep expertise in HTTP, and in all these different approaches to networking, and some clever idea for how to reconcile their seemingly irreconcilable APIs. So every previous attempt had failed. Now I thought I had a clever idea, so I gave it a try.
Reitz was very interested in this work, because he very much wanted async support in Requests, but – as he told me – didn't know how to solve these problems himself. We had some video calls and IRC discussions, and he tried to leverage his notoriety to recruit volunteers and send them my way. Nothing much came of this, but I kept plugging away, along with some other Trio contributors.
Screenshot of Reitz's fundraising page, showing the promised features in Requests 3
Then on March 7 2018, he announced that work had begun on "Requests 3", that its headline feature would be the native async/await support I was working on, and that he was seeking donations to make this happen.
Most open-source projects struggle to raise a few thousand dollars to hold a meeting, but this got people excited. He was deluged with donations from both individuals and large companies like Microsoft, Google, Slack, etc., and the fundraiser total quickly reached ~$30k.
On March 15 2018, he contacted me to talk about the fundraiser. He told me he was uncertain what to do with this amount of money – he said his original goal was just to raise $5k to buy a computer. Privately, I was skeptical that the $5k computer had anything to do with Requests. Requests is a small pure-Python library; if you want to work on it, then any cheap laptop is more than sufficient. $5k is the price of a beefy server or top-end gaming rig. But I figured that even if he spent $5k of the money on some unrelated computer, we could call that compensation for his past work, and it would still leave ~$25k to fulfill the promises he'd made in the fundraiser. And this was clearly a great opportunity to build some amazing new stuff. So I didn't say anything about the computer.
Instead, I gave some general tips from my experience with fund-raising and grants, emphasizing the importance of transparency to maintain trust, and recommending he set up a fiscal sponsorship relationship with the Python Software Foundation (PSF) or a similar non-profit. And I tried to help with finding ways to spend the money effectively – for example, I was already working full-time, but I contacted one of the volunteers who'd been helping me to see if they were available for a contracting gig.
Around this time, he also did some experiments with our work-in-progress on urllib3, which led to a tweetdemonstrating "Requests Core" issuing multiple HTTP requests in parallel. "Requests Core" here was a snapshot of our work, that he forked and renamed. As far as I know, the only thing added was some basic HTTP/2 support, but unfortunately (and despite our warnings beforehand) this used a dead-end approach, so the code wasn't useful.
Up to this point, there were definitely some odd features in our interactions, but, you know, people are odd sometimes. I personally wouldn't have announced a fundraiser without first talking to the people actually working on the features I was promising, but I was confident we could find some way to spend the money effectively. Maybe his HTTP/2 code wasn't useful, but at least he was getting some experience with async/await. I thought it would work out OK.
Over the next few months, there were some more odd things – different members of the Requests maintainers team reported hearing very different stories about what was happening to the money. But the big change came in late May 2018, when I left UC Berkeley and started consulting. This seemed like a potential win-win – I was looking for work and excited about the project, and he was stuck with money he had no way to spend. So I sent him an email to explore further.
After a month and several follow-up pings, he finally responded. His main points were:
  • He actually only raised $28k.
  • "Most of it" went to taxes.
  • He expected me to do the work of fulfilling the commitments he'd made for new features in Requests 3.
  • But none of the money was available to fulfill those commitments; instead, he was going to wait for me to implement the new features for him, and then he needed the entire $28k to pay for writing documentation for my features.
  • If I couldn't fulfill his commitments on a volunteer basis, he encouraged me to hold my own fundraiser.
He ended by suggesting we do a call that week to discuss details.
I was bewildered. That's not how taxes work. It's not how commitments work. The idea that novel technology stacks are free but a few pages of docs cost $28k is bizarre. The idea that you can't afford to implement new features because you're going to spend the money on documenting the new features you can't afford to build... it doesn't make any sense at all.
If he'd found another way to use the money on Requests, then I would have been totally happy. I didn't have any claim on the money. But this was something else entirely. I was extremely concerned. But I still wanted to get the best outcome we could for the project and the community, so I tried to keep the lines of communication open. I agreed that a call would be a good idea, and suggested some times. I also expressed my worry that he was risking his reputation – more strongly this time – and reiterated my offer to help, writing: "I think right now there is a real risk that requests 3 never materializes and the public impression becomes "oh yeah Kenneth Reitz stole that money". I really hope neither of these things happens. But hope isn't a plan. I think we need a plan."
At this point he stopped answering my emails, and deleted the fundraising page – the one with the record of donations received, and what he was promising in return – from his website (before / after). He also updated the Requests documentation and his blog (before / after) to remove references to the deleted page. Some months later, he put up a new page at the original URL, requesting that anyone who had questions about the fundraiser should contact him privately.
Our only contact since then was an email he sent me out of the blue on February 9 this year. Instead of responding to anything I'd said before, he suggested that he and I write a joint grant proposal to the PSF, to pay me to do the same work that his fundraiser was allegedly funding. Of course this was a non-starter. I'm pretty sure the PSF is too savvy to fund something like this without asking some tough questions about where the other money went. And even if they didn't, and even if we somehow ignored the ethical issues, he was effectively asking me to link our reputations together, so that if his handling of the fundraiser blew up, it would implicate me as well. I didn't reply.
Was it an honest mistake?
Not everyone is familiar with standard practices for handling fundraising in open-source projects. So as a comparison, let me explain how the Python Software Foundation's Packaging Working Group handled the funding for the new PyPI.
Since this was our first time getting an external grant like this, we started by making a plan for what to do and who would do it, including identifying existing contributors who were available to work as contractors. Only after that was in place did we apply for the money.
Then after the money arrived, we didn't just hand it over. Each of the contractors wrote up a few paragraphs to formally state their rates and what they were committing to, the group reviewed them, and then we held a quick vote over email to approve them. The contractors who were members of the Working Group didn't vote on their own proposals. Everyone provided regular invoices. And the whole process was ultimately overseen by the PSF's Board of Directors, who are elected by the community.
This is a pretty lightweight process, and it isn't infallible, but it provides a baseline level of transparency and accountability. And the PSF is happy to provide this service for any Python-related project; for example, they handle donations for Flask and related projects.
Perhaps Reitz simply didn't know how these things are normally done, and this is all an unfortunate but understandable mistake. However, I find this unlikely. At the time Reitz ran his fundraiser, he was sitting on the PSF Board of Directors. And as a member of the Packaging Working Group, he participated in the voting for the PyPI funding, which happened a few months before he started his fundraiser. And yet, none of the PSF staff I've talked to knew about his fundraiser until I told them about it.
In short: He chose a fundraiser structure that avoids standard accountability mechanisms he was familiar with. He never had any plan or capability to deliver what he promised. And when I offered a way for him to do it anyway, he gave me some bafflegab about how expensive it is to write docs. Effectively, his public promises about how he would use the Requests 3 money were lies from start to finish, and he hasn't shown any remorse or even understanding that this is a problem.
A betrayal of trust like this damages the entire community. It's hard enough raising money for open-source as it is; this kind of thing really doesn't help.
And on a more personal level, I felt his interactions with me were extremely manipulative. I felt like he tried to exploit me, and that he tried to make me complicit in covering up his lies to protect his reputation. I was extremely uncomfortable with the idea of going along with this, but he created a situation where my only other options were to either give up on working on async entirely, or else to go public with the whole story, at potentially serious cost to myself.
Was this a one-off mistake, or part of a larger pattern?
I wasn't sure what to do, so I started to quietly contacting other community members to get more context. I quickly discovered that contrary to Reitz's public reputation, every time I talked to anyone who had worked with him directly, they expressed serious discomfort with him, and many had their own disturbing stories – mine was nowhere near the worst. Here are some quotes to give you the flavor. I've anonymized most of these, but everyone quoted here is someone I trust, who maintains or previously maintained major open-source Python packages:
  • "I HATE HIM SO MUCH, he is such a fucking narcissist power broker ... his actions have "abuser" all over them"
  • "He has a reasonable eye for API design. pretty much everything else about him bothers me"
  • "we have a special maintainer channel on [...] where we basically figure out how to work around kenneth"
  • Ian Stapleton Cordasco volunteered to go on the record publicly: "Having to deal with Kenneth all these years has made it such that I barely work on python open source software anymore and have largely, quietly left the community".
Something I found especially disturbing: whenever I talked to any of his long-term collaborators about my experience, they immediately jumped to reassure me that I wasn't going crazy. Which... I mean, I appreciated the support. But it was clear this isn't the first time they'd had to do this. Apparently after people start working with Reitz, they always need to be reassured that they can trust their own perceptions. These collaborators have been doing this for so long that this seems normal to them. But it's not normal.
This is the classic "missing stair" problem. Those in the inner circle quietly work around the toxic person. Outsiders come in blind. I'm pretty well-connected in the Python world, and I came in blind. In retrospect, I can see some warning signs. The insistence on auteur status now seems less like a charming quirk, and more like a calculated bluff to claim credit and power while denying responsibility. An insistence on "positivity" is a common tactic among those who want to avoid accountability. But they fooled me.
Something I keep thinking about: the first time I talked to him about async in Requests, months before the fundraiser, he made a strange comment: he pointed out that he was totally dependent on me to implement this, and therefore, if I were to demand that he make Requests use Trio (my library) by default instead of AsyncIO (the better-known competitor), then he'd have no choice but to acquiesce. It struck me as an incredibly strange thing to bring up – it was almost like he was asking me to manipulate him. At the time, I mumbled something about wanting to succeed on the merits, not by blackmail, and recommended that he not set a default at all. In retrospect, I'm reminded of how con artists often start by tempting their victims into some minor unethical act, so that as the con escalates they feel trapped.
His collaborators also consistently cited his bipolar disorder as an excuse for whatever he did. I think this is deeply unfair to Reitz, and to everyone struggling with mental health issues. Illness does not erase the harm someone does to others, or their responsibility for their actions. Many people manage their conditions without causing this kind of harm, and when they mess up, they make amends, just like the rest of us. If someone can't do that, then as a community, we can have compassion but shouldn't give them power and influence.
I think a lot of people don't realize how little Reitz actually has to do with Requests development. For many years now, actual maintenance has been done almost exclusively by other volunteers. If you look at the maintainers list on PyPI, you'll see he doesn't have PyPI rights to his own project, because he kept breaking stuff, so the real maintainers insisted on revoking his access. If you clone the Requests git repo, you can run git log requests/ to see a list of every time someone changed the library's source code, either directly or by merging someone else's pull request. The last time Reitz did either was in May 2017, when he made some whitespace cleanups.
At least as far as commits go, his main contributions since then appear to consist of merging some small doc fixes, and monetizing the project by adding donation links, ads, intrusive sponsored links, etc. All of this money goes directly into his pocket, not the project's maintainers.
I also learned that he has a history of selling premium support contracts for Requests, where he took the money and then delegated the actual work to unpaid volunteers.
I don't have any objection to trying to make money from open-source. I've written before about how open-source doesn't get nearly enough investment. I do object to exploiting volunteers, driving out community members, and lying to funders and the broader community. Reitz has a consistent history of doing all these things.
Why am I writing this?
I've struggled to decide what to do here. Since last year, I've tried to be very cautious when speaking to people about this, because I don't want to start false rumors or feed an internet mob. (This has also meant keeping quiet about the work we've been doing on async in urllib3, and made it difficult for me to work on it at all.) And I'm scared of how making this public might affect my own reputation and mental health.
Ultimately, I decided to speak out because I care deeply about the Python community and its members. If one of our community's most prominent members freely lies to donors and harms volunteers, and if we all let that go without saying anything, then that puts everything we've built together at risk. And I'm in a better position than many to speak up.
So what happens now?
Since this is the internet, I have to say explicitly: Please do not harass or abuse Reitz. That's never appropriate. (And in case you're the kind of person that doesn't find moral arguments convincing, then consider: he clearly wants attention.)
I call on Reitz to make a public accounting of the money he raised and how it was spent.
I urge the Requests project maintainers to transition their project to a more normal, less dysfunctional governance model. You can acknowledge his contributions without buying into his personal mythology. His insights are not irreplaceable. You know this situation is harming you and your users. You and your users are more important than his ego.
Beyond that, I'm going to focus on my own work. I'm done keeping secrets to protect Reitz from the consequences of his actions; what happens next is up to him and the larger Python community.

Kenneth Reitz states this is a character assassination conspiracy to ruin his time at PyCon 2019. (archive)

njs's blog post
I appear to be the target of a personal character attack piece, that's been making it's rounds on social media today, expertly timed to ruin my weekend at PyCon US 2019.

I got nothing but strange signals from njs since I first interacted with him, which is why I didn't answer his threatening-sounding emails. What was the threat I was perceving? That he'd do basically do exactly this.

And, he did. Good for him.

  • We are not planning on directly using njs's urllib3 work, as it has proven to be a bad choice for us, moving forward. We are working on making a low-level http library built into requests3 itself, which will have many advantages.
  • Until recently, when Tom Christie joined the team, I was the only person available to work on the advancement of requests.
  • I approached njs shortly after the fundraiser, and he was almost offended that I wanted to explore the possibility of reimbursing him for his urllib3 work, because he "had a job".
  • Because of this, the fundraising funds were allocated to myself, to reimburse myself for all the time and energy I'm putting into Requests III, which I want to make a really great product.
  • All major sponsors (e.g. the sources of the money) are aware of who they were paying. All one-off donations that were made were made with a link that said "Pay Kenneth Reitz". There is no conspiracy here.
  • Any future donations to Requests III efforts (if there are any), will be split between Tom & myself. We were discussing the possibility of using PSF Fiscal Sponsorship for this component, but we're going to cross that bridge if/when it's needed.
All that being said, I'm not sure why this person feels the need to attack my character, including curating a list of quotes (what?) from "collaborators". All I have to say about this section is hey, if you don't like me, don't fucking work with me. I don't have time for two-faced relationships.

My set of real collaborators is generally scoped to a very small set of close friends, so I'm not really sure who he's referring to anyway.

Anyway, just wanted to get some kind of response out there.

Keep on, keeping on.

Various (mostly scathing) discussions about this on Reddit: /r/programming, /r/python
 
Last edited:
Lmao. Requests is a giant piece of shit. (I've had the displeasure of using it recently)

Absolutely no suprise it was written by a faggot considering the screeching over master/slave terminology (That got it changed) a while back.
 
  • Disagree
Reactions: awoo
Today in FOSS news, Python's cis white male creator isn't interested in mentoring white guys and thinks there's not enough women in FOSS.

There's a thread about this in the A&H subforum as well.

As Python grew in popularity, van Rossum noticed a problem.

In a rare interview with the programmer in October last year, which was recently published on YouTube, he was asked about the lack of diversity among the people working on open-source programming languages. He noted that it was an issue, and said that those who ignore it, because open-source projects are available for anyone to contribute, are not seeing the full picture.

“It’s not just joining a project that’s the problem, it’s staying in the project, which means you have to feel comfortable exchanging emails and code reviews… with people that you don’t know personally but you communicate frequently with online,” he said. Van Rossum thinks that these exchanges can be difficult for women because of unconscious bias and male-driven cultural norms within open-source communities.

“It’s not just about writing the code, but you have stand up for your code and defend your code, and there is a certain male attitude that is endemic in many projects where a woman would just not feel comfortable claiming that she is right,” he explained. “A guy who knows less than that woman might honestly believe [he is right], so they present a much more confident image.” In his experience, van Rossum sees incompetent men’s ideas gaining acceptance more often than merited because they are more forceful in how they present them.

Van Rossum believes that the different attitudes of women and men in programming communities is due to wider societal problems that we need to fix from the bottom up. “I’ve always felt that feminism was right and we need to change the whole society,” he said. In the meantime, he feels a responsibility to act in the places he has influence, like in the Python community.

He believes the key to making open-source communities more inclusive is establishing (and enforcing) codes of conduct and mentoring. Van Rossum says that he now mentors women and underrepresented minority programmers. “But white guys can forget it,” he said. “They are not the ones who need it most.” (In typical programmer speak, he calls mentoring a “completely distributed, democratic approach.”)

Rather, he thinks it’s important that men are educated about their biases. “[There are] some guys who are super defensive when you tell about this shit, but the majority of guys just don’t know any better,” he said. “The first time I heard the term unconscious bias was maybe five years ago and it was an eye opener.” It’s changed him, and he thinks it could change others.

Here's the video at the timestamp mentioned, 23 minutes:
 
Today in FOSS news, Python's cis white male creator isn't interested in mentoring white guys and thinks there's not enough women in FOSS.

There's a thread about this in the A&H subforum as well.



Here's the video at the timestamp mentioned, 23 minutes:
Every one of these guys who act mystified as to why more chicks aren't CS undergrads, FOSS participants, etc are lying, obfuscating faggots.

Every geek of a certain age saw it. We all went to classes with an equal number of women, sometimes even black gals. Then half of them disappeared for Psych degrees. The ones that stayed wound up in programming/QA/support for a year before moving on to middle management and eventually, project/product management.

I want to see someone from IBM/Google/Whoever say, "Damn, what's with all these white chicks managing teams of six people? They should really look frankly at their inherent biases."
 
1557875019587.png



Found on 4chan the other day (Krita open source developers).

I'm torn and as I do like not having to pay for software, but these guys are convincing me to just buy some software license. I mean at least commercial software is more concerned with making a quality product worth your money than "sticking it to big corporations" that free software devs tend to do.
 
Last edited:
1557875019587.png



Found on 4chan the other day (Krita open source developers).

I'm torn and as I do like not having to pay for software, but these guys are convincing me to just buy some software license. I mean at least commercial software is more concerned with making a quality product worth your money than "sticking it to big corporations" that free software devs tend to do.
First, many artists I speak to hate Krita. It never works properly and always lags on most PCs. I've tried it myself. It's shit and hates the tablet I use. While I don't draw all that much, at least everything else actually works with it.
Second, the statement "Sai is not really popular in general; it's popular with a very peculiar and particular subset of amateur artists" is false and very arrogant. Yes most amateur artists use SAI because cracked versions of it are easy to download but there are a lot of pro's that still use SAI.
Outside that, most artists are starting to use programs like FireAlpaca, Autodesk Sketchbook, and MediBang Paint Pro, which are all free, or if you have an Apple device, ProCreate which is cheap at $10.
If you want to pay for a paint program, try Clip Studio Paint. It's $50 for the base version but pretty damn good for the price.

EDIT: Actually, follow their Twitter and wait for a sale. It regularly goes on sale for up to half off. It's a steal at that price.
 
Last edited:
The woke side of OSS has just found out that GIMP exists: https://gitlab.gnome.org/GNOME/gimp/issues/3617
That issue has been closed, but someone's already started a new one: https://gitlab.gnome.org/GNOME/gimp/issues/3618
This whole thing appears to have started from (where else) a Mastodon instance: https://social.libre.fi/notice/9kUMy43ltWKWgZOGVE

I can't wait for the day that the word "git" becomes offensive somehow.

I love how the dude who made GIMP specifically said: "No, we're not changing the name" and these assholes are still trying to push the issue.
 
The woke side of OSS has just found out that GIMP exists: https://gitlab.gnome.org/GNOME/gimp/issues/3617
That issue has been closed, but someone's already started a new one: https://gitlab.gnome.org/GNOME/gimp/issues/3618
This whole thing appears to have started from (where else) a Mastodon instance: https://social.libre.fi/notice/9kUMy43ltWKWgZOGVE

I can't wait for the day that the word "git" becomes offensive somehow.
Look at all the trannies and perpetually offended showing up.
That Lenora character stood out to me. At first I wasn't sure if they were a tranny, but after seeing who they follow on twitter I am almost absolutely certain.
AnotherTechTranny.png
 
There's no benefit to changing the name other than to appease these assholes. The guy is right in that GIMP is practically a household name on the Internet so it'd do more harm to their image than good. You don't change brand names when they're well known because it'd lead to massive confusion for users/consumers. Besides that, most people don't even know about that BDSM type of shit so the only gimp they know is the paint program GIMP not some men in rubber suits.

It's also cheeky that they're saying it's an insult when IIRC, the common term for those suits is literally 'gimp suit' so this is just a case of being offended for others and speaking for an entirely different community to show their virtue.
 
  • Agree
Reactions: DidYouJustSayThat
That Lenora character stood out to me. At first I wasn't sure if they were a tranny, but after seeing who they follow on twitter I am almost absolutely certain.
View attachment 828180
Google image search:
leo_tindall.jpgleo_tindall_2.jpgleo_tindall_3.jpgleo_tindall_4.jpgleo_tindall_5.jpgsilverwingedseraph_1442157733_17.jpg

Real name Leo Tindall
old website is archived
new site leotindall.com is a "security risk", I'm not opening it at work
 
There's no benefit to changing the name other than to appease these assholes. The guy is right in that GIMP is practically a household name on the Internet so it'd do more harm to their image than good. You don't change brand names when they're well known because it'd lead to massive confusion for users/consumers. Besides that, most people don't even know about that BDSM type of shit so the only gimp they know is the paint program GIMP not some men in rubber suits.

It's also cheeky that they're saying it's an insult when IIRC, the common term for those suits is literally 'gimp suit' so this is just a case of being offended for others and speaking for an entirely different community to show their virtue.

The real SJWs aren't pissed about the weird BDSM reference via Pulp Fiction. They're pissed that "gimp" has ableist connotations, i.e. someone with a "gimp leg."

There's actually a bit of an age gap here, I think. Anyone older than a millenial (and let's face it, probably nearly all of the devs fall into this bucket) is going to probably go with the earlier definition, someone with a gimp limb.

Anyone associating "gimp" with Tarantino is probably a bit younger (or a bit more perverted). If GIMP was actually named in homage to that film, the SJWs would be all "ohhh muh brave fight against kinkshammming" or some shit instead.

Now, all that said, if someone's that butthurt about it, they should just fork the code and do nothing but patch the name (and change all those gosh-darn problematic pronouns while xey're at it!). Super trivial to do. I mean, with 79 participants in the first issue tracker post, surely the "pro name-change" side has enough participants to maintain the code! Ahh, but that would require effort, and would receive far fewer high-visibility ass-pats from fellow complainers.

The irony of the GNOME project drawing a line in the sand here is not entirely lost on me, though. Their "fuck you, user!" attitude really rubs me the wrong way, but a broken clock is blah blah blah.

Also, look at the OP (there, not here) and his first reply when told to pound sand by the FAQ. "the only way the connotation can actually shift is if the people hurt by it reclaim it themselves" -- "that's our word, you don't get to use that word" kinda idiocy. He suggests "Wilber." What a fucking joke.

Edit: apparently they can't even regex. wow
 
Last edited:
Look at all the trannies and perpetually offended showing up.

These idiots who constantly pull this shit offend me and I now have PTSD about it. I should probably sue them.

Anyone involved in this dumb campaign should be just permabanned from anything. These worthless idiots have nothing to contribute to anything, they're cancer, gas them.
 
Lol. Unlike all the other projects gimp is woefully unmaintained and they can't afford to waste huge amounts of development time changing a fucking word.
 
  • Like
Reactions: 1 person
Back