总结反思 持续进步-开源即时通讯(IM)项目OpenIM 新版本release-v3.7发布

背景
过去,我们团队对开源项目的认知较浅,过分追求进度,而忽视了代码的质量和规范。这导致了一些问题,例如部署流程设计不当:流程复杂、不规范,以及Mac与Windows部署的明显缺陷。这些问题不仅给开发者带来了困扰,也增加了社区维护的难度。

针对这些挑战,我们团队进行了深刻的反思并总结出了相关问题。目前,我们正在专注于提高代码质量和规范化工作,并在完善我们的开源贡献流程,以吸引更多贡献者参与。我们相信这是关键步骤,以扩大社区的影响力并将OpenIM发展成为一流的开源项目。

为此,我们已规划推出release-v3.7版本,该版本将全面改造部署、规范和流程等方面,并且与3.6版本数据完全兼容。

OpenIM是什么
OpenIM区别于诸如Telegram、Signal、Rocket.Chat等独立聊天应用。这些应用提供完整的用户界面和后端服务,允许用户直接下载并使用。相反,OpenIM是一个为开发者设计的开源即时通讯解决方案,它不提供直接安装使用的单独聊天应用程序。

OpenIM主要由OpenIM SDK和OpenIM Server两部分组成,它们为开发者提供了一套工具和服务,使得开发者能够在自己的应用程序中轻松集成即时通讯功能,包括发送和接收消息、用户管理、群组管理等。

总的来说,OpenIM专为开发者而设计,提供了必要的工具和框架,帮助他们在各自的应用中实施高效的即时通讯解决方案,而不是作为一个面向普通用户的独立聊天应用。

在这里插入图片描述

release-v3.7特性列表
序号 更新内容 描述
1 引入Mage构建 废弃Shell脚本,采用Mage构建系统,支持Linux、Windows、Mac系统,以及ARM和AMD CPU架构。
2 配置文件拆分 将全局配置文件分拆成模块化配置,实现模块间隔离,减少系统耦合。
3 RPC入口函数统一 对RPC入口函数进行统一处理,规范化日志记录,并确保版本号清晰展示。
4 通知和Webhook异步处理 通过内部异步队列处理通知和Webhook,与主流程解耦。
5 Docker部署方案升级 全面升级Docker部署方案,按照镜像独立原则,消除对外部网络配置的依赖,支持多平台部署。
6 代码规范严格执行 强调错误处理、日志记录的标准化,并严格遵守Go语言编程规范。
7 通用代码抽离 将各项目的通用模块抽离到tools仓库,配置参数独立,方便各项目复用。
8 protoc替换到官方工具 将IM的pb生成工具由自定义版本修改为官方版本,并用脚本修改omitempty造成的API resp字段丢失问题。
关于我们
得益于广泛的开发者支持,OpenIM在开源即时通讯(IM)领域保持领先地位,目前在GitHub上的星标已超过13k。在如今数据和隐私安全日益受到重视的背景下,私有部署的IM需求正在逐步增加,这一趋势与国内软件产业的兴起密切相关。特别是在政府和企业领域,随着信息技术的快速发展和创新产业的广泛应用,对IM的需求正急速增长。此外,随着协同办公软件市场的持续扩展,“安全可控”已成为最关键的要求之一。在后AIGC时代,IM作为人机交互的首要接口,其价值势必会越来越大。我们期待OpenIM在后AIGC时代能发挥更大的作用,使每一个应用都能集成OpenIM,提升整体效率和安全性。

github: https://github.com/openimsdk

developer: https://docs.openim.io/zh-Hans/

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/3769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十七章 数据管理和组织变革管理

17.2 变革法则 1)组织不变革,人就变。 2)人们不会抗拒变革,但抵制被改变。 3)事情之所以存在是惯性所致。 4)除非有人推动变革,否则很可能止步不前。 5)如果不考虑人的因素&#xf…

git撤销更改的门道

