开源软件技术社区是一个由开发者、贡献者、用户和维护者组成的共享平台,主要目的是打造技术、软件产品良性互动、开源技术安全可控的软件生态环境,实现可复用应用或服务的快速部署与使用、完成资源与能力的高度共享、促进社区成员的共建共赢,全面提升社区成员的技术能力,助力集团数字化转型升级。下面是开源软件技术社区的规划及管理方案。
一、 规划阶段
1. 明确社区定位与目标
- 提供与开源软件相关的信息、资源、交流、开发相关的技术社区,面向对技术有共同兴趣爱好的专业人员,提供可自由学习交流的友好环境;
- 建立集团级开源软件、第三方开源依赖包及各成员上传组件的代码仓库,提供软件供应链安全防护能力,形成开源软件社区所应具备的基础能力;
- 建立社区知识分享的激励机制,促进集团内软件技术的资源融合,促进技术创新,全面提升集团整体在软件技术实力及社会影响力,加速推进应用开发和企业数字化转型。
2. 建立完善的组织架构
- 核心团队:建立由社区创始人或核心开发者组成的核心团队,负责社区的整体规划、战略决策和重要事务的处理。
- 技术委员会:设立技术委员会,负责技术方向的把握、项目审核、代码审查等技术性工作的组织和实施。
- 贡献者:鼓励并吸引更多的开发者成为贡献者,参与社区的项目开发、代码审查、文档编写等工作。
3. 制定社区章程
为确保社区的和谐与稳定,制定社区章程,包括社区的愿景、使命、价值观、行为准则等。行为准则与规范包括言论规范、协作规范、行为规范等,以明确成员在社区中的权利和义务,维护社区的秩序。
- 尊重社区准则:用户应遵守社区的基本准则,包括尊重他人、友好交流、避免恶意攻击或诽谤等行为。不得在社区中发布侮辱、诽谤、攻击或其他违反法律法规和社区准则的内容。
- 遵循开源协议:开源软件技术社区中的项目通常遵循开源协议,如MIT、Apache、GPL等。用户在使用社区中的代码、软件或资源时,应遵守相应的开源协议,并遵循开源精神,为社区做出贡献。
- 保护知识产权:用户应尊重他人的知识产权,不得在社区中发布侵犯他人版权、商标、专利等知识产权的内容。同时,用户在使用社区中的资源时,应注意遵守相关的知识产权法律法规。
- 积极参与讨论和协作:开源软件技术社区鼓励用户积极参与讨论和协作,共同推动项目的进展。用户可以在社区中提问、回答问题、分享经验、提交代码等,但应注意保持积极、建设性的态度,避免引起不必要的争执和冲突。
- 遵守代码规范和标准:在使用社区中的代码或参与项目开发时,用户应遵守相应的代码规范和标准,如命名规范、缩进风格、注释规则等。这有助于提高代码的可读性和可维护性,促进项目的顺利进行。
- 尊重他人贡献:开源软件技术社区中的项目通常是由多个贡献者共同完成的。用户在使用他人的代码或资源时,应尊重他人的贡献,并遵守相应的使用协议和许可。
4. 选择合适的技术平台
GitLab具有开源、功能强大、易用性好等诸多优点,结合集团各单位业务实际情况,选择GitLab作为社区技术平台,用于托管代码、管理项目、沟通协作。
- 代码托管:使用GitLab进行代码的版本控制、分支管理、合并请求等操作,便于查看和回滚代码的历史版本。
- 协作开发:创建项目、分配任务、进行代码审查和合并,提高团队协作效率。
- 项目管理:任务管理、问题追踪、配置管理、监视和保护应用程序等,适用于敏捷开发和DevOps流程。
- 安全性:GitLab提供严格的访问控制和权限管理,支持HTTPS协议和SSH密钥认证,确保代码的安全传输和存储。
- 文档和知识管理:Gitlab支持Wiki功能,便于团队成员分享和学习项目相关的知识。
- 可定制化和扩展性:GitLab提供丰富的API和插件机制,支持自定义工作流程和集成其他开发工具和服务。
5. 规划开源内容
- 筛选互联网与行业业务相关的开源工具、软件。开源内容分为以下三方面:源代码、工具、基础镜像。
(1)源代码
|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | 项目 | 简介 |
| 1 | Skyeye云系列 / skyeye-oa 访问地址: https://gitee.com/doc_wei01/skyeye | 智能制造一体化,采用Springboot + winUI的低代码平台开发模式。包含30多个应用模块、50多种电子流程,CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表设计、工作流、日程、云盘等全面管理,实现智能制造行业一体化管理。 |
| 2 | Skyeye云系列 / erp-pro 访问地址: https://gitee.com/doc_wei01/erp-pro | 基于SpringBoot 2.X框架的智能制造云办公系统,立志打造ERP+生产功能的软件,专注进销存+财务功能+生产管理,适合各行业。主要完成从下单->进货->生产->出库的过程,涉及到领料,出入库,工序,采购,销售,仓库等功能,对权限进行精确划分,同时支持多系统集成方案,可与OA,CRM,知识库等多个系统进行集成使用。 |
| 3 | Sam / iotgateway 访问地址: https://gitee.com/iioter/iotgateway | 基于.NET6的跨平台物联网网关。通过可视化配置,轻松的连接到你的任何设备和系统(如PLC、扫码枪、CNC、数据库、串口设备、上位机、OPC Server、OPC UA Server、Mqtt Server等),从而与 Thingsboard、IoTSharp或您自己的物联网平台(MES、SCADA)进行双向数据通讯。提供简单的驱动开发接口;当然也可以进行边缘计算。 |
(2)工具
|----|---------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | 项目 | 简介 |
| 1 | Eclipse | 基于Java的可扩展开发平台 |
| 2 | IntelliJ IDEA | 综合的Java 编程环境 |
| 3 | Postman | API开发和测试工具 |
| 4 | JMeter | 压力测试工具 |
| 5 | Notepad | 文本编辑工具 |
(3)基础镜像
|----|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | 项目 | 简介 |
| 1 | jdk | Java开发工具包 |
| 2 | Tomcat | Web应用服务器 |
| 3 | Nginx | 高性能的 HTTP和反向代理 Web服务器 |
| 4 | Ubuntu | 以桌面应用为主的Linux操作系统 |
| 5 | Centos | 基于Linux的开源操作系统 |
| 6 | MySQL | 关系型数据库管理系统 |
| 7 | PostgreSQL | 关系型数据库管理系统 |
| 8 | MongoDB | 基于分布式文件存储的数据库 |
| 9 | npm | 软件注册表 |
| 10 | Maven | Java项目构建和管理工具 |
- 集团各单位贡献开源组件。
- 开源组件:一个或多个运行示例,是一组完整的功能,具有较强的业务属性。
- 开放形式:镜像+数据库脚本+配置文件+前端服务
- 特点:可以独立运行,需要通过私有化部署方式实现复用,可以进行二次定开。
- 责任划分:组件发布者负责组件的发布和后续升级,组件集成者负责集成,产生的数据由组件集成者负责管理。
二、管理阶段
1. 项目管理
- 使用Gitlab自身的能力跟踪和管理项目进度。
- 使用里程碑和分支管理项目的开发和送测:通过使用GitLab的里程碑功能,可以更好地跟踪项目的进度。同时,通过使用Git的分支功能,可以更好地管理项目的开发和送测。
- 使用代码审查提高代码质量:GitLab提供了代码审查功能,可以帮助团队成员对彼此的代码进行审查。这样可以提高代码质量,并减少错误。
- 使用持续集成和持续交付提高开发效率:GitLab提供了持续集成和持续交付功能,可以帮助团队自动化构建、测试和部署代码。这样可以提高开发效率,并减少人为错误。
- 使用问题跟踪和看板管理任务:GitLab提供了问题跟踪和看板功能,可以帮助团队更好地管理任务。
-
鼓励贡献者提交Pull Request,及时审核和合并代码。
-
定期发布版本更新和路线图。
-
建立完善的项目管理机制:
- 项目分类与优先级设定:对社区中的项目进行分类,并设定相应的优先级,确保重要项目得到优先处理。
- 项目管理流程:制定项目管理流程,包括项目立项、开发、测试、发布等各个环节的规范和管理。
- 代码审查与合并:建立代码审查机制,确保代码质量与安全性。制定代码合并规范,确保代码的合规性和一致性。
2. 社区沟通
- 建立多渠道沟通平台:提供论坛、邮件列表、即时通讯工具等多种沟通渠道,方便成员之间的交流与协作。
- 定期举办活动:组织线上/线下技术分享会、黑客马拉松等活动,促进成员之间的交流与合作,增强社区凝聚力。
- 鼓励积极参与:鼓励成员积极参与社区讨论、项目开发和贡献,为活跃贡献者提供奖励和认可。
3. 成员管理
- 制定明确的贡献者指南,为新成员提供清晰的入门指南,介绍社区的运作机制、参与方式等,降低参与门槛。
- 建立奖励机制,设立贡献者积分系统,对积极参与社区建设、提交优质代码和文档的成员进行奖励,如颁发证书、赠送礼品等。
- 提供学习与发展机会,为成员提供学习资源和培训机会,帮助他们提升技能水平,促进个人成长。
- 定期评估与反馈,对成员的表现进行定期评估,提供建设性反馈和建议,帮助成员改进和提升。对于不遵守社区准则的成员,进行适当的处理,如警告、禁言、移除等。
4. 合作与联盟
- 与其他开源社区建立合作关系:积极与其他开源社区建立合作关系,共享资源、互相支持,共同推动开源事业的发展。
- 与企业建立合作关系:与企业建立合作关系,获取资金、技术等方面的支持,推动社区的持续发展。
- 参与或发起开源项目:积极参与或发起开源项目,扩大社区影响力,吸引更多贡献者和用户加入。
5. 持续改进
- 收集成员反馈:定期收集成员对社区的反馈和建议,了解社区的优点和不足,为改进和优化提供依据。
- 调整管理策略:根据成员反馈和市场变化,及时调整社区的管理策略和发展方向,确保社区的持续发展。
- 学习先进经验:关注其他成功开源社区的管理经验和做法,学习并借鉴其优点,不断提升自身的管理水平。
三、使用指南
- 贡献者流程
- 使用者流程