I’m thinking hard about desktops, desktop technology and desktop architecture at the moment. With some of the key technology trends of the next few years being the increased power and ubiquity of mobile devices, the post-PC era and the consumerisation of IT, everybody working in IT strategy and architecture should be. What I have found interesting, however, is the lack of a common understanding of what a desktop is. (In fact I’m fairly sure that “desktop” is the wrong term. Perhaps I should be talking about “end user computing”, or “client computing” or “workspaces”. I’ll stick with “desktop” for the moment though). As we move from traditional physical desktops running operating systems and installed applications towards virtual desktops with virtualised applications to Desktop-as-a-Service it helps to have a conceptual framework to discuss these models and understand where they are the same and where they are different. In this post I want to describe the conceptual components of a desktop architecture, and then build on this in subsequent posts to analyse the different ways we can implement desktops and desktop architectures.
I believe that what we are really talking about when we discuss the desktop is the delivery of applications and data to users. The desktop is just the current best means we have of doing that. What I want to do in this post is show my conceptual analysis of the desktop. This will in turn allow me to describe a conceptual architecture for the desktop. (If you are wondering what a conceptual architecture is, or what the point of one is see my post on it here along with the comments and my responses.)
I separate the wider concept of desktops into the desktop itself (the thing that the individual uses and interacts with) and the desktop management (the layer interested in managing the stuff that the user directly interacts with). Within the desktop the conceptual components are:
- Device: the most physically prominent component of the desktop. This is the actual physical hardware that the user interacts with.
- Operating System: provides management of the common hardware resources (such as memory, file systems, storage, input devices and output devices) as well as providing common services to applications. It acts as an intermediary between applications and the underlying hardware platform. Today’s operating systems also provide the central organising metaphor for presentation of and interaction with applications and data.
- Configuration: the settings that influence the behaviour of the device and operating system. These are the parameters that the operating system uses to determine exactly how it will present and behave on this particular device at this particular time. Configuration will determine many aspects of the overall desktop including appearance, security and availability of functionality.
- Applications: the executable computer programs that we access from the desktop. Applications perform a range of functions that we won’t go into here. Suffice it to say that applications are why the desktop exists. They are what performs the tasks that computers are for.
- User Data: the data that belongs to the user for storage or processing/presentation by applications.
- User Accounts: the settings, access rights and security associated with a particular named identity.
Within the desktop management layer the conceptual components are:
- Device Management: management of device settings, tracking devices,
- Configuration Management: central management of OS configuration – setting configuration, restricting what configuration users can change.
- Patch Management: the application and deployment of updates (patches) to the operating system of the desktop.
- User Management: the allocation of user accounts and their privileges to desktops.
- Application Deployment: the delivery of usable applications to a desktop.
- Application Packaging: preparing applications so that they can be appropriately deployed to the desktop. In an enterprise setting this usually means optimising application configuration for the organisation’s policies and environment as well as preparing it for the chosen deployment method (which may not be the way that it is delivered by the manufacturer).
These conceptual components don’t live on their own. Within a typical enterprise environment they also consume a range of other resources or services such as network connectivity and storage – but that is a topic for another post.
As an example of how to apply this conceptual framework to a real example, consider the traditional consumer desktop – such as the one I am writing this on now. It consists of a device (a box with hard-drive, memory, processor etc.; screen; keyboard; mouse) which has an operating system (Windows 7) installed and running on it. I have configured it to work as I wish, installed applications on it, created user accounts on it for myself and my family and my data (files, documents) sit on its hard drive. I perform configuration and device management manually. Microsoft do my patch management for me: creating and distributing my operating system updates to my desktop. I perform user management locally with the built-in tools of Windows 7. I perform application deployment manually, and the application manufacturers do the application packaging for me.
So the conceptual components allow me to describe what makes up the desktop. I also believe that these conceptual components allow us to describe the key differences between different ways of delivering and managing desktops and the applications and data that are their primary purpose. I’ll cover those different models in later posts.
If you are working on desktop architectures, or desktop virtualisation then I hope you find these thoughts useful. If you don’t, please let me know in the comments below. My thought in this area is currently evolving and I’d be keen for other viewpoints.