Archive for the ‘Software Development’ Category

Developer happiness

Tuesday, January 13th, 2009

Are you a developer of software? Could you be happier? If so, come along to the JISC Developer Happiness Days event!

dev8d.jpg

From the website:

Over four intensive days we’re bringing together the cream of the crop of educational software developers along with coders from other sectors, users, and technological tinkerers in an exciting new forum.

Share your skills and knowledge with the coding community in a stimulating and fun environment and come away with new skills, fresh contacts – and you might even win a prize.

The top ideas generated at the event will be documented, publicised and made available to the community.

This innovative event includes:

  • Pre-event workshops with code labs to share knowledge and develop skills
  • The ‘developer decathlon’: a two-day team coding session with prizes for the best code
  • A community-building day bringing together developers based around software platforms
  • Roll-your-own-event: space and time for your own community-specific event or workshop

I think this will be an excellent opportunity for developers from the education sector especially, but also from beyond this, to get together and share ideas and experience. And drink beer.

It’s all happening in London, in and around the Birkbeck College, between the 9th-13th February.

The tag for this event is ‘dev8d’.

Europeana, numbers and scalable architectures

Tuesday, December 9th, 2008

I just got around to reading the press release issued after the collapse of Europeana (previously the more easily pronounced ‘European Digital Library’) following its launch a couple of weeks ago. If you go to the site now, you are greeted with the following message:

The Europeana site is temporarily not accessible due to overwhelming interest after its launch (10 million hits per hour).

We are doing our utmost to reopen Europeana in a more robust version as soon as possible.

We will be back by mid-December.

(my emphases)

The press release explains what happened. Or rather, it explains whose fault it is that the site couldn’t cope with the traffic it received. The blame is laid squarely at those pesky ‘experts’ who predicted a peak demand of 5 million hits per hour, and at the public who disregarded this and whose demand reached a peak of 10 million hits per hour. Or 13 million hits. Or nearly 20 million hits. Each of which is claimed in the press release or on the website. We’ll come back to these numbers in a moment.

Piecing together the limited information provided by the website, press release, and a recording of the press-conference following the site being taken down, one arrives at the following sequence of events:

  1. Europeana is launched, following a good deal of publicity
  2. Peak usage approaches 8/10/13/nearly-20 million hits. Site begins to behave unpredictably and to become unresponsive
  3. Hardware capacity doubled from 3 servers to 6 servers
  4. Decision made to take site down to ‘ease pressure’ on it.

In a breath-taking display of ’spin’, this rather faltering start to Europeana’s fortunes is being hailed as a very positive development. According to spokesman Martin Selmayr in a recorded press conference it demonstrates unequivocally that there is a huge demand for the service. Rather intriguingly we are told that the service fell over because thousands of people were searching for the query term ‘Mona Lisa’ at exactly the same time. When one of the journalists points out that this seems a little suspicious, the spokesman tells him that this is because the press specifically used the ‘Mona Lisa’ as its example when discussing the impending launch of the service – so the crash is partly the press’s fault as well! When another journalist suggests that thousands of concurrent requests for the same resource has some of the characteristics of a distributed-denial-of-service attack, the response is to claim that actually there was a wide range of content searched for. I sensed that the assembled press corps were becoming a little puzzled by this point. Yet another journalist asked why the site would be down until mid-December. Apparently, this is to ‘take pressure off the system’, which doesn’t make a whole lot of sense.

So, what now? It is possible to speculate based on what is hinted at in the press release. Clearly, Europeana did not scale to cope with 10 million hits an hour – double what was predicted. One might suppose that Europeana would experience a peak-load at launch, given the publicity, which might then ease off a little. The Europeana team have already tried to respond by ’scaling out’ – adding more hardware. In fact they have doubled the hardware, to no avail. If scaling-out was going to work, then why not double again? Surely the cost is not the issue? I suggest that someone has realised that scaling out will not work, and that some deeper adjustments to the system’s architecture will need to be done. In which case, I wonder if it can be achieved by mid-December. And why did they think that scaling out would work in the first place?

