贡献规范

优质
小牛编辑
130浏览
2023-12-01

Swoft 开源框架,非商业项目,由开源组织开发与维护,这意味着任何人都可以为其开发和进步贡献力量。参与 Swoft 有多种方式:

  • 代码贡献
  • 文档贡献
  • 官网维护
  • 社区维护

代码贡献

  1. Fork 组件代码库 swoft-component
  2. 发送 Pull Request 修改请求
  3. 等待 Swoft 开发组审核和合并

所有官方维护的组件均由swoft-component项目统一合并后分发到各个组件

参与 swoft 的开发是否很难

通过对比 swoft 和传统框架, 来回答这个问题:

  • 框架定位
    • 传统框架: 适合开发「巨石应用」, 所有功能都包含在同一份代码库中, 适合初创团队快速实现原型
    • swoft: 致力于实现 PHP 下的微服务, 功能都由「组件」提供, 可以按照实际需求按需加载组装
  • 开发难度
    • 传统框架
      • 熟悉经典的 lnmp 体系, 只用考虑 PHP 语法
      • 通常需要完整熟悉整个框架, 才可能参与开发, 老旧的框架提 PR 可能很久才会处理
    • swoft
      • 熟悉 swoole 以及网络编程的基础知识, 就能轻松用 PHP 写出并发能力远超 fpm
      • 开发组提供开发指南, 组件说明, 快速响应, 开发者可以选取一个简单的组件上手, 快速完成一个 PR

难? 我亦无他, 唯手熟尔.

开发步骤

使用 docker

推荐使用 docker 解决开发环境的困扰, 开发组维护了 swoft/swoftswoft/alphp 两个镜像, 简单示例:

  • 使用 docker-compose 进行服务编排
version: '3.1'
services: # 定义服务
    swoft: # 服务的名称
        image: swoft/alphp:cli
        volumes:
            - ../:/data # 挂载本地的源码到容器的 /data 目录下
        ports:
            - "80:9501" # 映射本地 80 端口到容器 9501 端口
        links: # 其他基础服务也可以用 docker 解决, 用不到可以先去掉
            - redis
            - mysql
            - rabbitmq       
        tty: true # 开启后, 可以使用 exec 进入到容器中
  • 简单使用
docker-compose up -d swoft # 启动服务
docker-compose exec swoft # 进入容器中

swoft 项目说明

swoft 包含2个重要项目:

换一个说法:

  • 参与 swoft, 其实在做应用层的事, 业务中要怎么写, 参考 swoft 中的 demo 就行, 通俗说 – 造飞机
  • 参与 swoft-component, 其实是参与其中具体的某个/某几个组件, 通俗说 – 造飞机引擎

swoft 的 架构设计, 体现在 swoft 的 组件化 实现中:

  • 框架组件 framework: 框架核心工作, 以及框架核心配套的组件
  • swoft 功能组件: 按照功能进行划分, 依赖框架组件, 可以按需加载, 常见的有
    • rpc 全家桶: rpc rpc-server rpc-client
    • cli 引用: console

如果只是想 造飞机, 只用给 swoft 项目提 PR 即可; 如果想 造飞机引擎, 需要给 swoft-component 提 PR, 本地还需要一份类似 swoft 项目的脚手架, 用来验证

举个例子: 参与 RPC 组件开发

如果对 RPC 的基本概念不熟悉, 参考 RPC 组件相关文档

新建一个空文件夹, 比如 swoft-test, 充当 swoft 项目的角色, 作为脚手架, 加载需要的组件

  • 需要的基础文件
➜  swoft-test tree -L 2
.
├── app
│   ├── Application.php
│   └── bean.php
├── bin
│   ├── bootstrap.php
│   └── test.php
├── composer.json
├── config

