Skip to content

关于许可证问题及其解决办法 #28

@fumiama

Description

@fumiama

说明

注意到本项目有多处借鉴了 MiraiGo 的代码,现就此向贵方提出如下要求:

  1. 在 README 中注明此项目借鉴了 MiraiGo
  2. 在源代码中所有来源为 MiraiGo 的位置使用注释方式标明出处。
  • 例1:
    package proto
    import (
    "reflect"
    "google.golang.org/protobuf/types/known/anypb"
    "github.com/RomiChan/protobuf/proto"
    )
    // TODO: move to a new package
    const debug = false
    type Message = any
    func Marshal(m Message) ([]byte, error) {
    b, err := proto.Marshal(m)
    if err != nil {
    return b, err
    }
    if debug {
    t := reflect.TypeOf(m).Elem()
    n := reflect.New(t)
    err = Unmarshal(b, n.Interface())
    if err != nil {
    panic(err)
    }
    if reflect.DeepEqual(m, n) {
    panic("not equal")
    }
    }
    return b, err

    中,添加
    package proto
    
    // from https://github.com/Mrs4s/MiraiGo/blob/master/internal/proto/wrapper.go
    
    import (
        "reflect"
    
        "google.golang.org/protobuf/types/known/anypb"
    
        "github.com/RomiChan/protobuf/proto"
    )
    
    // TODO: move to a new package
    const debug = false
    
    ...
  • 例2:
    package client
    import (
    "reflect"
    "runtime/debug"
    "sync"
    "github.com/LagrangeDev/LagrangeGo/event"
    "github.com/LagrangeDev/LagrangeGo/message"
    "github.com/LagrangeDev/LagrangeGo/utils"
    )
    var eventLogger = utils.GetLogger("event")
    // protected all EventHandle, since write is very rare, use
    // only one lock to save memory
    var eventMu sync.RWMutex
    type EventHandle[T any] struct {
    // QQClient?
    handlers []func(client *QQClient, event T)
    }
    func (handle *EventHandle[T]) Subscribe(handler func(client *QQClient, event T)) {
    eventMu.Lock()
    defer eventMu.Unlock()
    // shrink the slice
    newHandlers := make([]func(client *QQClient, event T), len(handle.handlers)+1)
    copy(newHandlers, handle.handlers)
    newHandlers[len(handle.handlers)] = handler
    handle.handlers = newHandlers

    中,添加
    package client
    
    // from https://github.com/Mrs4s/MiraiGo/blob/master/client/events.go
    
    import (
        "reflect"
        "runtime/debug"
        "sync"
    
        "github.com/LagrangeDev/LagrangeGo/event"
        "github.com/LagrangeDev/LagrangeGo/message"
    
        "github.com/LagrangeDev/LagrangeGo/utils"
    )
    
    var eventLogger = utils.GetLogger("event")
  • 如果遇到一个文件中部分借鉴的情况,请分别在相应位置注明。
  1. 由于 MiraiGo 所使用的 GNU Affero General Public License v3.0 协议的传染性,贵方需要将此仓库协议从 GPLv3 变更为 AGPLv3。

其它解决方式

贵方也可选择完全删除仓库中与 MiraiGo 相同或相似的代码,这样便可不必执行上述要求。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions