Hey guys,
I'm pasting a first draft of my proposal here in hopes that you guys can provide me some feedback on how to make it better before applying for GNU in GSoC.
Thanks
Farshad
Name: Farshad Muhammad E-mail : farshadmuhammad@xxxxxxxxxxxxxxxxx
Port the GTK+ AWT support for GTK+ 3
Summary:
GTK (GIMP Toolkit) is an open source toolkit for Linux and Unix systems for GUI production and is used by many java applications. The GNU Classpath at the moment ships with a GTK+2 peer which provides most of its GUI support, which is unfortunately outdated as most GNU/Linux distributions are packaged and shipped with GTK+3. Thus this project aims to prepare and port the GTK+ peer to work and build with GTK+ 3 providing and ideally allowing for the uses of the new GTK+3 features with GNU Classpath. The porting process will be conducted following a guide provided by GTK+.
Benefits:
There are many benefits to upgrading the GTK+ peer to work with GTK+3. First and fore mostly, GTK+3 has now become the standard for GNOME and is going to be packaged with all further Linux/Unix releases, upgrading to work with GTK+3 will make the GNU Classpath more compatible and up to date with all future releases of Linux/Unix distributions. It will also solve problems that may occur with the continuous use of deprecated symbols from GTK+2 and invalid header includes.
GTK+3 also comes with many new few features that could possibly be used by the GNU Classpath such as Cairo handling most of the rendering, making it more cross-platform and easier to port. Providing modern input device handling with XI2 and support for many modern keyboards, mice and other pointing devices. Multiple backend support so a single library can be setup to work with many different GDK backends instead of having to recompile the application everytime.
Deliverables:
The main deliverable will include the source code for the classpath which will be able to compile and build against GTK+3. Most of the work will be done on classes in the GTK+ peer section of the Classpath under native/jni/gtk-peer/ following the conversion guide, first preparing the GTK+ peer for the port buy adding CFLAG make file macros and then using the result of the macros to make appropriate changes. And then making appropriate changes to the source code of the GTK+ peer such as using Cairo for doing all the drawing in the functions.
Plan:
Evaluation
Git will be used primarily to push acceptable changes made to the source code back to GNU for evaluations. If there are problems using Git then an alternative could be to e-mail parts of the completed source code to the mentors for evaluation.
For the midterm evaluation the aim of the project should be to make sure that the GTK+ peer is ready for the porting process, this involves making sure all the header includes are valid, the deprecated symbols are taken care off and that there are no direct accesses to the struct fields in the source code. The source code should also have some of the code changes required for the port in place, such as maybe making sure that some parts of the drawing with Cairo implementation are completed. The mid-term evaluation should be deemed a success if the three makefile macros provided in the conversion guide do not provide their associated negative results and the small implemented changes to the source code build and compile without any issues. Here is a possible bi-weekly schedule for the project: June 17th – July 1st – Most of the preparations for the port should be started, try to resolve at least one of the preparation makefile macros and all the changes necessary associated with it. July 1st – July 14th – Make sure at least 2 of the Cflag makefile macros have been resolved in the preparation process, all deprecated symbols are resolved. July 14th – Jul 29th – All direct accessors removed and replaced with public accessors, start to work on the GDK Key replacement portion of the port. Midterm Evaluation July 29th – August 14th – Work on the rest of the port should be well underway, many parts of the Cairo drawing implementation should be underway or started. August 14th – September 1st – Continue to work on porting functions, make sure everything done up to this point compiles and builds without errors. September 1st – September 16th – Finishing touches on project port; start final building process against GTK+ 3 and see if everything compiles smoothly.
Even if the schedule is too ambitious, finishing most of the porting process and even the preparation will help if the process can be picked up and continued later.
Communication
The mailing list and the GNU IRC channel will be the primary means of communication with the mentor. Proper times can be set for a live progress report on the IRC channels according to timezone differences and availability. Live video conferences can also be setup on skype or Google+ if deemed as a more appropriate form of communication. My time availability for live contact on most days will be anytime from 13:00 – 22:00 Eastern Time (UTC -5:00), the time brackets are of course flexible, and they can be changed if they do not suit the mentor’s schedule.
Qualification
I am fourth year Computer Science Student at Carleton University and am just about 5 months away from graduation. I want to gain professional coding experience before I graduate and I would love to contribute, even if just a little, to large open source projects like GNU and GCC. I am extremely hardworking and am always excited to learn new things with regard to computer code and linux build environments.
I am proficient in C, C++, Java, Scheme, SQL, C#, Direct X and Open GL. And have used C for many assignments and projects for my course work and school projects. I also have some experience with makefiles and have made very simple makefiles to compile C code for assignment deliverables. Once I finish with this project if I have enough time and expertise I would like to continue contributing to the open source community as best I can.
To prepare myself for this GSoC project I have made myself familiar with the build process of the git version of the classpath and have successfully cloned, configured, built and installed the classpath using autotools. I will need to definitely expand my meager knowledge of autotools and how more extensive makefiles work for this project. I will also need to familiarize and learn the inner working of the GTK+ peer to succeed in porting it. |