A lightweight version of Signal Desktop app
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Nikita Karamov 988bf3633e
Initialize an Electron project
1 month ago
.gitignore Initial commit 1 month ago
.prettierignore Initialize an Electron project 1 month ago
.prettierrc Initialize an Electron project 1 month ago
COPYING Initial commit 1 month ago
LICENSE Initial commit 1 month ago
README.md Initialize an Electron project 1 month ago
index.html Initialize an Electron project 1 month ago
main.js Initialize an Electron project 1 month ago
package.json Initialize an Electron project 1 month ago
pnpm-lock.yaml Initialize an Electron project 1 month ago
preload.js Initialize an Electron project 1 month ago
renderer.js Initialize an Electron project 1 month ago
styles.css Initialize an Electron project 1 month ago

README.md

DietSignal

The lightweight alternative to the official Signal desktop client. WIP

Reason

  • Signal-Desktop is clunky
    • it takes 258 MB for the app data alone
  • Signal-Desktop has too much code
    • 30 MB, ~750K SLoC
    • code is thus very hard to manage and to read
  • Signal-Desktop has too many dependencies
    • 445 packages in production build
    • installing with PNPM takes almost a full minute
    • many dependencies have vulnerabilities and aren't patched as fast as one would desire
  • Signal-Desktop has a bad UI
    • the elements are too big
    • usage on small screens thus problematic

That excludes the large amount of bugs; the GitHub repo has 400+ issues, some weren't fixed since 2015. These problems make it hard to enjoy using Signal-Desktop.

Solution

  • carefully choose dependencies for production, keeping the deptree small
  • use the latest Node.js features instead of some packages
  • constantly check dependencies for vulnerabilities using Snyk
  • replace React with Svelte as a way more minimalistic alternative

The app is still Electron-based. I personally don't think that Electron is a bad thing: it's easy to code and maintain, and it's cross-platform. When one carefully chooses the dependencies and writes performant code, Electron apps can be quick and a pleasure to use (VS Code being a good example).

Development

Prerequisites: Node.js v16 (LTS), PNPM v6

  1. Clone the repository

  2. Install the dependencies:

    pnpm install
    
  3. You can runn the app with:

    pnpm run start
    

Note: If you're using Linux Bash for Windows, see this guide or use node from the command prompt.

License

Copyright (C) 2021 Nikita Karamov

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.