Hi everyone,
I am starting this thread to revisit the donation banner discussion. I am aware of the previous thread (locked on Dec 25th) and do not want to accuse anyone of anything. I am raising this again for two specific reasons:
-
Timing: The holiday period is over, yet the banner remains, with now outdated copy (2025 is no longer “closing out”, it’s over). The banner has been up for more than 3 weeks now (first appearance in appearance on archive.org on Dec 11. By now, regular visitors will have seen (and dismissed) the banner many times. The post was locked saying “please have some patience for staff to deploy a response”. There has been no response in 9 days. It should not be hard to revert the commit that added the banner.
-
Severity: The screenshot in the original thread did not depict the full severity of the issue. The banner is unfolded by default (the thread showed it “minimized”), covering half the screen (or more on mobile, the thread showed on desktop). Dismissal requires two clicks (one on a small, low-contrast font) and is not remembered across domains (
python.orgvspypi.org). The thread was tagged “packaging”", even though it affectspython.orgas well.
I want to be clear that I am very happy that the fundraising has been going well, and I am not against banners in general.
Given the feedback from the initial thread, it seems to me that some things could be done better in the future:
-
Independent Review: Intrusive/divisive UI changes should be reviewed by PSF staff not working directly on the feature. Teams incentivized by revenue metrics may unintentionally overlook negative externalities (UX degradation) that affect the wider ecosystem. There appears to have been no (visible) code review of the PR adding the banner: load fundraiser banner from donate.python.org by ewdurbin · Pull Request #2838 · python/pythondotorg · GitHub
-
Staff Availability: High-impact changes should not be deployed immediately before holidays. If critical feedback arises (like the accessibility issues raised previously), staff must be available to action it rather than leaving the site in a degraded state during the break.
-
Strict Limits: Future approvals should outline specific boundaries to respect user experience:
-
Time Limit: e.g., strictly limited to 1 week.
-
Dismissal: Must be a clear, single-click action on an obvious button.
-
Size: Strict limitations on the screen space occupied (e.g., no default unfolding to 50% height).
-
Ideally, the banner should be deactivated as soon as metrics show that click through rates and new donations start to drop - as this signals fatigue.
-
I want to emphasize that I do not intend to criticize anyone personally. I am raising these points simply because I care about Python and want to ensure the web presence remains high quality.
Thanks.
Update: I’ve located the commit that added the banner (to python.org) and made a PR to remove it again: Remove fundraiser banner as year 2025 is over by corneliusroemer · Pull Request #2859 · python/pythondotorg · GitHub . The pypi commit that added the banner is here: load donate banner from donate.python.org by ewdurbin · Pull Request #19120 · pypi/warehouse · GitHub - it involves a lot of (probably automatic) changes that make a simple revert less trivial.
Update 2: It appears that since my post 2hr ago the script was changed to no longer maximize the banner by default. Thanks for that - that’s definitely an improvement. Makes dismissing in one click possible and reduces banner size. (I might be wrong and without the source it’s hard to be certain, but I’m pretty sure it was maximized until 2 hours ago - the archive org link above backs this up)
Update 3: Looking at the banner source code, it makes me think it was vibe coded with limited code review: a) Why choose a dismissal expiration of 7 days? Why add code for this at all rather than honoring dismissal forever? It’s hard to imagine a human would have explicitly coded “Yes, if the user dismisses, show them again in 7d, ignoring their previous instruction”, b) Config variable showDelay is unused, c) Heavy use of obvious comments.
