1. A method for collaboration, the method comprising: identifying a plurality of items with unique identifiers that can be shared among a plurality of users with unique identifiers; having each user annotate a plurality of such items, with at least one keyword in at least one natural language, independently of other users, each such item being annotated by at least one user, each such annotation being represented by an annotation event which contains the identifier of the annotating user, the identifier of the item being annotated, and the at least one keyword that the annotating user chooses to describe the item being annotated, each such annotation event being generated from a plurality of event sources of at least one type; aggregating such annotation events from the event sources such that the keywords associated with a specific item are aggregated from the annotation events for the item as well as the keywords associated with a specific user are aggregated from the annotation events for the user; and having at least one such user search for items or users by keywords such that corresponding items or users respectively, that have the searched keywords in their aggregated keywords are returned as results.