Virtual Network Computing (VNC) is an OpenSource KillerApp from BellLabs U.K. (formerly Olivetti). It provides remote viewing and control of a computer desktop.
Screenshots and downloads are available at http://www.uk.research.att.com/vnc and http://realvnc.com/.
Conceptually, it's the refactorization of the WorkStation into two parts: TheSeat and the DeskTop. They no longer need to be colocated, they don't even need to run the same OperatingSystem. Use a seat at the library to access your PCs desktop at work. Use a friend's web browser to see and use the desktop you left behind in Pennsylvania.
You can download both clients and servers for Windows, Macintoshes, Unixes, and HandHeld computers, along with an applet that runs on most Java enabled browsers.
Experiences
First person account: I have been using a desktop on a unix machine whose whereabouts are unknown (to me) for five months now. That desktop appears on the screen of the Unix workstation in my office, on the screen of my PCs at my home, and under browsers at various branches of public and private libraries.
One day, I enlisted the help of a guy from our telecom department to bring his PC to help me create a wireless cell on our internet. Once it started working, I brought up my desktop on his laptop, and was back to work.
VNC makes your DeskTop portable, it doesn't matter where you are.
-- ChrisGarrod (PS: I'm not selling anything here, just overjoyed at the liberation VNC provides.)
We're using this for remote debugging/diagnostics of a system that is installed across the country from our development offices. It sure beats flying coast-to-coast whenever there's a problem -- KrisJohnson
Why is this better than other remote GUI protocols (X11, Citrix, PC Anywhere, MS Remote Desktop Protocol, etc.)? Can someone compare VNC to other remote GUI protocols?
There are two kinds of remote gui protocols. There is the "raster" kind, and there is the "vector" kind. The difference is in how they transmit the screen changes across the wire. Raster-based protocols move the screen changes similar to streaming video - when an area of the screen changes, they transmit a small bitmap image of that area, and the client reassembles them into a whole. Vector-based protocols tap into the server's screen at a lower level, and transmit instructions like rectangles and lines. As you can guess, the vector encoding is much smaller, leading to more responsive interaction. Since the vector-based implementations tap into the server's graphics stack at a lower level, they tend to be more accurate. The raster-based implementations tend to use hacks to poll the screen for changes at some interval. Depending on the platform and the point at which they hook in, there are accuracy issues. For example, PcAnywhere? is incapable of displaying Tk applications, and has problems with Java. VNC doesn't work well with console windows, where keyboard commands lead to text scrolling. All of the raster-based implementations tend to leave "cursor droppings" on the screen sometimes. X11 and RDP do not have those problems. X11 is almost as ubiquitous as it gets, though VNC does have it beat. RDP is one of the fastest remote desktop implementations out there. Most people need to access some Unix boxes and some Windows boxes. For Unix, use X11. For Windows, use RDP. When talking from one to the other, there are readily available client implementations for the other platform. If you are talking to some oddball operating system, then VNC is a good last resort.
This OpenSource software is similar to several commercial products: PC Anywhere, Timbuktu, NetMeeting, and others.