1.​git checkout -- 文件 撤销对工作区某文件的修改。 git checkout . 撤销本地所有修改的、没有提交的文件的修改,都返回到原来的状态。 2.​git reset --hard [commit] 将工作区和暂存区的内容强制修改为commit时本地代码库的状态。 3.git reset --mixed [c…

centos上网卡突然找不到了

问题 今天登录centos突然发现ssh连接不上,在虚拟机中输入ifconfig才发现没有找到对应的网卡ens33了 解决 只需要输入两行命令就可以解决 禁用NetworkManager systemctl stop NetworkManagersystemctl disable NetworkManager 然后重启网络systemctl start netwo…

Android Studio初学者实例:RecyclerView学习--模仿今日头条

本案例来自于学校的一个简单的课程实验 先看效果图&#xff0c;可以显然的看到&#xff0c;一些item是不同的布局&#xff0c;而其他布局就是简单的布局嵌套 看一下xml代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout …

抽象的代理模式1.0版本

前言&#xff1a; 在阅读Spring Security官方文档时&#xff0c;里面设计到了一种设计模式——代理模式Proxy 众里寻她千百度&#xff0c;蓦然回首&#xff0c;那人却在灯火阑珊处 开始 在之前的文章里陈述了一个观点——编程语言和语言没有区别 现看看我们日常生活中的代理…

力扣爆刷第128天之动态规划五连刷(一个零、零钱兑换、组合)

力扣爆刷第128天之动态规划五连刷&#xff08;一个零、零钱兑换、组合&#xff09; 文章目录 力扣爆刷第128天之动态规划五连刷&#xff08;一个零、零钱兑换、组合&#xff09;终结背包问题&#xff1a;这篇文章和上一篇。动态规划解题步骤&#xff1a;背包问题总结一、474. 一…

垃圾分类子项目三 - 添加oled显示

本文继承自: 垃圾分类子项目2 - 加入舵机控制-CSDN博客 添加 oled 功能: 我们要使用oled&#xff0c;就需要添加 i2c 功能 需要在这个文件中 /boot/orangepiEnv.txt 添加这行&#xff0c;使用 i2c 协议overlaysuart5 i2c3 myoled.c #include <errno.h> #include…

第十五届蓝桥杯C/C++B组题解

第十五届蓝桥杯大赛软件类省赛C/C大学B组 赛题链接A握手问题B小球反弹C好数DR格式E宝石组合F数字接龙G爬山H拔河

[笔试训练](七)

目录 019&#xff1a;字符串中找出连续最长的数字串 020&#xff1a;岛屿数量 021&#xff1a;拼三角 019&#xff1a;字符串中找出连续最长的数字串 字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 边遍历边记下遇到的…

ionic 中对Input输入框、searchbar进行solr检索

一、概述 Ionic 是一个用于开发跨平台应用程序的开源工具&#xff0c;可以使用 Angular、React 或 Vue 等前端框架。要在 Ionic 应用程序中实现实时与 Solr 通信&#xff0c;可以使用 HTTP 客户端&#xff08;如 Angular 的 HttpClient 或 Ionic 的 Native HTTP&#xff09;…

鸿蒙入门11-DataPanel组件

数据面板组件 用于将多个数据的占比情况使用 占比图 进行展示 参数 参数形式 &#xff1a; DataPanel( options:{ values: number[], max?: number, type?: DataPanelType } ) 参数名 参数类型 是否必填 默认值 参数描述 values number[] 是 - 数据值列表 最大支持…

Feign功能详解、使用步骤、代码案例

简介&#xff1a;Feign是Netflix开发的声明式&#xff0c;模板化的HTTP客户端&#xff0c;简化了HTTP的远程服务的开发。Feign是在RestTemplate和Ribbon的基础上进一步封装&#xff0c;使用RestTemplate实现Http调用&#xff0c;使用Ribbon实现负载均衡。我们可以看成 Feign R…

IDEA快速入门

目录 1. 概述 2. 安装 3. 激活 4. 关闭自动更新 5. 创建Java项目 5.1 配置JRE 5.2 创建项目 6. 配置设置 6.1 主题 6.2 设置字体默认大小 6.3 鼠标滚轮改变字体大小 6.4 设置自动导入 6.5 项目选择 7. lombok插件 7.1 安装插件 7.2 启用注解 8. 安装包及插件…

linux-进程(2)

1.通过系统调用获取进程标示符 进程id&#xff08;PID&#xff09; 父进程id&#xff08;PPID&#xff09; 每一个可执行程序运行起来之后都会成为一个进程&#xff0c;每个进程都有一个自己的id&#xff0c;以及一个父进程id&#xff0c;父进程就是创建自己进程的进程&#xf…

一条龙-T检验+绘制boxplot

1.输入文件&#xff1a; 2.代码 #title:boxplot-5utr-cds-3tr-ATCG的百分比分布和T检验_封装函数版 rm(listls(allTRUE)) setwd("E:/R/Rscripts/5UTR_ABD_TE") library(tidyverse) library(ggplot2) # library(RColorBrewer) library(patchwork) library(dplyr) l…

windows文件夹共享设置

目录 操作如何在同个局域网下的两个主机间分享文件?(尤其是在虚拟机与物理机中) 待续、更新中 操作 如何在同个局域网下的两个主机间分享文件?(尤其是在虚拟机与物理机中) 主机A(被访问) 两个主机在一个局域网中/被访问主机位本地账户 —— 桌面新建文件夹 —— 右键设置共享…

【k8s】(七) kubernetes1.29.4离线部署之-部署网络插件

&#xff08;一&#xff09;kubernetes1.29.4离线部署之-安装文件准备 &#xff08;二&#xff09;kubernetes1.29.4离线部署之-镜像文件准备 &#xff08;三&#xff09;kubernetes1.29.4离线部署之-环境初始化 &#xff08;四&#xff09;kubernetes1.29.4离线部署之-组件安装…

Python-100-Days: Day01

Day01 Python简介 1.1989年Guido von Rossum在圣诞节之夜开始着手python语言编译器的编写。 2.1991年2月 Python v1 编译器诞生&#xff0c;使用C实现的&#xff0c;此时可以调用C的库函数。 3.1994年1月&#xff0c;Python v1.0 正式版发布。 4.2000年10月16日&#xff0…

【Docker】Docker 中不能使用 nvidia-smi

目录 1. 问题 2. 解决方法 1. 问题 在 docker 中执行 nvidia-smi 后报错&#xff1a; Failed to initialize NVML: Unknown Error这个错误表示不能成功初始化NVML(Nvidia Management Library)库来管理和监测Nvidia GPU。可能的原因和解决方法如下: 检查是否正确安装并加载了…

mediasoupWork中引入本地so库

文章目录 1. gyp官方一般修改2. 尝试修改1本篇是一个bug的记录,原自一次需求对mediasoup worker层的修改需要引入一个自己的库,但是只有so库,找不到源码无法使用静态库的方式通过修改.gyp连接到worker中; 对于.gyp中so库的引入网上很难找到对应的文档,所以按照ld连接库的方…