This summer I started working on the development of a Desktop Client for Bugzilla. I'd been new to the open source community and GNU/Linux systems, so I worked on a rather slow speed and it took a bit more time to learn new things and steer to the proper direction. I worked under the guidance of Mr. Rakesh Pandit, Red Hat Engineer, who guided me during all the work done till now. Without his guidance, it would've been more difficult. I express my sincere thanks to him. However, because of some personal reasons and the firewalls installed on the college servers, I couldn't continue my work after coming to college and this break was of more than one month. Now I'm again over it and I think this is good time to publish my work (although incomplete).
Current StatusCurrently, the application works with Red Hat Bugzilla database only. Although, it can connect to other Bugzilla's by providing the url of "xmlrpc.cgi" file on the server but it is not compatible with certain fields related to a bug (e.g. keywords, whitelist, assigned-to etc.). The basic interface of the client looks like:
The application currently includes following features:
- Report a new bug: To enter the report of a new bug. The fields required while entering a new bug report include: Summary, Description, Version, Platform, OS etc. User must be logged in to report a new bug.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAevT8rLICIj18yqAuUeSGgE6s5ADPXmDR4QVuQhaliARbC8Q1KDPJRdDOKSQ7bPvgVK_plp2T8S8AxRLhb1DHuAFJH5pT4qhtRww8Ahw-gvKopGfXq_xcHfwv7xFwqgltAYyjE4v6En9o/s400/report.JPG)
- Query: It includes searching for a particular bug by specifying a string and some other options like status, platform, version etc. This option is used to perform advanced search.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWeh6kiZ0lN2CxvwSv8QoPkE_QWX-4xdXklYPpbv81oPanHY67_RWnJWCkm2D8lms3y-jgRX7UmVTSfqPmsDaF04QaAEKgnvNKeRAmadaHDJRaxJDhEkd7W8HVq14Anwrau__rskrlxwyN/s320/search.JPG)
- Quick Search: It performs search based upon the string provided by the user. If the bug-id is known, user can feed it into this box to get information about that bug.
- Login: This basic option creates a logged in session for the user and grants privileges to enter a new bug or to post comment into the existing bugs.
Future work1). In the coming days, I would be working to make this Bugzilla Desktop Client general so that it can be used with most (if not all) other Bugzillas.
2). Administrative options are still to be added into the application (like closing a bug, assigning the bug, granting permission to a new account etc.).
3). Interface of the application would probably be changing with time so as to add new features and make it more user friendly.
4). Using bugzilla-cookies to login to a bugzilla instance.
Knowledge/Skills acquired during application developmentI used Python programming language for the development of Bugzilla Desktop Client. Earlier, I knew C & C++ languages and some other Computer Sciences subjects only theoretically that had been taught to us as a part of our B.Tech curriculum. Also I had little experience with Linux systems. So, I started with learning Python. "A Byte of Python" by "Swaroop C. H." proved to be a very valuable resource for me. This book is concise & precise and is best for a person who had earlier experience with some programming language. Multi-threading is also an important concept that I learned while working on it. Other tools that I learned and used include:
- PyGTK: PyGTK (python-gtk) is a set of bindings to the GTK+ which is a library to create graphics applications using Python. I studied the tutorial provided at the official website of PyGTK.
- Glade: Glade is a User Interface Designer tool to enable quick and easy development of user interfaces for the GTK+ toolkit and GNOME desktop environment. Using this helped me save a lot of time as I didn't need to include the function calls from PyGTK library to create new widgets. Widgets are created only by drag-and-drop action. However, handling the widgets for various events required the widget handlers and PyGTK library functions.
- python-bugzilla: A python library for bugzilla. This is the package which I used to connect to the bugzilla database. I didn't find any tutorial for this. I studied its source code and man-pages to learn about various Functions and Classes used in it.
Some other things that were helpful in general include GNOME Human Interface Guidelines and PEP coding conventions. It is a nice experience working upon the project till now [but slow :-)]. I hope to gain acceleration and pray to gain more dedication for my work.