Agtivity | Advancing the Science of Software Agent Technology

The Consumer-Centric Knowledge Web - A Vision of Consumer Applications of Software Agent Technology - Enabling Consumer-Centric Knowledge-Based Computing

By Jack Krupansky

May 4, 2006 (previous: March 20, 2006 - latest)

Jump directly to PowerPoint presentation

Note: This concept paper is now frozen since I have accepted a full-time employment offer with Microsoft (unrelated to anything discussed in this paper) and will not be doing any more work on this concept as long as I am employed.

Abstract

The Consumer-Centric Knowledge Web (CCKW) is a research proposal for a new knowledge-based computing infrastructure (global knowledge web platform) which will be much better-suited for consumer applications by enabling computer applications to finally understand what consumers really want. Consumers have the knowledge, but computers are too “dumb” to understand and there is no language for consumers to conveniently and comfortably express their knowledge. Software agent technology has the raw horsepower, but lacks the fuel (consumer knowledge) to go very far or very fast. Even the W3C Semantic Web is too week to provide consumers and software agents with enough power and ease of use. The CCKW will enable consumers and their software agents communicate in a manner that empowers both to “be all they can be”.

Caveats

Jump directly to PowerPoint presentation

Table of Contents

  1. Introduction
  2. Executive Summary
  3. PowerPoint Presentation
  4. Short Article on Enabling Consumer-Centric Knowledge-Based Computing
  5. A Modest Beginning
  6. An Immodest Clamor
  7. Why Start With Consumers?
  8. What do Users Want and Need?
  9. Consumer Problems to be Addressed
  10. Consumer-Centric Rather than Merely Consumer-Oriented
  11. Key Aspects of Consumer-Centric Computing
  12. What is Knowledge-Based Computing?
  13. Doesn't the Semantic Web Do All of This Already?
  14. What is a Software Agent?
  15. Intelligent Agents
  16. Multi-Agent Systems
  17. Software Agents: Helping Consumers with Coping and Facilitating
  18. Knowledge-Based Software Agent Technology
  19. Consumer Agent Vision and Consumer Knowledge Agent Vision
  20. Why is Software Agent Technology Required?
  21. Trend from Software to Services to Software Agents
  22. Artificial Intelligence, Machine Intelligence, and Computational Intelligence
  23. Intelligence Augmentation
  24. Artificial Artificial Intelligence
  25. Multi-Mind or Group Mind
  26. Collective Intelligence
  27. Noosphere
  28. Neurosphere
  29. Knowledgesphere and Consumer Knowledgesphere
  30. Coping with Information Overload
  31. Facilitate Common-Sense Reasoning
  32. Software Agents as Consumer Proxies
  33. Coping with Information Fragmentation and Specialization
  34. Need for Calm Technology
  35. Radically Simplify the Computer Vocabulary Needed by Consumers
  36. Consumer Control and Controlling Authority
  37. Consumer-Centric
  38. Consumer Interests
  39. Intermediaries
  40. Environments
  41. Overlay Networks
  42. Semantic Web
  43. Implicit Semantic Web
  44. Web Services
  45. Knowledge Web
  46. Consumer Knowledge Web
  47. Text Mining, Data Mining, and Knowledge Mining vs. Semantic Web
  48. Grid Computing
  49. Semantic Grid
  50. Centralized Applications are Bad; Distributed Applications are Good
  51. Centralized Databases are Bad; Distributed Databases are Good
  52. Network-Centric Applications vs. Global Knowledge-Centric Applications
  53. Software as a Service (SaaS) vs. Software as Agents
  54. Ant Paradigm
  55. Swarm Intelligence
  56. Analogies to Plants, Forces, and Chemical Agents
  57. Consumer Knowledge Web
  58. Consumer Knowledge Web 1.0
  59. Consumer Knowledge Web vs. Consumer Web
  60. Consumer/Agent Knowledge Web
  61. Infrastructure: Toolkits, Frameworks, Middleware, Platforms
  62. Interaction Machines vs. Turing Machines
  63. Organic Application Development
  64. Mash-Ups as an Application Model
  65. Autonomic Operation
  66. Asynchronous Operation
  67. Radically New View of "A Program" or "An Application"
  68. Macro Software Agents and Micro Software Agents
  69. Network Effects
  70. Social Computing
  71. Human Computing
  72. Tribes and Social Values
  73. Dynamic Coalitions
  74. Virtual Communities
  75. Mobs and Smart Mobs
  76. Online Democracy
  77. Reputation and Trust
  78. Ethics and Deontic Logic
  79. Provenance
  80. Psychology of the Consumer Knowledge Web
  81. Consumer Attitudes Towards Knowledge
  82. Consumer Attitudes Towards Software Agents
  83. Consumer Attitudes Towards the Consumer Knowledge Web
  84. On-Demand Knowledge vs. Never-Need-to-Demand Knowledge
  85. Direction and the Journey Itself, Not the Destination
  86. Persistent Storage of Consumer Knowledge
  87. Elimination of Indirect Personal Information
  88. Organizing Consumer Knowledge
  89. Ontologies, Taxonomies, Tagging, Tagsonomies, and Folksonomies
  90. Difficulties with Directories and Taxonomies
  91. Auto-Directory, Auto-Taxonomy
  92. MyLifeBits Lifetime Store
  93. Knowledge Evolution
  94. Knowledge Feeds: Web Feeds and "RSS" for Distributing Knowledge
  95. Software Agent Feeds
  96. Social User Interfaces
  97. Scalable: Transcending Scale
  98. Open Source Software
  99. Open Data
  100. Facilitate Entertainment
  101. Economics
  102. Challenges
  103. What about Microsoft Bob?
  104. What About Ray Kurzweil's "Singularity"?
  105. Consumer Use of Software Agents for Knowledge-Based Computing < 0.0001% of Kurzweil's Singularity
  106. Computing Models
  107. Procedures vs. Tasks vs. Goals
  108. Values and Ideals and Life Goals
  109. Computing Infrastructure Will Vanish into Transparent Ubiquity
  110. Ultimate User Interface: Life Itself
  111. Retreat into the Background
  112. Location Awareness
  113. Ubiquitous Computing and Ambient Intelligence
  114. User Model of Software Agents
  115. More Deeply Satisfying than Toy-Like
  116. Toys, Games, Fun, and Play
  117. Potential Consumer Applications
  118. Potential Killer Apps
  119. Facilitate Barter
  120. GIS (Geographic Information System) Applications
  121. Architecture of Participation
  122. Consumer-to-Consumer Interactions (C2C)
  123. Consumer Networking and Social Networking
  124. Consumer Collaboration
  125. Implicit Collaboration
  126. Consumer Intelligence
  127. Life Mentor
  128. Life Agents
  129. Lifelong Learning
  130. Role in Education
  131. Empowerment
  132. Facilitate Leadership
  133. Facilitate Creativity
  134. Facilitate Imagination
  135. Facilitate Dreaming and Aspiring
  136. Facilitate Natural Language Interfaces
  137. Overcome Language Barriers
  138. Opt-In is the Law
  139. Early Adopters: High-end (Professionals) and Low-end (Kids)
  140. Handheld Applications and Mobile Applications
  141. Mobile Environments
  142. Mobile-Agent Applications
  143. Management of Consumer Data
  144. DVPC: Distributed Virtual Personal Computer
  145. Virtual Networked Bits
  146. Sharing of Consumer Data, Information, and Knowledge
  147. Consumer-Centric File System - Consumer-Centric Knowledge Organizer
  148. Management of Medical Records
  149. Health, Nutrition, and Medical Applications
  150. Legal Applications, Management of Legal Information
  151. Coping With Uncertainty
  152. Facilitating Roles and Personae
  153. Learning to Learn
  154. Auto-Search, Intelligent Search Alerts and Notification
  155. Semantic Search: Deep Context vs. Simple Keywords
  156. Go to Google vs. My Agents are on It
  157. Searching vs. Sleuthing
  158. GMWIMW - Give Me What I Might Want
  159. Thinking Outside the Box
  160. Out of the Blue
  161. Peer-to-Peer (P2P), Agent-to-Agent (A2A) Metaphor
  162. Robots
  163. Mass Customization
  164. Blogging and the Blogosphere
  165. Auto-Blogging
  166. Mobile-Phone Applications
  167. Fuzzy Logic
  168. Constraint Management to Automate Functions
  169. Psychology Applied to Software Agents
  170. Spam and Irrelevant Knowledge and Useless Information
  171. Identity and Anonymity
  172. Digital Identity
  173. Identity Theft
  174. Identity Union
  175. Privacy
  176. Security
  177. Big Brother
  178. Law Enforcement
  179. Terrorism
  180. Information Warfare
  181. Levels of Autonomy
  182. Social Structures
  183. Consumer-Centric Tools
  184. Never a Need to Agree to "Trust Us"
  185. Human-Like Interface
  186. Intellectual Property: Enabler and Obstacle
  187. Legal Aspects
  188. Architecture
  189. Software Agents in Fiction
  190. What's Next
  191. The Plan
  192. Where to Start
  193. References
  194. Raw Notes and TBD

Introduction

Software agent technology has been an active field of research for more than a decade. Although there have been limited applications of the technology for consumer use, deeper success has been achieved in industrial applications. There have been numerous false starts to commercialize agent technology on a wide spread basis, including for consumers, but alas the hype has greatly exceeded both the capabilities of off-the-shelf technology and our own abilities. With every passing year we remain on the cusp of finally breaking out and fielding the kind of technological breakthroughs which will finally make the consumer application of software agent technology a reality.

Please note that the intention of this vision of software agent technology is not to turn the computer into a human-like robot, but simply to enable the computer as a competent assistant in the lives of consumers. The goal is not to pursue artificial intelligence per se, but to incorporate those aspects of AI which relate to agency, where the consumer decides what responsibilities to delegate and is the controlling authority for goals to be pursued by their software agents.

The focus of this vision is not to preview the totality of consumer applications that could be constructed, but to establish a base vision upon which consumer applications can then be envisioned. Alternatively, this vision can be considered as the model for a platform upon which consumer applications can be built.

Central to a new wave of consumer-centric computing is support for interactions that are based on higher-level knowledge rather than simply moving information from one location to another. The goal of using software agent technology is to enable knowledge-based computing.

Executive Summary

Simple agent-like features have found their way into many consumer applications, but if you think of software agent technology as a range of mountains, efforts to-date have merely probed into the lower foothills surrounding the mountains.

Existing use of agent-like technology is essentially no more than agent-light, or a relatively thin veneer that only modestly approximates the full potential of software agent technology.

Significant resource allocations will be needed to push much higher in those foothills.

Much basic research is needed to enable significantly higher climbs in the mountains of software agent technology.

Some of the ascent can be made without resorting to deep artificial intelligence (strong AI), but at some stage AI will be needed.

As central as software agents are to this vision of computing, agents are simply the messengers, and the heart and soul of the new messages is higher-level knowledge. But agents have a three-fold mission: 1) move the knowledge around, 2) facilitate the higher-level processing of knowledge, and 3) monitoring and assuring that knowledge is used effectively.

In summary, we need to fund lots of basic research, as well as advanced development labs where the results research can tested without all of the associated market risk that goes with traditional product development.

The intention is not to do research for the sake of research, but to lay the foundation for a quantum leap in improvement of consumer-oriented computing capabilities.

PowerPoint Presentation

For a brief executive-level overview of the Consumer-Centric Knowledge Web, see the Consumer-Centric Knowledge Web PowerPoint presentation.

Short Article on Enabling Consumer-Centric Knowledge-Based Computing

TBD

Something a bit more sophisticated than what would appear in the popular press, but less dense than what would appear in a refereed technical journal. Approximately three to five pages. Plus three or four diagrams.

Emphasize a few scenarios demonstrating benefit to consumers.

Emphasize focus on a platform for knowledge-based applications rather than specific applications.

A Modest Beginning

Existing applications of software agent technology to consumer applications have been quite modest to date and simply agent-like than truly agent-oriented :

Such agents either perform very simple tasks or require extraordinary effort on the part of the user. There has been little evidence of what can be called intelligence or even deep understanding of user needs.

The basic problem is that attempts at "intelligence" tend to merely mimic human intelligence, and very poorly at that.

An Immodest Clamor

Back around 1997, quite a number of rather prominent researchers and entrepreneurs loudly proclaimed that we finally had all the technological elements that could be assembled off the shelf to finally realize the promise of artificial intelligence in the form of software agents or intelligent agents and something called a Knowledge Web. Unfortunately, they were wrong, and very wrong at that.

Take a look at some of the outrageous comments in the announcement for the Agents'97 conference. Some of this stuff will come to pass, eventually, but even eight years later we seem not only no closer, but the objective seems rather more distant.

Another example of the contemporary thinking back in 1996 is the thesis of Björn Hermans entitled "Intelligent Software Agents on the Internet: an inventory of currently offered functionality in the information society & a prediction of (near-)future developments".

Sure, a number of elements are in fact available, but far short the the kind of critical mass that is needed to really bring software agents into the mainstream.

I was in fact one of the people who fell for this hype back in 1997. My interest back then was mobile software agents or the ability for a running program to relocate itself to a different host machine. I gave up on that metaphor rather quickly once I realized the problems and obstacles, but at least it opened my eyes to the true long-term potential for the agent metaphor even if there was no short-term rainbow to the pot of gold.

Even in 2000, Danny Hillis of Thinking Machines fame claimed that "The knowledge web is an idea whose time has come." Here we are in 2006, and still we don't have even a hint of a working Knowledge Web.

The immodest clamor has since died down, with the focus now on agent technology and multi-agent systems, with much less emphasis on intelligence, except as a pure artificial intelligence research topic, where it belongs, for now.

Why Start With Consumers?

Although high-end corporate information technology applications may seem like a better place to initially focus the application of software agent technology, my view is that corporate needs are more sophisticated, complicated, and demanding. It would seem far better to focus on deploying a simplified vision of user-oriented intelligent software agents and knowledge processing out in the consumer space and then attempt to beef up the technology to meet more stringent corporate demands. This is the model of how the PC and personal computing software evolved, and it seems like the most obvious success model to emulate.

In truth, the PC and its software did not start from scratch, but simply scaled down what was available with mainframes and minicomputers. Similarly, a lot of research and some preliminary commercial work has been done for software agents and knowledge processing. It's not very usable, even by corporate user, but at least there is a good starting point, analogous to the PC.

The overall model, as with any advanced technology, is to first try to apply the technology to high-end government, military, space, and commercial applications, meet limited success there, push a stripped-down version of the technology down to consumers, beef up the technology to the point of an interesting level of consumer acceptance, and then beef up the technology to finally meet the true needs for high-end government, military, space, and commercial applications.

What do Users Want and Need?

That is the question. Or, more to the point, how can a computer software program best gain insight into what the user wants and needs?

The artificial intelligence guys have something called the BDI model, Beliefs, Desires, and Intentions. That's essentially the totality of what the user has in their heads and what software agents need to know to do an even passable job of satisfying the user.

Yeah, ultimately software agents quite literally need to be able to read the user's mind, but that is still a pipe dream or at least needs to wait for Ray Kurzweil's "singularity".

Users need easy to use tools that allow them to build up a personal database in which they can build up and maintain their own knowledge base of their personal beliefs, desires, and intentions. Once such a knowledgebase is in place, software agents can query it to effectively "read" the user's mind.

Consumer Problems to be Addressed

Specifically, a consumer-centric knowledge web needs to fix the following problems:

  1. Search engines...
    1. Don't know the meaning of the web pages that they crawl and index.
    2. Don't know the meaning of the keywords used by the consumer.
    3. Don't know the context of what the consumer is trying to accomplish.
  2. Consumer information is not kept private and under complete control of the consumer.
  3. Web is vendor-centric, rather than putting the consumer in absolute control.
  4. The Web and web sites and services don't have even a basic comprehension of common sense concepts.
  5. Potential collaborators for consumers cannot be found easily.
  6. The Web (and Semantic Web) don't do near enough to encourage broader and deeper consumer-to-consumer (C2C) interactions.
  7. Software agents can't do a lot for consumers since they don't know what the consumer is trying to do.
    1. Consumers can't depend on dumb software agents.
    2. Consumers have no way to intelligently communicate with intelligent software agents.
  8. Consumers have to explain too much to web sites and services since there is no mechanism for the consumer to express knowledge about themselves in a way that can be easily communicated to sites and services.
  9. The overall interface between consumers and vendors is too dumb.
  10. Consumers are unable to communicate with other consumers who do not speak their language.
  11. Mechanisms for expressing information are too primitive.
  12. Most Web interactions are task-oriented rather than permitting the consumer to express goals.
  13. Most Web functions require consumer interaction, rather than permitting a consumer to tell intelligent software agents to pursue a variety of goals on their behalf in an autonomous manner.
  14. Web interfaces are quite noisy and distracting, rather than being based on calm technology.
  15. No easy way to enable the software agents of different consumers interact directly on behalf of all of those consumers.
  16. Consumers and software agents don't have a common language for conveniently and comfortably communicating information, beliefs, desires, and intentions.
  17. No reliable mechanism for storing information and knowledge for consumers.
  18. The Web, and even the Semantic Web, are focused on manipulation of traditional computer information (numbers, text, images, audio, video), with virtually no accommodation for true knowledge. Most applications of even the Semantic Web have focused on "meaning" of information (in the sense of a traditional SQL database), rather than on meaning in the sense of how real people communicate.
  19. Simply put: The computer has no clue what the consumer means or what information means to the consumer.
  20. Traditional knowledge management tools (even advanced ones like Cyc) are far too cumbersome and yet far too primitive to be used by consumers to conveniently and comfortably express and manipulate true knowledge.
  21. Handheld computing devices are too difficult to use on-the-run with dumb, information-intensive user interfaces. Knowledge-based and agent-based interfaces can reduce the information display and entry requirements.
  22. etc...

