swarms/ideas/318-desktop.md

193 lines
9.0 KiB
Markdown

---
id: 318-desktop
title: Desktop
status: research
lead-contributor: Volodymyr
contributors:
- Max
- Volodymyr
budget:
- actual: xxx
- estimate: yyy
- currency: ETH/USD/SNT
---
# Desktop Swarm proposal
## Summary and Goal(s)
Messenger apps expected to be present on all widely used platforms - ios, android, mac, windows, linux.
Status desktop app currently extensively used by Status company for communications.
It is implemented with the help of [react-native-desktop](https://github.com/status-im/react-native-desktop) project that is a Qt-based port of `react-native` to desktop platforms: mac, windows, linux.
So Desktop swarm has two goals in mind:
1. Providing well-polished communication tool for Status company itself and the community
2. Feature parity with mobile application
For initial scope focus is on the first goal.
Additional tasks for the swarm is maintaining `react-native-desktop` project to fit Status desktop needs and publishing Status desktop releases.
## Communication
`status channel (same as swarm id)`: [#318-desktop](https://get.status.im/chat/public/318-desktop)
`sync frequency`: Weekly Sync
`meeting notes`: https://notes.status.im/IVQ6ZK6iRw6LfF-4y4WJmw
## Research
`Timebox: 21/12`
`Research questions:`
* **what features we already planned or were talking about? How they priority changes now?**
* ~~[Allow standard keyboard shortcuts](https://github.com/status-im/status-react/issues/6272)~~
* ~~Publishing at platform's official marketplaces~~
* ~~[Fix memory leaks](https://github.com/status-im/status-react/issues/5271)~~
* ~~Improve CPU usage~~
* ~~windows uwp support~~
* ~~markdown support in chat~~
* ~~text selection among multiple messages~~
* ~~[show connection stats inside the app](https://github.com/status-im/status-react/issues/6568)~~
* ~~[add log level settings](https://github.com/status-im/status-react/issues/5848)~~
* ~~[use peer counts to detect online\offline state](https://github.com/status-im/status-react/issues/6961)~~
* ~~[No new messages after going back from sleep](https://github.com/status-im/status-react/issues/6396)~~
* ~~[Security and privacy review](Desktop security and privacy review)~~
* ~~[Context menu in input fields](https://github.com/status-im/status-react/issues/6571)~~
* ~~[Add design for menus](https://github.com/status-im/status-react/issues/4434)~~
* ~~[Fix scroll stuttering](https://github.com/status-im/status-react/issues/6570)~~
* ~~[Add dev mode and network switching](https://github.com/status-im/status-react/issues/6477)~~
* ~~[UI fixes for bubble-less chat area](https://github.com/status-im/status-react/issues/6506)~~
* ~~[Fix group chats creation](https://github.com/status-im/status-react/issues/6607)~~
* ~~[Confirmation dialog on logout](https://github.com/status-im/status-react/issues/4977)~~
* ~~[Custom url support on linux](https://github.com/status-im/status-react/issues/6394)~~
* ~~[Add custom mailserver](https://github.com/status-im/status-react/issues/6110)~~
* ~~[Edit profile picture](https://github.com/status-im/status-react/issues/5456)~~
* ~~[Remove code duplication in Jenkinsfiles](https://github.com/status-im/status-react/issues/5424)~~
* ~~[Persist scroll position after navigation through the app](https://github.com/status-im/status-react/issues/5852)~~
* ~~[Add jenkins job for e2e tests](https://github.com/status-im/status-react/issues/5859)~~
* ~~[Apply onboarding designs](https://github.com/status-im/status-react/issues/4418)~~
* **what existing desktop issues affect its usability most (in functionality or UI)**?
* ~~**how many users outside of Status we have? (optional)**~~
* **how can we get user feedback about desktop**
* [make a poll within Status](https://goo.gl/forms/AAzNNfCTGjL8hcEl1)
* **what features mostly anticipated by users?**
* mentions
* image/links previews
* pinned channels
* mark all messages in a channel as unread
* channel (chat where only creator can write and others can read). That would be great for announcing things company-wide
* persisting chat list and settings between full reinstalls
* **what ui/ux input needed**
* **what should be done in `react-native-desktop` to support status desktop tasks**
* ~~[Get rid of ubuntu-server and embed js engine in react-native-desktop](https://github.com/status-im/status-react/issues/6175)~~
* ~~[File open dialog](https://github.com/status-im/react-native-desktop/issues/377)~~
* ~~[Fix remote js debugging](https://github.com/status-im/react-native-desktop/issues/392)~~
* ~~Improve UI responsiveness (needs clarification on existing issues)~~
* **what should be done in `react-native-desktop` to make its maintenance easier**
* ~~port to react-native 0.57. That will give us a possibility to make it an [out-of-tree](https://facebook.github.io/react-native/docs/out-of-tree-platforms) platform and facilitate future upgrades.~~
* PR with updated version [already in react-native-desktop](https://github.com/status-im/react-native-desktop/pull/422)
* [PR for testing it with status-react](https://github.com/status-im/status-react/pull/6983)
* PR for mobile [in progress](https://github.com/status-im/status-react/pull/6951)
* ~~More documentation/tutorials for external contributors~~
* **what tasks can be done without involving Clojure/Go resources**
`Research output structure:`
When questions above answered we can create:
- prioritized list of most important tasks to do for boosting communication experience
- user stories
- bounties
`Research output:`
**Prioritized list of tasks:**
* **TODO**
* High
* [Fix memory leaks](https://github.com/status-im/status-react/issues/5271)
* [Security and privacy review](Desktop security and privacy review)
* [Add design for menus](https://github.com/status-im/status-react/issues/4434)
* [Fix scroll stuttering](https://github.com/status-im/status-react/issues/6570)
* [UI fixes for bubble-less chat area](https://github.com/status-im/status-react/issues/6506)
* [Fix group chats creation](https://github.com/status-im/status-react/issues/6607)
* [Confirmation dialog on logout](https://github.com/status-im/status-react/issues/4977)
* [Custom url support on linux](https://github.com/status-im/status-react/issues/6394)
* [Edit profile picture](https://github.com/status-im/status-react/issues/5456)
* [Persist scroll position after navigation through the app](https://github.com/status-im/status-react/issues/5852)
* [Get rid of ubuntu-server and embed js engine in react-native-desktop](https://github.com/status-im/status-react/issues/6175)
* [Add jenkins job for e2e tests](https://github.com/status-im/status-react/issues/5859)
* [Apply onboarding designs](https://github.com/status-im/status-react/issues/4418)
* [File open dialog](https://github.com/status-im/react-native-desktop/issues/377)
* [Fix remote js debugging](https://github.com/status-im/react-native-desktop/issues/392)
* Improve UI responsiveness (needs clarification on existing issues)
* [port to react-native 0.57](https://github.com/status-im/react-native-desktop/pull/422)
* Image/links preview
* Pinned channels
* mark all messages in a channel as unread
* Medium
* [Allow standard keyboard shortcuts](https://github.com/status-im/status-react/issues/6272)
* markdown support in chat
* text selection among multiple messages
* [show connection stats inside the app](https://github.com/status-im/status-react/issues/6568)
* [add log level settings](https://github.com/status-im/status-react/issues/5848)
* [Context menu in input fields](https://github.com/status-im/status-react/issues/6571)
* [Add dev mode and network switching](https://github.com/status-im/status-react/issues/6477)
* [Add custom mailserver](https://github.com/status-im/status-react/issues/6110)
* [Remove code duplication in Jenkinsfiles](https://github.com/status-im/status-react/issues/5424)
* More documentation/tutorials for external contributors
* Low
* [Improve CPU usage on resize](https://github.com/status-im/status-react/issues/5151)
* **Needs input from other teams (most probably)**
* Mentions
* channels (public chat where only creator can write and others can read). That would be great for announcing things company-wide
* persisting chat list and settings between full reinstalls
* **Postponed**
* windows uwp support
* Publishing at platform's official marketplaces
**User stories:**
**Bounties:**
## Specification
> do after `Research`
(required)
`timebox specification (approx)`
(optional)
`user stories`, `architecture`, `designs`, `PoC`
## Implementation
(required)
`timebox implementation (approx)`
> do after `Specification`
> All swarm contributors should test and break the implementation, especially developers
(required)
`document progress`
(optional)
`townhall demo`
## Maintenance
`lead-contributor`,`post-mortems`
## Copyright
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).