Tuple for Windows Public Beta

Windows Beta Illustration

TL;DR

After months of hard work, hundreds of commits, and dozens of tickets closed, we’re thrilled to announce that the beta of Tuple for Windows is now available to everyone! You can grab it here.

It’s been a long and fascinating journey to reach this point. This release represents the culmination of years of work figuring out how to bring Tuple to multiple platforms.

Setting the Stage

Tuple was founded by Joel, Spencer, and Ben - three engineers who believe deeply in the value of remote pairing. When they couldn’t find a solution that was good enough, they decided to build their own - and Tuple was born. Tuple was designed from the beginning to prioritize the things developers really care about when they’re pairing - high-resolution screen sharing, snappy remote control, a minimal UI, and resource efficiency.

The app was originally only for macOS. But as more teams began to use Tuple, we started to get more requests for a Windows port. This represented a challenge. Being macOS only, the app was a mixture of Objective C and Swift, with deep hooks into the operating system. In order to make Tuple run on Windows, we needed to fundamentally re-architect the app and separate the platform-specific code from the platform-agnostic stuff. Additionally, we needed to completely rewrite Tuple’s engine - the core set of modules responsible for most of the heavy lifting involved in facilitating pairing (i.e. capturing video, transmitting mouse movements and key presses, etc.).

What followed was a huge technical endeavor. We spent the better part of a year restructuring the app and rewriting the engine in cross-platform C++. And when the dust finally settled, the stage was set for Windows.

Working with Windows

Now that we had a solid technical foundation to build on top of, we began implementing Tuple for Windows in earnest. We knew that making Tuple as good on Windows as it is on macOS was a high bar to clear.

The most important things for us to get right were the same as ever: crisp screen sharing to make code legible, snappy remote control to keep developers in flow, and a minimal UI to not distract from the work being done. We put a ton of energy into making shared screens look crisp and clear, even for extremely large monitors. We went so far as to completely rewrite our rendering stack (switching from GDI to DirectX in the process) so that we could keep quality high while being resource efficient. In the service of both improving performance and decreasing latency, we managed to find ways to circumvent some of the more abstract, high-level input management systems in Windows, instead hooking directly into some lower-level systems. Similarly, we also chose to move away from more abstract UI frameworks, instead choosing to implement our own custom UI controls to maintain control over the experience.

After a few months of initial development, we were ready to start getting hands-on feedback from early adopters. We managed to assemble a fantastic group of alpha users who were brave enough to use a piece of software that was, at times, pretty raw. The feedback, bug reports, profiling info, and log files they provided were invaluable, and helped guide our development process towards improvements that mattered.

And now, after countless fixes and much polishing, we’re ready to let everyone use Tuple for Windows!

Let’s Go!

Building Tuple for Windows has been a blast - and we’re just getting started. This is still a beta, so we’re continuing to actively add features (webcam support is coming next!). If you have any feedback at all (or if you encounter any bugs), please let us know!

Again, you can grab Tuple for Windows here. Happy pairing!