Skip to main content

GSoC 2021

Wechaty Summer of Code

This page aggregates project ideas for Google Summer of Code 2021. See more information about this project and applications on the Wechaty Google Summer of Code page.

Introduction

Below you can find project ideas which have been proposed for this year. New ideas may be proposed by interested mentors or students. Project ideas without potential mentors will be considered though applicants may need to work with the community and GSoC org admins to find mentors. To add a new project idea, see: proposing project ideas.

Learn more from community

You can join our Gitter network if you aren’t already a member, read our Meeting Notes to learn what we discussed in the past, or run getting started with Wechaty right now!

The Ideas

We have three lists in this Ideas Page:

  1. Accepted Project Ideas: Accepted by the GSoC program
  2. Draft Ideas: Accepted by the community
  3. Ongoing Discussions: Proposed from the community

ACCEPTED PROJECT IDEAS

Below you can see the list of project ideas that fully match the Wechaty' project idea standard. The scope of these ideas is well known and we don't normally expect deep changes. All ideas have quick start guidelines and newbie-frienfly issues referenced. We welcome contributors to join the mentor teams, and we invite students to submit project proposal applications in relation to these ideas.

To be selected by Google & Org Admins

DRAFT PROJECT IDEAS

Below you can see draft project ideas, which are currently under review. The scope of such ideas may change during the discussions, but the idea is accepted in principle. You are welcome to comment on the draft and to join the project as a mentor. If you are a student, it is also fine to explore and to apply to the draft project ideas.

Project #32: Enhance Whatsapp Puppet

We want Wechaty to be the universal instant messaging SDK on all IM platforms for chatbot makers to build their great conversational user interface, so while these are our ideas of what we think would make good projects for the summer, we're eager to hear your ideas and proposals as well.

Enhance Whatsapp Puppet https://github.com/wechaty/wechaty-puppet-whatsapp. The Puppet abstraction allows Wechaty to provide a consisting API on all IM platforms for build a chatbot. We are supporting Whatsapp already, however, the Wahtsapp support is very limited. We want to implement more functions so that our developers can run their chatbots on Whatsapp to perform as much as action we can.


Project #33: Implement "Twitter" Puppet

We want Wechaty to be the universal instant messaging SDK on all IM platforms for chatbot makers to build their great conversational user interface, so while these are our ideas of what we think would make good projects for the summer, we're eager to hear your ideas and proposals as well.

Implement Twitter Puppet. The Puppet abstraction allows Wechaty to provide a consisting API on all IM platforms for build a chatbot. We are supporting WeChat, WeCom, Whatsapp already, and we want to support Twitter so that our developers can run their chatbots on Twitter to serve users from Twitter.

  • Potential Mentor(s): Huan
  • Category: Core development
  • Skills Required: TypeScript programming language, Twitter API
  • Difficulty Level: Medium

Project #34: Implement "Twilio" Puppet

We want Wechaty to be the universal instant messaging SDK on all IM platforms for chatbot makers to build their great conversational user interface, so while these are our ideas of what we think would make good projects for the summer, we're eager to hear your ideas and proposals as well.

Implement Twilio Puppet. The Puppet abstraction allows Wechaty to provide a consisting API on all IM platforms for build a chatbot. We are supporting WeChat, WeCom, Whatsapp already, and we want to support Twilio so that our developers can run their chatbots on SMS/MMS to serve users from the phone messaging.

  • Potential Mentor(s): Huan
  • Category: Core development
  • Skills Required: TypeScript programming language, Twilio API
  • Difficulty Level: Medium

Project #35: Implement "Teams" Puppet

We want Wechaty to be the universal instant messaging SDK on all IM platforms for chatbot makers to build their great conversational user interface, so while these are our ideas of what we think would make good projects for the summer, we're eager to hear your ideas and proposals as well.

Implement Teams Puppet. The Puppet abstraction allows Wechaty to provide a consisting API on all IM platforms for build a chatbot. We are supporting WeChat, WeCom, Whatsapp already, and we want to support Teams so that our developers can run their chatbots on company teams to serve users from the chatting and meeting.

  • Potential Mentor(s): @wj-Mcat
  • Category: Core development
  • Skills Required: TypeScript programming language, Teams Bot API
  • Difficulty Level: Medium

Project #36: Implement Wechaty Rasa Plugin