Consumer-Centric Rather than Merely Consumer-Oriented

Many applications available today are consumer-oriented, meaning that vendors and organizations have designed their software to appeal to consumers. The vision espoused in this paper is for a quantum-leap forward in computer software applications which will be consumer-centric rather than consumer-oriented. The difference is the question of who is in control, the vendor or the consumer. Many vendors have done a passable job of appealing to the needs of consumers, but that is not even close to being far enough to support the vision of consumer control and knowledge-based applications that we think is feasible.

Consumer-oriented approaches are acts of reaching out to and controlling consumers by vendors, but consumer-centric approaches focus on consumers being in control or both the game and their own destiny.

Key Aspects of Consumer-Centric Computing

  1. Consumer is at the center and in control
  2. Knowledge-based
  3. Calm Technology
  4. Automation is more important than highly interactive user interfaces
  5. Knowledge-based software agent technology
  6. Interaction with other consumers
  7. Maintaining privacy while enabling and encouraging sharing and collaborative behavior
  8. Network effects of consumer-to-consumer interactions
  9. Exploiting group and global knowledge

What is Knowledge-Based Computing?

Knowledge-based computing focuses on aligning information processing as close as possible to the level of knowledge which the consumer works with, allowing the consumer to express themselves to the computer as closely as possible to how they would express themselves to other people. Rather the immediately translating the consumer's knowledge into a low-level information format, the goal is to keep the knowledge in a higher-level knowledge-oriented form as often as possible.

Doesn't the Semantic Web Do All of This Already?

As you are reading some of this you may hear yourself and others asking a very important question: Doesn't the Semantic Web do all of this already? In short: No. If you fully digest the entire vision presented here and compare it to a full digesting of the reality of the Semantic Web (as espoused in the May 2001 article in the Scientific American), you will see that the Semantic Web comes up far short. The Semantic Web is a significant leap forward, but simply is not about knowledge-based computing, consumer or otherwise. The Semantic Web is about information-based computing, and maybe someday, after significant research, be extended to grasp real and meaningful knowledge, but for today and the next few years the Semantic Web is primarily about representing traditional IT-style information in ways that IT-style computer programs can process it, as opposed to the old Web in which information was displayed as raw text and raw graphics, with no clues to computer programs as to the structured information that was being presented on an HTML web page.

Put simply, the vast bulk of the information represented in the Semantic Web is hardly more than the level of information that would be stored in an SQL-style IT database. In fact, much of the information on the Semantic Web actually is sourced from SQL-style IT databases.

Much of the so-called knowledge that is supported by the current Semantic Web is still only a representation of knowledge as an aggregated knowledge artifact (e.g., a block of text in a natural language) rather than drilling down and representing details of true, human meaning. For example blogs in the form of XML-based web feeds have a significant amount of machine-processable information, and that is indeed a significant technological advance, but the title and body of the blog post are still uninterpreted blocks of text in a natural language, or maybe not, as the case might be.

A portion of the Semantic Web relates to services performed on the Internet, and is referred to as Semantic Web Services (SWS). SWS is a significant step forward compared to traditional communications with server-based applications and Web-based applications, but still works at the level of information or even structured information of the traditional IT-style, and doesn't even come close to getting into meaningful knowledge. SWS also has a rather simplistic approach to "agents", and doesn't even begin to put a dent in what it means to be or support an intelligent agent, let alone vast swarms of agents with emergent behavior, and how mere mortal users might convey human knowledge to agents and how agent can convey machine knowledge to humans.

The transformation between human knowledge and machine knowledge is a vast, unresolved research problem. At present, no relatively simple mechanical solution easily implemented with off-the-shelf technology is capable of readily transforming to and from human knowledge. The vision of this paper is that tools and techniques can be developed to facilitate the knowledge transformation process, but that much research is required. And the prospect of vast armies of knowledge engineers standing by to manually encode human knowledge into XML/RDF documents is currently a non-starter. Constructing ontologies for even very simple domains is still quite tedious, very error-prone, and incomprehensible to mere mortals.

Proponents of the Semantic Web pay lip service to the importance of ontology, or how one goes about completely specifying any domain of knowledge. As the Scientific American article refers to ontology, "Artificial-intelligence and Web researchers have co-opted the term for their own jargon, and for them an ontology is a document or file that formally defines the relations among terms. The most typical kind of ontology for the Web has a taxonomy and a set of inference rules." That's hardly sufficient for representing hard-core, meaningful knowledge that humans, users, even consumers can relate to. The article neglected to mention that AI and Web researchers have "co-opted" the term taxonomy as well. In fact, their usage of the term taxonomy belies the truth about so-called ontologies for the Semantic Web: they're hardly more than data declarations and schemas and business process rules in the traditional IT sense and are essentially discussed as such in the article. To represent meaningful knowledge of the sort relevant to the interests of consumers, we'll need techniques a little more powerful and more flexible and more easer to use than simple rules, business rules, or even so-called inference rules.

Now, it may turn out that our vision of a Consumer-Centric Knowledge Web can be built on top of the Semantic Web, and it would in fact be wonderful if the effort to achieve our vision is greatly reducing by the existing Semantic Web technologies, but that is not a requirement, nor is it a given, nor is it even a likelihood. Far too much research remains to be done to prejudge the extent to which the Semantic Web will be reusable enough to support a full-blown, meaningful knowledge web.

A more elaborate argument can be made about the differences between the current vision of the Semantic Web and our vision of a Consumer-Centric Knowledge Web, but the main point remains that if you read any of this and think that "all of that is already done in the current Semantic Web", then I would suggest that you go back and read more carefully and challenge your own assumptions.

To summarize, the Semantic Web does indeed have a bright and prosperous future, but as presently envisioned, it won't achieve the goals espoused by the vision presented here for a Consumer-Centric Knowledge Web.

What is a Software Agent?

What is a software agent? That question is a matter of great debate, but the essence is that a software agent is a computer program which possesses the characteristic of agency, that it is acting on behalf of another entity (i.e., the consumer) in pursuit of goals specified or controlled by that other entity (the consumer).

The key qualities are that software agents are performing tasks and working towards goals for the consumer, without the need for the consumer to be involved and worried about every step of the way. This implies a degree of knowledge about the consumer and intelligence about how to work on the consumer's behalf. It is necessary but not sufficient to know what consumers in general want, but also to deeply comprehend what each particular consumer wants.

Intelligent Agents

The long-term goal is that software agents will take on more of the attributes that we associate with intelligence. In the interim, so-called intelligent agents will evolve gradually towards a sense of human-like intelligence, but remain more focused for now on more of a mechanical, drone-like mode of operation that at best mimics human intelligence. Even in the longer run, intelligent agents will converge on what should be called computational intelligence or machine intelligence that will continue to fall short of true human-level intelligence in many ways even as it surpasses human intelligence in other ways.

Multi-Agent Systems

Researchers in the field of Artificial Intelligence (AI) have long viewed multi-agent systems (MAS) as a very promising model for mimicking bother the human mind and communities of autonomous individuals. Traditional multi-agent systems have been closed and quite limited in scope, but gradually they have been becoming more open and flexible. Many of the approaches to the interaction of software agents on the Internet have been based on research in multi-agent systems. Much more research is needed, but at least some of the foundation has already been laid.

The biggest open research topics relate to how to apply MAS concepts to free-willed (and free-wheeling) consumers as opposed to more mechanical and drone-like industrial applications.

Knowledge-Based Software Agent Technology

Knowledge-based software agent technology blends the deep richness of a knowledgebase and deep semantic meaning with the raw power of software agent technology. It is the combination of both that provides the breadth and depth needed to enable computer software to truly understand and provide support for what the consumer is really trying to do.

Consumer Agent Vision and Consumer Knowledge Agent Vision

To simplify the terminology a little, this overall white paper can be thought of as referring to a consumer agent vision or a consumer knowledge agent vision. The term consumer agent should be good enough, but there is enough ambiguity that we should settle on the term consumer knowledge agent. The latter seems to capture all three essential ingredients of the vision of this paper: consumers, their knowledge, and using software agents to facilitate the growth and use of that knowledge. As a technicality, the full term is consumer knowledge-based software agent, but can also be referred to as a consumer knowledge-based agent.

Software Agents: Helping Consumers with Coping and Facilitating

The two big categories of support that software agents can provide for consumers are coping and facilitating. Consumers either have an idea or goal that they are interested in pursuing and need assistance in facilitating that idea or goal, or they are confronted with a problem or task or issue that they are not particularly interested in pursuing, but they have no real choice, so they need help coping with the problem, task, or issue. Consumers need a lot of support, and software agent technology seems ideally capable of providing a significant amount of it.

Why is Software Agent Technology Required?

