These days I tested the first time deltachat deskop. This app is very nice but could be
more flexible and much more lightweight.
So I want to propose a new software design approach from industrial automation technology we are using for years now with great success. Maybe this could be
useful and a good template for a next (new) deltachat software.
I would think this could be build quickly on top of cmd line tool or maybe in collaboration with a python cmd line app.
We plan to remove the requirement from electron so that we can use the ui in the browser and connect to the backend over websocket.
Then after that step we plan to move away from nodejs and code the backend in rust.
Though there are two parts to the backend:
main backend: platform specific setup (tray icon, system notifications, starting browser window with the ui) - if we add a cmd line app it would probably be or communicate with the main backend process, which integrates the websocket rpc api server
Also for reference there are 2 other active desktop client projects:
dc40 (still uses electron for now to show the window, but both frontend(compiled to wasm) and backend are written in rust and communicate using a state-store that is generated by the backend and displayed by the frontend)
kdeltachat (native deltachat client written with Qt and KDE’s Kirigami framwork)
+1 for an real cmd line app
I would like to use it so I can use bash scripts to script deltachat, so for example sending out a message to a contact. (encrypted, otherwise I could just use sendmail I guess…)
Thought TUI would also be interesting, @adb experimented in that area: GitHub - adbenitez/deltachat-cursed: [WIP] Cursed Delta, a lightweight Delta Chat client
let me make one thing clear we are not rewriting core in javascript. Absolutely not. the whole point of core is that we only have to write the “business logic stuff” once for all 3 platforms. When web assembly advances (threads and access to raw TCP sockets are two things not solved yet AFAIK) we might port core to it, maybe then absurd-sql could come in handy, provided it is faster than sqlite compiled to wasm and not too hard to integrate.
It makes no sense rewriting core in js, if you want it to run completely in the browser the path that you should take is compiling it to wasm, that way the code bases could stay in sync, but you’d still have to proxy websocket to tcp that you can speak IMAP & SMTP.