Project of the Month, August 2003

Boa Constructor

Python is an interpreted, interactive, object-oriented programming language. Python is arguably the most exciting and innovative programming language available for use today. Serious programmers, using any language, need powerful tools designed to support development in order to be successful. Boa Constructor, SF.net's August 2003 project of the month, is Python's serious tool. Boa Constructor is an Integrated Development Environment (IDE) that makes writing extensive Python code a snap. It provides an interactive debugger, text editor with highlighting, the ability to graphically view classes, object inspector and integrated help. Boa Constructor is written in Python and currently supports Linux and Windows. The project was founded on SF.NET in January 2001 and currently enjoys the top 10% activity ranking on SourceForge.net.

Project Name: Boa Constructor
Founded / Started:
The original incarnation of Boa Constructor was started in 1999, called Pygasm, short for "Python GUI Assembler". It was renamed to Boa Constructor at the start of 2000.

URL: http://boa-constructor.sourceforge.net/
Project Page: https://sourceforge.net/projects/boa-constructor/

Description of project:
Boa Constructor is a full-featured IDE for Python. It provides extensive support for code editing and debugging. Other areas are visual wxPython frame design and Zope support. It's written in Python/wxPython and runs on Windows, Linux and will hopefully soon be stabile on Mac OSX.

Trove info:
Code Generators, IDEs, Debuggers; Python

How did Boa Constructor get started?
I worked professionally with Delphi for about 3 years, but I missed Python, which I briefly used before that. So I started playing around with Python in my spare time, but I longed for the Delphi IDE environment.

Because a tool like that was not yet available for Python, I decided to write my own "Delphi for Python". I was especially excited that the IDE would automatically work on Linux, because I knew of very few such tools on Linux. Also I felt that a RAD IDE would perfectly complement the prototyping power of Python.

What is the intended audience for Boa Constructor?
Python/wxPython/Zope developers. Boa Constructor is also popular with people who have used Borland tools or Visual Basic before.

What does Boa Constructor do, and what are some of its key features?
Boa Constructor has, over time, turned into a pluggable IDE framework. Many of the mentioned features can be turned off in the preferences and won't be imported on start up. Since Boa Constructor can store such settings (resource configuration) in different directories, you can in effect run different combinations of Boa Constructor from the same source.

For Python source code editing it provides project management, code completion, parameter hints, code browsing, class explorers, simple UML diagrams, documentation generated from docstrings, CVS support, a shell, running code from the within (but out of process), profiling and debugging. There is also basic support for editing many other file types like txt, HTML, XML, C, Java and Pascal.

A major part of Boa Constructor is the visual frame designer. This resembles the Delphi way of creating controls from a palette and selecting, moving, sizing controls visually and editing their properties and events in an object inspector. A nice innovation of the frame designer is that it allows a few ways in which to make static generated code more dynamic.

Another feature is Explorer Transports. The IDE can open and edit the different supported file types over many different protocols like the file, ftp, dav and ssh. The Explorer can also store bookmarks to such files.

Zope support allows you to browse you Zope tree in the Boa Explorer, create new objects, copy/paste them and edit their properties in the object inspector. Supported Zope objects can be opened in the IDE for editing. The focus is on document and source editing.

What makes Boa Constructor unique?
Something that makes Boa Constructor unique, in a way, is the support and integration with many useful Python projects like distutils, py2exe, PyChecker, Pyrex, Cyclops. I'm currently finished up integration with BicycleRepairMan (package for re-factoring Python code) and also have some support for Chaco Plotting.

How many people do you believe are using your software?
I'm not sure. It is also available outside SF.net and I can't track that, but from indicators like the SF.net downloads, trackers, forums and mailing list I would guess hundreds of users.

What gave you an indication that your project was becoming successful?
When I started getting email from all over the world :) It has been great to receive so many mails of thanks and positive feedback... it really helps me sometimes.

On the professional side, when I started getting Python contract work, I felt the project was successful.

What has been your biggest surprise?
I guess that the project has made it this far and is still going strong. I'm still surprised by how the project could just keep on growing as it has been. A big part of that I owe to the flexibility and power of the Python language.

Why do you think your project has been so well received?
I think many people feel the need, like I did, for such an environment for Python.

Where do you see your project going?
Python and wxPython have been growing steadily for quite a while and I don't see them stopping. As long as Boa Constructor can keep up with them it will be great.

How can others contribute?
Well to start, anyone is always welcome to send bug reports and patches.

