Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vVs7h-009JO6-2t for pgsql-www@arkaria.postgresql.org; Wed, 17 Dec 2025 14:03:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vVs7g-00D611-04 for pgsql-www@arkaria.postgresql.org; Wed, 17 Dec 2025 14:03:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vVs7f-00D60b-2A for pgsql-www@lists.postgresql.org; Wed, 17 Dec 2025 14:03:24 +0000 Received: from mail-yw1-x1135.google.com ([2607:f8b0:4864:20::1135]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vVs7d-001Er4-12 for pgsql-www@lists.postgresql.org; Wed, 17 Dec 2025 14:03:23 +0000 Received: by mail-yw1-x1135.google.com with SMTP id 00721157ae682-786d1658793so54090467b3.1 for ; Wed, 17 Dec 2025 06:03:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hagander.net; s=mail; t=1765980199; x=1766584999; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=CFSgL9c0pXm/as0/lf9AjMnqb+QdLp28LRBZ1k2QY1Q=; b=FC9wEGGnXm4DCSx2bvBxDiot+P3b9XW29Ybp9S955r08vlYUwGxiRsP23oX0Xns+Qh ljCRoOjFBiWWh3QvmbxaY+p9vgaDp6CwYnJiweWO7rUqT6qJpalAuAGLrSaoYcR4oiSM ZkBp47YFDS8TsU8uUdb4rfbLkTHP1Qz92sSZnHEW+AG1hHxd68+zjIFMNBanDitOE61C 4FoMOQD5ivqCq3gUZivtZFjbzXMDZtsb7NSdSjJGAVKxQD3TZtmQ/gkyDAGu9T9AjNSu DjVhx1RxVPNYuuSfM2q6Czltp9mTHWN+BGZ7hpKQGmKoAGvfD0zpEti3l4062+BYSBaZ xPQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765980199; x=1766584999; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CFSgL9c0pXm/as0/lf9AjMnqb+QdLp28LRBZ1k2QY1Q=; b=TJqimdeMnVl4Uq8pEzUMjH+iQEANmM80Cut7BPwaJvzoxFRU7WvZ8HxdOXVBjc3nvM Emrdkn2YNqYy+Rc+BXFjLUTEqMHLDO6seZpfg0wmpPbvOVNFm7S62KFwXa/I2T7LjIqD wpGDpRS9HceyvsLzWD9nmDWU3aoD0xMOxv3T64hIKZo9cD6VbrPP4ekVGNzBX+1tfr28 SVjgGnkh0ZmdAqIdAXH69iwH93BSFnbDlgwLnV1rIuWOQ0stxAYxB4ga0obDpSs0f+Ah qorZ64wu4pGz2H+9v9fzC+W/QthnkLKklLN3Qd8JHgOI16ilmDkj70CGFLQHb/1n5WTN x6AQ== X-Gm-Message-State: AOJu0YyRA5ADl26zXDa1hTMrAsPMW7Unrr/9+aiSwVJ8fiyO47BwJ+DS 7aTUX3eu9wgNOY0I6y/Ret1fqJWIOvn3f/BLi8+vKGoRGO2eFaJcSkH+6YPiEwlFuEf6TsbQF0i hZBKm3LdDqrjvq38veVtjgTa/bJcGhg0wnB7YD7QL X-Gm-Gg: AY/fxX4RBulU7hpHq1Wt+TR3it1pUN3fc0xLdy4O9SJezTQAes0Z2jzDI8D0Ry0X/Ns wG2Z4xkGByyzqDaba7bgs3/RdX+EZ4irqKy3Uk5NM0KTEfNV0byfkJJMJ34AV5NlbV5pXK02CeC 4C+4fsYFtgeNls4QCmSW4sK+EnOQl1ot2oSTq6vb4N222MZht9MBuWLQGK4PXFXn4Yh9e+TLHnk cwaHTTa1RPM77r5ecFPIc8J26R++lhaICf1P+8lxgriFRpkHbpPjhFu3BjK+Udg6ab4cNOAXdpE U1/EhDOAZukmUc00X6AndyKDqoFc X-Google-Smtp-Source: AGHT+IHevczFnooGoB0JVLkUha7ftt0DCcw7HA5qQnBnHtbLJWKI/GXkODNz4mnv7Ot8D36Zlu7f6Ry0jpDYWlZC1Z0= X-Received: by 2002:a05:690c:3681:b0:78d:7307:76a4 with SMTP id 00721157ae682-78e66caaeaemr292653267b3.11.1765980198932; Wed, 17 Dec 2025 06:03:18 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Magnus Hagander Date: Wed, 17 Dec 2025 15:03:04 +0100 X-Gm-Features: AQt7F2oukB1Xh38eEh7bVTURpJzED_icJppRpgxQnWYjoA3V4AKj4B99G5_IgB0 Message-ID: Subject: Re: Public contributor profile pages To: Melanie Plageman Cc: pgsql-www@lists.postgresql.org, PostgreSQL Contributors Content-Type: multipart/alternative; boundary="000000000000701f930646264eb1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000701f930646264eb1 Content-Type: text/plain; charset="UTF-8" On Wed, 17 Dec 2025 at 01:24, Melanie Plageman wrote: > Hello, > > The Contributors Committee is working on a new program to recognize > specific contributions (e.g. "volunteered at PGConf.dev 2024" or > "contributed code to PostgreSQL 18"). These would be listed on an > individual contributor's profile. As a step toward that, we are > proposing to add public contributor profile pages. > > Attached is a patch set which implements this by: > 1) allowing all those with pgo user accounts to edit their > "contributions" (currently only enabled for recognized contributors) > 2) adds a public contributor profile view accessible via > postgresql.org/community/contributors/[username] > > 3) links all recognized contributors on [1] to their public contributor > profile > > There are quite a few details to work out. A few I know of are: > - How should opting into a public profile work? What about existing > recognized contributors, do we opt them all in automatically? Or just > opt-in Major Contributors since their "Contributions" are already on a > public web page? (see patch 0003) > - How to make the public profile URL scheme work for contributors who > do not have a pgo user account? Or should it work at all? > > This is my first real web patch, so I'm sure I did some things in a > non-pgweb-idiomatic (or non web-idiomatic) way and didn't think of > lots of things. I'll probably need lots of guidance. > Hi! A couple of comments! AFAICS with this patch, *every* user who visits their profile gets a Contributor object created. And they do that even if they don't save their profile? And the contributions part of the profile shows up for all users, whether they are contributors at all or not -- not just "all levels of contributors". That doesn't seem right, surely only those who are recognized at *some* level should be getting that, and the change is to list all levels, but not random non-contributors? (And even if it's shown for non-contributors intentionally, we shouldn't create a database record for people just viewing things) Also, when making changes to a model that only changes fields that aren't actually in the database (such as the change of help_text), instead of making a migration for that it's better to "backpatch" it into the latest existing migration. Otherwise we just collect a lot of no-op migrations that over time will start costing time and annoyance. And finally, when adding URLs that contain items from a model, you need to add those URLs to purge_urls() otherwise it will stay cached when edited. See for example news.NewsArticle as an example of how that's done dynamically. As for the questions - I think we should absolutely do opt-in, and I do think it makes sense to auto-opt-in the current major contributors since "it's been like that forever and they haven't complained", but listing the others and in a more visible way there are sure to be some who might not want it. In particular, maybe we should make the listing of *email* a separate opt-in/opt-out? That is you can opt-out of being listed completely, or you can say "list me, but not my email"? I've thought a bit about it and I do think listing the profiles with the username in the URL as you have done is in the end good. I don't think people would care about exposing that one -- and it's already exposed on for example the commitfest app. But based on that I would go with "does not show at all if they don't have an account". They won't be able to edit any information on it anyway, and if they care enough to do that they will create an account. We will presumably continue to list them in the list of contributors, just not provide a details page. I wonder if we really need a separate "report inappropriate profile"? We should be getting notifications for them, but in particular if we are seriously worried about this case, we should make the records moderated. But these are known contributors - I think we can trust them? -- Magnus Hagander Me: https://www.hagander.net/ Work: https://www.redpill-linpro.com/ --000000000000701f930646264eb1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Wed, 17 Dec = 2025 at 01:24, Melanie Plageman <melanieplageman@gmail.com> wrote:
Hello,

The Contributors Committee is working on a new program to recognize
specific contributions (e.g. "volunteered at PGConf.dev 2024" or<= br> "contributed code to PostgreSQL 18"). These would be listed on an=
individual contributor's profile. As a step toward that, we are
proposing to add public contributor profile pages.

Attached is a patch set which implements this by:
1) allowing all those with pgo user accounts to edit their
"contributions" (currently only enabled for recognized contributo= rs)
2) adds a public contributor profile view accessible via
postgresql.org/community/contributors/[us= ername]
3) links all recognized contributors on [1] to their public contributor pro= file

