1. A method for a collaboration between a plurality of participants, comprising: contacting a collaboration process by a plurality of participants, wherein each participant is assigned a role, and wherein the role is subject to at least one membership criteria; qualifying a first participant from the plurality of participants based on the role of the first participant, wherein qualifying the first participant includes evaluating the first participant based on the at least one membership criteria associated with the role; selecting a second participant from the plurality participants; inviting the second participant to join the collaboration, wherein inviting includes sending a request from the first participant to the collaboration process, and forwarding the request from the collaboration process to the second participant; receiving a notification from the collaboration process when the second participant is available to join the collaboration; and communicating between the first participant and the second participant in the collaboration using a messaging layer, wherein the messaging layer executes on one or more microprocessor.