寻找需要长期贡献者的Golang开源项目

寻找需要长期贡献者的Golang开源项目 大家好,

我是一名专注于后端和基础设施开发的工程师,对Go语言很感兴趣。遗憾的是,我在工作中没有太多机会编写Go代码(公司主要使用Node.js),至少达不到我期望的程度。因此,我希望加入一个有趣的基于Go的开源项目,能够长期、定期地贡献代码(而不是像Hacktoberfest那种短期参与)。

我感兴趣的项目需要满足以下条件:

  • 基于Web服务(使用并暴露REST/GraphQL/gRPC API)
  • 使用最新的Go版本
  • 注重可维护性和代码质量(并且有良好的代码审查流程)
  • 有大量待完成的任务

我所在的时区是UTC+1,并且更喜欢通过Slack/GitHub等进行异步沟通。

如果有人正在寻找贡献者,或者知道符合上述标准的项目,请告诉我 🙌

附:澄清一下,我是想以志愿者的身份参与,并非寻找工作。但我不确定论坛里是否有更合适的版块来发布这类信息。


更多关于寻找需要长期贡献者的Golang开源项目的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

这不是我的项目,但这是 Go 生态系统中较大的开源项目之一,他们需要一位新的维护者:

⚠️ Gorilla 工具包正在寻找新的维护者

Gorilla 工具包正在寻找一位(或多位)新的维护者。作为该项目的最后一位维护者,我已没有足够的时间来全力维护该项目中的所有库。

主要的库——mux (https://github.com/gorilla/mux)、schema (https://github.com/gorilla/schema)、handlers (https://github.com/gorilla/handlers) 和 sessions (https://github.com/gorilla/sessions)——都是相当成熟的库,但持续的维护工作,包括缺陷分类、功能增强以及潜在的“2.0 版本”开发,都是需要考虑的可能性。

对新维护者的核心要求:

  • 拥有开源软件贡献的证明记录。这一点很重要,因为你需要值得信赖:没有维护者比一个对立的维护者要好!
  • 理想情况下,你应积极贡献 3-6 个月,在你审查后我来合并,之后你将获得相关代码库的提交权限,这取决于你的贡献程度和参与度。
  • 我将把项目的管理员权限移交给你。

注意:我不指望这个过程会快速或容易——拥有 16k 星标和每周 15k 独立克隆的 websocket 库,已经寻找新的维护者超过 3.5 年了,至今还没有人能可靠地长期坚持下来。

如果我在未来大约 6 个月内没有找到新的维护者,我很可能会将这些项目标记为仅维护模式,并归档这些代码库。

请保持回复内容切题。

然而,听起来你对 Go 还比较陌生,所以这可能不是最合适的选择。他们也没有太多运气找到能够处理所需大量拉取请求/问题的贡献者。

更多关于寻找需要长期贡献者的Golang开源项目的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


寻找需要长期贡献者的Golang开源项目

看到你对Go语言开源项目的热情,这很棒!基于你的技术栈偏好(Web服务、最新Go版本、注重代码质量),我推荐以下几个活跃且需要长期贡献者的项目:

1. Caddy - 现代Web服务器

// 示例:Caddy的中间件开发模式
package caddyhttp

import (
    "net/http"
    "github.com/caddyserver/caddy/v2"
    "github.com/caddyserver/caddy/v2/modules/caddyhttp"
)

func init() {
    caddy.RegisterModule(MyMiddleware{})
}

type MyMiddleware struct {
    // 配置字段
}

func (MyMiddleware) CaddyModule() caddy.ModuleInfo {
    return caddy.ModuleInfo{
        ID:  "http.handlers.my_middleware",
        New: func() caddy.Module { return new(MyMiddleware) },
    }
}

func (m *MyMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.Handler) error {
    // 你的中间件逻辑
    return next.ServeHTTP(w, r)
}

推荐理由

  • 使用Go 1.21+
  • 完善的代码审查流程
  • 大量待处理的Issue(特别是HTTP/3、插件开发等)
  • 活跃的Discord社区(支持异步沟通)

2. PocketBase - 后端即服务框架

// 示例:创建自定义Hook
package main

import (
    "github.com/pocketbase/pocketbase"
    "github.com/pocketbase/pocketbase/core"
)

func main() {
    app := pocketbase.New()
    
    app.OnRecordBeforeCreateRequest().Add(func(e *core.RecordCreateEvent) error {
        // 业务逻辑
        if e.Record.Collection().Name == "users" {
            e.Record.Set("verified", false)
        }
        return nil
    })
    
    app.Start()
}

推荐理由

  • REST/GraphQL API齐全
  • 严格的代码规范(golangci-lint配置完善)
  • 400+个待处理Issue
  • 时区友好(核心团队分布在欧洲时区)

3. Fiber - Web框架

// 示例:贡献中间件
package contrib

import (
    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/fiber/v2/middleware"
)

func NewCustomMiddleware(config ...Config) fiber.Handler {
    cfg := configDefault(config...)
    
    return func(c *fiber.Ctx) error {
        // 预处理
        if err := cfg.PreFilter(c); err != nil {
            return cfg.ErrorHandler(c, err)
        }
        
        // 执行下一个处理器
        err := c.Next()
        
        // 后处理
        cfg.PostProcess(c)
        
        return err
    }
}

推荐理由

  • 活跃的Slack社区
  • 完整的CI/CD流程(包括性能测试)
  • 需要贡献的领域:OpenTelemetry集成、gRPC适配器、测试覆盖率提升

4. Grafana Tempo - 分布式追踪系统

// 示例:扩展存储后端
package backend

import (
    "context"
    "github.com/grafana/tempo/pkg/model"
)

type CustomBackend struct {
    // 实现Backend接口
}

func (b *CustomBackend) Write(ctx context.Context, meta *model.BlockMeta, b []byte) error {
    // 实现写入逻辑
    return nil
}

func (b *CustomBackend) ListBlocks(ctx context.Context, tenant string) ([]*model.BlockMeta, error) {
    // 实现列表查询
    return []*model.BlockMeta{}, nil
}

推荐理由

  • 企业级代码质量标准
  • 每周社区会议(有录播,适合UTC+1)
  • 大量gRPC相关开发任务

如何开始贡献:

  1. 首次贡献流程
# 典型的工作流
git clone https://github.com/org/repo.git
cd repo
# 查找good first issue标签
gh issue list --label="good first issue" --state=open
  1. 代码审查示例
// 提交PR前确保:
// 1. 通过所有测试
go test ./... -race -v

// 2. 符合lint规范
golangci-lint run

// 3. 更新文档
godoc -http=:6060
  1. 异步沟通技巧

// GitHub Issue模板示例: 问题描述: [清晰说明]

复现步骤: 1. 2.

建议的解决方案: [你的实现思路]

测试用例

func TestFeature(t *testing.T) {
    // 测试代码
}

项目筛选建议:

查看项目的以下指标:

# 查看活跃度
gh repo view org/repo --json "issues,stargazersCount,pullRequests"

# 查看待处理任务
gh issue list --limit=20 --state=open --json "number,title,labels"

# 检查Go版本
grep -r "go 1." go.mod

这些项目都有:

  • 明确的贡献者指南(CONTRIBUTING.md
  • 活跃的维护者响应(平均<48小时)
  • 适合长期参与的路标规划(Roadmap)
  • 异步协作文化(Slack/Discord + GitHub Discussions)

建议先从解决带有help wantedgood first issue标签的问题开始,逐步熟悉项目代码库。大多数项目都有专门的#contributors频道供异步讨论。

回到顶部