Jon Udell discusses the idea that technical mastery requires social innovation. While I agree in general I don’t necessarily agree with his final statement that major innovation would require more social than technical. I just don’t believe you can separate the two cleanly yet. It’s still all about how you compose the data with the view(s) and technically I still see a lot of problems in information architecture today that needs solving.

Recent talk by Dave Winer and Tim Bray on what happens to your data and records when you die are the classic example. Data is spattered everywhere, yet there’s a technical solution to that, one that requires a social element as well. I say this as I’m attempting to create my own environment for historical data and innovation. So while the social hurdles are first and foremost in my mind - my user-facing API is defined by that - actually architecting what I consider important elements to achieve my goals, is trying technically. Sure if you have a lot of man hours of a big company it may well be simple to implement but conceptualizing how exactly to implement an entire environment with innovative paradigms, requires a lot of forethought. Usually by one BDFL slaving over that while guiding others to help implement that. eg. Tim Berners-Lee, Guido van Rossum. There’s an excellent talk Fred Brooks gave at OOSPLA07 that talks about innovation I’d highly recommend listening to.

Where Jon asks whether operations are beyond the capabilities of mainstream users I begin to envision a much simpler and more direct approach to how people interact with objects in a system. I always recall a mainstream user testing a web site I’d designed. The number one interaction she responded to - one that guided her into learning new capabilities - happen to be the direct object interactions. Popup’s on hovering menu’s, self-explanatory animated transitions on acting etc, all of these were at the point of object contact. It taught me how important it is to see and learn how to interact with each component and how those can effect others. More importantly how the system integrates and functions to get tasks done. Jon’s screencasts, the CoScripter example, they exemplify this.

I remember my first steps playing with the Self programming language desktop GUI. The ability to inspect objects was fantastic even though the overall user experience was awkward. I think we need more of this interaction if users are to learn new capabilities. Interfaces simply must be object accessible.

Applications today just aren’t built with this in mind and I think the problem is one of default functionality. By default 99% of systems don’t guide people as they use them. There is so little by way of best practices and the advantages they afford because more often than not it’s educated developers doing the implementation.

I think the only way to solve this is to give users the tools do the implementation and customization themselves by lowering the barrier to entry through an object accessible interface. Community driven applications modifiable at the object level comes to mind. Wikipedia is a good example at making information more accessible to the masses, Twine a level up. Why not do the same for application development? The Linden Labs guys also talked at OOPSLA07 that is worth listening to. A large number of scripts were developed by people with little previous programming skill because they could grasp basic constraints to the interface and architecture. If we can create an interface to do this and get tasks done while the hard technical aspects are hidden; great! But technically I don’t believe we’re there yet on a distributed level nor social. The two problems are just too similar.

It’s really one distributed problem over two different mediums.

I couldn’t leave without linking to an interactive application example The Neuron. :)