Status recently announced the re-introduction of the Status Desktop client (v0.1.0-beta.2) on Mac, Windows and Linux. The current release includes support for messenger features and limited wallet availability, with the Web3 ÐApp browser still in active development.
In this article, we first motivate the need for Status Desktop in this Post-PC era and articulate our aspirational goals that it aligns with. We then describe its software stack while highlighting the rationale behind the choices. Finally, we conclude by showcasing some of its features and roadmap plans.
For some historical context, we had paused our Desktop efforts for over a year to accelerate our rollout of Status mobile apps (on Android and iOS) which are now in great shape and getting closer to achieving feature-parity with other popular messengers.
And for those who aren’t familiar, Status mobile app combines a privacy-centric messenger, Ethereum wallet and a Web3 browser. The latest version of messenger supports 1:1, group and public chats with features such as notifications, stickers, emojis, images, audio messages, ENS names, mentions, invite links and Keycard integration.
Status Desktop has launched by first supporting the privacy-centric messenger. We believe this is one of the first privacy-centric desktop messengers built using decentralised peer-to-peer (P2P) technology.
So let’s start by analyzing the broader motivations behind Status Desktop and how it aligns with the overall goals and principles of Status.
Most messaging happens on mobile devices today. Enterprise messaging platforms such as Slack and Microsoft Teams are a growing trend in workplaces. People expect messaging apps to be available across mobile and desktop devices.
The motivations powering our push for Desktop are broadly discussed under the below four categories:
Status is committed to a mission of enabling private communications for everyone and everywhere.
For now, this means empowering people to use Status Messenger both on mobile and desktop devices. While the use of ultra-mobile devices in the form of smartphones and tablets continues to exponentially grow over the last decade, reports of complete and imminent demise of PC-era systems have been greatly exaggerated.
There are segments of consumers and enterprises that continue to use devices with traditional operating systems such as Windows, Mac and Linux variants. This is especially true for developers who require the increased processing power and screen sizes packed into such devices or other users who rely on software hitherto developed only for such systems.
So until Moore’s Law catches up with the ever-increasing demand for compute from such power users or until operating system and other software vendors merge their technology stacks across mobile and PC, we will continue to see usage of PC-era systems. And Status Messenger should be supported on them.
Other messengers support Desktop too. But Telegram Desktop app requires an associated phone number for account creation while Signal Desktop requires installation and linking of its mobile app. Status Desktop however can be used with or without the Status mobile app, and does not require any personally identifiable information just like the app.
Early adopters are critical to any product’s success. They are motivated by the product’s promises or team’s vision, are open to experimenting with early prototypes, are more forgiving of any initial limitations or bugs, and help evangelize the product in their networks. We believe that the early adopters of Status are crypto communities and privacy enthusiasts, who have always provided the type of feedback and guidance required to steer our products in the right direction.
The crypto community is accustomed to working with desktop applications such as wallets (e.g. Metamask, MyEtherWallet) and chat platforms (e.g. Discord, Gitter, Slack). Buidlers are architecting the future of decentralized Web3 using developer-focussed applications (e.g. Solidity, Embark, Etherscan) on their crypto swag-sticker covered laptops. We believe that the bundling of crypto wallet, messenger and Web3 ÐApp browser within the Status Desktop will reduce friction for these user groups via a single unified interface and enable new crossover usages such as crypto payments in chat messages and token-backed gasless voting.
Privacy enthusiasts/maximalists who are deeply suspicious of the rent-seeking walled gardens of Apple and Google may appreciate Status Desktop for increased privacy and pseudonymity on their PCs whose hardware/software have diverse vendor choices and are significantly more open and customizable than smartphones or tablets.
We therefore believe that Status Desktop increases mindshare among both these early adopter communities.
Mobile devices are resource-constrained (w.r.t. CPU, memory, disk space) compared to desktop systems. They have a smaller form-factor which limits their processing power and their power profiles. Comparatively, PCs (laptops/desktops) have more resources, are typically connected to a power source and have better connectivity.
Given this limitation, Status Messenger mobile app is forced to run as what is known as a Light Node, where the app only handles messages meant for itself without relaying/storing messages meant for others. This is because, doing so would consume more compute, power and network bandwidth, all of which are a premium on mobile devices. Due to this constraint and the lack of any economic incentives for doing otherwise, Status Messenger mobile apps today rely entirely on fleets of Relay and History nodes that are maintained by Status on the cloud. While technically, any user can run a Status Relay/History node in the cloud today, there are currently no incentives for doing so.
This does not achieve political decentralization. But Status Desktop could help improve this situation. Status Desktop could support running such a Relay/History node because it has the resources for that functionality. (Note that Status Desktop currently runs only as a Light Node.)
Therefore, one can be using the Status Messenger mobile app (as a Light Node) and also run Status Desktop in a Relay/History mode to decrease dependency on externally maintained infrastructure. This not only increases the privacy for such a user (for e.g., Status mobile app connecting to a self-hosted History node in Status Desktop to retrieve older messages) but also enhances the security of the network due to better decentralization. The introduction of economic incentives will further strengthen this model and make it more practical.
The duopoly of Google’s Android and Apple’s iOS dominating the mobile platform imposes serious risks and challenges from rent-seeking intermediaries. While these platforms give immediate access to billions of users around the world, their “Don’t be Evil” stance is perceived as being subjectively interpreted and selectively enforced in ways that suit their changing narratives and market conditions.
Incidents of apps being rejected or dropped from their stores are numerous. The described violations of store policies are perceived to be very broad, somewhat ambiguous or justified with claims of user security, ecosystem fairness or government requests. Recent notable examples include bans of Fortnite, Tiktok, Telegram, Paytm and several others.
This is especially true for crypto-related apps where developer policies of both Apple and Google explicitly include specific references to cryptocurrencies. In July 2018, Google and Apple banned crypto-mining apps (while mistakenly banning Metamask under the same policy). But more significantly, Apple store policy has recently forced Coinbase and Trust Wallet to remove ÐApp browser functionality from their apps.
Status is cognizant of this platform risk and is actively discussing alternative options. Status Desktop is one of those strategies because PC platforms continue to be more diverse, inclusive and open in contrast to the two mobile platforms whose monopolistic business models cast an iron-grip on their app ecosystems. So, even if a mobile app is forced to exclude certain functionality to adhere to an app store policy, one can offer the full-featured application on desktop platforms today.
Conclusion: Status is committed to private, permissionless and censorship-resistant communication irrespective of the size/shape of the device or location/context of the user. We foresee a future where seamless transitions of conversations are enabled in a privacy-preserving and device-agnostic manner. Status Desktop helps further this mission.
The Status Desktop client is built using Nim and Qt, whereas the Status Mobile app uses Golang, ClojureScript and React Native. (The choice of these languages is discussed extensively in this thread.)
The backend, for now, continues to be status-go which is based on go-ethereum codebase to use the bundled Whisper components among other things. But with the announced removal of Whisper from go-ethereum codebase and Status transitioning from Whisper to Waku (for reasons elaborated here), status-go will eventually be replaced with Nimbus over time.
Furthermore, the strategic alignment of Status teams and products, i.e. Mobile, Desktop and Nimbus, will be accelerated by the unification of underlying technologies including the Nim language and Waku protocol. This is the reason Status Desktop is built with Nim and uses Waku underneath by default.
The choice of using Nim language across Status is an interesting one, which is well captured in the below excerpt from our announcement of partnering with the Nim team. Status continues to actively contribute to Nim infrastructure. Besides Desktop, Nim is being used at Status to also develop a libp2p implementation, Waku protocol and an Ethereum 2.0 client.
Status Desktop uses Qt/QML as the front-end technology.
Qt (pronounced "cute") is: “a free and open-source widget toolkit for creating graphical user interfaces as well as cross-platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems with little or no change in the underlying codebase while still being a native application with native capabilities and speed.”
Status Desktop has adopted Qt/QML for the above reasons. The openness, ease-of-use, extensibility and extensive community of this technology is very appealing and aligns well with Status principles.
The current focus of Status Desktop is on messenger capabilities where it has near feature-parity with the Status Messenger app across Mac, Windows and Linux platforms. This section highlights key aspects of some of the important features.
Chats: This includes support for 1:1, group/private chats and public chats (as shown below) with features such as stickers, emojis, images, mentions, notifications and ENS names.
Notifications: When messages are received, notifications are generated by the application without relying on external services. This is similar to the privacy-preserving local notifications in our Android messenger app (as explained here).
As shown in the below screenshot, notification preferences may be configured for all/no messages or only for mentions. Other options include accompanying sounds and message previews (anonymous, name only, name & message). And by default, notifications will only be enabled for contacts.
Note that these configurations are a work-in-progress and the only supported option currently is to mute notifications for individual chat channels. Otherwise, notifications are shown for all channels (1:1, group, public) except the one currently selected.
Syncing: Pairing and syncing multiple devices (current limit is three devices) belonging to a user has always been supported on the Status Messenger app. Syncing becomes more critical with Desktop because it’s very likely that a Desktop user will also use the Status mobile app and therefore expect syncing to work flawlessly. The below screenshot shows a Desktop device successfully paired with a Mobile device.
Multi-device support in our context of decentralised P2P protocols is technically a challenging task. There are no centralized servers to store messages and facilitate syncing across devices on-demand. The onus is on the underlying protocol and the message senders who have to send their messages to all the devices recognized as belonging to the recipient. This is done on a best-effort basis because there are edge cases where syncing might not happen as the user expects in a typical client-server architecture.
Mutual pairing needs to be triggered on all devices (for explicit authorization) after advertising them first. New contacts and new messages (across 1:1, group and public chats) should appear across paired devices thereafter. Messages sent by the user will be sent to all the paired devices. However, messages meant for the user (with paired devices) might not be received immediately on all the user’s paired devices if the sender (temporarily) had stale information about the user’s paired devices. This is to be anticipated in a P2P network where there is no single source of continuously updated information about the entire network.
To sync contacts and subscribed public chats from before pairing/syncing, one should click “Sync all devices” on the device where one has the most updated data, after which, that will appear on the other devices. However, chat history from before pairing and messages deleted on one device (after pairing) are not synced across devices, by design, for security reasons.
Furthermore, paired devices that remain offline for significant periods (currently 30 days or more) might go out of sync because History nodes store messages only for 30 days (as currently configured).
Appearance: Desktop supports the popular “Dark mode” and also introduces a “Compact mode” which removes the familiar chat bubbles in favor of extending the text across the screen. Compact mode takes advantage of the increased screen space on Desktop to fit in more text per line and more chat messages per screen. These differences are highlighted in the screenshot below which compares the Light+Non-Compact modes (left) with the Dark+Compact modes (right) for the same chat context.
The top priorities in the planned roadmap are to expose Wallet features by default and integrate ÐApp browser functionality while continuing to improve the chat experience in sync with the mobile app.
Wallet functionality is present in the Desktop today but disabled in the user-interface by default (can be enabled under Advanced option) because Status Desktop has not undergone a formal security audit yet. And until then, we do not want to put any user funds at risk.
Significant development effort is currently focussed on architecting and integrating a secure and seamless ÐApp browser experience within the Desktop. The team is evaluating multiple technologies to provide the best browsing experience without compromising security. The ÐApp browser on Desktop becomes strategically important, as described earlier, in the context of other projects being compelled to remove ÐApp browser functionality from their iOS apps to comply with Apple’s developer policy.
Furthermore, Ethereum is inherently a community-based collaborative technology and the messenger enables people to communicate between ÐApps and peers. Imagine being able to purchase NFTs, check your DeFi position, participate in a governance vote or even take a position in a prediction market within a group chat with friends or public chat with other members of a DAO. Integrating ÐApp functionality with the wallet and messenger is therefore critical for a cohesive Ethereum experience.
Status Desktop has launched on Mac, Windows and Linux platforms with a core emphasis now on our privacy-centric messenger. Wallet and ÐApp browser will follow next.
Desktop advances our goals of ubiquitous privacy, encouraging early-adopters, better decentralization and permissionless distribution. Built using Nim and Waku technologies, it brings us closer to strategic technological alignment in the context of Status Network.
The chat features are (mostly) on par with the mobile app, while being optimized for the desktop environment. Pairing and syncing with the mobile app should work seamlessly.
So we encourage the Status community to go ahead and install Desktop to test it out on Mac, Windows or Linux. However, please note that this is beta software and so we continue to release feature updates and bug fixes frequently based on internal testing and of course, your much appreciated feedback/suggestions.
(Thanks to Michael Bradley Jr., Iuri Matias, Corey Petty, Andrea Piana, Jonathan Rainville and Jonathan Zerah for reviewing drafts of this article and providing helpful feedback. Thanks to Alex Howell for the thoughtful illustrations.)