We have some updates about what our team has been up to and our direction going forward. Strap in. This is going to be dense.
TL;DR
We are taking all of the lessons and best practices we learned from building Core and Iridium and are focusing all our resources on Uplink and Warp, our native app and data/communication service built in Rust.
Why? Because we have made tremendous progress on Warp and Uplink, which build to very fast native Desktop versions right now and will be able to build to native mobile solutions in the coming months. Desktop and mobile count for a huge percentage of usage on our competitors and we expect the same for Satellite, and we think Uplink and Warp using Rust will give us the performance our users will expect.
Background
We are trying to build something different than our competitors. We are building a decentralized chat/community app that doesn’t compromise user experience, features, security, or data ownership.
It’s not good enough to simply be ‘the first web3 chat app’. We choose web3 tech to solve problems, not merely to find a reason to use web3. We want to be “the full-featured decentralized chat app that can’t sell your data, has a great user experience, and can be customized with the features you want.” We aren’t a blockchain or crypto company, but we want to make it easy to integrate the various chains and technologies to extend our platform and add features that users want.
The problem is, to get there, we have to find the right way forward. We can’t rely on the tried and true path centralized companies have taken to build really awesome chat apps. So to get there, we have to make compromises. Our process has been as follows:
- Plan a feature internally
- Try to build it
- Work around unforeseen hurdles/limitations
- End up with compromises
- Move forward for now, but keep iterating and find ways to remove the compromises.
Until now, the bulk of our team has focused on JavaScript apps (Core and Iridium). It has allowed us to achieve this iterative cycle faster, at the cost of performance and having easy access to the system.
Our other teams were the Flutter team, working on iOS and Android for Uplink, and our Rust team, working on Warp.
Hackathon
We spent December focused on an internal hackathon. Most of the team was hacking on a Rust front end/integrating Warp into a single platform. A smaller team was seeing what they could get done in JavaScript with a newer web framework, and at the end of the month, we presented both projects to the team.
We had an exciting new and better-looking Core, written in Svelte (instead of Vue2/Nuxt2). It was a fresh write instead of an upgrade, and we got to see a more streamlined and ergonomic front end that didn’t have a year’s worth of ‘figuring things out’ polluting the old code base.
We also had a new Uplink native app written in a framework called Dioxus. We had a signed Mac build and a Windows build generating that lets you add friends, direct messages, and share huge files.
The decision to go with Uplink
Uplink wasn’t without its issues, but the team decided to go with Uplink and go all in on Warp sooner rather than later. We decided to take all the things we have learned building everything, and consolidate and focus on a single project.
We aren’t at feature parity with the Core we are replacing yet, but we are working on it. We are excited about the potential of the direction we chose. We are excited about the following:
- Fewer limitations on performance since everything will be native.
- Having more control, especially over things like audio and video streams for voice & video chat.
- Having much smaller and more efficient builds to run natively on more platforms.
- Being more confident, we can deliver an uncompromising experience for our users.
What does this mean for Core?
In the immediate term, we will keep Core online until Uplink is at feature parity, but we will not be focused on fixing the many bugs or adding missing features.
We are going to investigate creating a tool to migrate users, but there are some challenges we will need to think through. We do not have access to your unencrypted data, so we can’t do a seamless backend port over for users. Also, currently, the generated accounts are incompatible with one another — your new Uplink account will be an entirely new account with new keys.
Longer term, we will announce plans to shut down Core once Uplink is working and published.
How can I help?
Do you know rust? Reach out to us! Otherwise, as we prepare this next build, you can help us most by giving us feedback.