Thursday, December 25, 2008

Ioke 0 released

I am very happy to announce the first release of Ioke!

Ioke is a dynamic language targeted at the Java Virtual Machine. It’s been designed from scratch to be a highly flexible general purpose language. It is a prototype-based programming language that is inspired by Io, Smalltalk, Lisp and Ruby.

Programming guide:

Ioke 0 is the first release of Ioke, and as such is not production ready. I would appreciate if people tried it out and reported bugs, thoughts and ideas.

- Strong, dynamic typing
- Prototype based object orientation
- Homoiconic language
- Simple syntax
- Powerful macro facilities
- Condition system
- Developed using TDD
- Documentation system that combines documentation with specs
- Wedded to the JVM

Tuesday, December 23, 2008

Paranamer 1.1.6 released

Many think that Java needs parameter names for methods to be accessible. The Java 6 team ran out of time to deliver the functionality, and the Java 7 team does not appear to have it on their radar (sadly).

Luckily Paranamer delivers parameter name access for Java classes for versions of Java 1.4 onwards.  It has two modes of operation : generating parameter names from source, and extracting parameter names from a class file's debug table (if present).

It is an ideal library to use for binding URLs to objects, command line arguments to components, and other configuration saving designs.  

Version of Paranamer 1.1.6 was released yesterday and fixed some bugs with both the source generating and bytecode extracting modes of Paranamer.

QDox 1.7 released

QDox is lagging a little in respect of Java 5 compatibility.  Yesterday saw the release of 1.7, and before that it lagged quite a lot.  See the changelog for details of the fixes and improved annotation support.

You would use QDox to parse Java source and make an object model.  It is pretty neat, but perhaps will be sidelined by Sun-sponsored equivalents that tap into the javac tool-chain. For now though this pioneering technology still serves a niche, and will push forward with releases in years to come.

If anyone wants to see an elegant code-base, that is was perfectly test-driven-designed and also see a simple use of BYacc/J & JFlex, this Joe Walnes project is one to look at.

Tuesday, December 16, 2008

CruiseControl.NET 1.4.2 Released

CruiseControl.Net 1.4.2 released

The full release notes are on the CruiseControl.Net wiki.

1.4.2 was a bug fix release to correct problems introduced in 1.4.1. The 1.4.1 release had over a hundred fixes and enhancements.

Work continues, with the introduction of user-based permissions around forcing and aborting builds expected for the next release.

Thursday, October 16, 2008

PicoContainer 2.6 + PicoContainer-Web 2.1 released

PicoContainer 2.6

From the relevant news page

New (since 2.5.1):
  • CompositeLifecycleStrategy supports a mix of LifecycleStrategies in one container tree
  • Method Injection changed to also allow a specific reflection method to be implicated
  • Reinjection added to allow components to be injected into a second time (reflection method injection only)
Changes (versus 2.5.1):
  • Permissions fix for AdaptingInjection
PicoContainer Web 2.1

From the relevant news page

New (since 2.0.1):
  • Above and beyond the capability of the web-technology in question (Struts/Webwork etc), actions can now require one or more of HttpServletRequest, HttpServletResponse and HttpSession to be injected.
ThoughWorkers involved: Paul Hammant. PicoContainer is worked on my many non-ThoughtWorkers too though!

Monday, May 19, 2008

London Geek Night - Mocking 28th May 2008

On Thursday May 28th 2008 there will be a Mocking focussed Geek Night at the ThoughtWorks London office, covering various Open Source Java mocking projects:

Mocking can make code more reliable, more comprehensible and allow you to spot problems in design long before your code is deployed. Speakers will include Steve Freeman and Nat Pryce, developers of JMock and Felix Leipold of ThoughtWorks.

Time permitting there will also be a mocking dojo to allow you to get


Saturday, May 10, 2008

PicoContainer 2.2 released

PicoContainer 2.2 has been released with a slew of new features and a bug fix.

The news page from the project's site details the changes.

For the uninitiated it is an container for components that follow the Inversion of Control and Dependency Injection  principles. When it first started as a project in 2003, it was the only container that did the auto wiring of Constructor Injection. There are plenty of choices in this field these days, but PicoContainer is still used inside Intellij IDEA and JIRA.  