Europeana seems to be driven by numbers. This seems like an increasingly anachronistic approach to the design and measurement of success of a web-service. A memo about the service states:

The objective of the European Commission is that in 2010, the number of digitised works available online through Europeana should reach 10 million.

Numbers again…. No matter what estimations have been calculated, or plans been laid, this number can’t be much more than arbitrary. Why 10 million? Why not 20? Or 5?. These metrics are just not helpful or interesting. If Europeana hadn’t crashed it would be making 2 million objects available now, apparently. I have no way of appreciating the benefit of 5 times as many objects. A better statement would have talked about growth in terms of responding to user feedback perhaps. (Incidentally, in this memo there is also a table of percentage contributions from EU ‘member states’ to Europeana – France has contributed 52% of the content so far, compared with 10% from the UK).

When you’re facing a global scale of usage you need a global-scale architecture to cope. Global isn’t a number. Global implies that you might need to keep growing. Continuously. If your service is an instant hit, you might even need to grow rapidly. There is much which has been learned and developed about this in recent years, and new architectures have evolved to meet huge levels of demand. Another sensible strategy which has emerged is the ’soft-launch’. Launch the application, and allow word to spread; give yourself some breathing space to tweak the application, fix bugs, and grow. So, while the Europeana engineers are working away to try to meet their mid-December deadline, I urge them to consider two things:

  • forget the numbers you’ve been saddled with – get a global-scale architecture in place, something which allows you to scale out at will, regardless of the numbers. If this means sacrificing functionality then do it nonetheless.
  • don’t be persuaded into a big launch with fanfares – do a soft launch and allow some time for the system to shake-down and for its reputation to grow. If it’s a good service, the users will come.

I hope Europeana is allowed to launch when it’s good and ready – and I hope that it does launch. And I hope that, in time, we can learn from the mistakes of this ambitious project, rather than be fed marketing claims and face-saving spin.

COPAC gets RESTful

Wednesday, October 1st, 2008

Just a quick pointer to the really encouraging announcement from the COPAC development blog that COPAC individual COPAC records are now addressed with a persistent, and RESTful(ish) URL. The example given is:

…the work “China tide : the revealing story of the Hong Kong exodus to Canada” has a Copac Record Number of 72008715609 and can be linked to with the url http://copac.ac.uk/crn/72008715609

The records are marked up as MODS XML – but this of secondary importance to me compared to the fact that the records are easily and reliably addressed. I note that Owen Stephens has already commented, saying:

….I need some time/space to think about this, but I’m sure there is some stuff to be exploited here.

My sentiments also.

This is excellent news – it allows a significant service to participate in a resource-oriented-architecture to a greater degree. Well done the COPAC team!

The opportunistic developer is allergic to soap

Monday, June 9th, 2008

For some time now I’ve been thinking about what I think of as the ascendency of the opportunistic developer in web application development. The phrase has unfortunate connotations for those who remember the ‘personas’ meme from some years ago when it was revealed that Microsoft had characterised three type of developer for three of its software development products. [1] and [2]. This post is not directly related to these archetypes (the opportunistic developer was called ‘Mort’ in the meme, a name which has become derogatory). Rather, I’m talking abut the developer who, regardless of their ability or their occupation wants to make quick use of something when they discover it, typically on the web.

The opportunistic developer prefers to use someone else’s service/component in the majority of cases. They will create their own software when necessary, and will choose to do so under certain circumstances, but they will accommodate a certain amount of compromise if it means they can get away with using something off-the-shelf. The opportunistic developer is still a developer, as opposed to a power user: they will still write code, just as little as they can get away with.

The proliferation of freely available web-services with simple APIs has created a happy-hunting-ground for the opportunistic developer – a few years ago they were inhibited by a lack of choice of available services to use. In addition to the usual concerns – stability, provenance, price… ease of use is becoming a more important differentiator.

