Remote Desktop client application and ActiveX control

From ReactOS Wiki
Jump to: navigation, search

Application Information

Title/Summary: Remote Desktop client application & ActiveX control
Student: Michele Cicciotti
Student Major: Computer Science
Student Degree: Undergrad
Student Graduation: 2006
Assigned Mentor: Alex Ionescu

Abstract

The project will implement drop-in, open source replacements for the Remote Desktop Connection application (mstsc.exe) and the Remote Desktop ActiveX Control (mstscax.dll). The look, feel, API and features will be reproduced faithfully, within the limits of the current state of the art in open source RDP clients (represented by rdesktop for the UNIX/X11 platform and ProperJavaRDP for the Java platform).

Detailed Description

About the project

Development of a "clone" of the Microsoft Remote Desktop ActiveX Control and Remote Desktop Connection

Synopsis

The project will implement drop-in, open source replacements for the Remote Desktop Connection application (mstsc.exe) and the Remote Desktop ActiveX Control (mstscax.dll). The look, feel, API and features will be reproduced faithfully, within the limits of the current state of the art in open source RDP clients (represented by rdesktop for the UNIX/X11 platform and ProperJavaRDP for the Java platform)

Additional features are planned as well, and will be detailed and justified in the following sections

The environment of choice will be plain C++ code on the Win32 platform, using no third party toolkit or framework to keep the dependencies down to a minimum. The GCC and Visual C++ compilers will be supported

As much code as possible will be reused from existing implementations. The license will be GNU GPL.

Deliverables

The project will meet the following goals:

  • Implementation of an ActiveX component compatible with the Microsoft Remote Desktop ActiveX Control. Compatibility will be verified by running it in existing applications hosting the original control, primarily Remote Desktop Connection, Internet Explorer ("Remote Desktop Web Connection") and the Remote Desktops MMC snap-in. The implementation will attempt to strike a balance between the requirements of the latest version of the original control and the current state of the art
  • Implementation of a Windows application compatible with the Microsoft Remote Desktop Connection application. The look-and-feel will be preserved, and an effort will be made to fully support the .RDP file format. The application will be tested against both the original ActiveX control and the reimplementation
  • Definition of an extensibility model, allowing at least:
    • Future support for other remote display protocols. The project will optionally deliver a demonstrative plug-in for VNC support
    • Application plug-ins, overriding or extending the application's GUI, and integrating with the configuration system. Vital for proper, user-friendly support of alternative protocols and protocol extensions (such as virtual channels)
    • Improved support for Virtual Channel plug-ins, to provide integration with application plug-ins. Virtual channel plug-ins will finally have an integrated GUI and persist their settings in the connection configuration file
  • "Kiosk mode" support, for the use of the client application in a dedicated thin client

Justification

I want this project to succeed for essentially two reasons, one egoistic and one altruistic.

I want this project to succeed for myself, as a heavy user of Remote Desktop Connection, who is well aware of its terrible performance (I could barely believe it myself, but I found it vastly outperformed by even the Java implementation. The difference is very real and very visible). I also have a purely "hackerish" interest in learning the internals of the protocol, and I crave a more flexible extensibility model that no current implementation even remotely provides.

I want this project to succeed for the good of my favorite open source project, ReactOS, probably the ballsiest collective initiative in the software world ever. Not only it would provide ReactOS with a free, quality reimplementation of what probably is the second most popular Microsoft application after Notepad, putting it one little step closer to the grandious final goal, but its availability will also have a closer, important effect: ReactOS will become a viable thin client platform.

No other software than what ReactOS currently implements will be required to that goal, the RDP client will suffice. TCP/IP networking is already there, and so is booting from read-only media. In other words, for the first time in history, it would give ReactOS a tangible real-world purpose. A purpose hopefully translating into greater interest in the project, attracting new developers, and who knows, maybe contracts, and some cash flowing in.

About me

I have a part-time job, and save for one exam I'm done with school. I can work on the project as a part-time job for the whole duration.

I have several years of experience, both personal and professional, with the programming languages, environments and operating systems involved. I dare to say that in my field of specialization I'm quite well known and respected, and I have variously contributed to the ReactOS project for years (since January 2000), becoming one of its main developers. I see Summer of Code as a chance to end my long hyatus, and pour my skills in the project once again.

I plan to apply for other projects I feel strongly for under the mentorship of the ReactOS Foundation, confident that they won't fail to at least turn some heads.

I'm currently majoring in an undergraduate course in Computer Science, side by side with my work as a professional in the field of security-related R&D for the Win32 platfom.

Project Status

This project is progressing very well. To see all the svn commits relating to the Remote Desktop Client port go here

Links