2026 年第 34、35 周的 PostgreSQL 社区活动横跨澳大利亚、土耳其和巴西:8 月 26 日,Adelaide 与 Sydney 两地用户组在同一天举行活动;9 月 3 日,Istanbul Meetup 举办聚会;9 月 2 日至 4 日,PGConf Brazil 汇集了组织者、议题评审和大批讲者。与此同时,Andreas Scherbaum 发布了 FrOSCon 2026 回顾。
这份记录的价值不只是列出活动。它展示了一个成熟开源社区如何依靠本地组织者、讲者、评审者和内容作者持续运转,也提醒维护者:社区周报同样需要结构化数据、明确归属和可重复的发布流程。
同一天的两场澳大利亚聚会
8 月 26 日,Adelaide PostgreSQL User Group 举行活动,由 Robins Tharakan 组织,Shadab Mohammad 与 Robins Tharakan带来分享。同一天,Sydney PostgreSQL User Group 也举办了聚会,由 Shadab Mohammad 组织,Rajesh Kandasamy 与 Shadab Mohammad担任讲者。
这里值得注意的是贡献者角色会发生切换:Shadab Mohammad 在 Adelaide 是讲者,在 Sydney 同时承担组织工作与分享任务;Robins Tharakan也兼具组织者和讲者身份。社区数据如果只维护一份“参与者名单”,便无法表达这种关系。更合适的模型是把“人物、活动、角色”分别记录,让同一个人在不同活动中拥有不同身份。
9 月 3 日,PostgreSQL Istanbul Meetup 举行活动。组织者是 Devrim Gündüz、Gülçin Yıldırım Jelínek 和 Bilge Korkmaz Erdim,讲者是 Volkan Çetin 与 Önder Kalacı。姓名中的重音符号也不应在录入时被随意删除,否则后续搜索、署名和去重都可能出错。
PGConf Brazil 展现了更完整的协作链条
PGConf Brazil 于 9 月 2 日至 4 日举行。Charly Batista、Euler Taveira、Fábio Telles、Fabrizio Mello、Francisco Porfírio、João Foltran 和 William Ivansky 负责组织;议题评审委员会由 Barbara Leidens、Cammila Martins、Francisco Omar、Francisco Porfírio 和 Jean Pierre 组成。
讲者名单覆盖 Bruce Momjian、Robert Treat、Andreas Scherbaum、Dani Monteiro、Karin Keller、Jônatas Davi Paganini 等众多社区成员。与 Meetup 相比,大型会议需要更多职责明确的协作层:组织团队负责执行,评审委员会负责议题筛选,讲者负责内容交付。周报应分别保留这些贡献,而不是把所有人压缩成一个没有角色说明的名单。
来源摘要没有给出各场演讲的标题和技术主题,因此不能据此推断讨论了 PostgreSQL 的哪些功能。实际发布时,可以在获得日程或演讲材料后补充主题、语言、幻灯片与录像字段,但应把这些内容标记为后续采集数据。
用一段脚本生成活动摘要
社区规模扩大后,可以把活动记录放进脚本或 YAML 文件,通过校验后生成 Markdown。下面是一个只依赖 Python 标准库的最小示例。将其保存为 community_digest.py 后运行 python community_digest.py,即可检查日期并生成活动表格;继续扩展时,可把 events 移到独立的 JSON 文件中。
from datetime import date
events = [
{
"name": "Adelaide PostgreSQL User Group",
"start": "2026-08-26",
"end": "2026-08-26",
"organizers": ["Robins Tharakan"],
"speakers": ["Shadab Mohammad", "Robins Tharakan"],
},
{
"name": "Sydney PostgreSQL User Group",
"start": "2026-08-26",
"end": "2026-08-26",
"organizers": ["Shadab Mohammad"],
"speakers": ["Rajesh Kandasamy", "Shadab Mohammad"],
},
{
"name": "PostgreSQL Istanbul Meetup",
"start": "2026-09-03",
"end": "2026-09-03",
"organizers": [
"Devrim Gündüz",
"Gülçin Yıldırım Jelínek",
"Bilge Korkmaz Erdim",
],
"speakers": ["Volkan Çetin", "Önder Kalacı"],
},
{
"name": "PGConf Brazil",
"start": "2026-09-02",
"end": "2026-09-04",
"organizers": [
"Charly Batista",
"Euler Taveira",
"Fábio Telles",
"Fabrizio Mello",
"Francisco Porfírio",
"João Foltran",
"William Ivansky",
],
"speakers": [], # 可从正式日程导入完整名单
},
]
def parse_day(value):
return date.fromisoformat(value)
for event in events:
start = parse_day(event["start"])
end = parse_day(event["end"])
if end < start:
raise ValueError(f"结束日期早于开始日期: {event['name']}")
if not event["organizers"]:
raise ValueError(f"缺少组织者: {event['name']}")
print("| 日期 | 活动 | 组织者 | 讲者 |")
print("|---|---|---|---|")
for event in sorted(events, key=lambda item: item["start"]):
period = event["start"]
if event["end"] != event["start"]:
period += f" 至 {event['end']}"
organizers = "、".join(event["organizers"])
speakers = "、".join(event["speakers"]) or "参见正式日程"
print(f"| {period} | {event['name']} | {organizers} | {speakers} |")
这个示例有意把组织者和讲者拆成不同字段。生产环境还可以加入 reviewers、talks、language、timezone、slides 和 recording,并在 CI 中检查日期格式、空字段和重复人物记录。
发布前需要守住的边界
社区周报适合采用一套简单但严格的检查清单:保留姓名的 Unicode 拼写;区分组织者、评审者、讲者和作者;明确单日活动与跨日会议;不要根据参会者身份猜测演讲主题;同一天或日期重叠的活动应作为独立记录保存。
Andreas Scherbaum 的 FrOSCon 2026 回顾也说明,社区贡献并不在活动结束时停止。会后文章、演讲材料和录像会延长一次活动的生命周期。更可持续的做法,是把活动预告、现场角色和会后内容纳入同一条数据流,同时保留每项贡献的准确署名。