In the JISC Information Environment, the norm has been to develop SOAP interfaces to services, almost by default. There are, no doubt, reasons why this has made sense in the past. However, if there is one thing which became abundantly clear at last week’s IE Demonstrator/CRIG event, it is that institutional repository developers do not want to have to use SOAP interfaces. Aside from the hard-core which is interested in pushing REST as the approach to use in repository-service interactions, the consensus was that the use of SOAP for public service interfaces, rather than being an enabling mechanism, is actually a barrier to adoption.

Whether RESTful or not, services are going to have to start having very good reasons for not offering very simple APIs over HTTP, if they are to attract the opportunistic developer.

Inadvertent spamming and calendar woes

Thursday, May 15th, 2008

At the University of Bath, where UKOLN is based, we use an enterprise calendar solution from Oracle. It’s OK, no worse than some others I’ve used, but not great. It does have a client for Mac OSX in its favour…. but I don’t really want to use a dedicated client when I have systems and workflows with dependencies on the Mac’s built in calendar application, iCal. iCal is not particularly great either, but it is integrated into Mac OSX and there are advantages to be had from this. I have a few colleagues who would like to be able to use MS Outlook for similar reasons.

Primarily, I want to be able to keep the calendars on my iPhone and my MacBook in sync. Ideally, I want all of this to be synchronised with the ‘work’ calendar on the Oracle system. Prior to owning the iPhone, I was a long-time Palm user and had configured my Palm to synchronise with the Oracle system via SyncML using the excellent tools from Synthesis. The Palm became the conduit between my MacBook and the Oracle system which while not ideal, was a manageable solution. But I bought the iPhone partly to replace the Palm as a PDA, and having to carry the Palm around to act as a conduit between various calendar systems is not ideal.

The most likely medium-term solution to this will be a promised iPhone SyncML client from Synthesis, which might be available sometime this year once Apple sort out their ‘official’ application supply chain arrangements.

In the meantime, today I decided to see how far I could get using the iCalendar file format for calendar data exchange. The Oracle server does not expose iCalendar files except through SyncML, but it does allow them to be exported and imported via the client. I wondered if the ‘clunky’ process of exporting the work calendar every morning and importing this file into iCal might still be less painful than using a Palm as a syncing device. So I imported the iCalendar file into a new calendar in the iCal application, and experimented with a few things.

When I had finished, I decided to delete local copy of the entire calendar, and it was here that I encountered the dialogue box telling me that doing so would send a notification that this ‘event’ had been deleted. There were two buttons, ‘Cancel’ and ‘Delete and Notify’. I wanted to ‘delete’ but I didn’t want to notify anyone…. I ‘cancelled’. Trying to delete a single ‘event’ in the calendar gave the same message: I clicked ‘Delete and Notify’ to see what would happen. A ‘new email’ window popped up, with my email address pre-filled, and the body of the message explaining that this event had been cancelled.

Now I have real trust in Mac OSX. It’s not always perfect, but it’s rarely bizarre and annoying like some other popular operating system user interfaces I could mention. So I went ahead and deleted the entire local copy of the calendar, pressing the ‘Delete and Notify’ button….. By the time I had reacted sufficiently to get the network cable unplugged (I wasted precious seconds trying to cancel the process and then disabling the WIFI device before remembering I was connected with an ethernet cable) about 70 email messages had been sent to various colleagues. By the time I regained control of my laptop, around 400 messages had been queued up to be sent….

After a little investigation, it transpires that the previous version (Tiger) of Mac OSX’s iCal had three buttons for this dialogue, the other button allowing you to delete without notifying. So this is just a strange oversight perhaps. But it is easy to find forum threads where people have complained about this. It’s enough of a problem that John Maisey has released iCal Reply Checker – a utility which simply addresses this problem. It works fine – although it is a little disconcerting that the buttons haven’t changed their labels, only their effect.

Come on Apple – sort it out!

Digital library pipeline for a million books.

Sunday, March 16th, 2008