To date, nobody has come up with a technology that scales up as well as webs of interconnected software agents. They are more flexible. They can automatically adapt to constant changes in a dynamic networking environment. They can evolve and support applications that are evolving. Hand-coding distributed applications is simply too tedious, too inflexible, and too error-prone for large-scale distributed applications. System administration for such large-scale applications and databases is simply beyond the capabilities of human system administrators. Large scale distributed applications will become too important to entrust to traditional, ad-hoc, error-prone approaches to network design.

Trend from Software to Services to Software Agents

Today the rage is about the transition from software to services, particularly Web Services. The vision espoused in this paper concerns a future evolution of the same trend, but where "traditional" Web Service-based applications will give way to applications based on software agent technology. Web Services will continue to play an important role, but the vast bulk of the activity will be based on the interactions of autonomous software agents, with Web Services being background resources available for use by software agents.

Artificial Intelligence, Machine Intelligence, and Computational Intelligence

A tremendous amount of research has been performed on the topic of artificial intelligence (AI) over the past 50 years. Software agent technology draws on this body of research, but much research remains to be pursued. Although AI classically focuses on the holy grail of human-like intelligence, it is more sensible to work in the direction of computational intelligence or machine intelligence which aims to at best mimic human intelligence as feasible, but to go far beyond limited human intelligence in as many areas as possible.

Intelligence Augmentation

Even when the best AI techniques cannot begin to approach human intelligence, there is great promise to the concept of intelligence augmentation, where the aim is to blend a hybrid of human and machine intelligence, with each side contributing its best efforts. With software agent technology we're looking at leveraging the contribution of the human consumer with the "intelligent" efforts of a potentially very large number of software agents, and coupling that with the efforts of other consumers and their software agents as well.

Artificial Artificial Intelligence

Artificial artificial intelligence (AAI) refers to intelligence augmentation where human beings volunteer to perform tasks at the behest of computer software, especially in situations where true artificial intelligence simply isn't up to the task. This capability further extends the power of software agent technology, and software agents can be used to facilitate AAI itself. The consumer won't even be aware (in general) that any humans are in the loop.

Multi-Mind or Group Mind

Consistent with the thinking behind the old adage "two heads are better than one", software agents have the potential to act as intermediaries and facilitators between consumers so that a group of consumers can interact and act as if they had a much larger multi-mind or group mind. The leveraging that software agents can provide could lead to a dramatic boost in productivity and innovation and a host of social benefits.

Collective Intelligence

One of the network effects of consumer collaboration is that collectively a group of consumers can appear to have a level of intelligence greater than any of the individuals of the group. Again, software agent technology fulfills a major role in the collaboration process and facilitates the communication of knowledge among the members of the group. Further, agents can collect and process knowledge on the behalf of the consumers, according to the interests of the consumers in a far more efficient manner than the consumers themselves. By tapping into the shared knowledge of the group, the software agents acting on behalf of the group members can effect a collective intelligence that benefits the group as a whole, and the individual consumers as well.

Collective thought can be a powerful tool both for the members of the community doing the thinking, but also for the community overall. Organizing collective thought in a consumer knowledge web would be a good first step at leveraging all of that collective thought.

Collective thought is actually quite tedious if attempted manually (e.g., exchanging and reading documents), but can be greatly facilitated using software agent technology to do much of the collection, storage, correlation, and more efficient distribution of the knowledge that each member of the group needs to come up to speed with the thinking of the full group

Noosphere

The noosphere is the composite of all interacting minds. The concepts of multi-mind and group mind would be specific subsets of the overall, global noosphere.

Neurosphere

Although the term neurosphere can be treated as synonymous with noosphere in some contexts, it really includes the use of the Internet as enabling the group mind. The term has been popularized by Donald Dulchinos in his book "Neurosphere: The Convergence of Evolution, Group Mind, and the Internet".

Knowledgesphere and Consumer Knowledgesphere

The knowledgesphere is analogous to the noosphere, but simply refers to the total knowledge within any particular environment. So, we could speak of the Web knowledgesphere, the total knowledge on the Web, or the knowledgesphere of a particular group of individuals. In the context of this paper, "the" knowledgesphere is the consumer knowledgesphere which is the total knowledge accessible by the software agents which are working on the behalf of consumers.

Coping with Information Overload

Even with sophisticated search engines, there is already far too much information out on the web for the average consumer to easily find the information that best meets their needs. Software agent technology coupled with a comprehensive knowledgebase relating to the interests and behavior of the consumer will provide a rich level of context to greatly facilitate navigation through the haystack to quickly find the needles of interest to the consumer.

Facilitate Common-Sense Reasoning

As real-world situations get more complex, even simple reasoning can become quite difficult. The vast knowledge embodied in the consumer-centric knowledge web, coupled with software agent technology can render assistance, helping to drill down and reach out to simplify reasoning in even very complex scenarios. Often, the problem is simply that the consumer doesn't have the appropriate knowledge immediately at their finger-tips, or doesn't have knowledge of paths or chains of reasoning that can help them or guide them to their goals. Much research is required, but the potential benefits are huge.

Software Agents as Consumer Proxies

There are many situations where the consumer is simply too busy or distressed or finds it inconvenient or uncomfortable to take an action by themselves and may elect to have a proxy act on their behalf. Software agents can be a very appropriate choice for supporting the concept of a proxy, giving the user control without the burden of the actual actions. The important thing is that the software agent must have access to enough knowledge about the consumer and their interests so that the agent can act appropriately without detailed, tedious, and error-prone instruction from the consumer.

Coping with Information Fragmentation and Specialization

As information technology has progressed and evolved, information has gotten more refined, but more fragmented and exceedingly more detailed specializations have emerged. This information fragmentation and information specialization has worked to the detriment of most consumers. Sure, more choices have become available, but navigating and discovering and exploiting those choices has gotten far more difficult. This is a prime reason why we need to make the leap from information to knowledge, and a prime reason why we need to exploit the power of software agent technology.

Need for Calm Technology

Calm technology has the ability to make itself available to consumers and work on their behalf without significantly disturbing their sense of calm. A side effect is that more technologies can be exploited by the consumer without dragging them down and making them feel that they are overburdened. This needs to be a key criteria for new technologies to be introduced into the consumer domain. Software agent technology, especially the capability of executing in an autonomous manner without intervention or direct control of the consumer, is almost inherently a calm technology, if designed and deployed properly.

Radically Simplify the Computer Vocabulary Needed by Consumers

Knowledge-based software agent technology can radically improve the degree of automation of the consumer's personal computer (or other access device. The effect is to radically simplify computer vocabulary needed by consumers. Much of the jargon can be eliminated from the consumer's vocabulary. No longer will consumers need to fret over install, setup, configure, settings, options, tuning, troubleshooting, tech support, training, etc.

Consumer Control and Controlling Authority

A central requirement for consumer applications is that the consumer is in control, not some vendor or service provider, but the consumer themselves.

Software agents add the twist that since the software agents themselves are technically "in control" at any moment, it is sufficient that the consumer is the controlling authority.

Consumer-Centric

Current online networks tend to be vendor-centric or server-centric or net-centric, but software agent technology enables the consumer to be placed at the center of attention. This consumer-centric approach simultaneously serves the needs of the consumer, and also enables vendors to more effectively interact with consumers.

Consumer Interests

Much of what a consumer will do which any computer software is driven by their interests, suggesting that software agents can help consumers a lot by providing rich support for consumer interests, whether that be collecting consumer interests, organizing them, searching for them, matching with the interests of other consumers, or whatever, the point is that consumer interests need to be a key aspect of the Consumer-Centric Knowledge Web.

Software agent technology can facilitate how consumers conceptualize, think about, and express their interests. One of the big problems today is that computer software applications have few clues about the real interests of the consumer, and hence can offer rather little assistance.

Intermediaries

The important aspect of a software agent is that it is an intermediary, acting on resources and acting with other entities in order to achieve goals that were set by the controlling entity or controlling authority, the principal of the agent or the agent principal.

The entities that a software agent interacts with may be either principals acting on their own behalf or other software agents acting on behalf of their principals.

In any case, the heart and soul of software agency is that users or consumers are in need of services that are available, but they benefit greatly through the use of intermediaries, agents, which facilitate interactions.

Environments

Just as important as the software agents themselves are the environments in which the agents operate, analogous to vehicles and roads and highways.

We presume that the Internet and the Web will be the primary environments of interest for consumer software agents. But the consumer's personal computer or access device is itself a full environment. A P2P community is a distinct environment. Any overlay network could be a distinct environment in which software agents can operate.

Mobile phones, Bluetooth-accessible devices, and even freely-roaming robots can also be parts of environments for software agents.

Environments provide resources and services that software agents can utilize in pursuit of goals.

Environments present opportunities for software agents, but they can also present threats in the form of malicious agents.

Overlay Networks

An overlay network is a dynamic collection of network nodes that act as a subset of the entire collection of nodes in the network. A file-sharing network is an example of an overlay network. Overlay networks are an excellent infrastructure for supporting dynamic online communities, as well as the software agents which support such online communities.

