Start working where you left off through smart workspaces
03 Jan 2023The battle between GUIs and CLIs was over before it started; people just had bigger things to worry about than scripting their startup procedure and ricing their shell prompt. The desktop metaphor mirrored our ape-brain spacial reasoning well (including its drawbacks)… But fast forward a decade, and desktop apps lost a battle to an even greater foe: browser apps. For better or worse, userspace has evolved past the era of files and native applications into the age of cloud storage and web apps. Though they may have poor memory usage and performance, at least we don’t have to locally install a melange of apps that collect dust on our disks and add to our cognitive load. But the browser folks are hiding something underneath their colorful marketing: we can never fully get rid of native apps. Some tasks must be achievable offline, or with low latency, and the best approach is often through the command-line. For those of you who would not be content with a Chromebook, there is a very noticeable seam when transitioning between the web and native worlds. There are separate ecosystems and interfaces: there is cloud storage, and then there are file systems; there are tab groups, and then there are workspaces. So let’s add some glue to get the best of both worlds, making your browser as declarative and your desktop apps as persistent as your CLI.
DISCLAIMER: Most of this rough draft was written by GPT-4 given my ideas. As such, the content is incomplete and factually ungrounded. Please check back in 2 weeks for the full version now that I have free time.
Personal computing has long adhered to the traditional desktop metaphor, where a single, continuous workspace serves as the stage for launching applications and managing files. This approach, however, mirrors the architecture of early computers—simplistic and limited. Today, the complexities and demands of modern software usage call for a reimagined framework. By modeling personal computing more like a computer’s operating system, we can drastically enhance efficiency and functionality.
First, consider the role of isolation in operating systems, designed to prevent processes from interfering with one another. Each process operates within its own virtual environment, ensuring stability and security across the system. If we apply similar principles to personal computing, we could create isolated workspaces—distinct environments where specific tasks are performed without risk of interference from other tasks. This approach not only secures data integrity but also optimizes cognitive resources, reducing the mental load associated with switching between tasks.
To revolutionize personal computing, we must redefine the units of operation. Rather than a single, monolithic desktop, imagine multiple “smart workspaces.” Each workspace would be tailored to specific types of tasks—be they professional, creative, or leisure-related—and would come equipped with the necessary tools and resources. This would allow users to jump straight into their work with minimal setup, as each workspace preserves its state between sessions, akin to an operating system managing process states.
However, the desktop metaphor as it stands is akin to a computer architecture with only one accumulator register and no calling convention. When tasks are switched, previous states are not preserved but mutated, leading to inefficiencies and potential data loss. In contrast, an ideal setup would involve a mechanism to save and load desktop states—effectively managing desktop contexts as an operating system handles process states.
This transformation also involves rethinking how we interact with applications and data. We should draw a parallel between browser tabs, native apps, and open files to an instruction set in a Turing machine. Currently, there is no standard subroutine in personal computing that ensures continuity and state preservation across different applications. Command line interfaces handle this more effectively by isolating each task into a new context, preserving the state upon task completion. GUI-based systems, on the other hand, often lead to a jumbled mix of local and remote applications and files, which complicates the user experience.
Moreover, the integration of local and remote resources remains fragmented. A more cohesive system would treat local applications (like word processors and terminals) and remote applications (such as web-based services) alongside local and remote storage as components of a singular, streamlined user interface. This interface would function as a database for the desktop state, allowing CRUD operations that are easily accessible to the user, maintaining consistency and ease of access across the board.
Ultimately, enhancing the personal computing environment involves creating extensions and tools that facilitate these advanced functionalities. For example, a browser extension could enable the creation of augmented tab groups or “spaces” that are linked to specific workspace configurations. When a space is activated, it recalls the exact setup of applications, directories, and resources used, effectively making each workspace a self-contained unit that can be exited and re-entered at will.