Familiar in the Cloud: Streaming the native desktop experience to your browser
Tags: cloud, streaming, desktop
Published: 2022-08-16 12:00:00

Eponymously accurate today, we started off by attempting to solve simpler problems – yet another online editor, or YAOE as we were known then. Our journey would have been very different had we not expanded on our nascent idea of developing a web-based programming solution to taking everything that comes with it as we went. Instead of narrowing it down to a niche, we wanted to address a wider audience and a broader need. 

Apprehensions around taking your workspaces online were aplenty and in most cases cropped out of the lack of familiarity. Delays, lag, and a simple absence of the capabilities of a local machine prevented the absolute adoption of a cloud-first computer. 

**The problem? A foreign experience.**

What we develop here at Neverinstall is a cloud-first platform that transforms a run-of-the-mill internet browser into an operating system. A personal cloud computer accessible through a browser, delivering a native experience for desktop-class applications on virtually any device. 

As the Sagan standard goes, “extraordinary claims require extraordinary evidence”, here we are piecing together the implementations that brought personal cloud computing this far and will take it beyond.

## Your browser is the new OS
Until recently our good-old internet browser was mostly used for surfing the internet, communicating, filling out forms, sharing files, and yes, streaming digital media. However, the advent of advanced cloud computing platforms enabled the development of web applications that could be accessed over the internet. But the web apps were limited to certain categories, came with restricted capabilities, and would feed on the local hardware resources such as RAM through the browser. 

We decided to bring a paradigm shift in the way people use web apps and virtually any GUI desktop-class application. We built our platform to give users access to their applications with a native user experience through their browser without the need to download or install any files. However, instead of creating web applications, we stream them.

### Unrestricted access
Through our platform, we give users access to a full-fledged Linux OS on a browser that can launch on virtually any device. We pre-install and pre-configure applications in the Linux instance and stream them to the users with all functionalities and capabilities of the Linux operating system – with no limitations or dilution of features even when accessing applications over the cloud. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qwleuh71eyn0lke3o2mc.png)
 
Read more - [Why your browser is becoming an OS](https://blog.neverinstall.com/why-your-browser-is-becoming-an-os/)

### Customizations and control
One of the things that brought our platform closer to native was the freedom to customize and control the OS similar to how users would do it on their local machine. Although the entire OS instance is cloud-native, users get identical features and capabilities as of a locally installed system. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g45kdifq6atzridg60da.png)
 
### Resolutions
During development, a major challenge to streaming applications was the different devices we were to cater to and the differences in how the applications would look across a diversity of machines. Standardization in such a domain dilutes the experience, and in some cases would render the platform unusable.

To deliver a consistent platform to all our users, we solved for display resolutions. 

Read more - [Elaborate Engineering with Neverinstall: Resolutions](https://blog.neverinstall.com/elaborate-engineering-with-neverinstall-resolutions/)

We have a user base of over 200,000 (and growing) people that access the platform through different regions, a large variety of devices, and varying internet speeds. Therefore, we identified two key aspects that would help us deliver high-performance applications to all our users without compromising on quality or services.

### Aspect Ratio
We fetched display information from users’ devices in real-time when they launched an application. Therefore, for a native desktop experience, we adjusted the aspect ratio of the stream depending on the users’ screen to deliver applications just how they would look when locally installed.

### Bandwidth
Since different users were using the platform with different internet connections from around the world, the stream would look vastly different for people with better connections than those with the bare minimum. To solve this problem, we developed an algorithm to adjust the maximum bandwidth an application stream can utilize depending on the internet speed of the user. As a result, we were able to deliver desktop-class performance to users launching applications even with slower internet connections.

## Peripherals
Application streaming was only part of the solution, controlling the stream was another challenge in itself. Not only did we have to connect the users’ I/O with the stream so they could interact and actually use the applications, but we also needed the connection to be strong, snappy, and lag-free.

We developed the platform to respond to user inputs through peripherals such as the keyboard and the mouse as applications would on a local machine. This meant that latency in the response time of actions conducted by users must be negligible and without error.

### Mouse movements
We started with calibrating the mouse input with the remote cursor on our platform to get all physical mice of different users to work perfectly with the platform as they would with a local machine. What brought us close to native was the accuracy – through continuous calibration and development we were able to deliver precise mouse inputs seemingly indistinguishable from inputs on local devices. 

**Native Remote Cursor**

We then moved on to modify the remote cursor. We added support for the XFCE Window Manager (XFWM), a fast yet lightweight desktop environment. Through XFWM we were able to change the theme of the remote cursor and make the platform feel more native. Since the configuration of XFWM is completely mouse-driven, it enabled the platform to respond to several micro-interactions across all our applications.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8nbkk4zdteuh0xm3bz1f.png)
 
