I found a one-char typo in the docs for Python's typing_extensions library
twitter.com
twitter.com
It's no wonder we're still finding critical issues in core projects. What's a real wonder is how someone managed to navigate the maze to trigger the process to get a change all the way through release.
You'll notice how I'm not mentioning how to fix any of these problems, and that's intentional. Each project will need significant effort and/or money to get to a reasonable state, but many people who want to help will give up.
Edit: but I’ve submitted various security vulnerabilities to oss products, real actual issues too, not Nessus output.
I don't like the idea of security matters being payed extras.
Would you make free cupcakes for people, but refuse to wash you hands while doing so unless someone paid you to?
"Hey, I'm too busy with paid work to make my cupcakes hygienic; you want clean cupcakes, make your own!"
And the wonderful thing about open source is that you can take the existing code, fork it, and do things the way you think they should be done.
No salary? No obligations.
How would you know unless you asked. When someone offers you something for free, do you interrogate them over their process? They aren't paid to answer your questions either. The end result is no one should accept anything that is free.
Well done, Microsoft just won.
> the wonderful thing about open source is..
Are you writing your own OS, prog-lang and compiler from scratch too?
If "you can take the existing code, fork it" is the only way to get secure code, then the real implication is having secure code requires you to "take the existing code, fork it";
This sounds less like the wonderful thing, and more like the terrible thing.
> No salary? No obligations.
Then why can't people give legal/medical advices without licence?
Why can't I see a dying man in the street and choose not to call 999?
Why can't I refuse jury duty, or the draft etc etc?
> Are you writing your own OS, prog-lang and compiler from scratch too?
Yes -- I'm an OpenBSD and 9front committer, and I have built my own language and compiler. My website -- https://orib.dev -- runs code I can commit to all the way down to the hardware.
But that's neither here nor there. I do that because it's fun. You also don't get to demand work from me without paying.
Is sounds entitled b/c you paraphrased it uncharitably.
I didn't ask for "any spec" - there's a big (Hippocratic) difference between dictating what form something comes in, and asking that it do no harm. A poison cupcake, much like a poorly secured software, could wipe out any benefit it brings.
Also, I'm not demanding anything: feel free not to produce anything; But if you do, make it reasonably secure, or clearly/explicitly communicate that is it insecure; in the same way websites are (supposed) to seek permissions for cookies rather than assume them.
The context of "or Microsoft won" is that MS pushed the idea that FOSS could not be trusted without legal liability - this essentially makes that case.
I provided a few example of where people are expected to do things without being paid, do you also refuse to do those things?
Finding a putty.exe that is different to every other putty.exe in the network sure sounds like a red flag worthy of someone uploading to virustotal and then project zero getting their hands on it....
That's not to say the original author owes any debt to the community, but when pay is the only motivation you wind up with chronically broken communities optimized for rent extraction. (And I'm definitely not saying that OSS authors shouldn't be paid either...) authors can walk away from their creations, but it doesn't make the result of doing that without any concern any less important or relevant here.
You're not really suggesting that OP's concerns are somehow irrelevant because code owners need to be protected from bad actors by annoying/bugged-out or broken gatekeeping robots, are you?
GH Sponsors works great when you're sponsoring as a company; I can't use it as an individual.
An easy way to provide this is to put up a BTC address (and potentionally ETH if the recipient is willing to deal with the potential managerial overhead of that).
If the only page blocked is the donation page, it's not that bad! Many supposedly tech-friendly websites block Tor as soon as the homepage... But i share your sentiment. More than once, i've found a snail mail address for a project i cared about and arranged to send some cash in a letter along with a thank-you note. That has always triggered friendly interactions that Stripe/Paypal never provided as part of their offering :-)
On a side-note, i'm always glad when some NGO serves as a front for donations to smaller projects. Setting up a bank account with Stripe (or whatever) as a maintainer is a burden. But thanks to liberapay.com or opencollective.com making and receiving donations is much easier. Another one worth mentioning fdn2.org maintained by LaQuadrature, which also enables you to donate to April (FLOSS NGO), Framasoft (libre culture/software NGO), Wikileaks (no introductions necessary), Nos Oignons (Tor operators NGO) and Exodus privacy (static analyzing of trackers/malware in Android apps).
The barrier of stripe or paypal (neither of which require accounts for payment) is _far_ far lower than the barrier of going and fetching some bitcoin.
That aside...
Maybe for you, not for me.
PayPal and Stripe do require accounts, nondeterministically based on various factors like IP address. For example, I can not use PayPal from my residential IP. Several attempts to address this via phone and email yielded nothing but frustration and lost hours.
Not to mention that both are subject to US sanctions laws and thereby legally prohibited from serving individuals and entities who happen to be in or from “the wrong countries”.
This can be done later, or ahead of time.
Alternatively, if you really want the full legacy finance experience a la paypal, you can set up an account that auto-converts it to e.g. USD and sends it straight to your account. For you as a recipient, this is pretty much the same experience you would get from say a normal cc provider. IMO it's preferable that individuals control their own keys but to each their own.
Yes, this setup doesn't give you as a recipients all the benefits of the crypto-economy - except that you can now receive funds from it, and provide those benefits to your donors.
You can't (generally) pay rent or buy groceries with bitcoin. Donations that can't be spent aren't really useful as donations.
> Open account at e.g. Coinbase. Send in crypto. Convert to fiat (e.g. USD). Wire everything to your account. Report the amount you cashed out as if you had received the corresponding amount in fiat directly.
Which is more work than setting up a PayPal account and is certainly not a "close to 0 barrier" as claimed.
And my employer-sponsored 401k account isn't useful to me either... seriously you may not believe in "Bitcoin is sound money" or whatever crypto flavor of the day, but I actually think it might be OK if it necessarily takes most people even a bit longer than a year to figure out how to "cash out" their Bitcoins.
I mean that you honestly have to be pretty obtuse to believe (today) that someone who received a bitcoin donation in any year before 2021 (and kept it) received what amounts to a "not really useful donation." Year-on-year, even in a bear market, yada yada – none of these are good reasons for you to BUY bitcoin, but as someone receiving a donation from a human who thought you did a good job, I think maybe "try not to look a gift horse in the mouth" is a valid adage here?
You are insisting that people with no interest in owning bitcoins set up wallet, figure out tax rules etc... Just so you can do the the favor of sending them bitcoin.
> you honestly have to be pretty obtuse to believe that someone who received a bitcoin donation in any year before 2021 received what amounts to a "not really useful donation."
I believe there are tons of people, pre-2021, who received useless bitcoin donations and lost the key before they converted it to an actually useful currency. I don't believe this because "obtuse" or whatever other names you want to call me.
It happens? But at least you avoided the tax accounting, right...
Not only that, you don't actually need an account to pay with paypal or stripe. You can do checkout as guest, and enter a card number and be done with it.
Do you think the issue of tax reporting for donations is dismissed when you avoid crypto? Unless your project is incorporated as a 501c3 or other non-profit entity (which has its own set of onerous reporting requirements, this is not a backdoor escape hatch) I don't see how that's any less of an issue without cryptos.
You can avoid capital gains reporting, but your cash donations are still income and must be counted. They will be taxed.
Python is well into the process of transitioning from bugs.python.org to GitHub issues. See PEP 581[1] for the rationale. Ezio Melotti is leading the project, and one may follow the progress on the psf/gh-migration GitHub repo[2] where the work is being managed (including specifically the Projects tab).
Hopefully, that should help make things smoother and more accessible for potential contributors.
It seems to be veering in a direction of some kind of weird cloud IDE thing, which is fine in and of itself, but what happens if/when it is no longer suitable as a general dev platform?
Python has full and total control over bugs.python.org, whereas Github is a proprietary platform. Might it not be a mistake to cede control over the issue tracker? It seems like the main problem in the article is the CLA-signing process anyway, not BPO.
Sounds like you should go and read PEP 581 before criticizing their decision!
I certainly don't think the problem with GH is that it's for "mindless kids". I hate mailing lists and I hate old-school bug trackers that don't support code markup or rich linking. In the short and medium term, I'm grateful that things will become a lot easier. The long term is what worries me.
But I'm also probably being a bit too cynical. If and when in 5-10 years they want to move off of GH, they will be able to do so. I'm not envisioning some kind of catastrophic "rug pull" from Microsoft where suddenly the Github API disappears and the issue tracker becomes locked-in.
I am personally someone who only knows PR-based workflows and is somewhat ignorant about other workflows. There are the mailing lists and old-school bug trackers which I am pretty sure I don't like. But I know that several (most/all?) big US tech companies use non-PR-based workflows via tools like Gerrit and Phabricator. I am not at all clear yet on the pros and cons of those workflows versus PRs.
Sorry, I wasn't accusing you of holding that position. Some embarrassing idiot on the emacs-devel mailing list said it.
However my experience of reporting Python documentation issues has been frustrating for other reasons. I reported a lack of detail in the multiprocessing.Process.exitcode documentation in October:
https://bugs.python.org/issue45554
Nearly three months later, no-one has commented on the bug report -- not even to triage it. Fair enough, it is a minor issue, people are overstretched particularly with the current world situation, and perhaps proposed fixes would be of more interest.So in late November I set about improving this documentation myself. I found the CLA process relatively straightforward, though I was unimpressed that the online signing via Adobe Sign refused to work in an incognito window. Emailing a scanned signed paper form was an effective and straightforwardly handled alternative.
I filed a PR with a proposed documentation improvement in mid December:
https://github.com/python/cpython/pull/30142
Apart from one drive-by comment from a non-core contributor, no-one has commented on the pull request -- not even to approve running the remaining basic workflows. Also fair enough, it has only been a couple of weeks outside the holiday period, and it is a minor issue.By now the PR is on page 4 of the cpython repo's list of open PRs, so it is difficult to imagine anyone getting back to it except by accident. The Doc-SIG mailing list appears to be mostly moribund, so doesn't appear to be a good place for a nagging message.
All in all, I'm not feeling encouraged to spend time making what are intended to be useful (albeit minor so far) contributions.
Python is almost entirely developed and maintained by volunteers. The increasing backlog of issues and PRs is recognized as a problem.
Thanks to a generous donation, the PSF has recently begun employing one "developer in residence", Łukasz Langa. He is specifically tasked with tackling this backlog, and has been doing a mighty good job so far.
Still, with over 1,000 open PRs and many times more open issues, we (the Python devs) could use more helping hands. For example, anyone can confirm that bugs reproduce, review PRs, or test fixes, and those are all meaningful help (when done thoughtfully and thoroughly.)
I, and most core devs, volunteer happily and ask for nothing in return. If you think the situation outlined in the parent post isn't great and begs improvement, you're welcome to help!
For someone like myself who is not already a core Python maintainer, how would you recommend making improvements to things like the Python documentation if not by raising pull requests?
Otherwise, one could help in ways like I mentioned previously: reading existing issues, checking if they are still relevant and commenting accordingly, reviewing PRs and patches, etc.
That is precisely what I did. As noted, there has been no indication (by activity on the issue or PR) that having filed these helped or is appreciated. Hence discouragement.
It is one of the hard lessons of open source maintainership that, without providing feedback to contributors, there is no demonstration of the project's appreciation. Therefore new contributors will (correctly!) conclude that the project does not appreciate these efforts.
A while ago someone posted here a post of Cray/HPE complaining to a bunch of volunteers on the GCC Fortran project that F2018 support was incomplete. The GCC team fully acknowledges its incompleteness, and knows that it is in fact, incomplete. It is not recommended for production applications. There are about 10 other compilers, some by companies such as NVIDIA and Intel, which would work perfectly fine and which have full F2018 support. But instead of using any of these, or seeing as the one complaining is on the committee that created the F2018 specification, going out and fixing it yourself, they complained to like 6 people because their government project was falling behind because of their inability to even comprehend that some group of internet communists will not do free work for them.
Literally idiotic. You're a representative one of the world's largest companies when it comes to this kind of stuff and perhaps one of the most knowledgeable people on Fortran alive. Go fix it or stop using beta products by internet communists for government contracts.
I’m not saying that’s what is driving the OP, but I myself would certainly be driven by that to some extent.
In my experience, typeshed changes were always reviewed promptly and Mariatta reviewed a bunch of simple doc fixes within a couple of days.
Contributing to libraries that didn't have an established owner definitely took longer to get reviewed (even more so for features that only a subset of developers would use). I sent an email on the mailing list to follow up after a while and Guido ended up merging one of the changes. For another PR (to fix a broken test that had been broken for years) a core developer assigned various reviewers, who all unassigned themselves. After a year of no activity, I then followed up directly with a core developer during their office hours and we walked through the review together.
Being a volunteer-run project means that they work on things during their free time, and during my discussion with one of the core developers they highlighted that since Python is volunteer-run, they can't really force anyone to do reviews—people just work on whatever they want, whenever they want. I think that's fair, but it certainly biases away from people who submit a few contributions outside of the core developer group. We also talked about the recommendations in the dev guide about reviewing code as a non-core developer, since it seemed like a sort of chicken and egg problem where people who aren't core developers won't/aren't able to review code. And even if they do, their review isn't necessarily conclusive to getting a change reviewed and approved by a core developer, who likely will just ignore their review (since there's no credibility).
Yet, in retrospect, I wonder if the OP considered simply reporting the found issue, then moving on with his own priorities?
After all, it's up to the project maintainers to decide how to prioritize/review any issues/contributions.
If the fix is so trivial, it sure could just be applied by any existing project member.
So, reporting an issue should not require a CLA and, indeed, in this case it was just a login away.
As for the fix, well, it's understandable that we developers have a certain degree of ownership and almost self-imposed duty to 'pitch-in', especially when qualified. Yet, in the open-source or not spirit, it should not really matter whether the issue fix was authored by the reporter, as long as the project/product got better.
Sure, it feels appropriate to get one's own effort attributed, and in case of a sizable issue/PR it's very well important to also account the effort that goes into reviewing such contribution.
Especially for something as trivial as this, I don't see what value a separate issue adds.
If you want to have something to link to e.g. for your release notes, a PR can also do that job.
As an opensource maintainer, if someone opens an issue "Typo in docs" and a PR "Fix typo in docs #12345" five minutes later, I'll just tell them to not bother with the issue next time because that's just more clicking for me.
If the project does say this, then the answer will be - I want to, but getting privileges to do so are too hard.
I suspect a lot of open-source folk would not appreciate this, but in my experience as a maintainer of a small-ish project, the overwhelming majority of contributions are well-intentioned but not very helpful (of course, the few contributions that are extremely helpful more than make the whole process worth it!).
It creates a fairly awkward situation where the maintainer doesn't want to be rude and reject the contributor's work (which they have spent their own time making and are sharing for free), so they reluctantly take time away from solving real issues and validate the patch instead.
I could see how erecting deliberate roadblocks could avoid a lot of this discomfort.
I do think something similar about issue templates though, their main function is to give programmers "cover", so they can say "you didn't fill out the template" instead of "the bug report you wrote is garbage".
At least for the Python project, there are more than enough inherent "roadblocks" for new contributors to overcome. Work is being actively done to remove some of these, or at least make overcoming them easier.
The CLA is also usually not required for trivial fixes like typo but the bot still asks for it, only a maintainer can bypass it and consider whether it is a trivial fix as far as I know.
Though obviously it can feel outsized when trying to fix a typo.
Nothing in there is urgent in any way, or blocking, or prevents you from doing other things.
For example:
> But this contributor UX is holding Python back
As in, fixing one character typos?
If he didn't really want to follow the process to contribute, a bug report would have been fine (which is what finally happened, reading the PR).
He ended the PR with "I unfortunately feel that I've already exhausted the amount of energy I can dedicate to this", but he had some energy left to write that twitter thread.
Python dependencies break if you even so much as rub two brain cells together wrong. I have wasted weeks of my life trying to get x python library to work with y and I have come to the conclusion that it is impossible. I have no idea how people use this god forsaken programming language. I guess they just keep everything in one monolithic .py file and pray to God that python doesn't do some shit in the background that makes even that fail (which it has done to me).
It's no surprise that this amount of bureaucracy goes on behind the scenes as well. The entire language is held together with duct tape and Van der Waals forces.
Q: Why can't we have nice things?
A: because then terrible people would take advantage of it.
Signup requirements might have been put in place after bad actors did something?
On Linux, when also most of the software is open source, and also myself being a developer who can read and write C++, and when the bug is often also quite obvious in the sense that I have a good understanding of what exactly went wrong, and I would be able to easily fix it, I really wish that this process of actually looking at the code and fixing it could be simplified and unified.
Linux (Ubuntu) can easily link a GUI window or binary to the corresponding package, and that can be linked to the source code. So I wish for some button on the window decoration like "open code in editor" or so. This would then check out the code and open some editor. And maybe even attach with a debugger live to the running application.
Then assuming I can identify and fix the bug, I would like to wrap up this fix automatically in some PR which gets send upstream and to Ubuntu.
Of course, there are many details in this idea, which need to be worked out.
E.g. should it just get the source code tar dump, or should it rather clone some Git repo and then checkout the right commit? The latter gives me the flexibility to also switch to the current main branch, or some other version. But then, not all software has a public Git repo.
And when I did some change to the code, how would I build this? Using the Linux package build system? Or just make or whatever make system the software provides? And is it easy to just stop the app and then start my custom compiled version, or does this need further setup? Or would this replace the system installation? For more system relevant packages like Xorg, systemd or so, this is trickier and riskier, but I'm fine to accept any risks, if there is an easy way to just rollback to the official version.
I did various fixes to various software packages along the years, and each time I do this process in a manual way: Making an initial bug report on Ubuntu, searching for the public repo, making an upstream bug report as well, cloning the repo, looking through the code to find the bug or where to implement some missing feature, then figuring out the software build system and setting this up, then the actual implementation, then preparing a patch, and attaching this to the Ubuntu and upstream bug report.
The point is, the actual fix, and also often finding the problem in the code is often just a couple of minutes, maybe needing 2-3 iterations, and then it's done. But all the other things take so much effort, that I keep just ignoring most bugs I see all the time, if they don't annoy me too much. Also, I need to actual get some other work to be done...
Ubuntu et al, know where their sources come from after all, and how to build each package. I wonder if Arch or gentoo wouldn't be a better fit for this. I do have quite a bit of experience with yocto and buildroot, building distros for embedded systems.
I'm joking about the rich and bored, part. I should just jump in and do it.
So simple things like "Docs refer to wrong PR number" which can quickly be verified can be passed to someone already prepped and familiar to raise a PR.
I'd structure it so that documentation bugs where separate room from other kinds, and that way you would burden people to supply python version / run env or irrelevant things like that - just ask for a url link to the relevant doc page as mandatory.