# 龙芯爱好者社区公开活动

## 双周会信息与归档

此处存放的 `biweekly.yml` 是龙架构双周会各语种场次的举办信息与历次活动资料归档，以纯数据形式存储，以便程序化访问与修改。

它符合 `BiweeklyDB` 这一 TypeScript 类型，在站点构建过程中会受到类型校验，并被转换为等价的
JSON 模块，以便 Vue 组件 `import`。

`biweekly.yml` 顶层按活动标签分组：

* `zhBiweekly`：龙架构双周会；
* `intlBiweekly`：国际龙架构双周会。

每个活动标签下包含：

* `links`：当前或长期有效的参会、直播、协作文档等资源；
* `archives`：按期号/场次号索引的归档资源。由于 JSON 对象键本质上是字符串，期号/场次号在类型中也按字符串键处理。

资源统一写成带 `type` 的数组项，例如：

```yaml
links:
  - { type: "wemeet", number: "708-1775-8704", link: "https://example.com" }
  - { type: "kdocs", id: "example" }
  - { type: "googledocs", link: "https://example.com" }
```

当前支持的资源类型包括 `wemeet`、`kdocs`、`googledocs`、`zoom`、`zoomChat`、`bilibili`、`youtube` 与 `vk`。如果资源暂不可用或仍在制作中，可以保留资源类型并设置 `status: "unavailable"` 或 `status: "wip"`。

### 各语种页面中的双周会命名惯例

对“龙架构双周会”的两个场次的称呼，在汉语和其他语言存在不对称，需要特别关注。

对 ZH 语种，使用全称“龙架构双周会”、“国际龙架构双周会”，需要简称时用“汉语场”/“国际场”。除非明确要求，否则不使用“龙架构双周会汉语场”、“龙架构双周会国际场”的完整说法。

非 ZH 语种（en/de/fr/ru）使用统一的英文-本地化混合命名体系：全称 "LoongArch Biweekly (Chinese/International session)" 或此名称在当前语言的翻译，如需缩写可将 "International" 替换为 "Int'l"，或其他当前语言允许的缩写，如当前语言无法缩写该词便无法支持缩写。简称为 "the Chinese/International session" 或此名称在当前语言的翻译。

## iCalendar 日历

此处存放的 iCalendar 文件 `events.ics` 是用于页面展示各种社区活动信息的数据源。目前接入的社区活动有：

* `[zhBiweekly] 龙架构双周会`
* `[intlBiweekly] 国际龙架构双周会`

日历事件的 `SUMMARY` 必须以前缀标签开头，格式为 `[tag] 展示标题`。页面解析日历时会使用标签决定渲染哪一种活动公告组件，并在日历界面中隐藏标签，只展示去掉标签后的标题。当前已约定的标签含义如下：

* `zhBiweekly` 表示龙架构双周会；
* `intlBiweekly` 表示国际龙架构双周会。

未带标签或使用未知标签的事件目前不会显示在双周会页面中。

目前社区运营人员没有适合的地方部署后端服务，因此该日历无法以常规的 CalDAV 服务器形式存在，只能由
[@xen0n][@xen0n] 在自己的 CalDAV 服务器上编辑好了导出到这里。

[@xen0n]: https://github.com/xen0n

## 何时需要维护此数据？

至少有以下几种可能，导致我们不得不更新此处的 iCalendar 数据：

* 需要为新的社区活动新增信息；
* 出于调休、突发状况等，需要修改定期活动以添加例外；
* 需要配合代码重构调整数据。

## 如何维护此数据？

您可以遵循 [RFC 5545][rfc5545]、[RFC 6868][rfc6868]、[RFC 7529][rfc7529]、[RFC 7986][rfc7986]
的规范，手工编辑 iCalendar 数据，但大概率吃力不讨好。以下是一些变通的方法：

[rfc5545]: https://www.rfc-editor.org/rfc/rfc5545
[rfc6868]: https://www.rfc-editor.org/rfc/rfc6868
[rfc7529]: https://www.rfc-editor.org/rfc/rfc7529
[rfc7986]: https://www.rfc-editor.org/rfc/rfc7986

1. 将 ics 文件导入编辑器，如 [iCal Event Maker](https://ical.marudot.com) 之类，保存后替换回来。
2. 自建一个 CalDAV 实例，将 ics 文件导入其中，再将此服务器添加至您电脑或手机操作系统的日历。用您熟悉的工具软件编辑后，从服务器端或客户端导出，再替换回来。

因为 iCalendar 格式的供应商特定扩展众多，所以无论您采取何种方式编辑，都存在数据格式不兼容的风险。请您确保：

* 在更新本仓库内容之后，在本地验证功能正常；
* 在 `git commit` 之前，仔细观察 diff，确保没有引入无关内容。