### Keyboard
The next most important peripheral, the keyboard, was key to making the platform feel native. However, apart from a low latency response from keystrokes, we needed to address the different keyboard layouts used throughout the world. 

Therefore, to support users who were comfortable with languages other than English, we extended support for over 50 different languages for our keyboard, and the layout could easily be changed through the dock as and when required. 

**Keyboard shortcuts**

To help Neverinstall aptly replace local machines, the personal cloud computer must replicate features without a learning curve. Therefore, to bring the platform closer to native desktops’ experience we migrated the familiarity of one of the most used features on the keyboard – shortcuts. 

The platform forwards the keystrokes and maps them to their respective shortcut layout which is then used by the underlying OS to implement the keyboard shortcut. Further, we are in the process of developing OS-level shortcuts to enable users to execute actions such as switching and closing windows within the platform.

## Mobile-friendly
As we promoted device agnosticism, we had to make the platform adaptable to virtually any device that could run an internet browser. However, we wanted to achieve this without diluting the desktop-class performance or toning the experience down for non-desktop users. 

Therefore, we enhanced the user experience for one of the most popular devices in the world - the mobile phone.

### Landscape and Portrait
We developed the platform so users can get access to all applications on Neverinstall even on their mobile devices. The platform is responsive and accessible in both portrait and landscape mode on mobile phones, giving users freedom to use applications in any manner while on the go. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rrds54znkszuxr5wp3uc.png)
 
### Touch interactions
We implemented touch support on the platform to enable universal access across multiple device classes. The platform supports single-touch, with support for multiple-touch and gestures under development. For instance, touch-friendly apps such as WhiteBoard can be installed and used natively on the cloud OS.

**Touch keyboard for mobiles devices**

Further, the platform enables users to interact with applications using a virtual keyboard on their mobile devices, delivering a truly native and immersive personal computing experience over the cloud even on smaller devices.

### Latency
Latency was one of our biggest challenges when bringing the native desktop computing experience to users through the Cloud. The lag between the request from the users’ device and the response from the remote servers was a major hurdle to the performance of applications. Consequently, most VDI and RDP solutions had failed to replace traditional computing completely.

### WebRTC
At Neverinstall, we use the WebRTC protocol for enabling application access through the browser. The protocol is a proven reliable industry standard for streaming. Since WebRTC has a lower-latency benchmark when compared to other alternative protocols, it helps users on Neverinstall run applications with negligible lag. 

### Network Configuration
To improve interaction with applications we optimally configured the network on our servers to help us reduce latency. Moreover, we developed and deployed several synchronization methods to make collaboration seamless.

### Server location
We are regularly adding more servers to get closer to more of our end-users geographically. By means of reducing the distance between our servers and our users we are able to reduce the data packet travel distance, and hence, time. This, in turn, helps us lower latency on the platform.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fudqerv27gb0oovcmvhv.png)
 
**Cluster selection**

Depending on the use case of the user, the platform performance can be different. For instance, users who wish to use the platform for its VPN functionality would launch their applications in a region different from their geographical location, increasing packet travel distance. However, by selecting a cluster (region) closer to their geographical location, users can noticeably reduce latency on the platform, making applications faster and feel more native. 

Suggested read - [Your browser is the new VPN](https://blog.neverinstall.com/your-browser-is-the-new-vpn/)

## Final thoughts
Neverinstall is at the frontier of personal cloud computing and aims to bring a fundamental change in the way people use desktop applications. Our team is working extremely hard to deliver the best of streamed applications with a native experience getting better each day. 

We value the importance of user experience and are working to implement major changes to the platform to help you make the most out of your cloud PC and experience the era operating systems that run on your internet browser!

Experience personal cloud computing, experience native. 

Sign up on Neverinstall [now](https://neverinstall.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=blog)!