Here's ubiquitous computing dude and smart guy Adam Greenfield talking about treating cities as "software under development." It's a provocative and exciting essay:
Provided that, we can treat the things we encounter in urban environments as system resources, rather than a mute collection of disarticulated buildings, vehicles, sewers and sidewalks. One prospect that seems fairly straightforward is letting these resources report on their own status. Information about failures would propagate not merely to other objects on the network but reach you and me as well, in terms we can relate to, via the provisions we've made for issue-tracking.
And because our own human senses are still so much better at spotting emergent situations than their machinic counterparts, and will probably be for quite some time yet to come, there's no reason to leave this all up to automation. The interface would have to be thoughtfully and carefully designed to account for the inevitable bored teenagers, drunks, and randomly questing fingers of four-year-olds, but what I have in mind is something like, "Tap here to report a problem with this bus shelter."
In order for anything like this scheme to work, public objects would need to have a few core qualities, qualities I've often described as making them "addressable, queryable, and even potentially scriptable." What does this mean?
Frameworks for citizen responsiveness, enhanced: Toward a read/write urbanism
(via Beyond the Beyond)