Also using PicoContainer: Waffle is a Rails "convention over configuration" inspired web framework that some suggest is a deal more pleasant to develop with than Struts/WebWork.

Friday, May 2, 2008

Buildix 2.1 Released

I'm happy to announce that Buildix 2.1 is now available from

One of the major highlights of this release is that it now integrates with Mingle 2.0 and uses the wonderful new API they provide to make it a faster and more stable experience!

More info available at here.


Tuesday, April 22, 2008 article: Open source testing tools target varied tasks

On there is an article on open source testing tools. It is a thorough run down of the field. Of note from a ThoughtWorks point of view is our part in the field's history. Mark Aberdour (from OST) is quoted in the article:
"In functional testing there are a number of really great tools (Selenium, Abbot, Jameleon, jWebUnit, Marathon, Sahi, soapui, and Watin/Watir to name a few) with strong feature sets"
Those in bold were either started by ThoughtWorkers or one of the lead developers was a ThoughtWorker. It makes us proud!

Thursday, March 6, 2008

Selenium User Meetup videos

Meeting up at Google for the user evening was great fun.  It was short notice, but we managed to fill the 100 slots on the attendee list, and get two pieces where video recorded, while still leaving time for mingling. 

The first video was the lightening talks by the developers and some friends. Its up on YouTube.  Its 92 minutes long.  Dan Fabulich (ex of Bea, now Redfin) if he is not a star already, should be as his segment How not to run a Successful open source project is a very entertaining few minutes. Fast forward to 51 mins to see Fabulich by name, Fabulous by nature.
ThoughtWorks was represented by me (Paul Hammant) and Philippe Hanrigou.  My piece was on release roadmap (19 mins, 20 secs in), Philippe's was on Selenium-Grid (23 mins in). His featured a very impressive movie showing Selenium-Grid running dozens of windows on Philippe's MacBook.  Jennifer Bevan of Google also talked of their farm and use of Selenium for QA of some of the web applications, and the problems/successes of scaling (28 mins, 40 secs in).  The other segments were great too. Thanks to all the friends of ThoughtWorks who did a segment, and have helped make Selenium the success it is.

The second piece was a Q&A session (which we kinda had to cut short, because the lightening talks speakers were not following the suggested 5 minute limit :).  That was just the selenium developers (minus Nelson Sproul of Bea who could not make it).  See the video (18 mins)

We were at Google for two days in all. On Sunday 24th the developers met up and talked/coded through the day. On the Monday it was a regular work day for Google, so we were able to see the campus a bit more busy than the Sunday.  Planning the release of 1.0, and the assimilation of Simon Stewart's WebDriver into a 2.0 code-line was key.  Selenium users will be pleased to know that we talked about the two pending Flash/Flex enablers for Selenium that might get merged in shortly.  We sadly ran out of time, and could not speak about or merge in an Erlang driver for Selenium (coded in a matter of days by Brian O'Rourke before the meetup).

Tuesday, February 19, 2008

Selenium: User Event at Google on Monday

When ThoughtWorks open sourced Selenium many years ago, we kinda hoped it would be big. A coming of age of any technology/product is when a conference is organized around it.

Well, that day has come. On Monday 25th February (sorry that is not much notice) there will be a Selenium User Open Evening at the Googleplex in Mountain View, California. The ten or so coders that develop the various bits of Selenium will be there for a panel session and some lightning talks at 6:30pm. There will be nibbles too.

The other developers and I hope the audience will be pleased with what they see/hear.
Here is the official blurb:
With representatives from all the major Selenium projects on hand to present ideas, discuss the future of Selenium and answer audience questions, the Selenium Open Evening is an opportunity to get involved in the future of the project. With Selenium developers from as far apart as London, Tokyo and the US and Lightning Talks on related subjects, this is a great way to meet Selenium users and meet some of the other brightest minds in web testing and Agile development!
For those that do not know, Selenium is an open source web application functional testing technology that is cross platform, and targets Internet Explorer, Firefox and Safari. It is steerable from Java, C#, Ruby, Python, Perl (and more). For Firefox you can record/playback/save tests. Lastly it has a grid capability for massively distributed test runs.

