syphon
Syphon 仍处于 Alpha 阶段,我们不建议
在需要经过验证的独立安全保障的场景下使用它。



为什么
Syphon 旨在建立在隐私、品牌和用户体验的基础上,
以吸引用户远离专有聊天平台,转向 Matrix 协议。
Matrix 有潜力成为一个标准化的点对点聊天协议,并且在某种程度上已经如此,它允许人们沟通并控制他们的对话数据。电子邮件很长一段时间以来一直以这种方式实现标准化。例如,使用 Outlook 的人仍然可以向使用 Gmail 的人发送电子邮件。大多数流行的专有聊天平台都不遵守联邦或去中心化的协议,因此对用户数据拥有过多的控制权。
如果 Matrix 的目标是普及,那么就需要网络效应来实现这种范式转变。Syphon 的赌注是,吸引新用户的最佳方式是通过强大的品牌和用户体验。我希望通过贡献和维护 Syphon 来帮助启动这个过程,并帮助有需要的人。
Syphon 永远是一个非营利、社区驱动的应用程序。
✨ 特点
- 无分析。永久性。
- 无专有第三方服务
- iOS 将支持 APNS,但会明确告知用户
- 所有数据在静止时均采用 AES-256 加密
- 使用 Olm/Megolm 进行直接聊天的端到端加密 (E2EE)
- 所有在线状态指示器均仅为选择加入(输入指示器、已读回执等)
- 自定义应用的主题和颜色
?目标
- [x] 桌面客户端与移动端功能对等
- [ ] 屏幕锁定和 PIN 码保护的缓存功能
- [ ] 通过在客户端本地运行服务器进行点对点消息传递
- [ ] 允许将用户数据从一个 homeserver 传输到另一个,或从本地服务器传输到远程服务器
- [ ] 使用 ncurses 和此处包含的相同 redux store 的命令行客户端(通用)
?️ 构建中
您可能会注意到 Syphon 的外观不像典型的 Dart 代码(例如,没有私有变量声明,或使用 redux 而不是 provider),这是为了降低其他语言或平台的学习曲线。能更快地吸引人们贡献,就更容易让其他人维护或监督一个不剥削用户的工具。
通用
- 您需要做几件事来为 Syphon 设置环境
ios/android
- 拉取所需依赖
flutter pub get
- 生成模型 JSON 转换
flutter pub run build_runner build --delete-conflicting-outputs
- 生成模型 JSON 转换
flutter run
macos
flutter config --enable-macos-desktopbrew install libolm以安装本地 olm 依赖- 按照说明将 brew 生成的 dylib 链接到 Syphon 项目
- 请参考 macos dylib 链接指南
flutter build macos构建 .app 包
Linux
flutter config --enable-linux-desktopapt install libolm3 libsqlite3-dev或pacman -S libolm或 libolm 的平台对应包flutter build linux && flutter build bundle- 导航到 release 目录
$SYPHON_ROOT/build/linux/release/bundle - 运行
$SYPHON_ROOT/build/linux/release/bundle/syphon确认构建正常工作
windows
- 目前不支持,如果您能支持构建,请随时联系!
?架构
存储
- 视图(flutter)
- 状态(redux)
- 缓存(redux_persist + json_serializable + sembast)
- 存储(sembast + sqflite + codec cipher)
assets
- 正在寻找品牌或设计文件?可以在 这里 的顶层 assets 文件夹中找到所有这些文件。
集成
- 通知
- 在 Android 上利用 android_alarm_manager 在后台线程运行 matrix /sync 请求,并使用 flutter_local_notifications 显示通知
- 除了 iOS 的 APNS 外,绝不会使用任何第三方通知提供商
- Equatable
- 此库允许在 Flutter 中比较对象,以判断它们是否已更改。
- JsonSerializable
- 不幸的是,JSON 目前并未直接集成到 Dart/Flutter 中用于您自己的对象。目前需要代码生成,并将 Syphon 的自定义对象转换为其对应的 JSON 字段的“Map”。
- Freezed (未来)
- 由于 Syphon 中的每个对象都是不可变的,Freezed 将有助于创建执行与当前所有“copyWith”辅助函数相同功能的这些对象,并改进允许“null”值覆盖非空值。
- Fastline Directory
- fastline 不用作工具,而是为 FDroid 提供元数据模式