A correspondent recently wrote me, "I would like to learn how to create ... software like VNC either using ... already existing code or from scratch. Primarily, to create ... open-source software that allows remote desktop control over the web.
... I was wondering, what books can I read or web resources you can recommend to understand the topic and be able to program it." Rather than answer privately, or push the questioner in the direction of stackoverflow or a similar discussion forum, I'll respond here in "Smart Development"; perhaps the answer, or how I go about its analysis, will interest others.
First, I wonder if the writer recognizes how many degrees of freedom remain in his description: is his target a little tool he can use himself, or is he trying to set up a business that will accommodate thousands of simultaneous users? Is "the topic" for him VNC, or remote-control software, or Web business models, or software development? In what languages is he comfortable coding?
When I look at the marketplace of remote desktop software, I see a crowd: Webex, GoToMyPC, Bomgar, Radmin, and so on. We most often use ConnectNow in our daily work. If we restrict consideration only to open-source "control over the web", several possibilities remain, including ShowMyPC (which supports Linux and MacOS as well as Windows), and EchoWare Remote Support. Several projects have implemented a VNC viewer in a Web browser, including SmartCode, RealVNC, and UltraVNC. Guacamole recently gained attention for its reliance on HTML5 features to achieve this result.
In our own development and administration, we're experimenting with NX for its performance advantages. On a day-to-day basis, VNC remains a workhorse, despite its documented difficulties or deficiencies in security, documentation, and speed.