1

2021-49: 全职开源第一周

 2 years ago
source link: https://xuanwo.io/reports/2021-49/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

2021-49: 全职开源第一周

作为全职开源的一部分,我将自己的工作计划都公开在 Xuanwo’s Work。这周刚好 Iteration 1 结束了,让大家看看我这个 Iteration 都做了什么,并且展望一下下个 Iteration 吧。

Iteration 1 的时间是 2021-12-12 ~ 2021-12-26,这个迭代周期里面我印象比较深刻的是这几个事情:

Coding

Databend: build: Install arm64 version of libssl and zlib1g

跟构建系统打架花了不少时间,rust 编译真的是太慢了- -。详情可以参考 修复 Databend aarch64 架构的支持,这里就不展开了。

Databend: proposal: Refactor CI pipleline into stages

Iteration 1 的不少时间花在了跟 CI 打架上,为了以后能够更好的跑 CI,我决定设计一套新的 CI 组织架构,将多个相关联的 Job 放进同一个 Workflow,而不是拆分成多个。这样的好处就是我们可以非常轻松的控制 Job 之间的依赖关系,实现这样的逻辑:

  • Check 成功之后再运行 Build
  • 使用 Build 中构建出来的产物进行集成测试

目前已经有一个可以正常工作的 Demo,欢迎大家来 Review!

Databend: website: Migrate site to docusaurus

Databend 社区一直有个长期需求是把社区的网站改成基于 docusaurus 构建,正好我对 docusaurus 有些经验,于是就把这个活儿给做了。当然后续还有不少的工作,比如:

  • 前端的样式调整
  • 内容的组织
  • 开篇 Blog 等等

这些就由社区的小伙伴来接手了。

Databend: upper&lower support

Databend 深度依赖 arrow2,出于 upstream_first 的考虑,我给 arrow2 贡献了 upper & lower 的支持。其中 lower 的 PR 比较有意思:Added lower:为了方便后续增加各种 utf-8 相关的逻辑,我在维护者的要求下增加了一个泛型函数的实现:

/// utf8_apply will apply `Fn(&str) -> String` to every value in Utf8Array.
pub fn utf8_apply<O: Offset, F: Fn(&str) -> String>(f: F, array: &Utf8Array<O>) -> Utf8Array<O> {
    let iter = array.values_iter().map(f);

    let new = Utf8Array::<O>::from_trusted_len_values_iter(iter);
    new.with_validity(array.validity().cloned())
}

第一次写泛型函数,有点帅。

Discussion

除了代码相关的工作,这个 Iteration 我还参加了不少讨论。自己的一些大的变化都在 Discussions 创建了 Proposal 自然不必多说,我还参与了 Engula 的一些事物。比如:

Engula 是一个新生的社区,这些规则都在从零起步开始建立,对我来说是一个全新的观察者视角,感觉能有更多的新想法。

Learning

这个 Iteration 本来想把 CMU 15-445 刷一遍,但是高涨的热情推动我做了太多的事情少了思考和学习的时间,导致我的学习进度还停留在 Lecture #04: Database Storage II。然后很多感兴趣的问题没有时间研究,下个 Iteration 应该要留出一些时间来。


下个 Iteration 我会推动 CI 的重构合并进入主干,同时把 CMU 15-445 学完,对数据库系统的大概实现有个初步的印象。这样在 2022 年我应该能够参与到更深入的一些贡献里面去,目前我感兴趣的方向是 Databend 的存储层,我期待能够将它重构为更容易扩展和测试的模型,使得贡献者可以方便且自信的实现多种存储的支持。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK