=====The Portable Application Engine=====

====Collaborative Computing====
Collaborative Computing is a unified data processing model wherein Services, Processes and People cooperatively work on shared data towards a common goal.  In contrast to client/server architecture, collaborative clients share their information, status and resources with other participants.  The paradigm reduces implementation complexity and offers a possible solution to a number of problems found in large-scale, distributed computing environments. Instead of building cooperative data processing systems from scratch, developers now have the option of buying them; allowing enterprise applications to be deployed in a fraction of the time, with reduced cost and complexity when compared to traditional multi-tiered solutions.
The term collaborative defines the relationship between system components.  Participants of a collaborative system are considered equipotent peers, simultaneously being able to act as both client and server, having equal responsibilities and roles.  Collaborative system components share state information and data resources by using a data management abstraction called a data space.

Unlike the complex, multi-tiered architectures, prevalent in many legacy systems, a collaborative system advocates a flat architecture using direct (non-brokered) peer-to-peer communication.  Application components use “smart” clients to form a unified data exchange complex (a sysplex) that allows system participants to share information in a structured fashion using a common application programming interface.

Collaborative computing systems integrate many aspects of social computing and distributed application features into a unified data processing platform and adhere to the following key principles: 

•	Equipotence of participant components, implying equal roles and peer-to-peer interaction
 
•	Consistency of data exchange, ensuring reliable state, format, ordering and delivery of data

•	Isolation of communication traffic and data scope (visibility) between participants and groups
 
•	Accountability of participating system members, facilitating membership views and roles

•	Pertinence of structure and content (content awareness) relative to data exchange between participants

•	Persistence of information and application state of participant components

Collaborative computing platforms like the Service Application Engine™ allow developers to use multiple computing models interchangeably; presenting the same information as query-able data, objects or messages depending on the application needs. Users and components may interact with each other by direct communication or by manipulating data space information in a cooperative and globally visible manner.  

Collaborative systems allow for well-known social computing principles (like participant state and views)  and technologies (such as Web Applications and Instant Messenger) to be integrated into a variety of systems and applications, thereby reducing the learning curve for users and lowering the barrier to entry for application developers.  The result is a pervasive computing environment that encompasses services, web applications, enterprise systems and mobile devices.  


====Reactive Programming====

In computing, reactive programming is a programming paradigm oriented around data flows and the propagation of change. 

====Practical Applications====

Although a number of Application Engine computing platforms are available in the industry today, they are for the most part, complex and proprietary, built up from a large set of diverse components such as databases, application servers, caching technologies and messaging systems.  Architectural complexity and licensing issues with such systems often make hosted implementations more practical.  Collaborative environments such as SalesForce, Facebook and the Google Application Engine are examples of some of the more popular implementations of proprietary collaborative computing platforms.
  
Due to the monolithic nature of such systems and complex component inter-dependencies, similar products and solutions are typically non-portable, costly to implement, difficult to maintain and customize.  A Collaborative Computing Platform seeks to commoditize many capabilities found in the larger, proprietary systems, allowing for practical application across a broad range of industries.  

Media and Social Computing Applies to collaborative systems that facilitate real-time collaboration between people thru the use of  interactive media such as Instant Messenger, File Sharing, Calendar, Media Streams for voice and video as well as the so called White Board spaces, wherein groups of participants can publicly chat, share documents, publish content, advertise status and so on.  Such applications are pervasive in Social Networking and Communications systems, but the actual systems are fairly primitive in the sense that they only require simple content management, participant views, peer and basic group communications.  

A broader use case for Application Engines are emerging in Health Information Services, Contractor Service Networks and, similar knowledge aggregation systems that promote the value of the so-called wisdom of crowds.  The benefit of social computing systems is their ability to facilitate group communication and collaborative decision making that often tends to be more accurate than individual, expert opinion.

Online Gaming and Game Theory Modeling
Practical application to on-line gaming builds on many social computing principles such as player chat, state advertisement and adds the aspect of collaborative state management to the equation.  Players manipulate a shared data space wherein the state of participants is constantly changing.  The actions of a single player can trigger a change in the state of other players, altering the state of the system in real-time; as in for example Online Auctions wherein the actions of a bidder alter the position of other bidders, and cooperative game play where events generated by character interactions on the screen trigger changes in geo-spatial position and visual perspective of other players. 

In game theory the same computing principles can be used to model cooperative and non-cooperative player interactions.   Changes to a shared data space can be vetoed or aborted by external participants with the results of player choices broadcast to participants and observers alike.  While game theory applications tend to be theoretical for the most part, application to financial market simulations, avionics and even biology exist. 
Financial Systems and E-Commerce 
Financial service networks are by far the broadest and most complex types of collaborative systems.  Recent turbulence in financial markets underscores the importance of looking at financial systems as a single, global, inter-dependent entity with cooperative control rather than a series of inter-connected information systems.

One of the driving forces behind efficient and stable financial markets is proper information sharing; another is the need for cooperative strategies that allow complex financial transactions to be mutually beneficial, leading to a type of fiscal equilibrium wherein profits are maximized in proportion to managed risk.  In fact, a number of modern economists have taken lessons learned from Game Theory, applying them to financial markets by invoking the so-called Nash Equilibrium as the basis for economic game theory.

In broad terms, the Nash Equilibrium states that if several (financial) institutions are making decisions at the same time, and if the outcome depends on the decisions of others, we cannot predict the results of the choices of multiple decision makers if we analyze those decisions in isolation. The corollary to the Nash rule is that even a non-cooperative decision maker must do what is right for both the individual and the group.
Lessons learned from economic game theory lay the ground work for a broad adoption of Collaborative Computing Platforms in Financial Services, Capital Markets industry and general Electronic Commerce systems.  At present, financial systems and electronic commerce networks are fragmented and incapable of facilitating the type of cooperative data processing necessary to achieve market equilibrium, mostly due to the intrinsic complexity of their architecture.  Without a supporting technology to make cooperative and informed decisions, organizations will not be able to take optimal, risk-averse actions; and the global nature of financial markets ensures that such failures will have a far-reaching economic impact.
In some ways, short comings of such systems are a failure on the part of technology and software vendors to provide users with adequate productivity tools that can be used to design reliable systems for cooperative data processing.  When we consider the increasing role of personal collaboration tools in business and human interaction, the value of collaborative computing systems becomes self-evident.  As such, the goal of a Collaborative Computing Platform is to allow for the same social computing principles to be applied across a broad variety of business applications, enabling the next generation of flexible and reliable, global enterprise systems. 