project,

暑期2020 [为 go-wechaty 设计实现插件体系] POC 成果展示

FINCTIVE FINCTIVE Follow Aug 19, 2020 · 1 min read
暑期2020 [为 go-wechaty 设计实现插件体系] POC 成果展示

“开源软件供应链点亮计划-暑期2020”(以下简称 暑期2020)是由中科院软件所与 openEuler 社区共同举办的一项面向高校学生的暑期活动。 旨在鼓励在校学生积极参与开源软件的开发维护,促进国内优秀开源软件社区的蓬勃发展。 根据项目的难易程度和完成情况,参与者还可获取“开源软件供应链点亮计划-暑期2020”活动奖金和奖杯。 官网:https://isrc.iscas.ac.cn/summer2020 官方新闻:http://www.iscas.ac.cn/xshd2016/xshy2016/202004/t20200426_5563484.html 本项目 [为 go-wechaty 设计实现插件体系] 系 暑期2020 支持的开源项目。

[为 go-wechaty 设计实现插件体系]信息

  • 导师:丁小雨、丁超飞、李博杰
  • 学生:林昊翰
  • 项目名称:为 go-wechaty 设计实现插件体系

方案描述

wechaty 是一款支持多协议的微信接入方案,随着社区多语言生态的建立,吸引了更多的开发者和爱好者的加入;同时需求的推动和技术的发展,插件系统逐渐完善,但是在多语言系统中 Plugin 体系尚未完成,我们希望通过这个任务,能够让更多的人加入 go-wechaty 的建设。

目前 go-wechaty examples/ding-dong-bot.go 有一个 ding-dong bot, 但是我们希望这个 ding-dong 是通用的,如果我们的 Plugin 体系能编写出来,也许实现 ding-dong 就只需要一行代码。 例如:

bot.Use(DingDong{})

go-wechaty 是 Go 语言实现 wechaty 的项目,同样支持多协议接入;同时借助 gorountine 和 channel 的语言特性,实现了更加合理的封装和设计。

时间规划

第一阶段(至8月15日)

编写插件机制设计文档。其中,文档包含设计思路,实现逻辑,以及涉及到项目的变更等。根据 Go 语言特性,对插件机制的设计进行改进,并且尝试思考更多可能的方案。如果有需要,还应该编写相应的试验代码。

第二阶段(至9月30日)

根据第一阶段的设计文档编写代码,实现 go-wechaty 的插件机制;使用 go-wechaty 插件机制编写一个插件 Demo。

项目进度

每周开发进度报告:为 go-wechaty 设计实现 插件体系 · Issue #9 · wechaty/summer-of-code

在每周的进度报告中,能看到我开发项目的详细过程以及进展

项目相关的代码仓库:

已完成工作

  • 目前已经进行了 go-wechaty 插件机制的初步设计,并且编写了相关文档。现在的插件设计仍需要继续改进迭代。
  • 原定第二阶段开始编写代码,但为了表述清晰、试验可行性,我已经编写实现了已有设计的代码。

根据原定方案和时间规划,我认为我有完成度不足的方面,也有超前的方面;总体来说是合格的。

遇到的问题及解决方案

  • 参与开源软件供应链点亮计划遇到的第一个问题是:如何参与开源社区、为开源社区做贡献?

这是一个“从0到1”的问题。我在大学的前两年时间里并没有参与过大项目的开发,更别提要求较高的开源项目。开源项目的远程协作开发对我来说有极大吸引力,但我一直没有一个合适的机会参与其中(水平不足、不知道如何参与等情况让我屡次放弃跨出第一步)。本届开源软件供应链点亮计划正好提供了这次机会,让我参与到 Wechaty 社区中进行项目开发。Wechaty 社区是一个包容度很高的社区,社区内的导师们对学生提出的问题都会耐心解答。这次活动的经历增加了我参与开源软件开发的经验,同时争强了我的沟通交流能力。在以后的开发历程中,我会为继续为开源社区贡献代码。

  • 在开发过程中,Go 程序设计对我来说有一定难度。

我的解决方案主要是自己学习、查阅资料。对于部分问题,社区里的导师们给了我很大帮助。

后续工作安排

按照原定计划继续开发、迭代。

导师评审结果

  • 项目完成度:已完成大部分编码工作,期待合入主干和收尾工作。
  • 学生参与度:完成了 90% 的设计工作,和 100% 的编码工作;能够积极参与相关任务。
  • 代码贡献量:在导师的指导下,独立完成多语言项目Go-Wechaty Plugin设计和编码工作。
  • 综合评价及建议:
    • 评价:昊翰在项目过程中计划清晰,每周进度报告都有相应的成果和进度;前期准备了初期的设计文档,并根据文档进行相关代码实现;在实现中发现了前期设计的不足与偏差,能够在导师的沟通和学习中,完成优化。
    • 建议:社区具有很高的包容和自由,你可以随意的提交代码请求到主干,只有能够达到一定的完整度就会被合入主干,如果没有达到,也可以得到其他贡献者的帮助;还有些合入主干的工作尚未完成,期待你的成果。
  • 最终评审结果:通过

联系我们

Join Newsletter
Get the latest news right in your inbox. We never spam!
Written by FINCTIVE