There are quite a few details to work out. A few I know of are:
- How should opting into a public profile work? What about existing
recognized contributors, do we opt them all in automatically? Or just
opt-in Major Contributors since their "Contributions" are already= on a
public web page? (see patch 0003)
- How to make the public profile URL scheme work for contributors who
do not have a pgo user account? Or should it work at all?

This is my first real web patch, so I'm sure I did some things in a
non-pgweb-idiomatic (or non web-idiomatic) way and didn't think of
lots of things. I'll probably need lots of guidance.

Hi!

A couple of comments!
<= div>
AFAICS with this patch, *every* user who visits their pr= ofile gets a Contributor object created. And they do that even if they don&= #39;t save their profile? And the contributions part of the profile shows u= p for all users, whether they are contributors at all or not -- not just &q= uot;all levels of contributors". That doesn't seem right, surely o= nly those who are recognized at *some* level should be getting that, and th= e change is to list all levels, but not random non-contributors? (And even = if it's shown for non-contributors intentionally, we shouldn't crea= te a database record for people just viewing things)

Also, when making changes to a model that only changes fields that aren&= #39;t actually in the database (such as the change of help_text), instead o= f making a migration for that it's better to "backpatch" it i= nto the latest existing migration. Otherwise we just collect a lot of no-op= migrations that over time will start costing time and annoyance.
And finally, when adding URLs that contain items from a mod= el, you need to add those URLs to purge_urls() otherwise it will stay cache= d when edited. See for example news.NewsArticle as an example of how that&#= 39;s done dynamically.


