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 : 
farshadmuham...@cmail.carleton.ca<mailto:farshadmuham...@cmail.carleton.ca>

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.

Reply via email to