User: Password:
Subscribe / Log in / New account


Boo - a wrist-friendly language for the CLI

May 23, 2007

This article was contributed by Joseph Quigley

Imagine taking a Ford engine, a Chevrolet chassis, and a Toyota transmission, bolting them together, and discovering that they fit perfectly. In the programming world, Rodrigo Barreto de Oliveira created such a vehicle. Around the year 2003, de Oliveira was unhappy with some of the .Net/Mono languages at the time because none of the stable ones were Python-like.

De Oliveira said that he missed the "wrist-friendly" Python syntax. He created his own language, Boo, and explains in the Boo Manifesto [pdf]: "I wanted a language I could extend with my own constructs. I wanted a compiler system that could be taught new things, taught how to automagically [sic] generate common code for me." The language caught on, and several sites hosted Boo projects or created communities around it.


Boo is an object-oriented, statically-typed programming language that makes use of the .Net Common Language Infrastructure. It is licensed under an open-source MIT/BSD-style license, and because it is built upon the Mono or Microsoft .Net framework, it is cross-platform and can be extended significantly. Boo supports Unicode, internationalization, and web-style applications while its language's syntax is Python-inspired. Focusing on both language and compiler extensibility, it features type inference, optional duck typing, currying, first class functions, multimethods, and generators.

The language is quite flexible and adapts to many genres of programming. It can be used in or written for games, GUI applications and web frameworks (see the Boo Applications). It can interact with most Mono libraries, every CLS-compliant library and most generics. In short, it works with pretty much everything, every library, and every framework for .Net or Mono. In the game world, BooGame (a 2D, OpenGL-accelerated, game engine framework) is similar, if not almost equivalent, to PyGame.

The commercial Mac OS X Unity game engine has very good support for Boo scripting for both 2D and 3D games. With Unity, Boo games can even be played from a browser. Unity is not the only 3D framework that supports Boo. The open source Tao framework supplies OpenGL, Ogre, and OpenAl bindings for Boo on both .Net and Mono. Although not too many web frameworks have been written for Boo, Apache's mod_mono makes web development possible. A popular framework is Webbness, which delivers functionality similar to Ruby on Rails and it generates code in either Boo or C#.

There are several reasons to use Boo over other languages, even though many others (such as Lua) may have a larger community, have a larger software base, or may be in the news more often. Boo stands out from the crowd since it is appealing to developers due to its simple syntax and well implemented OOP functionality on the .Net/Mono platform. It differs from IronPython in several ways because it can provide features and tools that IronPython might never support (due it its very good compatibility with standard CPython).

Unlike some languages, Boo is not designed to replace or be used exclusively as an alternative to C#. Instead it was designed to be extended and to interact with those languages. This allows the programmer to write once in a different languages, and use his code with Boo. In the Boo Manifesto, de Oliveira explains why he created the language. "When I was programming in full Python mode I missed some of the things I'd normally get from a more statically typed environment." He goes on to say, "what I missed the most was the well thought out .net architecture and its great support for Unicode, globalization and web style applications."

Just recently Boo 0.7.7 was released, touting new features primarily involving support for consuming generic methods. For example, in Boo 0.7.6 one could only use generics with external types. Boo 0.7.7 improved generics support, allowing the programmer to use generics with internal types (which are defined in the Boo assemblies that are to be compiled). It also improved the verify pipeline, making it available on Mono (the pipeline in 0.7.6 only worked well in .Net) and optimized string handling (allowing the coder to generate Gendarme/FXcop-compliant assemblies). Type inference (which is a work in progress) was improved and the release fixed a handful of bugs, mostly inconsistencies in the Boo compiler.

Boo releases come frequently (see the Boo Release Schedule). The team uploads a new sub-release every month to fix bugs and add a few features. The next major version, Boo 0.8, is in active development and the team is working on improving the compiler even more. Although there isn't much information on the upcoming 0.8 release, the bug tracker has some reported issues with the improved lexical and method syntax as well as some interpreter and duck typing improvements.

Boo was created to fill gaps in Python in order to make a programmer's job even easier. Its syntax makes programming a breeze and it can be extended to work in dozens of scenarios. Whether one wants to create a game, a web site or a GUI application, Boo can lighten the load. The programmer can concentrate on nitty-gritty programing in a different language, while Boo effortlessly interacts with that language. Almost every other module can be found in the .Net/Mono framework.


Comments (5 posted)

System Applications

Database Software

PostgreSQL Weekly News

The May 20, 2007 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.

Full Story (comments: none)

Embedded Systems

BusyBox 1.5.1 released

Stable version 1.5.1 of BusyBox, a collection of command line utilities for embedded systems, is out with the following changes: "This is a bugfix-only release, with fixes to hdparm, hush, ifupdown, ps and sed."

Comments (none posted)


eds-sync released as open-source

Nokia has released eds-sync as open-source software. "Eds-sync is the component that synchronizes remote Telepathy rosters (= instant messaging contact list stored on server) to a local evolution-data-server. After initial synchronization, it keeps the rosters in sync with the local addressbook. It currently will only work correctly with the Nokia specific eds-dbus, and it requires the addressbook UI components to do some special actions too."

Full Story (comments: none)

Web Site Development

Chandler Server 0.6.1 updated

Release 0.6.1 of Chandler Server is out with new capabilities. "Chandler Server is a database, server, and web UI for storing and managing personal information such as events and tasks. It implements standards such as CalDAV, WebDAV, Atom, and Atom Publishing Protocol."

Full Story (comments: none)

Silva 2.0 released

Version 2.0 of the Silva content management system has been announced. "This architectural release targets Zope 2.10 and higher and takes advantage of much of the new technology. Infrae has striven to keep Silva 2.0 almost feature identical to Silva 1.6, while refactoring and rebuilding large parts of the system ‘under the hood’, using advances in Zope and Five infrastructure. This major reworking should especially help extension developers by expanding the set of tools available to them."

Full Story (comments: none)

Desktop Applications

Audio Applications

Audacity 1.3.3 beta released

Beta version 1.3.3 of the Audacity audio editor has been released. "The Audacity Team is pleased to announce the release of Audacity 1.3.3 (beta), which contains numerous new features and capabilities beyond the 1.3.2 (beta) release. Because it is a work in progress and does not yet come with complete documentation or translations into foreign languages, it is recommended for more advanced users."

Comments (none posted)

eSpeak 1.25 released

Version 1.25 of eSpeak, a text to speech synthesis converter, is out with improvements to the French, Czech, Slovak, Norwegian, Croatian, and Portuguese language support.

Comments (none posted)

jack_mixer version 5 released

Version 5 of jack_mixer has been announced. "jack_mixer is GTK (2.x) JACK audio mixer with look similar to it`s hardware counterparts. It has lot of useful features, apart from being able to mix multiple JACK audio streams. Changes since version 4: fix building against older jack versions (i.e. not latest svn)"

Full Story (comments: none)

JackMixDesk pre 0.3 released

Version pre 0.3 of JackMixDesk is out with the following changes: "The nasty bug that maximum volume wasn't reachable after moving the slider is gone. Made it useless. Didn't see that... The interface is prepared for knob resizing. If you use phat svn sources change the KNOB_SIZE in mixdesk_gtk.c to maybe 32. You'll also get scroll support."

Full Story (comments: none)

XMMS2 DrJekyll released

The DrJekyll release of XMMS2, the rewrite of the XMMS music player, is out. "This has been one of the longest release periods in the history of XMMS2. A lot of big changes has been merged, including the long awaited Collections API. We have also switched to a new build-system. The XMMS2 Team would like to extend a big THANK YOU to all who have helped out with this release, a lot of bug testing and bug fixing by new faces has been seen. Hope to you all around for the next release!"

Full Story (comments: none)

Desktop Environments

GNOME 2.19.2 released

Version 2.19.2 of the GNOME desktop environment has been released. "This is our second development release on our road towards GNOME 2.20.0, which will be released in September 2007. New features are still arriving, so your mission is simple : Go download it. Go compile it. Go test it. And go hack on it, document it, translate it, fix it."

Full Story (comments: none)

GARNOME 2.19.2 released

Version 2.19.2 of GARNOME, the bleeding edge GNOME distribution, is out. "This release includes all of GNOME 2.19.2 plus a bunch of updates that were released after the GNOME freeze date. This is the second release in the unstable cycle, with more features, more fixes and yet more madness added. It is for anyone who wants to get his hands dirty on the development branch, or who'd like to get a peek at future features. If you want to help spot issues in GARNOME, (or, better yet, fix 'em ;-) this release is for you as well."

Full Story (comments: none)

GNOME Software Announcements

The following new GNOME software has been announced this week: You can find more new GNOME software releases at

Comments (none posted)

KDE 3.5.7 released

Maintenance release version 3.5.7 of the K Desktop Environment (KDE) is out. "This release has a renewed focus on KDE PIM applications. KAddressBook, KOrganizer and KAlarm received attention with bugfixes, while KMail additionally witnessed new features and improvements with both interface work and IMAP handling: it can manage IMAP quota and copy and move all folders."

Full Story (comments: none)

The HIG Hunting Season Continues (KDE.News)

KDE.News reports that HIG hunting continues, with a focus on spelling and font settings. "The HIG Hunting Season for KDE 4 continues. This week we focus is on the written word with a new checklist on text and fonts. Are you impatiently waiting for KDE 4? Would you like to help KDE make this release a full success? Then get involved! Read on for more details."

Comments (2 posted)

KDE Commit-Digest (KDE.News)

The May 20, 2007 edition of the KDE Commit-Digest has been announced. The content summary says: "User-visible functionality added in Plasma. Support for animated SVG images in SuperKaramba. Kanagram becomes the latest application to adopt a scalable, SVG-based interface. Initial code imported, as a statement of intention, to support interaction with Exchange servers and the Akonadi PIM data store. Small, incremental improvements in KTorrent. A new round of Coverity fixes, particularly in KOffice and Amarok. Work on loading ODF shapes through Flake in KOffice. KDevelop gets improved support for .ui (user interface layout) files. Branches of KMail, KPPP, Konversation and Kopete created to enable the integration of Solid-based connection management and notification. KDE 3.5.7 is tagged for release early next week."

Comments (none posted)

KDE Software Announcements

The following new KDE software has been announced this week: You can find more new KDE software releases at

Comments (none posted)

Xorg Software Announcements

The following new Xorg software has been announced this week: More information can be found on the X.Org Foundation wiki.

Comments (none posted)

Desktop Publishing

LyX version 1.5.0 (beta 3) is released

Version 1.5.0 beta 3 of LyX, a GUI front-end to the TeX typesetting system, is out. "Compared with the previous beta release we have fixed several bugs and added some improvements, namely a new inset to support code listings. We have enabled the converter file cache by default. Internally we have renamed files to follow a consistent name pattern, this will allow an easier navigation of the source code thus simplifying bug fixing. Compared with the latest stable release, this is the culmination of one year of hard work, and we sincerely hope you will enjoy the results."

Full Story (comments: none)

WIKINDX 3.6.4 Released (SourceForge)

Version 3.6.4 of WIKINDX has been released, this release includes Focus Feature enhancements and minor bug fixes. "WIKINDX is a free single or multi-user research environment storing searchable bibliographies, notes and citations and integrated with a WYSIWYG word processor for the authoring of publication-ready articles automatically formatted to chosen citation styles."

Comments (none posted)


Ember progress report (WorldForge)

The WorldForge virtual world project presents a progress report on Ember, which is projected to have an 0.5.0 release soon. "The main focus of 0.5.0 is on providing better authoring tools. The goal is to allow players to edit the whole world within Ember. One major component that has been missing so far has been a working entity editor. This has now been added to Ember."

Comments (none posted)

GUI Packages

wxWidgets 2.8.4 released

Version 2.8.4 of wxWidgets, a cross-platform GUI toolkit, has been announced. "This is mainly a bug fix release".

Comments (none posted)


Wine-doors 0.1pre1 released (GnomeDesktop) looks at the 0.1 pre 1 release of Wine-doors. "Wine-doors is an application designed to make installing windows software on Linux, Solaris or other Unix systems easier. Wine-doors is essentially a package management tool for windows software on Linux systems. Most Linux desktop users are familiar with package management style application delivery, so it made sense to apply this model to windows software."

Comments (none posted)

Medical Applications

ClearHealth 2.0 Developer Preview Demo (LinuxMedNews)

LinuxMedNews has announced the availability of Developer Preview 2.0 of the ClearHealth 2.0 electronic medical record system. "After more than a year of active design and development ClearHealth 2.0 is about to lift off. A developer preview demonstration is available at but please note that it is a BETA pre-release edition of CH 2.0 undoubtedly with some rough edges remaining to be fixed."

Comments (none posted)

FreeMED 0.8.4 and REMITT 0.3.3 released (LinuxMedNews)

LinuxMedNews has announced the release of FreeMED 0.8.4 and REMITT 0.3.3. "FreeMED version 0.8.4 and REMITT version 0.3.3 have been formally released on Tuesday, May 22, 2007. They include support for CMS's mandated NPI standard, as well as many other improvements and community contributed bugfixes and features. FreeMED is an GPL-licensed opensource EMR/PM suite ..."