As for the q= uestions - I think we should absolutely do opt-in, and I do think it makes = sense to auto-opt-in the current major contributors since "it's be= en like that forever and they haven't complained", but listing the= others and in a more visible way there are sure to be some who might not w= ant it. In particular, maybe we should make the listing of *email* a separa= te opt-in/opt-out? That is you can opt-out of being listed completely, or y= ou can say "list me, but not my email"?

= I've thought a bit about it and I do think listing the profiles with th= e username in the URL as you have done is in the end good. I don't thin= k people would care about exposing that one -- and it's already exposed= on for example the commitfest app. But based on that I would go with "= ;does not show at all if they don't have an account". They won'= ;t be able to edit any information on it anyway, and if they care enough to= do that they will create an account. We will presumably continue to list t= hem in the list of contributors, just not provide a details page.

I wonder if we really need a separate "report inapprop= riate profile"? We should be getting notifications for them, but in pa= rticular if we are seriously worried about this case, we should make the re= cords moderated. But these are known contributors - I think we can trust th= em?


--
=C2=A0Magnus Hagander
=C2=A0Me: https://www.hagander.net/
=C2=A0Work: <= a href=3D"http://www.redpill-linpro.com/" target=3D"_blank">https://www.red= pill-linpro.com/
--000000000000701f930646264eb1--