People-Oriented Programming (POP)
In a recent international conference paper ( Steve Goschnick (2009). People-Oriented Programming: from Agent-Oriented Analysis to the Design of Interactive Systems, J.A. Jacko (Ed.): Human-Computer Interaction, Part I, HCI International 2009, LNCS 5610, pp. 836-845, Springer-Verlag, Berlin.), I present a clear and brief definition of what we have been calling People-Oriented Programming here at the DigitalFriend for a few years now. I wrote it in response to a reviewer of the draft paper, who pushed me for a 'clear and definitive statement', which had been put more modestly/less succinctly in the first version of the paper. The following extract from the published paper is the background section, followed by the brief definition of POP:
1 Introduction ...
4 People-Oriented Programming as a Design Paradigm
This general method follows on from the Shadowboard Methodology by Goschnick and Graham . It was not a generic AO methodology, but was specifically aimed at gathering and tailoring the AO requirements for a multi-agent Personal Assistant Agent (PAA) system, for an individual user. The authors made the point with:
"... the primary requirement in the work presented here was to have a 24x7 user-representation available (even) while the user sleeps or is otherwise offline, within a tool capable of autonomous computation, some decision-making, some information filtering and with the ability to concentrate the presentation of relevant information and to inform the user at the most convenient time"
Their central idea then was to marry a top-down 62 role/sub-role model starting template, with certain bottom-up techniques from ethnography including Cultural Probes by Gaver et al  in the form of " user-kept diaries" and user scenarios in the tradition of Rosson and Caroll , into a methodology that addressed the personal aspirations and desires of an individual together with their social needs. To bring an individual's social needs into the equation, Goschnick and Graham foreshadowed future work that called upon the theory of Social Worlds by Strauss  and the Locales framework . That foreshadowed work there, is the ShaMAN meta-model here, which now facilitates Social Worlds and Locales in a MAS system.
A significant difference in the Shadowboard Methodology over other agent methodologies involves the Role entity: a role model is not only used in the requirements gathering process, in addition, it serves functions within the analysis, design and in the implementation of a Personal Assistant Agent. E.g. A role-hierarchy lens is used to filter and organise messages for the user's benefit, that come from various sub-agents . These messages are also stored in a log that represents an interaction trajectory arc  of the user's life so far.
Cultural Probe  data captures the richness of individual users in the domestic and social space, however, many Ethnographers use it to inspire their own design processes [1,8] rather than to enhance the design process. There have been pockets of research trying to bring ethnographic data and/or scenarios into the Software Engineering process as seamlessly as possible [14,22,6,13]. Some provide support for a multi-disciplinary team approach to bring in the richness of social context . While ethnography and software engineering are complementary - ethnographic studies capture the details that are useful in analysis, while software engineering design looks for and uses abstractions as often as possible  - the two forms of data and focus, from these two quite different disciplines, each with different notations and concepts, means that there has been a bottleneck in getting from one to the other, difficult to negotiate without loosing much of the detail captured in the ethnographic data. Furthermore, there is neither an efficient or affordable way to capture it on the scale needed for heterogeneous individual user needs .
A way forward involves users collecting data about their own lives with Cultural Probes and Software Engineers providing model-based toolkits to enable end-user development of interfaces and mash-ups of the software and Internet-based services they regularly use in their lives. There is a movement of people towards such end-user development of software and computer-based artifacts - whenever they get the appropriate tools to do so. We can see it in the current rise of mash-ups in the Internet world  by hobbyist users. And we see it in the user modifications (so-called mods ) in computer games that facilitate user additions to their game playing [18, 16].
End-user development is in part researched in the context of user innovaton - i.e. innovations created by end-users themselves rather than by corporate software houses . Von Hippel and Katz investigated the use of toolkits  distributed to end-users, in order for manufacturers to be able to service the unique needs of individuals in what they called " markets of one ". I.e. Some manufacturers have abandoned their " increasingly frustrating efforts to understand users' needs " (ibid) and instead have outsourced need-related innovation tasks to the users themselves. To do so, the tasks involved in bringing a new product into existence, are divided into two interrelated parts: solution-related tasks, and needs-related tasks. The solutions-related tasks are catered for with flexible user-friendly toolkits, initially provided by the manufacturer. The needs-related tasks are what the end-users then do with those toolkits - i.e. they customise the initial product to suit their specific needs.
Von Hippel has been researching in the user innovation space since the early 1990's and in his book Democratizing Innovation  he gives two primary reasons that help to explain the recent exponential growth in the user-innovation area: tools that were previously only available to a niche professional base, have become available to mass end-users (in both cost and ease-of-use); and secondly, online communities of end-users confide their needs and share their solutions through the various communication channels and social networks afforded by the Internet.
One of the earliest mass-enlistments of end-users via software toolkits, is in the computer games area , where numerous games have tens of millions of users, and several of them have tens of thousands of end-users providing additional innovative content and functionality to those games. Prugl and Schreier  studied the use of toolkits for the popular computer game The Sims (28 million units sold within 2 years of release), in which they studied samples from four online user communities, with an average of 15,000 members (ibid). Many other games offer toolkits to end-users to extend game functionality and content. Jeppesen and Molin  found that of the 94 games they surveyed, 33 of them included toolkits for end-user development.
Where von Hippel mainly describes end-user innovation as the way that 'markets of one' can be appropriately and cost effectively serviced with the goal of ' satisfying each user's needs ', Prugl and Schreier looked deeper into ' how ' users deal with the invitation to innovate (including the model of open innovation ), and they also investigated the attractiveness of end-user designs, to other users. They single out ' leading-edge ' users as a potential source of radical product development (ibid), since their designs find large user-bases amongst other users in online communities that centre around the toolkits. This is a useful finding since end-user toolkits are used by a minority of users, whereas some of the innovation produced by those users, can be used by many of the rest. In a study about what motivates users to modify the games they play , Kadarusman focused on the World of Warcraft (WoW) game, which has over 11 million registered users (as at October 2008). He reported that WoW has more than 4600 user-modifications available for download, the most popular of which was downloaded on average 110,927 times per day.
4.2 Definition of People-Oriented Programming
We are now in a position to describe People Oriented Programming (POP) as a new design paradigm for developing individual-oriented systems, and define the four elements that it includes. POP calls upon the individual user in three main capacities: firstly, as the central focus of a customised software system addressing heterogeneous needs, which von Hippel and Katz describe as ' markets of one ' ; secondly as a self-ethnographer [12,1] administering and using Cultural Probes , personal role models [9,10] and scenarios  to gather their own very-specific data (including in the domestic space); and thirdly, as end-user developers, coming up with their own solutions to match their personal needs , utilising well-engineered software toolkits  designed to make the user the centre of innovation in new product development. The fourth element of POP is the cognitive models behind the tools, techniques and frameworks upon which the user toolkits are built. These models are drawn from two disciplines that are not often cross-referenced : the Agent-Oriented paradigm , and Cognitive Task Modelling . E.g. the technology used in this research to pursue People Oriented Programming is the DigitalFriend, which appropriately has its theoretical base anchored upon a century of evolution of models of mind from Analytical Psychology [9,10].
People Oriented Programming (POP) as defined above sounds simple i.e.: focus on the heterogeneous needs of individual users; get the users to record their own ethnographic data; and then have them develop their own enhancements to agent-oriented software using user-friendly toolkits. That stated simplicity belies the actual complexity to carry it out. Just as the modern GUI PC is much easier to use than old non-GUI PCs, multiple layers of complexity and indirection were needed to bring about that simplicity of use. Not surprisingly then, ethnography is an inexact way to gather requirements as compared to traditional requirements engineering methods; AO technologies are an order of magnitude more complex that traditional OO languages and frameworks; and user-oriented toolkits that are user-friendly enough to build personal systems from disparate services and applications, are complex in terms of designing and building them. However, the POP approach retains the richness from the cultural probe data, through into the technology in a way that reflects peoples social needs, desires and goals, and to the benefit of the collective aspirations of the social worlds they are a part of.
The recently reported amount of end-user innovation in the games genre touched on above, is testimony to the approach working, when the mix between user-needs and the functionality of the solution-related technology on offer, is right.
The agent-oriented model-based approach to personalising an individual's interface to the technology in their lives is a natural fit. The mentalistic notions that the AO paradigm abstracts in a computational form, draws upon Psychology, and therefore can be reverse-focused upon programming for individuals, by end-users themselves. The models from cognitive task modeling told us that goals, plans, tasks, actions, roles and objects are represented in the cognitive functioning of the mind. These models confirm those from the agent-oriented paradigm , and vice versa, through their strong underlying similarities. And it is the models that will hold POP together as the artifacts shared between the Software Engineers building the toolkits, and the end-users innovating their own creations and customisations with them.
[An ealier draft of the full published HCI International paper is available here ( PeopleOrientedProgramming.pdf size: 1.1 MBytes) if you want a complete read of it. It certainly gives a clear idea of what we have been doing here with the DigitalFriend software since 2003 - philosophically and development-wise too.
Cheers, Steve Goschnick (gosh'at'DigitalFriend.org), 17th July 2009.
Your Personal Attention Needs a Digital Friend
We are a time-poor, information rich people. We strive for quality in our lives: quality in the services we provide others; quality in our recreation; quality in our personal lives and relationships. At odds with this search for quality in our lives is the complexity and the time-sinks caused by the very services trying to improve our situation. Constant advances in information services has put broadband Internet - a 24 hour, 7days a week connection - within reach of a majority of people in our society. Every new service we subscribe to adds a new layer of commitment, a new layer of infringement upon our time. When we arrive in the office today, most of us now need to check: our email accounts; our physical mailbox; our intray; and our phone messages - all requiring our personal scrutiny in order to miss nothing, do everything asked of us, and remain the professionals that we are. Our 'personal attention', has become the most valued bit of 'real estate' in the modern world.
The DigitalFriend is a product that harnesses broadband internet as a useful timesaving, quality enhancing service, rather than allowing it to become yet another layer of commitment and infringement of our time and attention. The DigitalFriend is an umbrella technology, which harnesses a hierarchy of sub-agents and web-services. It harnesses them and concentrates them, so that just the important information reaches the user in a timely manner. The individual's attention is not overloaded with unwanted information, or information who's time hasn't yet come.
The under-the-bonnet technology within the DigitalFriend is appropriately revolutionary. Equally innovative is the interface to the DigitalFriend - the bit we see and deal with. It consists of the FUN interface (Friendly User Navigation) which acts like an information lens, capable of displaying nearly 600 individual sub-agents and web services, on the screen at the one time - an unlimited number in total. Compare this with conventional hierarchical tree managers, such as Microsofts Window's Explorer, or Apple Corporation's Finder, which are struggling to put more than 50 or 60 items on the screen in a related manner. The FUN interface to the DigitalFriend is an agent-oriented metaphor of electronic servants and friends, as opposed to the old desktop metaphor of Windows and Macintosh applications, which are document-centric, and office-bound in their conception and their delivery.
The DigitalFriend is a just-in-time minimalist attention grabbing technology, which monitors a large array of personalised information sources and events, filtering off the unnecessary, alerting the user when they most need to be - not too early, and not too late. The DigitalFriend product is a technology destined to transform a broadband service into one that brings quality to the lives of individuals at home and at work, were it may otherwise amount to just another layer upon the intray, the mailbox, and the message bank. Instead, the DigitalFriend turns broadband Internet into a liberating force.
The 'People' Part of 'SQL+PaWS'
We recently (September, 2007) developed a simple but effective technology that makes Web services a whole lot easier to write and deliver - particularly powerful when coming from a relational DBMS (SQL-oriented) on the server-side. Its called SQL+PaWS: for SQL and People as Web Services. While such a web service can quickly be called and used in a mashup within the DigitalFriend (see Figure 1 below, in which the URL of an example SQL+PaWS web service has been pasted into a sub-agent specification form, and an SQL statement - which retrieves all countries in which the US Dollar is used as the main currency - has also been copied across), an SQL+PaWS web service can also be created by any web page publisher, without the need for an SQL DBMS at all.
Figure 1: Pasting the URL of an SQL+PaWS web service into the DigitalFriend.
The ubiquitous web browser generally requires a human read to retrieve information from the web. In contrast, Web services were developed to be a client-side programmatic interface to the world of servers out there. However, SQL+PaWS web services, as well as being used by application programs, can also be viewed in a web browser by people, both at prototype time, or in general (see the overview in figure 2 below). In addition, it allows people to very simply author web services that are directly readable by applications and mashups (by producing HTML <table>s that conform to the SQL+PaWS convention of writing such a table. See the official link: SQL+PaWS Specification).
Figure 2: Overview of SQL and People as Web Services (SQL+PaWS)
The world is becoming increasingly wired (and wirelessed?) with sensors, but, the world's best all-round sensor (and analyst) is still the Human Being, and is unlikely to be replaced as such for a very long time yet. The use of SQL+PaWS is potentially very generic as it includes a convention that allows people to post their own data in a particular HTML format - see October blog entry and the SQL+PaWS specification. I.e. Individuals who routinely collect data, can simply post it on the Internet as a Web Service to other people and/or organizations, without the need to use an SQL database at all. Figure 2 shows that either people and/or SQL-oriented databases can be the source of an SQL+PaWS web service, and either people and/or software clients (including the growing field of mashup applications) can also be the consumers of SQL+PaWS web services.
While all of the main menu items across the top of this page, do link to appropriate pages, most of the pages linked to by items down the left and right sides, are still being built. SBG: 2009-07-17