Comments (none posted)

Music Applications

Free Music Instrument Tuner 0.97.5 released

Version 0.97.5 of Free Music Instrument Tuner is out with some small updates and bug fixes.

Full Story (comments: none)

LV2 Simple Sine Generator plugin

The LV2 Simple Sine Generator plugin project has been announced. "LV2 Simple Sine Generator is very simple plugin, generating sine when feed with notes. It should load in any host supporting midi port LV2 extension, i.e. elven, ingen, lv2_jack_host and zynjacku. Plugin should be usable for testing basic synth functionality and as simple example synth plugin to start with if you want to code your own LV2 synth plugin."

Full Story (comments: none)

PHASEX 0.10.2 released

Version 0.10.2 of PHASEX, the [P]hase [H]armonic [A]dvanced [S]ynthesis [EX]periment software synthesizer is out. "This release contains many fixes, most notably better support for older GTK versions. PHASEX now works with GTK2 versions as low as 2.4.x, which should help most of the build issues on older distros."

Full Story (comments: none)

pyliblo 0.6 announced

Version 0.6 of pyliblo is out with a number of new features. "pyliblo is a Python wrapper for the liblo OSC library. It supports almost the complete functionality of liblo, allowing you to send and receive OSC messages using a nice and simple Python API."

Full Story (comments: none)

Office Suites

unoconv: convert between any document format supported by OpenOffice

The first release of unoconv has been announced. "Unoconv converts between any document format that OpenOffice understands. It uses OpenOffice's UNO bindings for non-interactive conversion of documents. Supported document formats include Open Document Format (.odf), MS Word (.doc), MS Office Open/MS OOXML (.xml), Portable Document Format (.pdf), HTML, XHTML, RTF, Docbook (.xml), and more. (24 document formats in total)".

Full Story (comments: 1)

RSS Software

LeafRSS 0.9 released (SourceForge)

Version 0.9 of LeafRSS, a simple RSS aggregator that learns to filter out unwanted articles from multiple feeds automatically, has been announced. "We are proud to announce the release of version 0.9 or LeafRSS! This version includes full smarty template integration, as well as options to embed the articles in another web page, or even to allow the output of the filter as an RSS feed."

Comments (none posted)

Web Browsers

Mozilla Firefox RC 3 announced (MozillaZine)

Release candidate 3 of Mozilla Firefox has been announced. "A third set of release candidate builds for the forthcoming Mozilla Firefox release are now available for testing. Testers can obtain these builds from the rc3 directory on Any problems discovered by users can be posted to Firefox Release Candidate 3 announcement on Currently in a pre-alpha state, the QMO site was launched last week to improve the community-based Mozilla quality assurance effort. Firefox is likely to be released simultaneously with Firefox, which will be the final release of the 1.5.0.x line before the Mozilla Corporation ends official support."

Comments (none posted)

Languages and Tools


Caml Weekly News

The May 22, 2007 edition of the Caml Weekly News is out with new Caml language articles.

Full Story (comments: none)


Python-URL! - weekly Python news and links

The May 21, 2007 edition of the Python-URL! is online with a new collection of Python article links.

Full Story (comments: none)


Tcl-URL! - weekly Tcl news and links

The May 21, 2007 edition of the Tcl-URL! is online with new Tcl/Tk articles and resources.

Full Story (comments: none)


XML Parser Benchmarks: Part 2 (O'Reilly)

Matthias Farwick and Michael Hafner compare XML parsers in part two of an O'Reilly article series. "In part 1 of this series we showed you the results of our event-driven parser benchmarks. The outcome of these benchmarks showed that the LIBXML2 SAX-like parser in C is superior over the other tested parsers. In second place followed the two Java pull-parser implementations Javolution and Woodstox. In this part of the series we will show you how the object model parser performed in our tests."

Comments (1 posted)


libnfnetlink_conntrack 0.0.75 released

Version 0.0.75 of libnfnetlink_conntrack, it features a lot of bug fixes and new capabilities. "libnetfilter_conntrack is a userspace library providing a programming interface (API) to the in-kernel connection tracking state table."

Full Story (comments: none)

Version Control

GIT 1.5.2 released

Version 1.5.2 of GIT has been announced, it adds many new capabilities and bug fixes.

Full Story (comments: none)

Page editor: Forrest Cook
Next page: Linux in the news>>

Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds