syphon

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

01-android-tiny

03-android-tiny

05-android-tiny

为什么

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 设置环境
    • 安装 flutter(适用于 iOS/Android 的稳定版)
    • 安装 android studio
    • 为工作站平台安装 cmake 版本(用于 olm/megolm)
    • 安装 cmake 所需的库
      • macos -> brew install ninja
      • linux -> sudo apt install ninja-build
    • 克隆仓库并初始化子模块
      • git submodule update --init --recursive
    • 运行以下预编译命令
      • flutter pub get
      • flutter pub run build_runner build

ios/android

  1. 拉取所需依赖
    • flutter pub get
  2. 生成模型 JSON 转换
    • flutter pub run build_runner build --delete-conflicting-outputs
  3. 生成模型 JSON 转换
    • flutter run

macos

  1. flutter config --enable-macos-desktop
  2. brew install libolm 以安装本地 olm 依赖
  3. 按照说明将 brew 生成的 dylib 链接到 Syphon 项目
  1. flutter build macos 构建 .app 包

Linux

  1. flutter config --enable-linux-desktop
  2. apt install libolm3 libsqlite3-devpacman -S libolm 或 libolm 的平台对应包
  3. flutter build linux && flutter build bundle
  4. 导航到 release 目录 $SYPHON_ROOT/build/linux/release/bundle
  5. 运行 $SYPHON_ROOT/build/linux/release/bundle/syphon 确认构建正常工作

windows

  • 目前不支持,如果您能支持构建,请随时联系!

?架构

存储

  • 视图(flutter)
  • 状态(redux)
  • 缓存(redux_persist + json_serializable + sembast
  • 存储(sembast + sqflite + codec cipher

assets

  • 正在寻找品牌或设计文件?可以在 这里 的顶层 assets 文件夹中找到所有这些文件。

集成

  • 通知
  • Equatable
    • 此库允许在 Flutter 中比较对象,以判断它们是否已更改。
  • JsonSerializable
    • 不幸的是,JSON 目前并未直接集成到 Dart/Flutter 中用于您自己的对象。目前需要代码生成,并将 Syphon 的自定义对象转换为其对应的 JSON 字段的“Map”。
  • Freezed (未来)
    • 由于 Syphon 中的每个对象都是不可变的,Freezed 将有助于创建执行与当前所有“copyWith”辅助函数相同功能的这些对象,并改进允许“null”值覆盖非空值。
  • Fastline Directory
    • fastline 不用作工具,而是为 FDroid 提供元数据模式

GitHub

https://github.com/syphon-org/syphon