Community tasks 新手任务计划
seeflood opened this issue · comments
Community tasks
As a programming enthusiast , have you ever felt that you want to participate in the development of an open source project, but don't know where to start?
In order to help everyone better participate in open source projects, the MOSN community will regularly publish community tasks to help everyone learn by doing!
Task List
Tasks of different difficulty are released:
Easy
Layotto runtime
- Reduce the risk of panic. Add
recover
for all codes that create new goroutines. See #197 - Fail fast,make Layotto kill itself when error accurs during startup. See #275
Bug fix
- fix bug of actuator: apollo health status "INIT",even if no apollo component configurated. see #462
- 修复 rpc 相关代码的单元测试报错问题
#550
Write a Feature
- Use in-memory component to implement the Actuator API. See #463
Comment related
- Add comment to exported function/method/interface/variable (such as RPC/distributed lock modules), see #112
Considering that the workload of adding comments to all the modules is relatively large, we split it into multiple tasks: - add comments to RPC related code
- add comments to pubsub related code
- add comments to lock related code . assigned
- add comments to state API related code
- add comments to actuator related code
- add comments to tcpdump related code
- add comments to WASM related code
- add comments to flow-control related code
- Add comments for file API related code in the proto file.
SDK related
- add metadata field for go,js and dotnet sdk. See #320
- add distributed lock API for java sdk
- add distributed sequncer API for java sdk
- add nodejs sdk. assigned ,see #258
- add python sdk
- add c/c++ sdk
- add .net sdk
assigned.see #130 - add more sdk api into java sdk(currently there are only protobuf files,but some users ask us to add more feature in sdk)
assigned. see #153 - compile proto files into java code as java sdk. See #79 Already done by @MentosL
Document related
-
add go-sdk usage documents.See http://mosn.io/layotto/#/en/sdk_reference/go/start
-
add document for State API.See https://mosn.io/layotto/#/en/api_reference/state/reference
-
add document for Pub/Sub API.See https://mosn.io/layotto/#/en/api_reference/pubsub/reference
-
add document for Distributed Lock API.See https://mosn.io/layotto/#/en/api_reference/lock/reference
-
add document for RPC API.See https://mosn.io/layotto/#/en/api_reference/rpc/reference already assigned #185
-
Change MinIO's demo to use docker to deploy MinIO by default, and Layotto to invoke local MinIO.
Currently, the demo uses the MinIO official demo service by default, but the service is unstable, so we want to use docker to deploy MinIO and make the demo more stable.
See #450 -
Delete redundent demos. See https://github.com/mosn/layotto/issues
Translation
-
Translate Skywalking quickstart documentation into English
-
Translate How to deploy and upgrade Layotto into English
-
Translate "Explain Layotto's github workflow" into Chinese
-
将“介绍 layotto CI” 的文档翻译成英文
#545 -
将“介绍如何自动测试 quickstart” 的文档翻译成英文
https://mosn.io/layotto/#/zh/development/test-quickstart
Tests related
-
Add unit tests for
actuator
module. The code is underpkg/filter/stream/actuator/http
-
Understand the implementation of wasm module & add unit tests: see #105
-
add more unit test whereever you like to make layotto's unit test coverage higher(currently it's only 46%)
-
Add unit tests for runtime/runtime.go and grpc/api.go. These two files are the core engine code of layotto, responsible for component lifecycle management and grpc request processing respectively
Already assigned to @tianjipeng See #138 -
Add integration test cases for a certain type of API. See #107 assigned to @seeflood
-
Understand the implementation of the rpc module & add unit tests: see #106 Already done by @tianjipeng
-
Add integrate test. see #415
Components
- Change the apollo sdk to https://github.com/apolloconfig/agollo .Currently we are using github.com/zouyx/agollo
in-memory components
See #67 (comment)
We want to let users and sdk developers run our demo without go , docker and back-end storage (e.g. redis) pre-installed.
To achieve this goal, we need to add in-memory components,including:
- pubsub
- lock
- sequencer
- configuration API
You can take the in-memory state store component as an example,see #327
Medium
Add support for Dapr API
We want Layotto to support both Layotto API and Dapr API. In this way, if users are worried about vendor lock-in, they can use Dapr SDK to switch between Layotto and Dapr freely.
You can refer to:
#361
#362
- InvokeService
- InvokeBinding
- State
- pubsub. See #406
- Configuration
- Secret
- GetMetadata/SetMetadata
- Shutdown
SDK
-
Improve .net sdk. Make it have the same capabilities and api as go sdk
assigned.see #130 -
Develop python sdk
Because we want to reduce the cost of maintaining multi-language SDKs, we want to reuse Dapr SDKs as much as possible. Therefore, this task suggests to fork the Dapr python SDKs for modification (because the package path of the proto interface is different, so the code compiled by proto is different, so we need to do some modification). -
Develop the spring-boot-layotto package. See layotto/java-sdk#8
Let layotto integrate spring boot so that users can use annotations to register pubsub subscription callback
Actuator
- Add a actuator metrics API. See #201
WASM
- Let Layotto monitor whether the .wasm file has changed, and reload the .wasm file if there is a change.
Achieve the effect of dynamically replacing .wasm at runtime. see #165 - WASM Function access cache through state API. see #192
- Upgrade the wasm demo developed by rust. see #255
- Upgrade the wasm demo developed by AssemblyScript. see #256
File api implementation
- Add components for file api. File api have been supported in layotto, need add other components for file api. #236 , #98
Sequencer API related
-
Sequencer API Component:Choose an open source component or cloud service you like (such as zookeeper, leaf, etc.) to implement distributed auto-increment id generation service.
-
Etcd
-
Stand-alone redis
assigned -
Zookeeper
assigned -
Leaf
-
Mongo
-
Consul
-
snowflake algorithm (need to avoid clock rollback problems) assigned.see #193
-
Mysql
-
PostgreSQL
-
Any other storage
-
-
Implement the segment caching feature of Sequencer API. assigned to @ZLBer ,see #158
You can refer to Leaf to do double buffer optimization
The function to be implemented is at https://github.com/mosn/layotto/blob/main/pkg/runtime/sequencer/cache.go
Distributed Lock API
- Choose an open source component or cloud service (such as zookeeper) you like to implement distributed lock API. See #104
- redis standalone
done - redis cluster (with redlock or some other algorithm to make it safer)
- zookeeper
assigned.see #111 - etcd
assigned.see #128 - Consul
assigned.see #129 - Mongo
assigned.see #348 - Cassandra
refer to https://github.com/dekses/cassandra-lock - anything else. e.g. some build block provided by AWS or aliyun
- redis standalone
Engineering
- Make Layotto CI more powerful. See #532 (comment)
- Add more linters. See #599
- Provide Layotto Dockerfile,so that users can deploy Layotto with Docker. See #178
- Automatically generate API documents: use some tools to automatically generate API documents based on proto files. Refer to the document automatically generated by Etcd
- Automatically check the pull request title and ensure it to meet the format of
type(scope): subject
in order to make the commit history more readable.
See #243 - Automatically check that new PR must have related issues
- Automatically check code style with
go lint
in ci/cd pipeline. For example:- no Chinese in the code;
- Every code that starts a new goroutine must have a
recover
It doesn't matter if these examples can't be realized. As long as we can do valuable automated inspections
Currently we use github actions as ci/cd pipeline, and the configuration file is here
You can refer to some github actions high-quality tutorials:
https://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html
http://www.ruanyifeng.com/blog/2019/12/github_actions.html
- Automated build: Automatically compile multi-platform binary files (binary files under linux/mac), compress (compress binary files), and build docker images
You need to investigate the solution to see whether you write a build script yourself, using the cross-compilation feature of go, or just use a exist platform to help you build
Hard
Observability
- Integrate with Skywalking, Jaeger and other systems
Layotto currently supports tracing and we hope to integrate with observability-related platforms such as Skywalking and Jaeger.
Runtime API Lab
Hard
-
Redis API.
-
Kafka API.
Alicloud SLS component can implement Kafka-like API too. -
Design transaction message API (like RocketMQ's) for pubsub
-
Delay message API for pubsub
-
Let Layotto support Dapr's Config API (alpha version)
We have been discussing and working with Alibaba and Dapr community to contribute a Config API for Dapr since March of this year,and recently it was finally merged into Dapr .
Now it's time to can make Layotto support Dapr's Config API.
Dapr Config API is still in the alpha version, which is similar to Layotto's existing Config API but lacks some fields. You can refer to Layotto's existing implementation during development.
See Dapr's API definition -
Let Layotto support secret API.
Layotto's goal is to build a Runtime API standard with Dapr and other communities (promote Dapr API as an industry standard, and Layotto as an implementation of this API), so it needs to support Dapr's secret API. Therefore, this task needs to port Dapr's secret API into Layotto. For Dapr's secret management related documents, see https://docs.dapr.io/developing-applications/building-blocks/secrets/
assigned. see #212 -
Layotto support Binding API. Same as above, porting Dapr's binding API into Layotto
WASM Lab
- Support loading multiple wasm files,so that Layotto can serve as FaaS container. See #176
- Support dynamic load wasm file. See #191
If you are interested, you can reply and we will assign the task to you
Kubernetes Lab
- Deploy Layotto on Kubernetes. see #189
Istio
- Integrates with istio 1.10, allowing layotto's invokeService API to reuse istio's traffic management capabilities. See #311
chinese:
新手任务计划
作为技术同学,你是否有过“想参与某个开源项目的开发、但是不知道从何下手”的感觉?
为了帮助大家更好的参与开源项目,MOSN社区会定期发布适合新手的新手开发任务,帮助大家learning by doing!
任务列表
任务分为不同难度:
- Easy
- Medium
- Hard
上手攻略
Easy——从这里开始,成为Layotto Contributor!
Layotto runtime
- 减少panic风险,给所有创建新协程的代码加上recover。见 #197
- fail fast,让Layotto启动报错时自杀
目前Layotto配置配错了、连接redis异常时,启动会报错,但是进程不会自动被kill掉。
需要优化成如果启动报错、就panic自杀。见 #275
Bug fix
- fix bug of actuator: apollo health status "INIT",even if no apollo component configurated. see #462
Write a Feature
- Use in-memory component to implement the Actuator API. See #463
注释相关
- 为Layotto中的关键模块添加注释(例如RPC/分布式锁等模块) 见#112
考虑到全加注释工作量比较大,因此每个模块可以单独发一个任务 - add comments to RPC related code
- add comments to pubsub related code
- add comments to lock related code . assigned
- 为 state API 相关代码添加注释
- 为 actuator 相关代码添加注释
- 为 tcpdump 相关代码添加注释
- add comments to WASM related code
- 为 flow-control 相关代码添加注释
- 为 proto 文件中file API 相关接口 补充注释. 有了更多注释后,可以用工具根据注释生成文档
文档相关
-
为go-sdk添加使用文档。见http://mosn.io/layotto/#/zh/sdk_reference/go/start
-
为State API添加接口文档.See https://mosn.io/layotto/#/en/api_reference/state/reference
-
为 Pub/Sub API添加接口文档.See https://mosn.io/layotto/#/en/api_reference/pubsub/reference
-
为Distributed Lock API添加接口文档.See https://mosn.io/layotto/#/en/api_reference/lock/reference
-
为RPC API添加接口文档.See https://mosn.io/layotto/#/en/api_reference/rpc/reference
已assign #185 -
把 MinIO 的 demo 改成默认使用 docker 部署 MinIO、Layotto 调用本地 MinIO. 目前,该 demo 默认调用 MinIO 的官方演示服务,但该服务不稳定,时常出现磁盘满了之类的情况。
见 #450 -
优化demo.见 #455
- 优化 lock api demo,让所有 lock 组件公用一个 demo
- 优化 sequencer api demo,让所有 sequencer 组件公用一个 demo
- 优化 pubsub api demo,让所有 pubsub 组件公用一个 demo
翻译
英翻中
- 将《解释一下Layotto的github workflow》 翻译成中文. assgined, see #453
中翻英
- 将文档贡献指南翻译成英文
- 将组件开发指南翻译成英文
- 将新增API时的开发规范翻译成英文
- 将接入Skywalking 的quickstart 文档 翻译成英文
- 将如何部署、升级 Layotto 翻译成英文
- 将“介绍 layotto CI” 的文档翻译成英文
#545 - 将“介绍如何自动测试 quickstart” 的文档翻译成英文
https://mosn.io/layotto/#/zh/development/test-quickstart
SDK相关:
- add metadata field for go,js and dotnet sdk. See #320
- 为java sdk新增分布式锁API
- 为java sdk新增分布式自增id API
- 添加 nodejs sdk. assigned ,see #258
- 添加 .net sdk
assigned.see #130 - 丰富java sdk的功能,添加更多sdk api(在 @MentosL 的帮助下,我们有了java sdk,目前sdk内包含一些pb生成的java代码,但是最近有用户问我们能否给sdk增加一些功能) assigned. see #153
- 将proto文件编译成java代码作为java sdk。见 #79 已assign给 @MentosL
测试相关:
-
修复 rpc 相关代码的单元测试报错问题
#550 -
看明白wasm模块的实现原理&补充单测:见 #105
-
对你感兴趣的模块添加单元测试,提高Layotto的总体测试覆盖率(目前仅有46%)
-
为runtime/runtime.go和grpc/api.go添加单元测试。这两个文件是layotto的核心引擎代码,各自负责组件生命周期管理(启动、注册、初始化)和grpc请求处理,完成此任务可以很好的了解Layotto架构
已assign给@tianjipeng 见 #138 -
看明白rpc模块的实现原理&补充单测。见 #106 已assign给 @tianjipeng
-
补充集成测试组件跟用例。见 #415
Components
- apollo 组件的客户端改成用 https://github.com/apolloconfig/agollo 之前用的是github.com/zouyx/agollo
in-memory components
见 #67 (comment)
我们想让用户和sdk开发者不用装go,docker和存储系统(比如redis)就能跑起来layotto,减少上手门槛。
为了实现这个目标,我们需要添加in-memory 组件,在内存里增删改查。包括:
- pubsub
- lock
- sequencer
- configuration API
You can take the in-memory state store component as an example,see #327
Medium——来实现一些很酷的feature吧!
Layotto支持Dapr API
我们想让 Layotto 既支持 Layotto API,又支持Dapr API。这样用户如果担心厂商绑定,可以使用Dapr SDK,在Layotto和Dapr之间自由切换。
您可以参考:
#361
#362
- InvokeService
- InvokeBinding
- State
- pubsub. See #406
- Configuration
- Secret
- GetMetadata/SetMetadata
- Shutdown
SDK
- 添加 python sdk
- 添加 c/c++ sdk
- 丰富 .net sdk,使其有和go sdk一样的能力和api
assigned.see #130 - 开发spring-boot-layotto包. review中,见layotto/java-sdk#8
让layotto集成spring boot,可以通过注解进行注册pubsub 订阅消息的回调函数
Actuator
- 设计实现actuator metrics API,用于统计、展示metrics指标. 见 #201
WASM相关
- 让Layotto能监听.wasm文件有没有变更,有变更的话重新热加载.wasm文件.
达到运行时动态替换.wasm的效果. 见 #165 - 让wasm可以通过State API访问存储. 见 #192
- 升级由rust开发的wasm demo. 见 #255
- 升级由AssemblyScript开发的wasm demo. 见 #256
File Api相关
laytto现在添加了file接口的抽象,默认支持了aliyun的oss的能力,现在需要增加其它的后端文件存储组件。可以参照#98 , #236
Sequencer API相关
-
组件开发:选择一个你喜欢的开源组件或云服务(比如zookeeper,leaf等)实现分布式自增id生成 。
- Etcd
- 单机redis
assigned - Zookeeper
assigned - Leaf
- Consul
- Mongo
- 实现snowflake算法(需要避免时钟回拨问题) 见#193
- Mysql
- PostgreSQL
- 其他任何存储
参考资料:
quick start: https://mosn.io/layotto/#/zh/start/sequencer/start
design doc: https://mosn.io/layotto/#/zh/design/sequencer/design
-
实现Sequencer API的号段缓存功能. assigned to @ZLBer ,see #158
可以参考Leaf,做双buffer优化
待实现的函数在https://github.com/mosn/layotto/blob/main/pkg/runtime/sequencer/cache.go
参考资料:
quick start: https://mosn.io/layotto/#/zh/start/sequencer/start
design doc: https://mosn.io/layotto/#/zh/design/sequencer/design
分布式锁API相关
- 选择一个你喜欢的开源组件或云服务(比如zookeeper)实现分布式锁API。
- 单机redis
done - redis 集群 (redis集群fo会丢锁,所以要用能尽量提高正确性的算法,比如redlock等)
- zookeeper
assigned.see #111 - etcd
assigned.see #128 - Consul
assigned.see #129 - Mongo
- Cassandra
参考https://github.com/dekses/cassandra-lock - 任何其他的组件. 利用AWS或者阿里云提供的某个分布式协调服务
- 单机redis
注意在实现分布式锁之前需要谨慎评估一下这个存储组件是否适合实现分布式锁,会不会很容易出现丢锁、死锁等问题?分布式锁没法保证100%的正确性,但我们也要尽量保证正确,尽量为用户屏蔽复杂的问题~
Mongo的ttl是分钟级可能会太久、异步复制可能丢锁,但是好像能改服务端配置改成同步复制?(我刚查到一篇博客 说能),Cassandra组件我还没有细看,看ShedLock 实现了Cassandra于是就加进来了。总之需要开发者在设计时仔细评估哈~
工程化相关
- Make Layotto CI more powerful. See #532 (comment)
- Add more linters. See #599
- 提供Dockerfile,以便用户进行镜像化部署。见 #178
- 自动化生成接口文档:调研实现自动根据proto文件生成接口文档的方案。参考Etcd自动生成的文档
- 自动化检查Pull request标题,必须满足
类型(scope): 主题
的格式,以便让commit history 可读性更好。
见 #243 assigned - 自动化检查提的 PR 有关联issue
- 自动化检查code style。 我们可以在github workflow中使用
go lint
自动检查代码风格,检查的细节比如:
代码里不能有中文;
用go xxx()
起新协程的地方,必须有recover;
当然这几个例子实现不了也不要紧,只要有有价值的自动化检查就行
目前ci/cd使用github actions,配置文件在这里 可以参考一些github actions优质教程:
https://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html
http://www.ruanyifeng.com/blog/2019/12/github_actions.html
-
发布新版本时自动化构建: 修改 workflow,每次发布新版本时自动交叉编译出多平台的二进制文件(linux/mac下的二进制文件)、压缩(把二进制文件压缩),以便在发版报告中提供二进制文件或压缩文件
需要调研一下方案,看看是自己写一个构建脚本、用go的交叉编译功能,还是有现成的平台帮忙做构建 -
自动化构建 Docker 镜像: 每次有PR 合并、发布新版本时,自动构建docker镜像
WIP. See #392
可观测性
Metrics
- 提供一个 Layotto 集成 Prometheus 的示例 Demo
Layotto 跑在 MOSN 上,而 MOSN 已经支持集成 Prometheus 了,我们需要一个 Demo 示例、quickstart 文档,指导用户如何集成
Hard——成为中间件大师!
可观测性
- 集成Skywalking,Jaeger等系统
目前Layotto支持了trace能力,希望能够和Skywalking,Jaeger等可观测性相关平台做集成
Runtime API Lab
开发更多的 API 插件
-
设计实现 Redis API
-
设计实现 Kafka API
有了这个API后,我们可以用阿里云 SLS 组件来实现这个 API -
设计实现事务消息 API
-
设计实现延迟消息 API
-
让Layotto 支持 Dapr Config API
自今年3月以来,我们一直在和阿里巴巴、Dapr社区讨论共建 ,希望为Dapr添加一套Config API。最近这个API终于被Dapr合并了 。
现在,是时候让Layotto也支持Dapr这套Config API了。(Dapr Config API还在alpha版本,和Layotto已有的Config API相似但缺少一些字段,开发时可以参考Layotto已有的实现)
Dapr的API定义见 https://github.com/dapr/dapr/blob/master/dapr/proto/runtime/v1/dapr.proto -
让Layotto支持secret API。 Layotto的目标是和Dapr等社区共建Runtime API标准(把Dapr API推广成行业标准,Layotto作为该API的一个实现),需要支持Dapr的secret API。因此本任务需要将Dapr的secret API移植进Layotto。Dapr 的secret management相关文档见https://docs.dapr.io/developing-applications/building-blocks/secrets/
assigned.see #212 -
让Layotto支持Binding API。同上,将Dapr的binding API移植进Layotto
WASM Lab
Kubernetes Lab
- 让Layotto能够简单方便的部署在Kubernetes上. 见 #189
Istio
- 集成 istio 1.10, 让 layotto 的 invokeService API 能够复用 istio 的流量治理能力. 见 #311
如果您感兴趣的话,可以在留言里回复下,我们会assign给您
I want to add unit tests for rpc related code, please assign to me
I want to add unit tests for rpc related code, please assign to me
Cool.
Feel free to ask for help, and welcome to the community!
If you find github conversation inconvenient to communicate,we can chat on dingtalk (in chinese,haha)
Our dingtalk group is 31912621
Hello, I am interested in adding unit tests for WASM related code. Could you please let me try to do it?
Hello, I am interested in adding unit tests for WASM related code. Could you please let me try to do it?
Welcome!
You can reply the issue #105 so that I can assign it to you.
If you encounter any problems,feel free to ask for help in github conversation or dingtalk.
Webassembly is a cool new tech.I like it too :)
I want to impl etcd lock, please assign to me
New tasks added
I want to add java client base on protobuf , assign to me?
I want to add java client base on protobuf , assign to me?
Ok, I will assign it to you!
@MoonShining is developing a rpc method for java client, I think you can add any other features for java sdk
New tasks added:
- Add sequencer API components(e.g. zookeeper,leaf)
- Implement the segment caching feature of Sequencer API
Sequencer API impl: mongo & Leaf, pls assign to me
Sequencer API impl: mongo & Leaf, pls assign to me
Cool!
Sequencer API impl: zk & standalone redis, pls assign to me
Sequencer API impl: zk & standalone redis, pls assign to me
Cool!
segment caching assign to me , pls
Added some engineering related tasks:
- Automatically generate API documents: use some tools to automatically generate API documents based on proto files. Refer to the document automatically generated by Etcd
- Automated code review in ci/cd pipeline, including:
no Chinese in the code;
maybe some other necessary checks - Automated build: Automatically compile multi-platform binary files (binary files under linux/mac), compress (compress binary files), and build docker images
Hi, Sequencer API related: snowflake algorithm (need to avoid clock rollback problems)
could this refer https://github.com/baidu/uid-generator?
uid-generator can avoid clock rollback problems but it depends on db
if can be done, we just need to implement the go version uid-generator
为RPC API添加接口文档.See https://mosn.io/layotto/#/en/api_reference/rpc/reference, assign to me , pls
@byene0923 I haven't used that library before,but I think any existing system which is suitable for id generation can be integrated as a component.So welcome to implement it !
if can be done, we just need to implement the go version uid-generator
Yep,but I am worried that will there be too much work to do? Will the workload be too great? I am not familiar with this library
为RPC API添加接口文档.See https://mosn.io/layotto/#/en/api_reference/rpc/reference, assign to me , pls
@keleqnma Cool!
Thanks for your passion and welcome to the Layotto community!
I opened a new issue #185 ,you can reply there so that I can assign it to you.
I want to implement the snowflake algorithm, assign to me pls
@keleqnma Thanks for your passion!
I add a new issue #193
You can reply there so that I can assign to you.
If you are not confident about how to implement it,you can write your design before coding
Feel free to talk with us in github or dingtalk. I'm on vacation this week but @zhenjunMa is willing to help 😄
WASM Function access cache through state API, assign to me pls
hi,i wanna translate, pls assign me, thx a lot.
将文档贡献指南翻译成英文
将组件开发指南翻译成英文
将新增API时的开发规范翻译成英文
将文档贡献指南翻译成英文
将组件开发指南翻译成英文
将新增API时的开发规范翻译成英文
@x-shadow-man OK,I add a new issue #202 You can reply there and then we can assign it to you
Welcome to the Layotto community!
New tasks added:
-
Easy
- Add comment to exported function/method/interface/variable (such as RPC/distributed lock modules), see #112
-
Hard
- Let Layotto support secret API.
Layotto's goal is to build a Runtime API standard with Dapr and other communities (promote Dapr API as an industry standard, and Layotto as an implementation of this API), so it needs to support Dapr's secret API. Therefore, this task needs to port Dapr's secret API into Layotto. For Dapr's secret management related documents, see https://docs.dapr.io/developing-applications/building-blocks/secrets/
- Let Layotto support secret API.
- Hard
I can take hard, assign to me PLS
@MentosL Cool ! I submitted a issue and assigned it to u,see #212
Since this issue is a little bit complicated,u can write your design before coding to avoid rework. You can take sequencer API proposal #139 or pubsub API design doc https://mosn.io/layotto/#/zh/design/pubsub/pubsub-api-and-compability-with-dapr-component as examples
@MentosL Cool ! I submitted a issue and assigned it to u,see #212
Since this issue is a little bit complicated,u can write your design before coding to avoid rework. You can take sequencer API proposal #139 or pubsub API design doc https://mosn.io/layotto/#/zh/design/pubsub/pubsub-api-and-compability-with-dapr-component as examples
Ok, I'll refer to the design and then put it into development
New tasks added:
- Hard
- Layotto support Binding API. Same as above, porting Dapr's binding API into Layotto
New tasks added:
- Medium
- Add components for File API. File api have been supported in layotto, need to add components implementation for file api. See #236
- awsOss
- local file system(file on local disk)
- HDFS
- minIo
- Add components for File API. File api have been supported in layotto, need to add components implementation for file api. See #236
hello,I want to impl redis cluster lock, please assign to me
@whalesongAndLittleFish Cool!
I opened a new issue #249 and listed the docs you can refer to. You can reply there so that I can assign it to you
Node.js SDK 我可以尝试领一下,时间不一定保证,未来几个周末我会至少保证每周2小时投入。
New tasks added:
- Medium
- Automatically check the pull request title and ensure it to meet the format of
type(scope): subject
in order to make the commit history more readable.
See #243 - Automatically check code style with
go lint
in ci/cd pipeline.
- Automatically check the pull request title and ensure it to meet the format of
New tasks added:
- Easy
- add distributed lock API for java sdk
- add distributed sequncer API for java sdk
New tasks added:
- Medium
- Develop python sdk
Because we want to reduce the cost of maintaining multi-language SDKs, we want to reuse Dapr SDKs as much as possible. Therefore, this task suggests to fork the Dapr python SDKs for modification (because the package path of the proto interface is different, so the code compiled by proto is different, so we need to do some modification).
- Develop python sdk
New tasks added:
- Hard
- Integrate with Skywalking, Jaeger and other systems
- Let Layotto support Dapr's Config API (alpha version)
New tasks added:
- Easy
- add metadata field for go,js and dotnet sdk. See #320
- Medium
- Develop the spring-boot-layotto package.
hi,可以给我一些最简单的任务试一下
@Horizon-1998 好呀欢迎,你喜欢啥语言?
可以看下easy部分的任务,非特定语言的有:补充指定模块的注释;补充go-sdk的文档
如果你想写go,有补充单测的,或者开发优化的,比如#275 (comment)
别的语言有sdk相关任务
@Horizon-1998 好呀欢迎,你喜欢啥语言? 可以看下easy部分的任务,非特定语言的有:补充指定模块的注释;补充go-sdk的文档 如果你想写go,有补充单测的,或者开发优化的,比如#275 (comment) 别的语言有sdk相关任务
目前使用C++和Python,目前想学习一下go语言,
@Horizon-1998 目前正缺c++和python的sdk,如果你感兴趣欢迎认领 :)
也可以借项目学习go语言,建议学习顺序:
-
先了解项目是干啥的,参照quickstart demo 把项目跑起来;
扩展阅读:有一些介绍项目的演讲视频,比如https://mosn.io/layotto/#/zh/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index 比如 https://www.bilibili.com/video/BV1RL4y1b7U9?from=search&seid=1492521025214444985&spm_id_from=333.337.0.0
不过看视频比较花时间,懒得看的话可以多跑几个demo体验下,quickstart demo蛮多的 -
可以先从最简单的上手,上面有给指定模块添加注释、加单测的任务,可以读相关模块的代码,补充注释、加单测,加单测的过程可以熟悉go语法
-
当然你也可以直接上手写代码~ 比如#275 (comment) 这个很简单
@Horizon-1998 目前正缺c++和python的sdk,如果你感兴趣欢迎认领 :) 也可以借项目学习go语言,建议学习顺序:
- 先了解项目是干啥的,参照quickstart demo 把项目跑起来;
也有一些介绍项目的演讲视频,比如https://mosn.io/layotto/#/zh/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index 比如 https://www.bilibili.com/video/BV1RL4y1b7U9?from=search&seid=1492521025214444985&spm_id_from=333.337.0.0- 可以先从最简单的上手,上面有给指定模块添加注释、加单测的任务,可以读相关模块的代码,补充注释、加单测,加单测的过程可以熟悉go语法
- 当然如果你水平高 可以直接上手写代码~ 比如fail fast and kill the process when error occurs during startup #275 (comment)
好,我先了解一下项目,先做一下添加注释和单测的任务。
Hi @seeflood Is anyone working on Distributed Lock API with mongo ?
New tasks added:
- Easy
- in-memory components
你好,我想参与这个开源项目,还有机会吗?
@Baby-123-hub 好呀好呀欢迎的,还有很多新手任务可以领,你熟悉什么语言呀
目前使用java,在学习go
@jieeny @Horizon-1998 Hi, 我写了个新手攻略,供参考 https://mosn.io/layotto/#/zh/development/start-from-zero
New tasks added:
-
Easy:
- add unit tests for actuator module.The code is under
pkg/filter/stream/actuator/http
- add unit tests for actuator module.The code is under
-
Medium
- Add support for Dapr API. #361
- InvokeService
- InvokeBinding
- State
- pubsub
- Configuration
- Secret
- GetMetadata/SetMetadata
- Shutdown
- Add support for Dapr API. #361
Hi @seeflood, I want to try Sequencer API of mongo
Hi @seeflood , Is the " add distributed sequncer API for java sdk" finished yet, if not I would like to try it
Hi @LXPWing,it has not been done yet.
I add a new issue layotto/java-sdk#12 and it will be assigned to you.
Thanks for your help !
@chen1076680807 cool !
I add a new issue layotto/java-sdk#15 and it will be assigned to you.
Thanks for your help !
If you met any problems, feel free to ask for help. You can contact with us on both github and dingtalk
hi @seeflood, I want to try pubsub api
@LXPWing Cool !
I reopen the issue and assigned to u,see #361 (comment)
New tasks added:
- Add comments for file API related code in the proto file.
- Change the apollo sdk to https://github.com/apolloconfig/agollo .Currently we are using github.com/zouyx/agollo
- Translate Skywalking quickstart documentation into English
- Translate How to deploy and upgrade Layotto into English
- Translate "Explain Layotto's github workflow" into Chinese
- Change MinIO's demo to use docker to deploy MinIO by default, and Layotto to invoke local MinIO.
Currently, the demo uses the MinIO official demo service by default, but the service is unstable, so we want to use docker to deploy MinIO and make the demo more stable.
See #450
chinese:
-
为 proto 文件中file API 相关接口 补充注释. 有了更多注释后,可以用工具根据注释生成文档
-
apollo 组件的客户端改成用 https://github.com/apolloconfig/agollo 之前用的是github.com/zouyx/agollo
-
将接入Skywalking 的quickstart 文档 翻译成英文
-
将如何部署、升级 Layotto 翻译成英文
-
把 MinIO 的 demo 改成默认使用 docker 部署 MinIO、Layotto 调用本地 MinIO. 目前,该 demo 默认调用 MinIO 的官方演示服务,但该服务不稳定,时常出现磁盘满了之类的情况。
见 #450
@seeflood Hi , I want to try Translate "Explain Layotto's github workflow" into Chinese。
New tasks added,see #455
- Delete redundant demos and keep only one demo,which can be used for all Sequencer API components
- Delete redundant demos and keep only one demo,which can be used for all Configuration API components
- Delete redundant demos and keep only one demo,which can be used for all File API components
- Delete redundant demos and keep only one demo,which can be used for all lock API components
- Delete redundant demos and keep only one demo,which can be used for all pubsub API components
- Delete redundant demos and keep only one demo,which can be used for all State API components
chinese:
- 删除多余的demo.见 #455
- 删除多余的demo, 只保留一个 Sequencer API demo,能同时用于所有 Sequencer API 组件
- 删除多余的demo, 只保留一个 Configuration API demo,能同时用于所有 Configuration API 组件
- 删除多余的demo, 只保留一个 File API demo,能同时用于所有 File API 组件
- 删除多余的demo, 只保留一个 Lock API demo,能同时用于所有 Lock API 组件
- 删除多余的demo, 只保留一个 Pubsub API demo,能同时用于所有 Pubsub API 组件
- 删除多余的demo, 只保留一个 State API demo,能同时用于所有 State API 组件
New tasks added:
- Test our quickstart documents in the CI. see #447
- refactor quickstart document for pubsub API and make it testable.
- refactor quickstart document for Configuration API and make it testable.
- refactor quickstart document for Lock API and make it testable.
- refactor quickstart document for Sequencer API and make it testable.
- refactor quickstart document for RPC API and make it testable.
- refactor quickstart document for File API and make it testable.
- refactor quickstart document for API plugin and make it testable.
- refactor quickstart document for Layotto Actuator and make it testable.
- refactor quickstart document for Skywalking and make it testable.
New tasks added:
- Implementing File API components with ceph
- Integrates with istio 1.10, allowing layotto's invokeService API to reuse istio's traffic management capabilities. See #311
- Automatically check that new PR must have related issues
chinese:
- 用 ceph 实现 File API 组件
- 集成 istio 1.10, 让 layotto 的 invokeService API 能够复用 istio 的流量治理能力. 见 #311
- 自动化检查提的 PR 有关联issue
New tasks added:
Easy
测试相关:
修复 rpc 相关代码的单元测试报错问题
#550
翻译相关:
将“介绍 layotto CI” 的文档翻译成英文
#545
将“介绍如何自动测试 quickstart” 的文档翻译成英文
https://mosn.io/layotto/#/zh/development/test-quickstart
开发相关
优化 lock api demo,让所有 lock 组件公用一个 demo
优化 sequencer api demo,让所有 sequencer 组件公用一个 demo
优化 pubsub api demo,让所有 pubsub 组件公用一个 demo
Hard
设计实现 Redis API
设计实现 Kafka API
有了这个API后,我们可以用阿里云 SLS 组件来实现这个 API
设计实现事务消息 API
设计实现延迟消息 API
New tasks added:
- Integrate with Zipkin
New tasks added:
- Engineering:
- Make Layotto CI more powerful. See #532 (comment)
- Add more linters. See #599
hi @seeflood, I'd like to translate How to deploy and upgrade Layotto into English as my first contribution. Could you assign it to me?
@cyb0225 Sorry the doc has already been translate. You can find the good first issue list here:
https://github.com/mosn/layotto/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22+no%3Aassignee
explanation:
#653
@seeflodd I'm sorry, I didn't catch that part. I will choose another issue that I'm interested in contributing to.
Hello, @seeflood
I think the rate limiting logic is also very suitable for sinking into layotto, and it is very suitable as a task for newcomers (the token bucket algorithm is a very mature current limiting algorithm).
Regardless of whether it is a standalone rate limit or a cluster rate limit, the business code only needs to know that it needs to check whether the request can pass, and does not need to pay attention to the policy and storage of the traffic limit (this is the business current limit, not the protection mechanism for the entire service )
@jizhuozhi agreed.
@zhenjunMa @wenxuwan How about adding some good first issues on it?