Rasa is a popular task-oriented dialogue system which can be a pipeline in IM platform. What's more, wechaty is an unifiy conversation AI SDK for chatbot. So Wechaty + Rasa will be the perfect project that developer can easily deploy their chatbot on multi-platforms.

  1. Running Rasa Server. When you run the rasa server, it will expose the message service with http protocol.
  2. Communicating with Rasa Server. This process is a simple work which will send the request to the server and receive the message sending the wechaty end account.
  • Potential Mentor(s): @wj-Mcat
  • Category: Core development
  • Skills Required: Python programming language, Natural Language Processing, Rasa
  • Difficulty Level: Medium

Project #37: Automatic video production with a news content

We want to generate short videos, output short videos according to the input text, according to the emotion of the content, or join a virtual anchor.

  • Potential Mentor(s): @zhangchunsheng
  • Category: Fun/Peripheral
  • Skills Required: TypeScript, GoLang, Java, Python programming language, TensorFlow, PyTorch
  • Difficulty Level: Medium

Project #38: Improve wechaty-puppet-lark

We want Wechaty to be the universal instant messaging SDK on all IM platforms for chatbot makers to build their great conversational user interface, so while these are our ideas of what we think would make good projects for the summer, we're eager to hear your ideas and proposals as well.

Implement Lark Puppet. The Puppet abstraction allows Wechaty to provide a consisting API on all IM platforms for build a chatbot. We are supporting WeChat, WeCom, Whatsapp already, and last year, we completed the initial development of the Lark Puppet. We want to improve this puppet so that our developers can run their chatbots on Lark more conveniently.

  • Potential Mentor(s): Fairy, Huan
  • Category: Core development
  • Skills Required: TypeScript programming language, Lark API
  • Difficulty Level: Medium

Project #39: An FAQ for Open source projects

  1. Open source project authors can recommend their projects to the robot, and excellent open source projects will be publicized through the "KaiYuanShe/开源社".
  2. Open source enthusiasts can ask the bot about open source projects that are suitable for their participation.
  3. This feature can be used as an extension of OSSChat.
  • Potential Mentor(s): Biaowei ZHUANG
  • Category: Fun/Peripheral
  • Skills Required: TypeScript programming language
  • Difficulty Level: Medium

Project #40: Wechaty Rust

Rust is a new programming language with increasing popularity for its performance, memory safety and extensibility with existing systems.

Wechaty will benefit from a Rust Core module that interfaces with its original TypeScript code base for performance boost, and a potential to ship to browser and Native apps by building to binary and webAssembly.

  • Potential Mentor(s): Simon LIANG, Zihua WU
  • Category: Core development
  • Skills Required: Rust programming language
  • Difficulty Level: Medium

We want to make a Wechaty plugin to automatically label and classify based on content. It can help us to classify the chat content so that we can inquire later.

We hope that the content of the conversation can be stored persistently. It is best to have a visual panel to manage the content under different tabs.

  • Potential Mentor(s): @Leo chen
  • Category: Fun/Peripheral
  • Skills Required: JavaScript,Node, Python, programming language, PyTorch
  • Difficulty Level: Medium

Project #42: Design a plug-in to provide HTTP API service for go-wechaty

We want to make a go-wechaty plug-in to provide HTTP API service.

With a complete basic API service, visual interface, cli, third-party services, etc. can be made based on the API later.

  • Potential Mentor(s): @SilkageNet
  • Category: Fun/Peripheral
  • Skills Required: JavaScript, Node, Golang
  • Difficulty Level: Medium

Project #43: Implement a group information collector by java wechaty.

We run several WeChat discussion groups about back-end technology. There are many valuable discussions every week.

Now those information were collected by person. So I want to design a program to make this process easier.

  • Potential Mentor(s): @diaozxin007, @RedMaple1
  • Category: Fun/Peripheral
  • Skills Required: Java, CSS, HTML, JavaScript
  • Difficulty Level: Medium

Project #44: Develop a WeChat chatbot for building simple personal knowledge base

The project goal is to develop a WeChat chatbot which can help build simple personal knowledge base. It should be able to perform two kinds of automated tasks:

  • once receiving a post share, save the post title and link to your database
  • once receiving a text message, provide a list of posts related to the text

For example, if you share this post (股票股市新手入门指南(完整版)) to the chatbot from zhihu(知乎) app, it will save this post and notify you of the result. You will receive a list containing this post next time you send the chatbot a text message "股票". Your backend server should be able to calculate the semantic similarity between message texts and posts.

  • Potential Mentor(s): @wade0564
  • Category: Fun/Peripheral
  • Skills Required: Java, Database
  • Difficulty Level: Medium