Site links
The core (beginners) version -
Remote Control mode (advanced) -
The Firefox record/playback plug-in -
The Grid (distributed) technology -

Friday, February 8, 2008

White, automate windows applications

Its hosted here

Key features:
  • Automates Win32, WinForm, WPF and SWT applications
  • Hides the complexity of window messages and Microsoft UIAutomation library under object based API
  • Consistent API for all kinds of application
  • Use any .NET language
No need to learn any proprietory script. Use your favourite language/IDE/tools for writing scripts.

Sunday, January 20, 2008

Open Source: Provenance Idea

The Problem....

The QDox team were contacted about the provenance of their commits recently. Questions were posed because there is a project that uses QDox wanting to relocate to the Eclipse Foundation, and that the latter is pretty keen on ensuring there are no copyright issues after arrival. A fellow from that team in question contacted us all to ask questions. I wrote 4% of QDox apparently, though I think that's Joe being generous.

Lets summarize the concerns as follows:
  • Does any current or former employer of the committer/contributor reserves exclusivity in respect of the donated portions of code?
  • The portions in question were in fact authored by the committer/contributor and not mal-appropriated from another codebase (commercial or open source) obscuring their origin?
  • The committer/contributor is happy to see their contribution noted with a simple copyright that fits the entire work?
    • - For Apache that would be the very uniform: '(C) Apache Software Foundation, CCYY'
    • For Joe Walnes' QDox, the pragmatic: 'Copyright 2003-2006 Joe Walnes and QDox Project Team'
In short:
  • Are the portions of code donated by the committer/contributor correctly copyrighted?
Despite Joe being incredibly busy he has helped identify the contributions and the contacting of us directly for the Eclipse matter. But what if the QDox Christmas Party was hit by a meteorite though? What lasting way can you illustrate your attempts to secure provenance on the contributions, that will negate the need for actual conversation in latter months/years?

Provenance Commits Idea

If there a text file that new committers checked-in to source control signifying their forthcoming agreement on copyright, then we could have a permanent audit trail as to provenance for open source. The file would be from a template, and would be a fact-filled and pseudo-contractual claim by the person committing it. The template could look something like:
I {person}, in respect of my forthcoming commits to this project, in addition to my own implicit copyright, can also be claimed as copyright to {organization} in the year in which they are committed. I suggest that am authorized to do so my current employer, even though they normally retain exclusive rights to my software copyright by contract that I have with them.

{organization} may do whatever it seems appropriate with my contributions, without further consent from me, or my employers (past, present or future).

I suggest that this agreement dates from today, {today's date} until such time as I set an end date for my patronage of this project, or my death. In either case the copyright for any historical contributions I may have made are not called into question by the end of my patronage.

By my committing this text in a file to the source control this project for {organization}, using my user ID {user id} and password, I am attesting that it is in fact me, {person}, and this commit in effect is my electronic signature.

In the first paragraph, "this project" - would it need to be named explicitly? It could be that the location of the file in source control would be enough.

There are some conventions that would need to be legally accepted, like:
  1. source control is well understood beast that allows for contributions from authenticated and authorized users (committers).
  2. a text file contributed through a secure account without a physical signature is representative as legal consent.
  3. the whole business of publicly available source control is non-repudiable
The idea is that the new committer first takes a template, modifies and commits it via their new account as outlined Then, and only then, they carry on with real commits (work) for the project in question.

Consequential questions -

What if instead of an organization, or an individual, there was a more woolly group like "Foobar project team" that's not legally well defined?

Also, what of contributors (patch donators) as opposed to full blown committers? They do not normally get source control accounts.

Friday, January 11, 2008

Agile/OSS Presentation at ApacheCon 2008 EU

I'll be in Amsterdam from April 7 to April 11 for ApacheCon. The conference committee has graciously invited me to present at ApacheCon 2008 EU. Here's the abstract:

Where do Open Source and Agile Methods meet?
Come listen to one man’s tirade on the differences between his day job at an Agile consulting firm and his weekends with Apache and JBoss. Open Source and Agile are often preferred by the same people, but do they succeed or fail for the same reasons? This session compares and contrasts open source projects with agile projects along several key dimensions: team size, co-location, communication, feedback loops, testing, time to market, and leadership structure.