Semantic Web

Not to be confused with web services, the Semantic Web offers a guiding philosophy of a rich network of semantic data that can be processed in an automated manner by software comparable to software agent technology. Every consumer and every product and service vendor could have richly-hyperlinked semantic, machine-comprehensible information at the level associated with knowledge that can enable software agents to offer services far beyond what any single vendor or tightly-knit collection of vendors might offer.

The semantic web is the ocean and continents through which and across which software agents will navigate in pursuit of satisfying the needs, interests, goals, and ideals of the consumers who control those agents.

A key aspect of the semantic web is that software agents will be able to continuously scan the dynamically varying content of the semantic web and continuously computing patterns than can be used by software agents to offer semantic services to consumers and vendors alike.

Implicit Semantic Web

A rich semantic web is quite valuable, but very difficult to produce if constructed manually. Rather, we need tools which will implicitly add knowledge to the semantic web as it becomes known by intelligent software agents as those agents perform tasks on behalf of consumers. Each action or choice carried out by a software agent for a consumer makes additional knowledge available to be added to the semantic web. This implicit semantic web can quickly grow to be orders of magnitude larger than any manually constructed semantic network.

The implicit semantic web will be filled with structured representations of the knowledge and behavior of the the many consumers and vendors who participate in the semantic web.

To be useful, knowledge must be available in both its detailed form and its abstracted form. The implicit semantic web would support both.

By dramatically increasing the size of the available knowledgebase, finer and broader and deeper patterns will become available to the software agents that provide applications to consumers and vendors alike.

Web Services

Not to be confused with the Semantic Web, the concept of Web Services is a more powerful and open approach for vendors to offer services on the Internet. Enough thought has been given to the design of the technical standards that underpin Web Services so that they are flexible enough to support a global networking of services that has the potential to result in more dramatic network effects and economies of scale. Although software agents will tend to interact and communicate among themselves, Web Services provides a rich and flexible interface that will enable software agents to access more traditional forms of services offered by traditional vendors.

Over time, Web Services themselves will evolve more towards the agent-oriented approach to computing. Either way, software agent technology will shield and insulate consumers from the idiosyncrasies of the underlying technology.

Knowledge Web

A knowledge web is a portion of the Semantic Web which focuses on knowledge. A knowledge web is far more than a static collection of encoded knowledge. Knowledge is created constantly, including through processes and services that are active at any moment. Software agents will be key participants in both supporting knowledge webs, and the generation of new knowledge. A knowledge web should be thought of as not simply a repository of information, but a platform for knowledge-based applications.

Consumer-Centric Knowledge Web

A consumer-centric knowledge web is a knowledge web which focuses on knowledge that is both of interest to consumers and controlled by consumers. There is certainly a substantial gray area between all knowledge and consumer-centric knowledge, but it is the knowledge-oriented processes that are important, including a bias towards the interests of consumer. A consumer knowledge web is a platform for consumer-centric knowledge-based applications.

Text Mining, Data Mining, and Knowledge Mining vs. Semantic Web

One of the ongoing debates is over gathering knowledge through data mining (mined knowledge) versus explicitly-constructed knowledge. Specifically, should we have to wait for everyone to convert to explicit knowledge structures represented as the Semantic Web, or can sufficient knowledge structures be automatically generated as a result of text mining, data mining, and even knowledge mining. A hybrid solution is likely, possibly alternating between mining and hand-tuning to refine the knowledge, but much research and experimentation is needed.

Grid Computing

Grid computing has the potential to enable the sharing of computing power on a global basis, but does not provide users with any new functions per se. Still, the availability of vaster greater computing power could very well enable new and advanced functions, particularly related to knowledge management and machine intelligence. How to effectively exploit that computing power remains an open question for research, but software agent technology is a leading candidate for both enabling access to that computing power as well as using it for consumer-level applications.

Semantic Grid

The semantic grid layers the concepts of the Semantic Web on top of raw grid computing. The massive volumes and vast diversity of computing resources available on a semantic grid literally require software agent technology to find and match the relevant computing resources. Software agent technology also permits the aggregation of semantic grid resources and services to provide higher-level resources and services that enable even higher-level consumer applications.

Centralized Applications are Bad; Distributed Applications are Good

Wide area networks such as the ARPANET and the Internet evolved from a realization that centralized networks have too many problems to scale up to meet the capacity and reliability needs of large-scale computing communities. Although the Internet and Web as networks themselves are decentralized or distributed, far too many applications and services are far too centralized. Each organization wishing to put up an application on the Internet or Web has to explicitly cope with how to scale up their own computing infrastructure as their own computing audience grows. Redundancy, caching, and mirroring are all techniques that have evolved to cope with the difficulties caused by centralization of network applications. All of this highlights the two most important facts of networking: centralized is bad and decentralized or distributed is good. The application corollary is true as well: centralized applications are bad and decentralized or distributed applications are good. Unfortunately, much of the infrastructure and tools we have available to us today are focused on development and deployment of small or centralized applications or semi-decentralized applications in a tedious, expensive, and error-prone manner. So, by focusing on distributed applications we move to a world to eliminates many of the problems that are inherent in decentralized or manually decentralized applications. Put simply, innovators of new consumer applications should not have to waste any of their time, energy, or resources on the problems of scaling and reliability.

Centralized Databases are Bad; Distributed Databases are Good

All of the arguments against centralized applications and for distributed applications apply to databases as well, especially since they tend to be the heart of many applications. So, centralized databases are bad and decentralized or distributed databases are good. Unfortunately, management of distributed data can be even harder than distributed code. Actually, that's not really true since both are very difficult to manage and we only imagine that we know how to properly manage distributed code.

The important concept for a distributed database is that the various data elements are not under the dictatorial control of a central database administrator. Instead, intelligent software agents monitor and accommodate differences in approach to data modeling throughout the network or web that comprises any consumer application. Further, data is shared among applications and shared among a potentially very large number of applications. Much research is needed in this area.

Network-Centric Applications vs. Global Knowledge-Centric Applications

The current rage is the push for network-centric applications, but that places too much emphasis on the network infrastructure rather than the knowledge itself. Rather, we need global knowledge-centric applications, where the focus is on the deeper and global semantic knowledge itself.

The network that really matters is not the physical network nodes and connections, or even the logical domain names, but the network of consumer-centric knowledge.

Software as a Service (SaaS) vs. Software as Agents

Another current rage is to offer software as a service (SaaS), with a focus on maintaining the core software on more centralized servers rather than on the servers of each customer, and that may or may not make sense for stodgy information technology (IT) shops, but only has limited benefits for consumers. Rather, consumers would benefit more greatly from offering software as agents, where there are no large monolithic applications running on centralized servers, but each consumer has any number of software agents which collaborate with other software agents to pursue goals on behalf of the consumer.

Ant Paradigm

Ant colonies exhibit a significant level of problem solving ability despite the limited capabilities of the individual ants. The ant paradigm has great potential as a model for how software agents can be utilized to collaborate on pursuing significant goals on the behalf of consumers.

Software agents as ants can be deployed for individual consumers or jointly to support collaboration among consumers.

Swarm Intelligence

Related to the ant paradigm, significant research has focused on modeling the structure of software agent systems on swarms of the types found in the biological world for attacking large, complex, and difficult to analyze problems. Even without any centralized control or supervision, swarms frequently exhibit apparently intelligent behavior, called swarm intelligence. The trick is to design the individual agents and their methods of interaction so that desirable swarm behavior occurs. This is too complex for most mere mortals. Once again, software agents are ideal for developing, training, deploying, and monitoring swarms of software agents that are running on behalf of the interests of consumers. Despite the research that has been done, much more research is needed.

Analogies to Plants, Forces, and Chemical Agents

Much of the work on software agent technology has focused on the treatment of agents as if they were animals in an environment. In the biological world we also have plants, forces, and chemical agents. Analogous entities and mechanisms may have great value in the environments populated by software agents. For example, many web services in fact act as if they were plants, producing "crops" which can be "harvested". Forces may simply be constraints in the computational environment. The analogy to chemical agents in a computational environment are not yet clear, but is worth considering. The bottom line is that we want to assure that the computational environments populated by software agents is rich enough and robust enough to support a software agent ecology that is extremely useful from the perspective of users, namely consumers.

Consumer Knowledge Web

The current Web and the envisioned Semantic Web still maintain centralized application servers and vendors as the focal point of the web, with the users outside looking in. The vision espoused here is of a Consumer Knowledge Web where the focal point is the total knowledge base of all consumers and the consumer-oriented software agents which pursue consumer-driven goals. Vendors are essentially "outside" and looking in.

Consumer Knowledge Web 1.0

It is not clear what capabilities would be available in the initial version of the envisioned Consumer Knowledge Web, call it Consumer Knowledge Web 1.0, but they would evolve over time. It may take a dozen or hundred or even more revisions of the supporting infrastructure to achieve the vision of a knowledge web focused on the consumer.