Project #45: Wechaty HTTP Callback

HTTP callbacks via the Wechaty plugin, which opens all events via HTTP.

Design event-driven wrappers to implement plugins for Wechaty's different language frameworks.

  • Potential Mentor(s): Xiaoyu DING
  • Category: Fun/Peripheral
  • Skills Required: RESTful API, Python, Golang, HTTP
  • Difficulty Level: Medium

Project #46: Wechat group-society

We would like to invite you to help us create a new way of socializing on wechat where individuals and groups can easily find like-minded people/groups by subscribing to our group-society official account.

We will build up a centralized platform using our powerful wechaty official account puppet to allow individual users as well as wechat groups to subscribe to. With group users' permission, we will use our wechaty bot to collect chat messages, and analyze the topics of interest for each group via topic modeling tools. The top topics of each group will be used as its 'tag' so that individual users can search for and join the groups of interest. Besides, our wechaty bot can break the boundaries between groups of similar interests by sharing messages across groups.

  • Potential Mentor(s): @MachengShen, Huan
  • Category: Fun/Peripheral
  • Skills Required: TypeScript or Python programming language, Basic understanding of common design patterns and good software engineering habits, (Preferred) Experience with Pytorch/Tensorflow, and basic understanding of machine learning.
  • Difficulty Level: Medium

Project #47: github webhook transformer/deligator for IM

The project's goal is create a github webhooks' transformer, after the transformation, it can make the content of those webhooks more suitable for displayed on the various IMs(wechat, facebook, whatsapp). It would be better to create a deligated hook transform service using Wechaty which can broadcast those webhook events to IM directly.

Background

Github has a fantastic and strong webhook system allows you build or set up integrations easily. It can be used to trigger a CI build or update a deploy on production server, it is called workflow automation. And we can not only apply webhooks to automation, if we can easily broadcast these project events (pushes, prs, issues etc.) to various channels(wechat, facebook, whatsapp), it will be very conducive to people to discuss, comment and share. As it happens, Wechaty is one such product with a lot of puppeteers support many IMs which can help people create a chat bot in an easy way.

  • Potential Mentor(s): @iyjian
  • Category: Fun/Peripheral
  • Skills Required: TypeScript programming language, GitHub API
  • Difficulty Level: Easy

Project #48: Wechaty cluster management system

This project is about to manage multiple Wechaty bots, to provide unified system to control Wechaty clusters. Including following features:

  1. Manage bot life cycles: create, start, stop and destroy.
  2. Control bot functionalities, such as sending & receiving messages, processing messages.
  3. Adopt hot reloadable plugins to extend the system easily.
  • Potential Mentor(s): @Padlocal
  • Category: Infrastructure/Automation
  • Skills Required: TypeScript programming language
  • Difficulty Level: Medium

Project #49: Implement wechaty-storage

We want Wechaty to support universal storage, so developers could be able to easily connect Wechaty with their own db. So we would like someone to implement the wechaty-storage.

  1. Implement wechaty-storage with one type of supported persistent storage.
  2. Design the code structure to support future storage extension.
  3. Support data storage configuration, include db, schema, table etc.
  • Potential Mentor(s): @windmemory
  • Category: Fun/Peripheral
  • Skills Required: TypeScript programming language, familiar with at least one type of persistent storage, such as MySQL, MongoDB, PostgreSQL etc.
  • Difficulty Level: Medium

Project #50: path analysis of conversation graphs

for improving the quality of chatbots it would be great to have some analysis of conversation logs. basically plotting "routes" through the conversation.

this really needs to be connected to backend NLP, so that we can reduce down the inputs to common intents. otherwise there are just too many individual variations of patterns

so the proposal would be to see some type of "path analysis" of a conversation graph ideally we could plot this against the ideal path for comparison

if we were to use a graph database to store the conversations perhaps we could do deeper analysis for things like the "optimum route" between two nodes. or visualizing the paths for an easier way to understand them.

I have a couple of projects here that were early tests in this direction that I can share the repos of. they aren't really using graph analysis yet they are more plotting conversations as visual graphs using D3 or Cytoscape. This project would be ideally about taking this to a next level of investigation.

It should be language agnostic - we would be working with tokens of intents and creating conversation graphs that link these intents together

Reference: https://dc.rik.ai/projects/convoai

  • Potential Mentor(s): David 'DC' Collier
  • Category: Fun/Peripheral
  • Skills Required: TypeScript programming language
  • Difficulty Level: Medium

Project #51: reinforcement learning as a method to design conversations

We can try to plan a perfect path through a conversation ahead of time, and write out a script for our bots. This is "top down design"

But often the user will run the conversation in a completely different way. If they were talking to a real human agent, the conversation would flow in a different sequence.

Some authoring system such as rasa will start with this approach: https://rasa.com/docs/rasa/writing-stories

But then try to use annotations of actual conversations to refine the conversation flow. However, the current tools on the market really are quite un-unsable for this. RASA stories IMHO qucikly devolve to a huge mess that is impossible to view or reason about.

So this project would be a new start in trying to combine NLU conversation insights from "human in the loop" choices, or post-review of past conversations, with the top-down designed stories. The choices a human makes should affect future conversations in a probabalistic way

a simple prototype exists here, but it is not connected to any kind of NN model

Reference: https://dc.rik.ai/projects/convoai

  • Potential Mentor(s): David 'DC' Collier
  • Category: Fun/Peripheral
  • Skills Required: TypeScript programming language
  • Difficulty Level: Medium

Project #52: connect chat adventure game engine to Wechaty

I wrote a game engine to deliver story like adventure games in a chat system. It was initially written for slack and Discord.

It would be interesting to port this to support WeChat. That would allow people to play group "adventure games" in a chat session.

The engine uses a script format to describe the stories https://github.com/dcsan/storydata

It has concepts for: rooms, actors, items, and inventory (things uses carry around)

all matching for sentences is done using Regex so we won't have the problems of systems like rivescript which uses a simplified regex pattern that doesn't work well for non-space languages like Chinese (or japanese)

The main runtime engine is all written in typescript.

currently there is a "PAL" class - Platform Abstraction Layer- that already has adapters for Slack and Discord APIs. This project would mainly be to adapt this to wechaty input/output API for delivering games into groups

You can play some of the games built with this on Discord, but this maybe hard inside the GFW. https://ten.rik.ai/asylum/

of course discord and slack have many features wechat does not, such as buttons or "clickable emoji reactions" so the adapter would have to deal with things like a "collector" or different ways to present menus. Wechat's main feature is that it's usable inside China.

Eventually we could make a web based editor for adding new stories, that would allow something like "fan fiction" stories to be created.

play BoPO game on discord here (direct link to our server) https://discord.com/invite/Qgup6qU

a bit more info/writeup https://dc.rik.ai/projects/ten

this type of engine could be used to deliver language learning games over wechat too. that was the original idea for this project: https://dc.rik.ai/projects/comic-english

  • Potential Mentor(s): David 'DC' Collier
  • Category: Fun/Peripheral
  • Skills Required: TypeScript programming language
  • Difficulty Level: Medium

Project #53: create "mind map" authoring tool for simple wechaty bots

A large number of bots can be very simple decision trees, using some type of regex parser on the responses. But building these bots is still very time consuming.

We propose using a "mind map" visual editor to create simple bots. Many open source libraries exist for editing mind maps This tool would then use that map data as a conversation structure for people to interact with bots.

The first version would be purely for text based input and output the mind map format could be seen as a simple outliner view:

- bot: what's your favorite color?
- user: blue
- bot: the sky is blue!
- user: red
- bot: red is dynamic

While this is only useful for simple bots, the ease of use and accessibility for building out quick and simple bots fits the "80:20" pareto principle.

some mindmap tools here: https://awesomeopensource.com/projects/mindmap

So the parts of this project would be:

  • visual editor (react? vue?)

  • generates structured conversation syntax

  • runtime to accept responses from wechaty adapter, maintain conversation session and reply

  • Potential Mentor(s): David 'DC' Collier

  • Category: Fun/Peripheral

  • Skills Required: TypeScript programming language

  • Difficulty Level: Medium


Project #54: Implement "Slack" Puppet

Since the Wechaty is a universal messaging SDK. I believe we can implement this with Slack, but not only on Slack.

The Slack and Wechat message may be able to sync the messages. So while there is more open idea we can integrate. I think this would be good project for summer

  • Potential Mentor(s): William Chen
  • Category: Core development
  • Skills Required: TypeScript programming language, Slack API
  • Difficulty Level: Medium

Project #55: Implement CLI control wechaty