是的, 只需要这么多, 从 swoft 复制过来即可

  • 使用 composer 加载 swoft 组件
{
  "require": {
    "swoft/rpc": "dev-master",
    "swoft/rpc-server": "dev-master",
    "swoft/rpc-client": "dev-master"
  },
  "autoload": {
    "psr-4": {
      "App\\": "app/"
    },
  },
  "minimum-stability": "dev",
  "repositories": {
    "hyperf": {
      "type": "path",
      "url": "../swoft-component/src/*"
    },
    "packagist": {
      "type": "composer",
      "url": "https://mirrors.aliyun.com/composer/"
    }
  }
}

这里涉及 composer 从本地加载依赖文件的用法, 不熟悉可以参考 官方文档 composer-repository

好了, 更新:

composer u --no-dev

之后就可以执行 php bin/swoft 来进行相应测试了, 如果遇到报错, 根据报错添加缺少的组件即可

  • 修改 RPC 相关文件

修改 swoft-component 下的组件, 建议多和开发组交流, 有开发范式和 CI 来保证组件的开发质量和稳定性

需要了解的更多知识

  • docker 基础知识
  • github 如何提 PR. 推荐一个好用的工具, github desktop, 有快捷键快速提 PR.
  • composer 文档, 组件开发和生产项目有所差异, composer 提供了一些有意思的功能, 方便开发组件

推荐使用 mac + phpstorm + docker, 构建全套开发环境. 有相关问题, 欢迎和开发组交流.

最后更新:

类似资料

  • 为CakePHP做贡献有多种方式。以下各节涵盖了各种可以为CakePHP做出贡献的方式: 文档 问题跟踪系统 代码 编码规范 向后兼容性指南

  • 简介 Fuel 是一个社群驱动的框架,并且开放来自任何认为他们可以改进框架或添加功能的人们, 来让框架到达更高水准的贡献。 有许多形式可以做到这一点,从写教学、编写和发布套件, 以促进成为 Fuel 的正式部分(核心、Orm、文档等……)。 贡献程式码 当你遭遇一个错误,或看到问题清单中你能或已解决的问题, 而且你想要将它贡献回框架。根据你所拉取(pull)正在运行的版本分支, 使用 GitHub

  • 我们非常欢迎您加入 Hexo 的开发。 ???? 开发 我们非常欢迎您加入 Hexo 的开发,这份文件将帮助您了解开发流程。 开始之前 请首先阅读《贡献者行为准则》,并确保您不会违反它。 请使用以下代码风格: 遵守 Google JavaScript 代码风格。 缩进使用 2 个空格。 不要把逗号放在最前面。 另外,Hexo 拥有自己的 ESLint 配置,因此请确保您的贡献能够通过 ESLint

  • 找到一个漏洞?有一个新的功能建议?想要对代码库做出贡献?请务必先阅读这些。 漏洞报告 你的代码不起作用,你确定问题在于Keras?请按照以下步骤报告错误。 你的漏洞可能已经被修复了。确保更新到目前的Keras master分支,以及最新的 Theano/TensorFlow/CNTK master 分支。 轻松更新 Theano 的方法:pip install git+git://github.c

  • 流程 如果是扩展功能,直接新增工程,黑盒依赖 Dubbo 进行扩展。 如果是改 BUG,或修改框架本身,可以从 Dubbo 的 GitHub 上 Fork 工程。 修改后通过 Push Request 反馈修改。 任务 功能 分类 优先级 状态 认领者 计划完成时间 进度 《用户指南》翻译 文档 高 未认领 待定 待定 0% 《开发指南》翻译 文档 高 未认领 待定 待定 0% 扩展点兼容性测试

  • 我们欢迎您对类库的贡献,但我们要求您遵循以下准则: 使用制表符缩进,而不是空格 只更改/src中的单个文件 gulp lint会为你运行eslint来检查你的代码是否会通过代码标准 gulp test检查你的代码是否会通过测试 保持pull请求简洁,并在相关的.md文件中记录新的功能 考虑到您的更改是否对所有用户有用,否则可以考虑是否创建Chart.js插件更合适 除非有即将发布的主要版本,否则不