I was pleased to be invited by Brian Fuchs to a ‘Million Books Workshop’ at Imperial College, London last Friday. A fascinating day, in the company of what was, for me, an unusual group of 20-30 linguists, classical scholars and computer scientists. The morning session consisted of three presentations (following an introduction from Gregory Crane which I missed thanks to the increasingly awful transport system between London and the South West) which brought us up to speed with some advances in OCR, computer aided text analysis and translation, and classification. The presentations were intended to form an ordered progression:

  1. From Image to Text: OCR and Mass Digitisation (Dr. Thomas Breuel, DFKI and Technical University Kaiserslautern)
  2. From Text to Information: Machine Translation and Syntax Recognition (David Smith, Johns Hopkins University, & David Bamman, Perseus Project)
  3. From Information to Learning: Machine Learning and Classification Techniques (David Mimno, U Mass, Amherst)

Listening to these presentations, I quickly found myself well outside of my comfort zone, in terms of both the science and the domain (classical literature), so it was a challenging and exhilarating morning! It was difficult to take comprehensive notes as I had to really concentrate on the presentations at times in order to follow them – the pace was pretty smart, with jargon and ‘in jokes’ galore.

David Smith, Johns Hopkins University gave a fascinating and entertaining presentation which outlined some of the challenges, and advances, in language parsing and translation. He pointed out that although the structured view of the semantic web is a seductive one, even the newer online, digital genres such as email, blogs mostly use unstructured or semi-structured text. However, parsing free text is very difficult, especially with the growing scale and diversity of texts available on the web. To illustrate this he employed a series of (sometimes amusing) translations from the Google translation service. The best available technology today uses supervised machine learning techniques to build a treebank. An alternative approach employs semi-supervised, modelling techniques. Parallel texts in different languages are useful but, for some languages, only the Universal Declaration of Human Rights exists as a parallel text! As an aside, David pointed to the potential advantage in search engines searching several languages: if you enter your query in English for example, by searching resources in other languages, the search engine automatically expands the search, utilises synonyms etc. ‘for free’. This can then be more effective than monolingual searching. David offered a future based in pragmatism: translation support rather than fluent translation.

David Mimno presented on classification, sequences & topic modelling. In an interesting talk, it was the visualisation (as a topical transfer graph) of topic relations extrapolated from citations in a set of scholarly communications which really got the audience engaged – a series of questions ensued before David could move on. He illustrated his work with accessible examples: for example, it turned out from one experiment that the single term most likely to identify email spam was, believe it or not, the word “red” showing in the markup, owing to the fact that “only spammers use red text”! Apparently, he had a system which could classify any of Shakespeare’s plays as tragedy, comedy or history…. with the exception of Romeo and Juliet, which comes out as a comedy for some reason….

The takeaway for me was that some of the technology in these spaces is maturing. Thomas Breuel, for instance, made a compelling case for really effective OCR (Optical Character Recognition) in his description of the open-source OCRopus project, which he leads and which is sponsored by Google. Building on previous systems like the character recognition system Tesseract, OCRopus employs a modular design with components which offer the following workflow, focussing on the processing of scanned books:

layout analysis -> isolated character recognition -> statistical language modelling – > text

The project is heading towards a beta release this year, and the team plan to create a deployment ‘bundle’ in the form of an Amazon EC2 AMI. I didn’t quite catch the details but I think they have found a way to monetise this through the Amazon referral program, which sounds interesting. In any case, the idea is that one could take the AMI, deploy it, run it for a few hours to process a particular scan, and then shut it down again – potentially a very cost-effective way of proceeding. Thomas made the point that, as OCR technology continues to improve, we are likely to want to process scans of books several times. He explained how the project was aiming towards a “full digital library pipeline”, a system which could be deployed from a connected laptop: with the new affordability of powerful digital cameras, a researcher might photograph a book’s pages themselves before feeding the resulting image into the OCRopus workflow OCRopus can handle the distortion effect of non-flat pages very effectively). Another interesting aspect of this work is the distributed parallel training which underpins the statistical language modelling: a large model is achieved by combining many little models created by many people, through the web. If you are interested in this area, then you should also check out the hOCR format specification and tools.

I had been invited to this workshop because of my role and interest in the deployment of services at a community and network level. I joined a panel at the the very end of the day where we were invited to consider what services and infrastructure might be required, in the UK, to support the digitisation and useful processing of a ‘million books’. We didn’t get very far with this because we had run out of time and, I suspect, energy by this point, but the question remains…. I’ll be picking this up with some colleagues in due course.

Fascinating day, and topped of with a quick pint standing outside a packed London pub in a light drizzle, which was actually a refreshing and pleasant way to conclude!

SOA and reusable knowledge

Tuesday, February 26th, 2008

After a few years of reading about (and, once upon a time, practising) Service Oriented Architecture (SOA) development, I was interested to read Galen Gruman’s article in Infoworld on its take-up in the mainstream, commercial world.

I got interested in SOA very early on. Not surprising really: as an enterprise developer (in Higher Education) with a background in web technologies, involved in mainly Java-based projects, I already had the mindset with which SOA would fit naturally. Specifically, it was the promise of distributed, re-usable components which appealed (and which was touted as the main benefit by commercial vendors). But after a couple of years of experience with this approach, and with the very slowly maturing stack of standards known as ‘WS-*’, I began to doubt. I noticed how much effort went into ‘building for the future’, without this ‘benefit’ being clearly realised very often.

Yet SOA seemed to bring benefits nonetheless. We found that our various development partnerships with commercial vendors became easier to manage, for instance, with a shared SOA approach. But the real pay-off was in the discipline it demanded. We especially had to take pains to better understand the processes and workflows. And it was this latter aspect, I think, that offered the most benefit to the developers, and to the organisation. When developers start to think this way, they are forced to consider the ‘business’ they are developing for, and they will tend to build more sensibly. Towards the end of my tenure as an HE enterprise developer, I was spending more and more time modelling the business.

I would claim that, by the time I left, the technical team within which I worked had a better overview of the business processes of the university than any other part of the organisation. We were able to successfully re-apply that knowledge to subsequent development, to great effect.

Quoting Ian Findley, an analyst for AMR Research:

Another danger seen from the SOA survey is that the main benefit that the vendors sell around SOA — code reuse — is not the real benefit that early SOA adopters have gotten. Often the code from project A is irrelevant to project B, he noted.[...]Findley noted that the projects don’t happen faster because of code reuse. Instead, it is the changed mindset that SOA brings to development and management of technology as a whole that provides the real benefit, Findley said.

I find this reassuring – especially in the light of the growing community effort focussed on the The e-Framework for Education and Research. I think (I hope, anyway) that the e-Framework is side-stepping the commercial focus on re-usability, instead emphasising the knowledge to be gained from adopting an SOA approach, with the intention that this can help organisations plan and prioritise their development efforts. While ‘re-use’ is a stated potential benefit of the e-Framework, it refers more to the re-use of understanding, documentation & design.

The real benefit is to be found in re-usable knowledge, not re-usable code. Of course, as is often the case with a real benefit, it is harder to measure….

A minor response to Repositories thru the looking glass

Thursday, February 14th, 2008

In Repositories thru the looking glass over on the eFoundations blog, Andy Powell gives a summary of a keynote he gave to the Vala Conference last week. It’s interesting stuff, and I will take the time to look at the presentation slides as well. I mostly agree (vehemently in some instances) with Andy’s points, though I do find myself questioning some parts of this, so I’ll quote some snippets and make a few comments here.

Firstly, that our current preoccupation with the building and filling of ‘repositories’ (particularly ‘institutional repositories’) rather than the act of surfacing scholarly material on the Web means that we are focusing on the means rather than the end (open access)

It’s hard to deny that there is a current preoccupation with establishing repository systems of one kind or another and populating them with content, and also that there is a focus on institutional deployments. However, I’m not convinced that open access is (or at least is going to remain) the sole driver behind the development of institutional repositories. From an institutional perspective, it absolutely makes sense to want to manage the outputs of research conducted within the auspices of that institution.

A common use for an institutional repository is to house eprints. Were it not for the open-access imperative, we might have expected software designed to manage eprints to fall somewhere between a document-management and a content-management system – both familiar to a large number of institutions. I think it is interesting that it might be considered to be open-access which has skewed the development of repository software in some respects – the community has largely started from scratch, building repository software, where it might have made more sense to simply adapt what was there.

So I half agree with Andy – we do seem to be focussed on the means, but I think I am sympathetic to those (institutions at least) who find themselves pre-occupied with this.

Secondly, that our focus on the ‘institution’ as the home of repository services is not aligned with the social networks used by scholars, meaning that we will find it very difficult to build tools that are compelling to those people we want to use them. As a result, we resort to mandates and other forms of coercion in recognition that we have not, so far, built services that people actually want to use. We have promoted the needs of institutions over the needs of individuals.
Instead, we need to focus on building and/or using global scholarly social networks based on global repository services.

There are four sentences here, and I completely agree with the first three and a half! I find myself wondering who ‘we’ are in this. Now that institutional repositories are becoming a reality, the ‘we’ is going to expand to include people who simply have institutional interests – who have no real interest in open-access for example beyond it being a requirement for them to support. The MIS Manager of your average institution, for example, will start to get involved once institutional repositories get embedded into the business which is a university. The half sentence I don’t quite buy is the “global repository services”. Why can’t we “focus on building and/or using global scholarly social networks” (which I support) based on institutional repository services? We don’t have a problem with institutional web sites do we? Or institutional library OPACs? We have certainly managed to network the latter on a global scale, and built interesting services around this….

Finally, that the ’service oriented’ approaches that we have tended to adopt in standards like the OAI-PMH, SRW/SRU and OpenURL sit uncomfortably with the ‘resource oriented’ approach of the Web architecture and the Semantic Web. We need to recognise the importance of REST as an architectural style and adopt a ‘resource oriented’ approach at the technical level when building services.

Absolutely – couldn’t agree more. Yesterday, at a JISC committee meeting, I argued that a resource-oriented-architecture and the service-oriented-approaches being encouraged by the e-Framework could complement each other if intelligently and judiciously applied. Incidentally, last Friday, I attended an excellent CRIG workshop devoted to exploring the relevance of ReST to repositories. Matt Zumwalt of MediaShelf showed a working ReST interface on Fedora, and Oxford University’s Ben O’Steen used this to develop a client app, in real time, in Python.

I think we agree that the individual’s interests may often be orthogonal to those of the institution. This may have always been the case but it is, perhaps, increasingly an issue as recent developments and trends on the Web empower the individual at an accelerating rate. I wonder if the user-centric/institutional/global debate around repositories is just symptomatic of a tension about to become apparent all over the (institutional) Web?

Having said all this, when visiting the outer limits of repository software development, I am occasionally reminded of the Knight:

‘I see you’re admiring my little box.’ the Knight said in a friendly tone. `It’s my own invention — to keep clothes and sandwiches in. You see I carry it upside-down, so that the rain can’t get in.’
‘But the things can get OUT,’ Alice gently remarked. Do you know the lid’s open?

(from Alice Through the Looking Glass, via Project Gutenberg)

DataPortability – Facebook to play along

Wednesday, January 9th, 2008

Facebook, Google And Plaxo Join The DataPortability Workgroup. So, parts of the blogosphere are quite excited by the news that Facebook, previously criticised for being a closed system, has agreed to join the DataPortability Workgroup. According to Duncan Riley, the author of this TechCrunch post:

The DataPortability Workgroup is actively working to create the ‘DataPortability Reference Design’ to document the best practices for integrating existing open standards and protocols for maximum interoperability (and here’s the key area) to allow users to access their friends and media across all the applications, social networking sites and widgets that implement the design into their systems.

Of course we can only speculate on the real significance of this. While Facebook would not be impossible to copy and compete with a technical level, especially for someone with the resources of Google or Yahoo or the like, it is the established user-base, and consequently the brand, which would be very difficult to match.

It seems clear to me that Facebook has been looking for ways to open up access to its data – it has to in order to be able to exploit it beyond the simple ‘page view’ advertising model. But Facebook has already found this difficult – witness the strange mistakes they made with RSS and the Beacon debacle.

What the participation in the DataPortability initiative gains Facebook is three-fold:

  1. Facebook becomes immune to the ‘walled-garden’ accusation for the short/medium term
  2. Facebook is not alone in navigating the uncharted territory of social network portability
  3. If DataPortability actually delivers, it puts competitors on the same playing field as Facebook – rather than Facebook being scrutinised and expected to lead the way

However this pans out, it is certainly a boost for the credibility of the DataPortability initiative – I’ll be keeping an eye on this now.

Philosophy of scaffolding

Tuesday, January 8th, 2008

I’ve been having a look at Ruby on Rails again, now that version 2 has been released. Generally, I like what I find in this new release. Rails is opinionated software – it isn’t afraid to commit to an approach, rather than trying to be ‘all things to all men’. In a way, this is a continuation of the convention over configuration philosophy which underpins much of Rails’ design. For example SOAP services support has been moved out of the main release and made available as a plugin, while Rails has been refactored to support ReST functionality by default via ActiveResource.

One major change in Rails 2 does strike me a somewhat odd though: the decision to remove the ‘dynamic scaffolding’ from Rails 2 removes one of the very things which make Rails attractive to me. Dynamic scaffolding is the functionality which, in a Model View Controller (MVC) framework (like Rails), allows the developer to prototype the models and have controllers and views which support basic create, update and delete (CRUD) operations generated at run time. I have used Rails successfully as a very rapid prototyping framework, knocking up a basic web-application in real time, with the ‘customer’ sat beside me while I did so. Rails was the first tool I found which allowed me to do this – and it worked brilliantly, in part due to dynamic scaffolding. The thinking behind the removal of this, to my mind, extraordinarily useful functionality is unclear to me. It is explored by Steven Harms in his post, Is the rails 2.0 scaffold system philosophically ( not technically? ) broken?.

This post generated quite a long comment stream – much of which seems to miss the point and go off on tangents about what should or should not be ‘allowed’ to change in a major upgrade. Other comments point out that the developer can’t learn Rails properly if they are using dynamic scaffolding because the code is invisible to them. Somehow it doesn’t seem to matter that part of the appeal of Rails is how much you don’t have to learn. Martin-234 asks, reasonably:

Many older tutorials (and books) suggested a method of working models and relations like: generate model, scaffold, migrate, check, migrate, check… (e.g. the original blog-video and the depot tutorial) [...]What is the new preferred way of working?

I’m with Martin. While I understand that experienced rails developers might eschew dynamic scaffolding altogether, it has been a major factor in attracting new developers to Rails to date – I’m puzzled that it would be left out altogether now.

This story has a happy ending however. Having a look around, I found reference to the Scaffolding Extensions Plugin for Rails. Originally designed to augment and extend the existing dynamic scaffolding in Rails 1.x, it occurred to me to try it as a replacement for this lost functionality. Having installed it I immediately hit the following error:

ActionController::InvalidAuthenticityToken in CrudController

I mailed the developer, Jeremy Evans, with this issue and as much detail about my environment as I thought could be useful, and I’m pleased to say that I got an exemplary response with an explanation within 6 hours, followed by another response a couple of hours later with a patch attached to the message. (I won’t post the patch here as Jeremy is working on a fix for the codebase right now). Havin followed Jeremy’s instructions and applied the patch he supplied, this plugin is now working for me – which means I have dynamic scaffolding back, and better than before!

First-class support for open-source software – I urge any readers missing a dynamic-scaffolding capability for Rails 2 to look no further than Scaffolding Extensions Plugin for Rails.

Update: the the Scaffold Extensions plugin has now been updated (rev 89) to fix the issue I reported above.