With the advent of FTP, bulletin boards and then the Web, one can display information that is accessible by many others. Thus we have the second paradigm one-to-many.
With the web 2.0 developments such as file sharing, blogs, Wiki, and social networking, a new set of Internet applications enable many people to both contribute and receive information and information elements can be interlinked across different websites. This kind of Internet application shows the beginning of the "many-to-many" paradigm.
With the evolution to the full "many-to-many" computing paradigm, people can input and receive information to and from the Internet; they will be able to connect and communicate dynamically within a flexibly formed scope; there will be no artificial boundary between information and communication tools, and the definition of "many" will go well beyond people to include entities such as organisations, products, processes, events, concepts and so on.
Some many-to-many applications require a real-time stream of information between all connected parties, such as chat rooms, group scratch-pads, shared 3D environments and conference-calling.
Publish/subscribe (or pub/sub) is a messaging pattern where senders (publishers) of messages do not program the messages to be sent directly to specific receivers (subscribers). Rather, published messages are characterised into classes, without knowledge of what, if any, subscribers there may be. Subscribers express interest in one or more classes, and only receive messages that are of interest, without knowledge of what, if any, publishers there are. This decoupling of publishers and subscribers can allow for greater scalability and a more dynamic network topology.
Pub/sub is a sibling of the message queue paradigm, and is typically one part of a larger message-oriented middleware system. Most messaging systems support both the pub/sub and message queue models in their API such as ZeroMQ (ØMQ).
The foundation of our software architecture is the users and groups system designed to support the needs of a trust group. This is effectively a pub/sub system where the group members are all subscribers of the groups' shared content and can also publish revisions that contribute to that shared content.
The other extensive use our architecture makes of the many-to-many pattern is in the class-to-instances relationship. A class is a defined pattern in the unified ontology which could be as simple as a jQuery widget, or could be an entire organisation template.
Each class, no matter how simple or complex, has an ongoing development aspect to it which means that every node in the network technically follows the pub/sub pattern and is part of the Foundation Ontology.
In addition to the developers of a pattern, the users of the pattern also contribute information and resource to it because every running peer that uses the pattern contributes resource and information to it thereby helping to support its continued existence and improvement.
The most important information instances contribute (to the shared information about the pattern that they all share) is local usage and performance and statistics. This makes available to all users the information about the most widely used preferences and methods within their context, and gives the developers good information for where to focus their efforts.