GSoC 2012 Application



Sorry if the content is badly formatted because it's a copy/paste of
the GSoC website.

---

Application for Google Summer of Code 2012


Synopsis
GNOME is currently lacking of a good graphical profiler. My proposal
is to extend nemiver by adding a new perspective to add the ability to
profile an application with the help of callgrind.


Who am I?
My name is Fabien Parent, and I’m a 23 years old French IT Student. I
have been using GNU/Linux and GNOME as main Operating System for the
past 8 years. During those years I have learned a lot about
programming and computer science thanks to free-software, and their
source code publicly readable.

Few years ago, I decided to contribute back to a community that make
me learn so much, and make me believe that this sort of knowledge
shouldn’t be secret , but should be free and open. It was also a good
way to keep learning.

In consequence, I have started looking at possible free-software where
I could be contributing, but it wasn’t easy because of the difficulty
to start contributing to projects that have a large amount of code. I
joined many GNOME irc channels (my nickname is 'Fabo'), and finally
found a small abandoned project where the code base size wasn’t
repulsive: regexxer [1]. Since then, I tried the catch up with the
latest GNOME A.P.I.s, like porting the application to GTK+3 and
Gsettings.

Finally last year I participated in the Google Summer of Code with
GNOME on the project 'nemiver' where I developed a layout manager and
several layouts for it. Since then I continued to contribute to
nemiver on a regular basis.


Why you should choose me?
>From my past success in the GSoC 2011 and from the fact I am a regular
contributor of nemiver, you can see that the project will probably be
successful. And most of all I really think GMOME need a graphical UI
to profile applications. Having one would be very beneficial to the
whole GNOME developer environment.


Project
Nemiver is a great piece of software and one of the most complete
graphical debugger of the GNOME desktop environment. Nemiver has
always been developed with extensibility in mind, and therefore the
ability to add non-debugger perspective to the application has always
been there. Nemiver became a mature software in term of debugging and
I think it’s time to take it to the next stage: implementing others
developer dev/debug tools. That's why I am planning to implement in it
several of valgrind tools: callgrind and memcheck at first.

Since this is a huge work, my proposal is limited to the
implementation of an UI for callgrind inside nemiver. And then when it
will be mature enough I will move to the memcheck UI.


I will begin the project by modifying the workbench to be able to
change the current perspective (I will be doing it probably the same
way eclipse does it).

The second step will be of writing the profiling engine which will be
able at first of loading an executable under callgrind, process the
result file and generate high-level structure to let the rest of the
application manipulates the data without having to know about the
internal of callgrind files.

Once done I will write the perspective UI to start the executable and
see the result of the profiling of the user binary. For this I’m
currently planning to do a bonobo-like UI (based of charts).

The final step will be to be able to see the source code annotated,
this will requires probably more work than I can handle in the short
GSoC coding period. I will do be best to be able to get it to work
quickly but I will probably have to continue it after the GSoC.



How I will make this project a success?
I do believe that this project will be a success because I will follow
the following rules:
•                     Getting regularly feedback from Nemiver's
developers and always stay in contact with them.
•                     Send a short e-mail every day-or-two-days to the
mentor which will say what I have done, what I plan to do next, how I
will do it. The goal is to get feedback from the mentor as soon as
possible.



Timeline
The project can be divided into 3 milestones:
•                     Development of the profiling engine.
•                     Development of the UI.
•                     Development of the source code annotation code.

23 April - 10 May:
•                     Read documentations (valgrind, callgrind).
•                     Learn cairo API

11 May – 20 May:
•                     Work on the general design and get feedback from
the mentor.

21 May – 5 June (Official coding period starts):
•                     Write the code to load/change the wanted perspective.

6 June – 7 July: Milestone 1
•                     Write the basic of the profiling engine based on callgrind
•                     Write unit tests for the profiling engine.

8 July – 31 July: Milestone 2
•                     Write the UI for the profiling engine

1 August - 15 August: Milestone 3
•                     Add feature to see the source code anotated

16 August – 20 August:
•                     Finalize the project with tests, bugs fixing,
and documentation writing.

Notes
[1]
Website: http://regexxer.sourceforge.net
Repository: http://git.gnome.org/browse/regexxer


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]