Remote Desktop client application and ActiveX control
|Title/Summary:||Remote Desktop client application & ActiveX control|
|Student Major:||Computer Science|
|Assigned Mentor:||Alex Ionescu|
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).
About the project
Development of a "clone" of the Microsoft Remote Desktop ActiveX Control and Remote Desktop Connection
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
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
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.
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.