Consumer Knowledge Web vs. Consumer Web

In contrast to the Consumer Web, which is the portion of the Web which focuses on the interests of consumers, the Consumer Knowledge Web would be the portion of the Semantic Web or Knowledge Web which focuses on the interests of consumers. While the Consumer Web is driven by user navigation, the Consumer Knowledge Web is driven by the activity of software agents acting on behalf of the consumer.

The Consumer Web is based on the presentation of information which has little semantic content (e.g., text, numbers, images), whereas the Consumer Knowledge Web is based on semantically-rich knowledge.

Consumer/Agent Knowledge Web

Maybe the envisioned web should really be called Consumer/Agent Knowledge Web to highlight the centrality of software agent technology to achieving the vision. It is not simply that software agents are utilized in the implementation, but that each consumer will need to conceptualize the Consumer/Agent Knowledge Web as a partnership in which the software agents working on behalf of the consumer are essentially part of the consumer's mind.

Infrastructure: Toolkits, Frameworks, Middleware, Platforms

It would require tremendous ingenuity, discipline, and effort to hand-code the type of sophisticated consumer software agents that this paper envisions. Instead, it is envisioned that much of that common effort be factored out of each consumer software agent and be embodied in a wide range of agent-oriented toolkits, application frameworks, middleware subsystems, and other platform-related software that collectively provides a very rich infrastructure that supports powerful consumer software agents.

Once in place, the agent-oriented infrastructure will facilitate the rapid development and deployment of consumer software agents with much less effort, but a much higher probability that the agents will operate as expected.

A big part of the infrastructure is the autonomic monitoring capability which detects and automatically recovers from abnormal behavior by agents, and also automatically initiates the execution of logic needed to support declarative software agent capabilities.

Interaction Machines vs. Turing Machines

Traditional software has been based on an algorithm-oriented computing model derived from the computer science concepts related to Turing machines. That was fine for relatively discrete and monolithic software, but doesn't provide any theoretical support for highly distributed computing. More recent research has focused on interaction machines, with the emphasis on how the black boxes interact rather than what's in the individual black boxes. Going further, the concept of an agent interaction machine has the promise to support even more highly interactive software systems. More research is needed, and more interaction-based software infrastructure is needed.

Organic Application Development

Applications based on software agent technology can be designed, implemented, deployed, and evolved in a myriad of ways that are either difficult, tedious, or outright impossible for traditional, monolithic applications. In fact, the evolution of software agent-based applications can best be described as organic. Organic application development is based on very flexible interface that are goal-oriented rather than task-oriented.

Mash-Ups as an Application Model

One example of an organic application development model is the concept of a mashup or web services mash-up which relies very heavily on accessing and composing the services of existing applications and Web services.

Autonomic Operation

Although we routinely speak of software agents as operating autonomously, or being autonomous agents, what we really mean is that the user can use the software agent in a "fire and forget" mode, but the existence of the software agent is known to the user. We can also contemplate software agents which are brought into existence by some entity other than the user and that operate without the user's knowledge. We can refer to this mode of operation as autonomic operation, analogous to the autonomic nervous system in biology. This concept has already taken root to some degree in the form of autonomic computing, although that tends to refer to the underlying operating system and middleware than to higher-level applications.

In essence an autonomic software agent implies indirect agency. User U initiates software agent S which initiates software agent T, implies that T is operating autonomically relative to U. There is still a sense that T is an agent of U, but U may not even be aware of T's existence.

The benefit of autonomic agents is leveraging, in that the user can gain the benefit of the operation of far more software agents than their conscious mind can deal with.

Asynchronous Operation

While autonomic operation is the desired goal, many consumer goals are greatly facilitated with the much simpler asynchronous operation which means that the consumer and application software can operate independently for a while without direct supervision of the consumer, but the consumer remains aware that an asynchronous operation either remains underway or was at least initiated. With autonomic operation, the consumer is not even aware that an operation is being performed on their behalf. Email servers are an example of asynchronous operation, with consumers able to send and receive email without having to synchronize themselves such as is needed for a normal telephone conversation. A typical email alert is another form of asynchronous operation.

Even simple asynchronous operation is difficult enough to program. We need better tools, better paradigms, better development languages, and better software infrastructure to support asynchronous operation. Even then, autonomic operation is yet another mountain to be climbed.

Radically New View of "A Program" or "An Application"

Today, consumers have no choice but to know about and work with monolithic, large programs or applications. Software agent technology and robust and distributed knowledge infrastructure will change all of that. The vast bulk of code will be distributed and shared so that each user-visible function will be very small and atomic. There will be no need for any consumer to think about concepts like program or application. Actually, the term application will still be relevant, but refer to what the consumer is trying to do, or the domain that the consumer is working in, rather than how the use is implemented. In other words, program and application are implementation artifacts that will no longer be needed by consumers.

Macro Software Agents and Micro Software Agents

A macro software agent is a software agent that works on goals at a level that is of direct interest to a user.

A micro software agent is a software agent that works on a subset of the goals or sub-goals that have been delegated to it by a macro software agent or possibly even by a non-agent computer software application.

Consumers stand to benefit from both forms of software agents. Macro software agents tend to work in terms that the user can comprehend, and can appear to act as assistants for the consumer. Micro software agents enable macro software agents to split the work into pieces that can be delegated in such a way as to take advantage of the inherent parallelism and distributed processing of the Internet, the Web, and the Grid.

Its tempting to think of macro and micro software agents as if they were "big" agents and "little" agents, but size is not the issue. For example, a macro software agent might run within the consumer's handheld device and delegate to micro software agents which are very large computer programs running on servers or desktop computers. In some cases micro software agents will be rather small in size, but that is not a requirement.

One interesting configuration is that a network of users each has their macro software agents on their handheld devices which delegate goals to micro software agents which then interact which the micro software agents of other users.

Network Effects

A software agent has limited utility by itself, but interacting software agents have much greater utility as the number of interacting software agents rises. This is called network effects. The classic example is a fax machine, whose utility is derived in large part from the population of fax machines with which your fax machine may communicate.

Similarly, a consumer can benefit greatly if their software agents are able to interact with and learn from the software agents of other consumers.

Social Computing

People are already waking up to the potential for new tools to allow consumers to interact in a more "social" manner. Social computing endeavors to provide a social context for our computing activities, centered on users and their interactions. Software agent technology has real potential to help exploit the distributed, massively parallel nature of modern computer networks given the distributed nature of such social interactions.

Human Computing

Human computing focuses on dramatically shifting the balance away from "working with the computer" on its terms, towards the computing working for us on our terms. Software agent technology has the potential of greatly facilitating this shift, primarily by being driven by the evolving knowledgebase that agents will maintain for the consumer. Rather than force the user to deal with the artifacts of traditional computing, software agents will have an increasing ability to comprehend and work with the human artifacts of the consumer. This is more than simply about the user interface, focusing a lot of attention on the knowledgebase of the consumer.

Tribes and Social Values

Even today, ad-hoc groups form on the Internet and Web, but there is minimal support for them overall. Software agent technology can provide the infrastructure support to enable informal groups, called tribes, to come into existence and flourish. Agents can also assist tribes in codifying and promoting group social values. And all of this is possible without the need for the group to invest resources and effort in building the kind of software infrastructure that traditionally would be required for such intensive social interaction.

Dynamic Coalitions

A consumer's software agents can dynamically seek out other consumers with whom the consumer might have a common cause, such as taking a position on an issue. The collection of consumers who are likeminded can be thought of as a dynamic coalition.

Polls can be taken, not be explicitly surveying consumers, but by querying the software agents that a consumer may have authorized to disclose various levels of information about the consumer's views.

Dynamic coalitions come into existence and vanish as rapidly as consumers' views evolve.

A consumer can also indirectly join a coalition, by delegating their own position on an issue or whole categories of issues to some other consumer or authority or organization whom they trust. They can take back that delegation at any time. They can also authorize such a categorical delegation with exceptions, such as where they generally agree with the delegatee, but override selected or sub-categorical positions.

There is no vendor or explicit service needed to initiate a dynamic coalition, but simply the consumer expressing their views and authorizing their software agents to selectively make that knowledge available.

Virtual Communities

Virtual communities exist today, but usually they are server-based. Similar to dynamic coalitions, software agent technology can facilitate and support the formation and prosperity of virtual communities.

As an example, software agents acting on behalf of the consumer can monitor and filter activity in virtual communities and alert the consumer when specified interests are being referenced. The consumer may also authorize software agents to act on their behalf in designated virtual communities.

Mobs and Smart Mobs

