While the "P" in "LAMP" most often brings to mind Perl or PHP, the other "P," Python, is no third-wheel. Indeed, with powerful language structures that support objects, dynamic data types, and dynamic typing, and a rich trove of core and contributed programming libraries, the variety of applications that can be built with Python is quite astounding. The Python Users page (found online at http://www.python.org/psa/Users.html) lists just a small sampling: there's a content management system framework (Zope); a Quake level editor (Quake Army Knife, or "Quark"); and an entire web site -- PalmStation.com -- written solely in Python.
While the “P” in “LAMP” most often brings to mind Perl or PHP, the other “P,” Python, is no third-wheel. Indeed, with powerful language structures that support objects, dynamic data types, and dynamic typing, and a rich trove of core and contributed programming libraries, the variety of applications that can be built with Python is quite astounding. The Python Users page (found online at http://www.python.org/psa/Users.html) lists just a small sampling: there’s a content management system framework (Zope); a Quake level editor (Quake Army Knife, or “Quark”); and an entire web site — PalmStation.com — written solely in Python.
In addition to creating applications, Python is also used as an embedded scripting language in many other applications written in other programming languages.
And, perhaps as a testament to Python’s power — and something that sets Python apart from PHP and Perl — entire, commercial-grade GUI applications are also written in Python. A prime example is “Chandler,” the Open Source Application Foundation’s personal information manager (and email application and chat client). Chandler — and all of its plug-ins and extensions — are written entirely in Python, and runs “out of the box” on Linux, Mac OS X, and Windows.
Perhaps it goes without saying that Python developers are a zealous and enthusiastic bunch. One of those developers, Riaan Booysen, 29, and a resident of Pretoria, Gauteng, South Africa, likes Python so much he created his own integrated development environment (IDE) for the language, written in Python. Cleverly dubbed, “Boa Constructor,” Booysen’s IDE sports some impressive features, including a debugger, plug-ins, code completion, and more.
This month, Linux Magazine Editor-in-Chief Martin Streicher and SourceForge.net Site Director Pat McGovern talk to snake charmer Booysen about his favorite open source project.
Riaan, can you describe Boa Constructor?
RIAAN BOOYSEN: Sure. Boa Constructor is a full-featured IDE for Python. It provides extensive support for code editing and debugging, and even allows you to interactively and visually design wxPython frames.
Boa has some basic support for editing files of all kinds, but its strongest features are designed specifically for Python source code. For Python, Boa provides project management, code completion, parameter hints, code browsing, class explorers, simple UML diagrams, documentation generated from docstrings, CVS support, profiling, and debugging.
What inspired you to create Boa?
BOOYSEN: I worked professionally with Delphi for about three years, but I missed developing in Python. So I started playing around with Python in my spare time, and oddly enough, I longed for the Delphi IDE environment. Delphi is a great product, and I was really impressed by the power of its extensive class framework, [the Visual Component Library (VCL)], and its rapid-application development (RAD) IDE.
Because a tool like Delphi wasn’t available for Python at that time, I decided to write my own “Delphi for Python.” I was especially excited that my IDE would automatically work on Linux, because I knew of very few such tools on Linux. I also felt that a RAD IDE would perfectly complement the prototyping power of Python. And wxPython was the ideal GUI toolkit for Boa because it wraps wxWindows, which is like the VCL in many ways.
One other point: before writing Boa, I was a very firm believer in visual GUI design. Ironically, I’ve softened on this view. I still firmly believe in visual design for static parts of a GUI, but programmers shouldn’t be afraid to code dynamic GUI elements by hand.
In a way, your user interface design tool seems to reflect that opinion.
BOOYSEN: Yeah. A major part of Boa is its visual frame designer. The designer resembles Delphi’s way of creating controls from a palette; selecting, moving, and sizing controls visually; and editing their properties and events in an object inspector. But when the designer is closed, Boa generates wxPython source code for the frame.
I chose source code generation above XML or my own GUI format because I wanted the generated source to be pure wxPython that didn’t require anything but a standard wxPython install. Another benefit is that people new to wxPython can learn from the generated source code.
That’s a nice touch. What else do you think is clever?
BOOYSEN: Over time, Boa has turned into a pluggable IDE framework. Many of its core features can be disabled in the user preferences. If a feature’s turned off, it doesn’t get imported on start-up. For example, if you use Boa only for non-GUI Python development, the frame designer and Zope support can be entirely turned off.
Something that makes Boa unique, in a way, is its support and integration of many other useful Python projects like distutils, py2exe, PyChecker, Pyrex, Cyclops. I’m currently finished up integration with BicycleRepairMan, [a package for refactoring Python code], and also have some support for Chaco Plotting.
The Explorer Transports [feature of the IDE] can also open and edit files over many different protocols like FTP, DAV, and SSH. The Explorer can also store bookmarks to such files.
How long have you been working on Boa?
BOOYSEN: The original incarnation of Boa was started in 1999. It was called “Pygasm,” short for Python GUI Assembler [smiles]. I renamed it Boa Constructor at the start of 2000.
You’re employed full-time as a software developer. How much of your spare time do you devote to Boa?
BOOYSEN: Depending on how much time I have to spend on contract work, I’d guess I spend between twenty and fifty hours per week on Boa. In the past, [my employer], Tangible Business Software, has sponsored me to work full-time on Boa, and at other times, half-time.
Do you work on Boa yourself?
BOOYSEN: A lot of the time, I’m the only active developer on the project, but over the years, many people have contributed to the project.
After me, Shane Hathaway has been the biggest contributor. Shane’s responsible for the out-of-process debugger in Boa. Ages ago, Boa had an in-process debugger, but it was plagued by problems. The new debugger runs a debug server in a separate process and connects to it via XML-RPC. Together, Shane and I added very nice features to the debugger, like support for debugging Python threads (not common in Python debuggers), debugging Zope Python scripts, and remote debugging.
Robert Boulanger is a good friend of mine. We met through Boa when he contributed changes to the Zope support to work with XML-RPC instead of FTP. Robert regularly promotes Boa, and has also presented Boa at EuroPython 2002.
Kevin Gill, Tim Hochberg, and Kevin Light have also made very helpful contributions. Marius van Wyk is working on improving the Mac OS X version of Boa. I must also mention Robin Dunn as an honorary team member. Over the years, Robin has fielded countless reports and queries. Apart from giving us wxPython, he has helped me track down many Boa and wxPython issues.
Neil Hodgson deserves a mention for his invaluable syntax highlighting editor project: Scintilla.
Finally, there is Bonnie, my fiancee and muse, without whom I cannot function.
What’s been surprising to you about managing an open source project?
BOOYSEN: It’s been great to receive email from all over the world, thanking me and giving me positive feedback. When I started getting Python contract work, I felt the project was successful for me professionally as well.
The biggest surprise is that the project has made it this far and is still going strong. I’d also say that the administration of the project and of the people is really hard. I think I’m a terrible manager.
What’s next for Boa?
BOOYSEN: Python and wxPython have been growing steadily for quite a while, and I don’t see them stopping. As long as Boa can keep up with them, that’d be great.
I wish Boa had clearer APIs. I am more of a tool or application writer than a library writer, and I guess the APIs make it more difficult to extend Boa without understanding much of the framework.
One important part of the wxPython library that is not supported yet in the frame designer, but is often requested, is Sizers. They were added to wxPython after the Boa frame designer was written.
There’s still a lot of Zope support to add, like for CMF and Plone. Integration with Zope 3 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.
How can others contribute?
BOOYSEN: Everyone is welcome to send bug reports and patches. People who want to joint 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 too.
Boa needs more Linux users who are willing to jump in and fix problems, not just report them.
Martin Streicher is the Editor-in-Chief of Linux Magazine. You can reach him at email@example.com. You can reach Riaan Booysen at firstname.lastname@example.org.