IEEE Software Special Issue
Rapid Application Development with Dynamically Typed Languages
Call for Papers
Publication: September/October 2007
Submission Deadline: 1 February 2007
Dynamically typed programming languages were once seen as slow, unreliable,
and suitable only for small throw-away tasks. However, their ability to aid
rapid systems development and to facilitate the pervasive, mobile, and
frequently updated systems that are increasingly in demand in the modern
world has led to their stock rising considerably.
While developers are ever keen to find out more about the details of dynamic
programming languages, managers are interested in finding out how they can
complement existing approved languages without diluting their organizations'
We thus solicit contributions in several areas related to dynamic
programming languages. Topics of interest include:
* Dynamic programming languages "in use".
* Organizations' experiences in integrating dynamic programming languages
into their existing language menagerie.
* Experiences of and techniques for using dynamic programming languages
effectively (including efficiency and scalability concerns).
* How dynamic programming languages have evolved and how they might
develop in the future.
* New techniques in challenging areas such as metaprogramming, reflection,
dynamic reconfigurability, and mobility.
For detailed author guidelines, please visit:
Manuscripts must not exceed 5,400 words including figures and tables, which
count for 200 words each. Submissions in excess of these limits may be
rejected without refereeing. The articles we deem within the theme's scope
will be peer-reviewed and are subject to editing for magazine style,
clarity, organization, and space.
For more information, please contact the Guest Editors Laurence Tratt and
Roel Wuyts at dyn(a)tratt.net.
Webware 0.9.2 has been released.
This release of Webware for Python includes a couple of fixes
and improvements of WebKit, MiddleKit, MiscUtils and WebUtils
(see the respective release notes).
Webware for Python is a suite of Python packages and tools for
developing object-oriented, web-based applications. The suite uses
well known design patterns and includes a fast Application Server,
Servlets, Python Server Pages (PSP), Object-Relational Mapping,
Task Scheduling, Session Management, and many other features.
Webware is very modular and easily extended.
Webware for Python is well proven and platform-independent.
It is compatible with multiple web servers, database servers
and operating systems.
Check out the Webware for Python home page at http://www.w4py.org
One of the most important new features of `Movable Python
<http://www.voidspace.org.uk/python/movpy/>`_ is that it can work with
multiple interpreters. That can be other distributions of **Movable
Python**, an installed version of Python, IronPython, or in fact any
executable (or batch file or a Python script) [#]_.
If you have multiple **Movable Python** distributions, you can test
programs with any version of Python from a single interface. You can
also use the same interface to launch interactive interpreter sessions
for any of the interpreters.
The **Movable Python Mega-Pack** comes with all four distributions of
Movable Python (Python 2.2, 2.3, 2.4 and 2.5). It also comes with
`IronPython 1.0 Final <http://www.codeplex.com/IronPython>`_. It is
pre-configured with these interpreters (the default is Python 2.4).
For a screenshot of the mega-pack and MovablePython.NET, see :
The **Movable Python Mega-Pack** costs £11.99 [#]_, around the cost of
two and a half distributions. You also get a couple of freebies. You
can obtain the Movable Python Mega-Pack from :
`The Movable Python Groups Page
`Nanagram <http://www.voidspace.org.uk/python/nanagram.html>`_ the
anagram maker is a fun program for making anagrams. It's especially fun
to make anagrams of your friends names.
This normally costs £5 for the full version.
The other freebie is **MovablePython.NET**. This is an experimental
build of Movable Python, written in C#. It isn't a stand-alone
interpreter, but a GUI launcher.
It lacks many of the features of the 'standard' Movable Python, but has
a nicer GUI and a few extra features.
These include :
* Auto detecting any installed Python
* Assigning system wide hot keys to scripts
* Drag and drop
This version will probably provide the basis of a GUI update for the
next version of Movable Python. If you purchase the Mega-Pack, you have
full access to all the individual distributions (including free updates
for a year), **Nanagram** and **MovablePython.NET** and a single
package containing all the distributions. This is pre-configured, and
weighs in at 80mb.
.. [#] So Movable Python can act as a GUI for any program, including
passing command line arguments. You may
never need to use the command line again.
.. [#] Once Python 2.5 final is released, this will also be raised: so
There is a new version of `Movable Python
This is available for **Movable Python** for Python 2.2.3, 2.3.5, 2.4.3
and 2.5rc2 from :
`The Movable Python Groups Page
What is Movable Python
Movable Python is a portable distribution of Python for windows,
designed to be run off a USB stick or computers that don't have Python
installed. It features an IDE (Pythonwin and IDLE are included - but
you can also use SPE), and a GUI launcher.
It can be configured to use multiple interpreters from a single
interface, including acting as a GUI for any executable.
It has a host of other features (like logging all output from files,
enabling psyco for all scripts, etc).
See the following link for a list of all the new features in Movable
Python 2.0.0 :
For an overview of the most important features (with screenshots) see :
Other uses for Movable Python include testing programs with different
versions of Python, and providing clean install 'sandboxes' for testing
programs. It is also an ideal launcher for IronPython.
What's New in 2.0.0 Beta 1
'Console normal' didn't work for the Python 2.5 distribution (and
others, although it seemed to work with Movable Python for Python 2.4).
This is now fixed.
Added console handling for IronPython (if the interpreter is
'ipy.exe' or 'ipyw.exe' then the appropriate one will be
used when 'Console handling Normal' is selected.)
The IPOFF (IPython off) option wasn't acknowledged when launching
the interactive interpreter from the GUI.
A bug in py2exe 0.6.5 (an incompatibility with Python 2.5) would
cause the interactive interpreter to exit after an exception, and
possibly other problems. This is fixed.
Got rid of the error dialog in movpyw and the 'movpyw.exe.log' file.
Changed logging to 'Log Mode' in main menu.
Fixed configuration for IDE for Python 2.5 version.
Movable Python now exits with the same exit code as any script
Improvements in traceback handling.
Pythonwin for Python 2.4 and 2.5, may need ``mfc71.dll``.
You can download this from: `here (534k)
This will automatically be included in future distributions.
It's still not too late to buy Movable python for Python 2.5 at the
reduced price, before the release of
Python 2.5 final.
There are still some issues with Pythonwin to be fixed, and the
documentation update, before
**Movable Python 2.0.0 Final** can be released.
Changes since Amara 1.1.7:
* Add support for EasyInstall; other packaging & installer improvements
- Note: allinone package eliminated
* Add trimxml command line utility (for running reports on XML files)
* Switch to Docbook for documentation source
* Bindery: Add support for dict-like accessors
* Tenorsax: Restore support for PySax
* Scimitar: Implement abstract rules
* Scimitar: Update Schematron namespace to ISO
* Scimitar: Implement phases
* Scimitar: Support Schematron queryBinding attribute: XPath, XSLT, EXSLT
* Add binderytools.fixup_namespaces function
* Add binderytools.quick_xml_scan function
* Fix APIs for adding comments and PIs
* Fix domtools.abs_path to be more namespace aware
* Bug fixes
Amara XML Toolkit is a collection of Python tools for XML processing--
not just tools that happen to be written in Python, but tools built from
the ground up to use Python's conventions and take advantage of the many
advantages of teh language.
Amara builds on 4Suite [http://4Suite.org], but whereas 4Suite offers
more on literal implementation of XML standards in Python, Amara
focuses on Pythonic idiom. It provides tools you can trust to conform
with XML standards without losing the familiar Python feel.
The components of Amara are:
* Bindery: data binding tool (a very Pythonic XML API)
* Scimitar: implementation of the ISO Schematron schema language for
XML; converts Schematron files to Python scripts
* domtools: set of tools to augment Python DOMs
* saxtools: set of tools to make SAX easier to use in Python
* Flextyper: user-defined datatypes in Python for XML processing
There's a lot in Amara, but here are highlights:
Amara Bindery: XML as easy as py
Bindery turns an XML document into a tree of Python objects corresponding to
the vocabulary used in the XML document, for maximum clarity. For example,
<python spam="eggs">What do you mean "bleh"</python>
<python ministry="abuse">But I was looking for argument</python>
Becomes a data structure such that you can write
In order to get the value "eggs" or
In order to get the value "But I was looking for argument".
There are other such tools for Python, and what makes Bindery unique is
that it's driven by a very declarative rules-based system for binding
XML to the Python data. You can register rules that are triggered by
XPattern expressions specialized binding behavior. It includes XPath
support and supports mutation. Bindery is fairly efficient, using SAX
to generate bindings.
Scimitar: Schematron for Pytthon
Scimitar is an implementation of ISO Schematron that compiles a
Schematron schema into a Python validator script.
You typically use scimitar in two phases. Say you have a schematron
schema schema1.stron and you want to validate multiple XML files
against it, instance1.xml, instance2.xml, instance3.xml.
First you run schema1.stron through the scimitar compiler script,
The generated file, schema1-stron.py, can be used to validate XML instances:
python schema1-stron.py instance1.xml
Which emits a validation report.
Amara DOM Tools: giving DOM a more Pythonic face
DOM came from the Java world, hardly the most Pythonic API possible.
Some DOM-like implementations such as 4Suite's Domlettes mix in some
Pythonic idiom. Amara DOM Tools goes even further.
Amara DOM Tools feature pushdom, similar to xml.dom.pulldom, but
easier to use. It also includes Python generator-based tools for
DOM processing, and a function to return an XPath location for
any DOM node.
Amara SAX Tools: SAX without the brain explosion
Tenorsax (amara.saxtools.tenorsax) is a framework for "linerarizing" SAX
logic so that it flows more naturally, and needs a lot less state
Amara is open source, provided under the 4Suite variant of the Apache
license. See the file COPYING for details.
Amara 1.1.9 requires Python 2.3 or more recent and 4Suite-XML 1.0rc4 or more
recent. The easiest way to install it is:
If this does not work you are probably not set up for easy_install and I
suggest you follow the simple instructions at
easy_install will automatically take care of installing dependencies for
you. If you prefer not to use easy_install, then grab a 4Suite-XML package
morerecent than 1.0rc4 and install that, then install the Amara package
using the usual:
python setup.py install
Or a Windows installer, or other method.
Uche Ogbuji Fourthought, Inc.
Kiwi is a PyGTK framework for building graphical applications loosely
based on MVC Model-View-Controller (MVC) and Allen Holub's Visual proxy
. Think of Kiwi as a high-level, object-oriented layer built on
Its design is based on real-world experience using PyGTK to develop
large desktop applications, which use many concepts common to most
graphical applications: multiple windows and dialogs, forms, data
persistence, lists and high-level classes that support domain objects
Grab the latest sources from:
and the win32 installer from:
What's new since 1.9.9?
- API reference and howto included in the tarball
- Remove some exessive use of inheritence
- A couple of new examples
- Mask fixes; alignment and focus (Ronaldo)
- win32 installation fixes (Aaron Spike)
- Tasklet WaitForCall support (Gustavo)
- Add a simple Enum implementation
- Add new separated delegates for glade views
* An MVC-derived framework of classes:
* Views, which represent the graphical display
* Controllers, which handles user interaction with the widgets
in a View.
* Delegates, combines a View and a Controller.
* Models, which are special mixins for your domain objects
* Proxies, special types of Delegate designed to implement forms
* Validation: Kiwi supports validation on different levels:
data type validation and verification on the Model/Proxy level,
View validation and hooks for visually displaying validation state.
* ObjectList widget, which provides a higher level abstraction of
GtkTreeView and all its classes (GtkTreeModel, GtkTreeViewColumn,
GtkCellRenderer) with hooks to easily integrate into the
* Mask suport: You can set a mask on entries to force the input to
follow a certain standard, such as zip code, social security, ip address
* Gazpacho integration for most (non-deprecated) interactive
widgets with attributes for handling validation and proxy
* UI Testing framework
Features a recorder and a player. The recorder allows you to record
different tasks, a script will be saved which will reproduce the
actions you made in the interface.
* Kiwi Tasklets
Tasklet is a small coroutines framework written by Gustavo Carneiro,
it was previously known as gtasklets.
* PyGTK utilities, to make it easier to add signals and properties to
* i18n translation utilities, to help you translate PyGTK applications,
currently depends on gettext and intltool.
* and many other things!
Python 2.3 or higher (2.4 recommended) http://www.python.org/
PyGTK 2.6.0 or higher (2.8 recommended) http://www.pygtk.org/
gazpacho 0.6.5 (svn recommenced) http://gazpacho.sicem.biz/
Kiwi provides API documentation generated by epydoc, it can be found at
Included in the tarball are also a number of examples, which serves as a
good starting point. Keep in mind that most of them require gazpacho to
Christian Robottom Reis: Original author and design
Lorenzo Gil Sanchez: PyGTK 2.x port
Also thanks to the following people which has contributed features
or bug reports:
Ali Afshar, Gustavo Barbieri, Gustavo Carneiro, David M Cook,
Daniel Saran R. da Cunha, Patrick O'Brien, Ronaldo Maia, Evandro Vale
Miquelito, Henrique Romano, Sidnei da Silva, Aaron Spike
Report a bug http://bugs.async.com.br/enter_bug.cgi?product=Kiwi
API docs http://www.async.com.br/projects/kiwi/api/
Open bugs http://tinyurl.com/cyrms
Mail. list http://www.async.com.br/mailman/listinfo/kiwi/
Johan Dahlin <jdahlin(a)async.com.br>
Async Open Source
This release includes support for IronPython (Windows forms GUI).
GUIE (GUI Editor) provides a simple WYSIWYG GUI editor for wxWidgets
and IronPython. The program was made in C# and saves the GUI that was
created to a XML format I called GUIML. This GUIML is a pretty standard
representation of the GUI created with the program with some helpful
additions for .NET. Next, GUIE takes these GUIML files and translates
it to either wxPython Python code or wxRuby Ruby code (more languages
in the future). You may ask yourself why I took the extra step? Why
didn't I go straight from C# controls to wxPython code? Why is GUIML
necessary? Well, it isn't. It is there simply for people (or maybe I)
to take the GUIML and convert it to other languages. This, by effect
can convert this tool from a Python GUI editor, to "any programming
language with a GUI module" GUI editor.
This month we have a special treat, a pre-arranged speaker!
Aaron Bentley (of Bazaar-NG fame) will be presenting a talk about
the Sass web application wiki.
We'll be meeting at the regular time (6:30pm) on the Third Tuesday of
the Month (September 19th) at our regular location, the inimitable Linux
Caffe (a great place to hack), on the corner of Grace and Harbord Streets.
Have fun all,
Mike C. Fletcher
Designer, VR Plumber, Coder