Web GUI is great, but not great enough if we just want to have a terminal while we are doing the implementation testing, If we can have a CLI tool to control the bot and CLI likely GUI to have a display dashboard to relate control(like tmux). That will be great.

I believe there is a more open ideas we can integrate. I think this would be a good project for summer

  • Potential Mentor(s): William Chen
  • Category: Fun/Peripheral
  • Skills Required: TypeScript programming language, Python, CLI, Linux
  • Difficulty Level: Medium

Project #56: Implement Maodou assistant based on conversational AI

We want to build an AI-based assistant to access specific course from maodouketang.com.

what we want to do is:

  1. send any live course mini-program link to whom has subscribed in wechat
  2. send time alert to parent according to the students who has enrolled a class
  3. conversational-ai based interface to use Maodou assistant
  • Potential Mentor(s): @Ming LI
  • Category: Fun/Peripheral
  • Skills Required: TypeScript programming language, NLP
  • Difficulty Level: Medium

Project #58: Implement Wechaty For Mac

Make Wechaty support macOS


Project #59: Improve matrix-appservice-wechaty user info

matrix-appservice-wechaty is a WeChat (微信) Matrix AppService for bridging the Matrix user with WeChat user.

According to Types of Bridging, Wechaty Bot in Matrix will create an Simple Puppeted Bridge with Portal Rooms because we want to bring all conversations from Wechat to Matrix, and let the Matrix user control his account on Wechat.

We want to improve this module and make it better, including but not limited to the following new features / fixes:

  1. Appservice doesn't show the user name and user avatar in group chat. Now we need to show the correct user name and avatar in group chat. And show the user avatar in the direct message.
  2. Appservice can not send files to wechat users. Now we make appservice send files and pictures to wechat users.
  3. Appservice can not display wechat bbob message directly. We need to convert bbob message to HTML and return it to the matrix server.
  • Potential Mentor(s): Roy, Eric Migicovsky
  • Category: Fun/Peripheral
  • Skills Required: TypeScript programming language, [Matrix] API
  • Difficulty Level: Medium

Project #62: Create a Web Component for a Chat UI for Wechaty

Create a Web Component in Angular for a Chat UI for Wechaty.

Useful Links

  1. Fiora is an interesting chat application power by socket.io, koa, MongoDB and React. (See: https://github.com/yinxin630/fiora/issues/185)
  2. Aurora IMUI is a general IM UI components library, which does not depend on any specific IM SDK.
  3. Chatvia - Angular Chat App Template
  • Potential Mentor(s): @lijiarui, Huan
  • Category: Core development
  • Skills Required: TypeScript programming language, Angular
  • Difficulty Level: Medium

Project #63: Wechaty Todo List

We often need to install various apps in our mobile phones to complete different tasks, so I hope to use wechaty to do a task management function, which can complete the whole operation through wechaty.

Preliminary design:

  1. Wechaty allows you to add to-do items
  2. Inform the user in advance when the to-do is about to end
  3. When the to-do has been completed, send the status change information to finish the current task
  4. Monthly statistics of the current month, the total number of to-do items,the total number of completed, unfinished, to be completed
  • Potential Mentor(s): @Darren
  • Category: Fun/Peripheral
  • Skills Required: .Net Core TypeScript
  • Difficulty Level: Medium

ONGOING DISCUSSIONS (WISHLIST)

These are proposals in the Wishlist Repo which have not been published as project ideas yet. The feasibility is yet to be defined, and the idea may be dismissed depending on the feedback. Everyone is welcome to participate in the discussion and to join as a potential mentor.

Contact us

You can join our Gitter network if you aren’t already a member.

Application result: not accepted

Subject: GSoC 2021: Wechaty application status
From: Google Summer of Code <summerofcode-noreply@google.com>
To: zixia@zixia.net


Thank you for applying to be a Google Summer of Code 2021
mentor organization. Sadly, we were unable to accept Wechaty
this year. We had many more applications than available slots.
We hope you will apply again in the future!

This email was sent to zixia@zixia.net.

You are receiving this email because of your participation in Google Summer
of Code 2021. https://summerofcode.withgoogle.com

To leave the program and stop receiving all emails, you can go to your
profile (https://summerofcode.withgoogle.com/dashboard/profile/) and request
deletion of your program profile.

For any questions, please contact gsoc-support@google.com.
Replies to this message go to an unmonitored mailbox.

(c) 2021 Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA