Clipboard Server API Implementation

From ReactOS Wiki
Jump to: navigation, search

Application Information

Title/Summary: Clipboard Server API Implementation
Student: Pablo Anibal Borobia
Student Major: Computer Science
Student Degree: Undergrad
Student Graduation: 2006
Assigned Mentor: Thomas Weidenmueller

Detailed Description


ReactOS is here to provide a free software operating system to help people to get rid of proprietary OSes. Current state of the project demands many work to be done in specific areas to complete the whole work, and, to get more people interested on. One of that areas is the Human interface. One of the most helpful and useful feature not implemented yet that will make it more friendly is the copy & paste capability, that provide to the final user a more “mouse aimed” system. This feature is loved by common users that uses the operating system every day.

Project and Personal Motivation

I just been overwhelmed of how many people into the open source community around the world work in their free time and, in my opinion, Summer of Code has been a wonderful thing for that community, hundreds of projects have made large amounts of progress in just two months and just as many students gained a great experience, and I want to be a part of this movement, to gain experience, to learn of the others programmers and just coding for soul.

I’m very exited since I heard for the first time about ReactOS aims, and watched its large amount of code and people involved. I took a look at the project and fell in love immediately.

I have been using ReactOS for over 3/4 year. Firstly in real hardware and later on machine emulators, it has given me a good understanding of whole system. I saw the project progress, day by day.


My proposal is to begin work with this feature that needs to be reviewed, worked and debugged in order to improve the final user experience, in my point of view, the benefits. I want to implement the copy & paste capability through standard clipboard APIs and its basic types equivalences & conversion, like text and bitmap data, among others. I plan spend 20/24 hours per week in the next months working only for this project, and make it continuous for a few months after, with a minor hour charge.


  1. Develop and test a basic clipboard server that only manage a text based Copy & Pastes, as a beginning of the implementation
  2. Make testing cases, to probe the implementation
  3. Make it available for the ReactOS community, to further test.
  4. Add compatibility conversion of data into the clipboard system
  5. Make testing cases, to probe the implementation
  6. Make it available to the ReactOS community, to further test.
  7. Bug fixing and final tests and improvements.
  8. Final release and documentation.


  1. Source code at SVN server providing the clipboard API implementation
  2. Testing cases of the develop
  3. Code documentation for further develop


  • 0-1 week: Review the current state of clipboard implementation and learn about the original system requirements and architecture.
  • 1-2 week: Develop test cases for a clean-room reverse engineering and check the required specs.
  • 2-4 week: Start implementation of basic clipborad server system
  • 4-5 week: Start testing and debugging of the basic implementation.
  • 5-7 week: Start implementation of type conversion clipborad system
  • 7-8 week: Start testings of conversions
  • 8-10 week: Final debugging and tests
  • 10 week: Final release and reports


I'm a student of Computer Science at Universidad Nacional del Sur. I'm a fifth year undergraduate, my last year. I plan to graduate school at September 2006 by giving a School Thesis about computer clusters communication at system level based on linux kernel. With over 15 years of experience in a variety of facets of computers, from programming to electronic parts design, although my primary interest is on Operating Systems, since I have got my first Commodore 64 in 1987, I have programmed lots of basic and asm codes for it, my passion for computers don’t stop.


I have programmed in Pascal (Delphi, TurboPascal), C (TurboC), C++ (MSVC), Basic (MSVB, GWBasic, Commodore basic, etc) , Java (Sun Visual Coffe), ML, Lisp, Smalltalk, Modula2, Assembler, HTML, Javascript and VBScript before. I'm also familiar with many programming paradigms too. I have programmed several practical works for the university in many languages. And many paid projects (actually about 12 active systems, all win32 based). between the outstanding and interesting ones are: For a polystyrene plant: A steam tramp administrative program (it administers near 1200 traps) A complete shift and working hours personnel administrator (it has near 1000 users) A maintenance of furnaces programmer, HTML, javascript, vbscript, ASP, SQL based. among others.

I have written various C applications for personal use, like an automatic svn update system that download the latest svn repository code and compiles it. I made it to use with ReactOS SVN of course!

ReactOS Experience

I'm very familiar with the project, I follow it and it progress for about 3/4 years, since it was in console mode, it catch all my attention when converted into a graphical interface. I always had the last code version, since it has version support (cvs and svn), and I was compiling the successive versions. I’m very familiarized with its development tools and the rbuild system. I made some patches for the system in different areas of the project.

I learned a lot from my mentor at ReactOS, Ge Van Geldorp, he gave me this idea to work with clipboard, and gave me some teach and background about dealing with user and kernel modes too.

My first patch for the project was a current execution path implementation for dynamic link libraries, it makes me navigate for a large part of the source code to learn how it works and how i do make the patch. Then I posted some more patches about win32 system applications enhancements.

Other Projects

I worked actively with other open source projects like:

  • TabOS - a win award student project operating system
  • Seal System - A DOS based graphic user interface

among others.