There is a natural tendency for groups of agitated individuals to congregate in mobs, potentially resulting in violent or at least disruptive behavior. Further, the advent of personal communications technologies have resulted in the evolution of smart mobs. The Web frequently exhibits similar forms of behavior, especially with blogs or blog mobs. The real challenge is not to eliminate mobs or crowds or even to try to rein them in, but to enable forms of communication and interaction which make it less likely for smart mobs to be vehicles for destructive impact on society, but rather to make them an option for constructive contribution to society. One technical problem is that it is difficult to express a large body of knowledge in a simple conversation or short message. Software agent technology can offer a technical solution by enabling the exchange of significant amounts of knowledge between the software agents which represent the individuals in a smart mob. The software agents for each individual can then alert the individual as to specific bits of knowledge that are most relevant to the situation at hand. The concept is simple, but much research is required to make it practical.

Online Democracy

The politics of democracy and the political process itself is quite tricky. Still, software agent technology can help to mediate and facilitate various aspects of the political process. Much thinking, research, and difficult decisions are needed before online democracy can become a full-blown reality.

Reputation and Trust

Consumers have a critical need to determine whether to trust information and services, or the extent of their trust. Assessment of reputation is part of that process. Consumers are also a source for information about reputation. Software agent technology has a role to play in monitoring, evaluating, and propagating information related to reputation and trust. This is yet another area where significant research is needed.

Ethics and Deontic Logic

Ethics and encouraging acceptable behavior is an important quality of any consumer environment. Deontic logic is an approach to formalizing thinking about "ought" or regulative behavior. Software agent technology has a role to play, whether by playing cop or simply monitoring activities and alerting consumers to suspicious activity. Software agents can also assist groups and communities in formulating and managing their own systems of ethics.

Provenance

Provenance relates to keeping tract of the source and history for knowledge, including facts and assertions. Provenance is useful for both the consumer, either for curiosity or to assess reliability and trust, or for software agents which may make decisions about knowledge based in part on its provenance.

Psychology of the Consumer Knowledge Web

The combination of a vast knowledgebase and the activity of intelligent software agents may lead to the need to consider the psychological aspects of the Consumer Knowledge Web. Whether consumers consider the CKW to be intelligent is one thing, but at a minimum it is likely that the CKW will have at least some psychological impact on consumers. We certainly don't want consumers to feel overwhelmed by the knowledge or the software agents within the CKW, but how to minimize any negative psychological consequences remains an open research question.

Consumer Attitudes Towards Knowledge

Consumers have a fair amount of experience dealing with traditional information such as text, numbers, images, and media, but few consumers have had any experience interacting with a computer in terms of knowledge. It is difficult to predict how consumers will initially react, or how their attitudes will evolve towards knowledge as a form of information and as a media. Some consumers will relish the thought of teaching or feeding knowledge into the computer, while others may recoil with horror. Much research is needed.

Consumer Attitudes Towards Software Agents

Consumers have a fair amount of experience interacting with the computers as an information appliance, but since few computer applications exhibit much in the way of intelligent behavior, much needs to be learned about how consumers will feel about interacting with the intelligent computational entities that we call software agents. Some consumers will find it a satisfying experience, some will find it uncomfortable, and some may even find it worrisome, belittling, dehumanizing, or even threatening. Much research is needed. The advent of a true knowledge appliance will be an eye-opening experience for most consumers.

Consumer Attitudes Towards the Consumer Knowledge Web

The combination of a vast knowledgebase and intelligent software agents that are constantly operating within that knowledgebase is a prospect that most consumers have never had to consider, so predicting consumer attitudes towards the combination of the two in the Consumer Knowledge Web is an uncertain proposition. Prototyping of interfaces and simulations of the CKW using real humans on the other side of the interfaces may help, but the sheer complexity of the types of potential interactions precludes full simulation in advance of initial deployment.

On-Demand Knowledge vs. Never-Need-to-Demand Knowledge

On demand is one of the popular mantras for services these days, but a more dramatic approach to empowering consumers in the future is the concept of never need to demand, which is enabled using software agent technology that is always anticipating user needs. Yes, we do need to support on-demand knowledge, but never-need-to-demand knowledge is what we really want.

Direction and the Journey Itself, Not the Destination

Traditional software is more focused on the destination or end-point of the task and what it takes to get there than on providing richer support for the journey itself. Value-oriented software agents can offer the consumer with more satisfying support oriented towards the open-ended direction the consumer is interested in exploring.

Persistent Storage of Consumer Knowledge

One of the great lingering technical problems for consumers to where and how to store their data, and the problem only gets far worse as we seek to lean more on digital technology in the years and decades ahead and seek to store information and knowledge that is of ever-higher value.

Storing consumer knowledge on a hard-drive, flash-drive, CD, DVD, remote server, P2P network, etc. is not the answer. New approaches are needed. The P2P network approach shows some hope, but is far too primitive for robust storage of data whose value may span many decades.

A subset of the problem is that a lot of knowledge will reside within the internal state of the many software agents that pursue the needs and interests of each consumer. Mechanisms are needed to give that knowledge persistence.

Even where vendors offer remote servers, there remain issues of geographical diversity, vendor longevity, and simply the preference of consumers to not be locked into a single vendor.

Plenty of research is needed.

I have sketched out a preliminary proposal for a subset of this problem, called a Distributed Virtual Personal Computer or DVPC, but even that proposal falls far short of the full needs for persistent storage of consumer knowledge.

Elimination of Indirect Personal Information

Some information about a consumer may be stored without their knowledge or awareness. Such indirect personal information is common in traditional information systems, as well as the Web and even Web 2.0 (e.g., web cookies), but the goal should be to eliminate all such information. Instead, information about consumers should only be stored in forms that the consumer has complete control over, including software agents that answer only to the interests of the consumer. Rather than directly controlling a consumer's personal information, the goal is to implicitly provide access to the effects of such information by interacting with the software agents that are under the control of the consumer. And of course the consumer controls who can access even their software agents.

Organizing Consumer Knowledge

Even today, it is enormously difficult for consumers to keep track of all the information on their computers and other digital devices. The magnitude of the problem will only get worse as devices and applications evolve over the coming years. Software agent technology can address this problem since individual software agents are designed to thrive in complex knowledge webs and manage large volumes of information. The consumer stays focused on setting goals, and the software agents focus on seeking out the knowledge needed to meet those goals.

Once we place software agents in charge of managing knowledge, the consumer no longer needs to waste any energy "shuffling virtual paper" to satisfy their needs and interests.

Ontologies, Taxonomies, Tagging, Tagsonomies, and Folksonomies

A simple relational database in insufficient for organizing consumer knowledge. An ontology is a description of all that exists for the domain that it covers. A taxonomy is a hierarchical categorization of the entities of a domain, such as in biology. Tagging is a simple approach by which users themselves associate consumer-defined attribute names with entities that they care about. A tagsonomy or folksonomy is a taxonomy-like organization of entities that is derived from the tagging that is performed by a collection of users. Even modest-size ontologies, taxonomies, tagsonomies, and folksonomies can quickly become far too voluminous and cumbersome for people to comprehend and navigate, let alone use effectively. Software agent technology can use contextual information to provide consumers with personalized views of such categorizations of knowledge. More than simply filtering the data, software agents can interact with the software agents of other consumers and collaboratively work with the structure of consumer knowledge.

Difficulties with Directories and Taxonomies

Taxonomies are actually very complex knowledge structures. They may seem simple, and initial implementations of them have been somewhat simple, they require sophisticated tools and software infrastructure to work well. Implementations such as the Yahoo directory, the Google directory and the Open Directory Project (ODP) work to some extent, but fail for most uses. The extent of that failure is illustrated by the popularity of text search engines such as Google compared to the Yahoo directory. One of the primary cause of the failure is that there are not sufficient tools, especially at the consumer level for setting up and working with taxonomies. The ultimate failure is the fact that taxonomies (and related directories) are not 100% automated. Software agent technology is an approach that can be used to mediate and facilitate interactions between consumers and taxonomies. Consumers need the complexity of knowledge embodied in taxonomies, but are ill-equipped to work with taxonomies directly. That consumers need taxonomies is proved by the popularity of tagging.

Auto-Directory, Auto-Taxonomy

Given the difficulties encountered when human being are assigned the tasks of building directories and taxonomies, it makes much more sense to hand the tasks off to intelligent software, in particular software agent technology, which can constantly monitor the knowledgesphere and contribute to taxonomies and directories as new knowledge becomes available. These auto-directory and auto-taxonomy capabilities can add some very necessary structure to the global knowledgesphere and dramatically simply the tasks of knowledge workers and more fully empower knowledge consumers.

MyLifeBits Lifetime Store

The MyLifeBits Lifetime Store is a research project spearheaded by Gordon Bell at Microsoft that endeavors to store everything about your life. Although focused on media artifacts, it does offer an interesting adjunct to the activities of software agents operating on the behalf of the consumer. And it does address the issue of storing photos, video, and other consumer media.

Knowledge Evolution

Knowledge is no static and evolves over time. There are two tasks here: 1) keeping up with the evolution of knowledge, and 2) participating in the evolution of knowledge. Software agent technology can enable and assist with both.

Consumers themselves can and should be participating in the evolution of knowledge. Software agent technology can both enable and assist the consumer as they evolve knowledge, but software agents can also directly evolve knowledge even without consumer direction.