People who want to join the development team should first send all changes as patches to me. If I like the work and don't have to change too much before committing it to CVS, I will accept the person on the team. People who can improve the documentation are very welcome also.

One place Boa Constructor also needs more attention and polish is under Linux. Mainly because I spend most of my time on Windows, the Linux version suffers somewhat. I do try to thoroughly test on Linux before releases, but only constant use smoothes the rough edges. Boa Constructor really needs more Linux users who are willing to jump in and fix problems, not just report them.

Do you work on the Open Source project full-time, or do you have another job?
I'm currently working mostly full-time on an American contract. I hope that after this contract I can continue to find similar work, writing applications that run inside the Boa IDE framework.

If you work on the Open Source code part-time, how much time would you say you spend, per week, on the project?
Depending on how much time I spend on contract work, I'd guess I spend between 20 and 50 hours per week on Boa Constructor.

What is your development environment like?
Well it's Boa Constructor ;) This has actually been a design guideline. Almost every aspect of the project is managed from inside Boa Constructor. From managing the code, CVS, maintaining the web pages to uploading files through the SSH Explorer and using distutils support for packaging. I mainly work on Windows 2000 but also test on Mandrake 8.1.

If you could change one thing about the project, what would it be?
Maybe the version :)

Although Boa Constructor is only officially at 0.2.3, I honestly judge it closer to 0.8.0. Some of my original goals like data-aware controls will no longer go into 1.0.0 and other goals have been realized. It's also much more stable now than it has been in the past.

I guess if wishing could change one thing, I wish Boa Constructor had clearer APIs. I am more of a tool or application writer than a library writer, and I guess this makes it more difficult to extend Boa Constructor without understanding much of the framework.

What's on your project wish list?
Several things:

  • One important part of the wxPython library that is not supported yet in the frame designer, but often requested, is Sizers. I hope to extend the designer to handle Sizers before 1.0.0.
  • I'd also like to make the generated source a bit less verbose.
  • I would like to add features in wxPython that are currently missing from Boa Constructor like wxWizard, wxArtProvider and wxHelpController.
  • After Boa Constructor 1.0.0, I want to focus on adding a Data-aware control framework for the Frame Designer. I hope to keep it simple, but flexible enough to support many back ends like RDMS, ZODB, text files, etc.
  • I plan to move some menu definitions out of the code and into config files. I hope that in this way, the main basic interface can be translated to many languages (with the help of Boa Constructor users in faraway countries!).
  • There is still a lot of Zope support to add, like for CMF and Plone. Integrating with Zope3 is also on the list.
  • I'd also like to have simple support for Jython development. Support for a Java file type has already been added as a plug-in in preparation for this.

Milestones
A very nice milestone for me was to see Boa Constructor being added as a Debian package and as an emerge package for Gentoo Linux.

The biggest upcoming event would be Boa Constructor 1.0.0. I hope this can happen within 3 or 4 releases.


More projects of the month


Project Name: Boa Constructor

Background of leader:

Name: Riaan BooysenRiaan Booysen
Age: 29
Occupation: Software Developer for Tangible Business Software (TBS).
Education: B.Sc. (Computer Science)
Location: Pretoria, Guateng, South Africa

Key developers:

Shane Hathaway

Role: Responsible for the out-of-process debugger in Boa Constructor

Robert Boulanger
Role: Responsible for promoting Boa Constructor and contributed changes to the Zope support

Kevin Gill
Role: Responsible for the tutorial and contributed bug fixes and improvements to the wxGTK version of Boa Constructor

Tim Hochberg
Role: Responsible for features like the find/replace dialog and running a small socket server so files passed on the command-line can be sent to an already running instance of Boa Constructor

Kevin Light
Role: Responsible for helping out with documentation

Marius van Wyk
Role: Responsible for the forthcoming improved OSX version

Robin Dunn
Role: Responsible for wxPython and helping fend countless reports and queries

I also need to thank some people outside of the Boa Constructor team:

  • Neil Hodgson for his invaluable syntax highlighting editor project: Scintilla
  • Guido van Rossum and PythonLabs for the best language I've ever used
  • Most importantly, Bonnie, my fiancee and muse, without whom I cannot function :)

Why did you place the project on SF.net?
SourceForge.net provides a complete solution to running an Open Source project.

How has SF.net helped you?
For me personally, SF.net has relieved the administrative overhead burden tremendously.

The number one benefit of SF.net for your project is:
For the project, number one would be the exposure.

For the users of Boa Constructor, the many cool ways to collaborate, which I would never have had the time to create and administer.