Project Idea: Python based scripting front-end for Nemiver - the Gnome debugger.
Short description: The aim of this project is to create a scripting front-end for Nemiver, based on the python language. Using this front-end, the user shall be able to create his or her own python debug scripts to help debug programs more efficiently. The idea is to leverage the popularity of the Python language to impart the user an ability to create powerful debugging scripts that can greatly improve the efficiency of debugging sessions.
The ultimate goal of my proposal is to enhance the GNOME debugger, Nemiver, so as to lead to a better debugging experience. This will indirectly lead to fixing of more bugs in lesser time, thereby improving the quality and end user experience of not just GNOME based software, but also any other software in the world of GNU/Linux.
The project involves creating a Python console that can be invoked from the main user interface of Nemiver. The console will make available certain functionalities of the debugger as python objects which can then be simply 'import'ed to access their services. For example, to set a breakpoint, the user can perform the following steps:
import execObj # execution Object for manipulating execution.
execObj.setBreakPoint(file, line) # Sets breakpoint in file 'file' at line 'line'.
execObj.setBreakPoint(function) # Sets breakpoint in the function 'function'.
Over time, a frequently used library of python code can be gradually developed that will contain often used commands or tricks. New Nemiver users can then simply import that library and make use of the various python scripts already written by other developers. This gives them a chance of building upon the work of others - something which is very much appreciated in the world of software development.
A sample python library may be thus
created for demonstration purposes, which can be then shipped by default
with Nemiver. This will help the users to get started on this powerful
feature as soon as they install Nemiver.
Enhancing Nemiver by adding a scripting
front end will lead to better and efficient use of time while debugging,
for the GNOME developer community. In fact, the benefits for this would
extend even beyond the GNOME community because being a general purpose
debugger, even non-GNOME developers would be able to tap into its power.
I have been a GNOME user for over 10
years and have seen it grow over the years to become a very solid piece
of software and also my preferred desktop environment. By completing
this project, I hope to contribute back to the community in my own small
way. Also, the experience of working very closely with an open source
will be very helpful to me from a learning perspective and also prove to
be very valuable to my career as a software engineer.
I plan to have weekly/bi-weekly
milestones for my projects. Every week, I propose to hold a checkpoint
meeting on IRC (or through emails on the mailing list if meeting in real
time is not possible) to check the progress of reaching that goal, with
the project leads. These checkpoints are to assess the progress and
status of the project made thus far. My keeping short, realizable goals
for each milestone, the overall goal can be achieved in steps. This
approach, I believe will work very well for my project.
Here is a brief tentative schedule of milestones which I think can be used as a plan for this project:
-- Milestone 0 (April 25 - May 23) : Do a round of requirements gathering and document the requirements so that we know exactly what we are aiming for. This can happen in parallel during the community bonding period, as mentioned in the GSoC timeline.
-- Milestone 1 (May 23-30): Do a high level design of the project based on the requirements above and submit it for review to the leads.
-- Milestone 2 (May 31 - June 7 ): Incorporate the review comments and start on doing a detailed design for the approved high level design.
-- Milestone 4 (June 8 - June 22): Complete detailed design and get it reviewed by the leads.
-- Milestone 5 (June 23 - July 15 - Midterm I) : Get an initial prototype out with just the basic functionality, more like as a proof of concept. Also perform unit and integration tests along the way.
-- Milestone 6 (July 15 - July 22): Gather feedback on the prototype from users and developers to chalk out a plan for the final production quality product.
-- Milestone 7 (July 25 - Aug 22 - Final version ready): Finish development, start documenting the project and also do any final round of tests. This can be further broken down into sub-milestones during the entire period from July 25 till Aug 22.
For midterm I, my plan is to develop an
initial prototype with a few of the important python bindings. This will
be more like a proof-of-concept of the final thing. The initial
prototype will have very basic Nemiver functionalities exposed via
python objects and will not include the full functionality.
I think I am pretty well suited for this project because of the following reasons:
-- I am really passionate about Linux in general and Open source/Free Software in particular. This passion is evident in the fact that I have exclusively used Linux as my OS of choice since 2000.
-- My committment to Open source/Free software can also been seen by the fact that I lead two open source projects, hosted in SourceForge.net. One is a software simulator for the 8051 microcontroller core (http://sourceforge.net/projects/gsim51/) and the other is a software for flashing Atmel AT89S51 and Dallas Semiconductors DS5000T microcontrollers from the Linux desktop (http://sourceforge.net/projects/gnuproload/). The former was written way back in 2002 when I was introduced first to the world of microcontrollers. The latter is more recent and was written when I realized that there was no real Linux equivalent of a software to program the DS5000T and Atmel AT89S52 microcontrollers.
-- I have had extensive software design experience due to my past work as a software engineer for over 7 years in world renowned companies (Motorola and Qualcomm).
-- I have prior experience in developing Linux applications in the GNOME environment. One of my open source applications (http://sourceforge.net/projects/gnuproload/) is written in GTK+ and runs on the GNOME environment.
-- I have also contributed a patch to Nemiver in the past and therefore, already familiar with the Nemiver source code, at a very basic level.
As mentioned above, I have contributed to
Nemiver in the past. In addition, I have also created my own open
source projects which are currently hosted
in sourceforge. Thus, I am already familiar with the development model of open source projects quite well.
My contribution to GNOME will aid various
developers to debug their programs more efficiently. Better debugging
facilities will indirectly increase the end user experience for GNOME.