Knowledge Feeds: Web Feeds and "RSS" for Distributing Knowledge

Knowledge will be generated and modified constantly. Distributing it is a major challenge. One possibility is the concept of a web feed such as is commonly associated with web logging (or weblogging or blogging). Also known as RSS and RSS feeds, but not limited to that specific feed format, web feeds can be used to distribute any type of information, as well as knowledge itself. Specific formats would need to be developed to deeply support knowledge feeds. One problem with the current technology implementation is that the user software must explicitly go through the effort of explicitly reading the web feeds of interest, which is fine for a small number of feeds, but clearly unsuitable when the number of knowledge sources rises into the thousands and even millions. Fortunately, there is no shortage of potential solutions to this issue.

The primary intent here is for a mechanism for communication of knowledge between software agents, but there is also significant potential for communication of knowledge to consumers, as well as an input channel to enable consumers to communicate knowledge to their agents.

Software Agent Feeds

In addition to the use of web feeds for communicating with consumers, they are also an excellent communication model for software agents themselves. In general, the primary output of any software agent might be a web feed or knowledge feed which represents the results of the efforts of that software agent. The use of software agent feeds could dramatically raise the interaction power of the Consumer/Agent Web.

Social User Interfaces

Although software agents operate autonomously most of the time, there is occasionally a need for communication with the consumer. At those times, a social user interface (SUI) is highly desirable, allowing the consumer and agent to communicate in a mode that is convenient, efficient, effective, friendly, and non-intimidating. A SUI would include elements of natural language, speech, gestures, and facial expressions, among other techniques. This remains a research topic.

Scalable: Transcending Scale

Needless to say, technology to support large numbers of interacting consumers needs to be scalable. More than simply the capacity to handle the volume and traffic, the concepts supported by the technology needs to be capable of transcending scale. Software agents, acting on behalf of their respective consumers offer capabilities to operate on very large scales. Consumers need scalable categories for concepts so that they can interact with other consumers who might be working at a different but relevant level of conceptual categorization

Open Source Software

Because of the intensity of trust required on the part of consumers to put their faith in software agents, and a desire to foster and stimulate a robust, vibrant, and innovative community, it would be wise for software agent technology to be as transparent as possible, suggesting that open source software be the rule, although there may be exceptions.

Open Data

As important as it may be for the code of software agent technology to be open source, it is far more important that the data formats used by software agents be open. By adhering to an open data approach, we can greatly facilitate interoperability and network effects.

There are really two distinct elements of open data:

  1. The data formats are readily available and transparent.
  2. The data repositories themselves are accessible.

Facilitate Entertainment

Vast amounts of information are available online on entertainment opportunities. Software agent technology, through its knowledge of the consumer's interests, can mediate and facilitate the exploitation of entertainment opportunities. In some cases, interaction with other consumers can provide additional entertainment opportunities. Software agents can alert consumers to opportunities that they were unaware of or never even imagined.

Software agent technology can also be used to implement online entertainment capabilities.

Economics

Traditional computer software applications have either been bundled with hardware or a service, licensed for a fee, or subsidized with advertising. This presents a challenge since the bulk of software agent technology runs autonomously and has no user interface to support advertising. Software agent technology also tends to be very fragmented, distributed over many computer systems, and access resources across networks, further complicating any attempts to erect "toll booths". Finally, the economic value to the consumer will vary widely, so there is no clear method for assessing consumers for "costs" relative to the value that is delivered.

Deployment of software agent technology on a massive scale would clearly place significant load on existing network and computer system infrastructure. That cost must be shouldered somewhere, by somebody.

One technical issue is that the amount of resource usage needed to satisfy a consumer request will tend to be non-obvious, so simply presenting a bill after the fact could potentially be so shocking as to be a complete non-starter.

Challenges

What about Microsoft Bob?

If Microsoft Bob had not become a reality and such a commercial flop, people would still be seriously talking about the need for and potential benefits from a Bob-like application with a "social interface". Clearly, Bob had its faults, but maybe not so clearly Bob also embodied quite a number of valid concepts. We've thrown the baby out with the bath water, but maybe we can recover enough fragments of Bob's DNA to do a thorough analysis of the good and bad and ugliness of Bob so that we can develop a set of principle for going forward.

Yes, Bob was a commercial disaster, but we can do better, much better.

TBD: detail the lessons from Microsoft Bob

TBD: modest proposal for "Next Generation Bob"

What About Ray Kurzweil's "Singularity"?

Ray Kurzweil is certainly a very bright guy, even there is no reliable metric for judging prognostications about the future. The vision in his new book "The Singularity Is Near : When Humans Transcend Biology" is not incompatible with my thoughts expressed here. Yes, he has a much loftier vision of melding the human brain with artificial intelligence, robotics, nanotechnology, and genetic technology, but none of that would preclude anything I'm suggesting here. His idea of "near" is forty years, and I'm merely hypothesizing about more mundane objectives within the next two to five to ten or maybe twenty years.

Consumer Use of Software Agents for Knowledge-Based Computing < 0.0001% of Kurzweil's Singularity

However much of a technology advance is required to achieve Kurzweil's Singularity, I would hypothesize that the use of software agent technology for knowledge-based computing as envisioned in this paper may be less than 1/10,000th of 1% of what Kurzweil's vision would require. The bottom line is that if if Kurzweil's vision is wrong or delayed, the vision espoused here is still quite practical.

Computing Models

Although there are many features of modern software which exhibit agent-like characteristics, the sense of agency tends to be constrained by the general form of computing model that is being utilized:

Email is great since it enables asynchronous communications, but it adds negligible intelligence to the communications.

Chat rooms can be fun and offer a social atmosphere, but again offer negligible intelligence to the mix.

Auction systems such as eBay enable a new twist on ancient haggling, but again offer negligible intelligence to the mix.

Shopping "bots" begin to add a little intelligence, but not much.

In all cases the best we're looking at is large databases, distributed computation, and rapid exchange of information. Those capabilities are great, but the sense of agency and intelligence is still missing.

We have technology for users to collaborate, but they are little better than traditional email and telephone exchanges.

We have technology to distribute raw computing power, but little in the way of distributing knowledge and intelligence.

Procedures vs. Tasks vs. Goals

Traditional computer programs are great for automating discrete tasks or sequences of procedural steps. The real promise of software agents is to move a step higher and automate the pursuit of goals, where the idea is known, but the precise path to fulfill the idea is not known in advance. The agent would have the responsibility of taking a goal and decomposing it and recomposing it as implicit tasks to be performed using resources and services available in the computing environment.

Values and Ideals and Life Goals

A giant leap can be made in the ability of software agents to satisfy the needs and desires of consumers once we begin to support a machine-readable form for the values that a consumer has. That will dramatically simplify the consumer's task of expressing goals.

We can gain yet another giant leap in leverage for the consumer by empowering them to express their ideals as well.

An even greater leverage for the consumer will come once we have mechanisms for consumers to express their life goals.

Knowledge of a consumer's goals, values, ideals, and life goals will enable software agents to have a significant level of insight into how a consumer's needs and desires can be optimally satisfied.

Computing Infrastructure Will Vanish into Transparent Ubiquity

The long-term goal is that the computing infrastructure will vanish into transparent ubiquity, meaning that computer hardware and software will be everywhere and operating automatically so that users don't even notice its existence, but that's for the long term. In the interim, the goal is to make computing increasingly more ubiquitous and increasingly more transparent. Software agent technology is a key component of this vision, enabling software to operate on the user's behalf without needing to be visible to the user.

Ultimate User Interface: Life Itself

As we progress towards transparent ubiquity, the user interface begins to vanish as a computing artifact and begins to blend in with the objects around us. So, we begin to converge towards the ultimate user interface: life itself. By interacting with objects around us we give the underlying software input. That natural input coupled with the vast knowledgebase transparently and implicitly available to our software agents provides the vast bulk of the information needed for software agents to pursue our goals, values, ideals, and life goals.

Retreat into the Background

As we make progress on causing the computing infrastructure to vanish into transparent ubiquity, users will be able to observe that computing functions will begin to retreat into the background. Initially the user will still know that the computing functions are still there, but over time that knowledge will begin to fall away from the user's consciousness.

Location Awareness

With advances in GPS and wireless networks, computer software within handheld devices can now tailor their behavior to the specific geographic location.

Ubiquitous Computing and Ambient Intelligence

As computing devices become smaller and cheaper and easier to connect, they will become pervasive and embedded in virtually everything around us. This is known as ubiquitous computing. Once the hardware infrastructure for ubiquitous computing is in place, software agent technology can be distributed on that infrastructure and begin to offer services in support of users in such environments. This is known as ambient intelligence, intelligence that is everywhere around us without the need to communicate with computers using old-fashioned user interfaces.

Software agents running in such an environment can tap into both the users in the environment and the knowledgebases for those users, to the extent that each user enables such access.

User Model of Software Agents

Although software agents tend not to have user interfaces and operate "un