-
Notifications
You must be signed in to change notification settings - Fork 173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Community tasks 新手任务计划 #108
Comments
chinese: 新手任务计划作为技术同学,你是否有过“想参与某个开源项目的开发、但是不知道从何下手”的感觉? 任务列表任务分为不同难度:
上手攻略Easy——从这里开始,成为Layotto Contributor!Layotto runtime
Bug fix
Write a Feature
注释相关
文档相关
翻译英翻中
中翻英
SDK相关:
测试相关:
Components
in-memory components见 #67 (comment)
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之间自由切换。
SDK
Actuator
WASM相关
File Api相关laytto现在添加了file接口的抽象,默认支持了aliyun的oss的能力,现在需要增加其它的后端文件存储组件。可以参照#98 , #236 Sequencer API相关
分布式锁API相关
注意在实现分布式锁之前需要谨慎评估一下这个存储组件是否适合实现分布式锁,会不会很容易出现丢锁、死锁等问题?分布式锁没法保证100%的正确性,但我们也要尽量保证正确,尽量为用户屏蔽复杂的问题~ Mongo的ttl是分钟级可能会太久、异步复制可能丢锁,但是好像能改服务端配置改成同步复制?(我刚查到一篇博客 说能),Cassandra组件我还没有细看,看ShedLock 实现了Cassandra于是就加进来了。总之需要开发者在设计时仔细评估哈~ 工程化相关
目前ci/cd使用github actions,配置文件在这里 可以参考一些github actions优质教程: https://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html
可观测性Metrics
Hard——成为中间件大师!可观测性
Runtime API Lab开发更多的 API 插件
WASM Lab
Kubernetes Lab
Istio
|
I want to add unit tests for rpc related code, please assign to me |
Cool. |
Hello, I am interested in adding unit tests for WASM related code. Could you please let me try to do it? |
Welcome! |
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? |
Ok, I will assign it to you! |
New tasks added:
|
Sequencer API impl: mongo & Leaf, pls assign to me |
Cool! |
Sequencer API impl: zk & standalone redis, pls assign to me |
Cool! |
segment caching assign to me , pls |
Ok. @ZLBer is so good! |
Added some engineering related tasks:
|
New tasks added:
|
New tasks added:
|
Hi, Sequencer API related: snowflake algorithm (need to avoid clock rollback problems) |
为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 !
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 |
@keleqnma Cool! |
Hi @LXPWing,it has not been done yet. |
Hi @seeflood ,I want to try add distributed lock API for java sdk |
@chen1076680807 cool ! |
hi @seeflood, I want to try pubsub api |
@LXPWing Cool ! |
New tasks added:
|
New tasks added:
chinese:
|
@seeflood Hi , I want to try Translate "Explain Layotto's github workflow" into Chinese。 |
New tasks added,see #455
chinese:
|
New tasks added:
|
New tasks added: Bug fix
Write a Feature
|
New tasks added:
chinese:
|
New tasks added: Easy测试相关:修复 rpc 相关代码的单元测试报错问题 翻译相关:将“介绍 layotto CI” 的文档翻译成英文 将“介绍如何自动测试 quickstart” 的文档翻译成英文 开发相关优化 lock api demo,让所有 lock 组件公用一个 demo Hard设计实现 Redis API |
New tasks added:
|
New tasks added:
|
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: explanation: |
@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. |
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
recover
for all codes that create new goroutines. See Reduce the risk of panic #197Bug fix
🤔 UT of
mosn.io/layotto/components/rpc/invoker/mosn/channel
failed #550Write a Feature
Comment related
Considering that the workload of adding comments to all the modules is relatively large, we split it into multiple tasks:
SDK related
assigned.see Add .net sdk #130
assigned. see simple java client #153
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 Add document for RPC API. #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 doc(quickstart): use local minIO instead of remote minIO service #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” 的文档翻译成英文
translate:
docs/en/development/github-workflows.md
to English #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 Add unit tests for WASM related code; 为wasm模块补充单测 #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 Add unit tests for runtime/runtime.go and grpc/api.go #138
Add integration test cases for a certain type of API. See Add integration test cases #107 assigned to @seeflood
Understand the implementation of the rpc module & add unit tests: see Add unit tests for RPC related code #106 Already done by @tianjipeng
Add integrate test. see [GLCC] Add more components and api features in integrate test #415
Components
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:
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
SDK
Improve .net sdk. Make it have the same capabilities and api as go sdk
assigned.see Add .net sdk #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 feat: layotto springboot layotto/java-sdk#8
Let layotto integrate spring boot so that users can use annotations to register pubsub subscription callback
Actuator
WASM
Achieve the effect of dynamically replacing .wasm at runtime. see .wasm module hot reload #165
File api implementation
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 [GLCC] Implement Sequencer API with snowflake algorithm #193
Mysql
PostgreSQL
Any other storage
Implement the segment caching feature of Sequencer API. assigned to @ZLBer ,see Implement the segment caching feature of Sequencer API #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
done
assigned.see Zookeeper lock #111
assigned.see Add etcd lock #128
assigned.see Use Consul to implement Distributed Lock API #129
assigned.see add mongo distributed lock #348
refer to https://github.com/dekses/cassandra-lock
Engineering
type(scope): subject
in order to make the commit history more readable.See feat: add commit message lint to workflow #243
go lint
in ci/cd pipeline. For example: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
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
Layotto currently supports tracing and we hope to integrate with observability-related platforms such as Skywalking and Jaeger.
Runtime API Lab
Hard
#530
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 Let Layotto support secret API #212
Layotto support Binding API. Same as above, porting Dapr's binding API into Layotto
WASM Lab
If you are interested, you can reply and we will assign the task to you
Kubernetes Lab
Istio
The text was updated successfully, but these errors were encountered: