Interesting topic. Congratulations to toxi for being brave enough to state his opinions, and the same to Ben and Casey for staying calm and addressing it seriously. I think this debate is a sign of health.
I remember sitting in a cafe in Barcelona two years ago, discussing a very similiar issue with Toxi (sometimes known as Karsten). Karsten was lamenting the fact that Processing syntax does not use OOP. I countered that teaching OOP was hardly the point of Processing. The idea as I saw it was to get people involved with code quickly, before they realize that it's "too difficult" and freeze up. (It's a situation that should be familiar to anyone who has taught a workshop that involved code.)
I like to think of Processing as being a bit like BASIC, or maybe better, Turbo Pascal. On the one hand it's plain, easy procedural programming with plenty of nice features and safeguards to keep you from hitting your head. On the other hand, it has some powerful infrastructure that would take beginners years to figure out on their own.
To be direct: I disagree with Karsten. I don't think it should be the responsibility of the tool to teach good coding practices. Good code does not equal creativity or quality of content. Like Ben said, some of my best work looks awful on the inside. But more importantly, forcing a rigid code structure into the language would scare off most of the people who need Processing the most.
I also disagree with the notion that Processing users should become software designers by necessity. It all depends on what they intend to do with it. If they want to be designers or work in teams producing a maintainable code base, they would definitely need some software design skills. The same is not true if they just want to use Processing as an intuitive tool for sketching in code.
Quote:"computational strategies" (can we please quit the marketing speak)...
While working on Generator.x I wrote lots of marketing speak. I blogged, I wrote press releases and introductory texts full of terms like "computational strategies". I was trying to explain to designers, artists and regular people why generative art and design might be relevant to their experience of the world, and why they should go look at it in a gallery. I might wince at reading some of those texts after the fact, but the inadequacy of the terminology does not mean that the message isn't valid.
The current Processing fad is a nod to the success of the project, combined with some good timing in terms of social trends. The script kids have picked up Processing, that's not such a bad thing. With much more work being created, it stands to reason that much more bad work will be created too. But there will be the occasional gem that makes it all worthwhile.
To create a good work of art or a piece of clever design in Processing is difficult. Not because the tool is in the way, but because creation is always difficult to some extent (even when you get lucky). The Processing exhibition page is proof positive that it's possible to create excellent work in Processing. And some of it was created by people who didn't know code before.
On a practical levelI predict two paths for Processing (actually, I'm probably just describing what is already the case):
1. The continued use of the Processing tool as an environment for beginners. That means continued use of a procedural API, convenience methods and a simplified execution structure. OOP is in the syntax, but not enforced.
2. The growing use of Processing as an infrastructure, a set of libraries to base work around and plug libraries into. Most advanced coders will want to work outside the Processing GUI. That's already possible, but it has some quirks that will hopefully be smoothed out in the future. Essentially, this would require a smooth transition from how the class hierarchies function when used within the GUI and when used as pure Java. If Processing can make that transition, it will prove its usefulness both as a tool for beginners and as a production environment for professional work.
I am very excited by the libraries people have started writing. I think it can become a great source of pre-written code that will allow users to focus on creating applications rather than infrastructure. I only hope that library writers will keep their work Open Source. Maybe it could be a requirement that the source be provided under a GPL license before new libraries are linked from the Processing site.
A suggestion:I recently emailed Casey to ask if a Processing coder workcamp had been considered, i.e. not a workshop but a DIY camp where people would meet to tinker with the Processing core, write new libraries etc. He replied that such an idea would be excellent once 1.0 is out. I look forward to that. For now, I've downloaded the source, retro-hacked some quirks and keep producing work with Processing.
I hope you will too.