Progress report February 2003
tools for developing, distributing, and installing software
Work on Agide continued
Agide is the A-A-P GUI IDE. Most of February was spend on designing and implementing the core of Agide. This progressed mostly as planned.
What has been implemented now:
- Project support through a recipe: Reading a recipe and presenting recognized items to the user. Adding, renaming and deleting items in the project. This is mostly restricted to the IDE-specific variables that start with
IDE_
. Writing the updatedIDE_
items to the recipe. This is just the minimum to be able to work with projects. - Plugin mechanism for tools: Various tool plugins can be dropped in the Tools directory. They offer properties that makes it possible to select one for performing an operation.
- Added tools to edit, search, debug a program and view an image.
- Implemented mechanisms for inter-tool communication. For example, the search tool presents a list of matches. When clicking on a match an editor tool is opened at the right position. This is done in such a way that the search tool doesn't know about the editor tool.
Boa code was hardly used. The lack of comments in the code and the interconnected structure makes it difficult to take a piece of code and use it separately. For example, the tree view uses icons, which are loaded by importing all the modules. Whether any Boa code will be used later depends on whether the Boa author is willing to help out. This is not required for implementing Agide, but it would be very good to work together.
Using wxPython for the GUI toolkit has not given any problems. All the GUI code was made to work properly in a reasonable amount of time. There is still one unresolved problem (first opening an editor and then the debugger causes a hang), but it's not clear if this is a problem with wxPython. It's worked around by closing the editor before starting the debugger. To be solved when someone can find out where the hang occurs.
The current state of Agide is almost ready for a first public appearance. It is possible to start a project, build it, run the gdb debugger on the produced binary and step through it while displaying the source code in gvim.
Although the features are still very limited, a few essential items have been implemented to verify the mechanism for communication between tools is working properly. For example, when the debugger is at a breakpoint and the mouse pointer is positioned over a variable, the value of the variable is displayed in a popup window. This requires the editor to send the text under the pointer to Agide, which passes it on to the debugger. The debugger evaluates the text and sends the result (if any) back to Agide, which passes it on to the editor. This communication is asynchronous and involves communicating with gdb and gvim, which are running as separate programs. Now that this is working it will not be difficult for someone to add another feature.
FOSDEM
The "Free and Open source Software Developers Meeting" was attended. This was a free (as in "free beer", even though the beer wasn't free...) event that attacted many students. Many developers were there, most noticeably Linux, KDE and Gnome.
There was no presentation for A-A-P, but I handed out leaflets with information. I had discussions with several people. Remarks varied from "Glad that finally someone makes this" to "Don't need it". The remark about building shared libraries also popped up again. This would be a good one to make an example for.
Progress
Almost four weeks were spend on the GUI IDE. This means the planned time for this work package is almost used up. Some work is still to be done and the first public release will probably reveal things that need to be fixed.
Coming month
Agide will be made ready for release. A lot of cleaning up is to be done. Mostly to avoid that messages are going to the terminal where Agide was started, these should be displayed in a console window. The release will also require writing a tutorial and announcements. After that the recipe executive will be worked on: implementing the scope mechanism and several small items.