Differences

This shows you the differences between two versions of the page.

chapter_2 [2009/11/18 16:33]
randy
chapter_2 [2009/12/01 09:39] (current)
randy
Line 1: Line 1:
===== A (Graphical) Grammar for Reputation ===== ===== A (Graphical) Grammar for Reputation =====
-The phrase //reputation system// describes a wide array of practices, technologies, and user interface elements. This chapter provides a comprehensive grammar of attributes, processes, and presentation that we'll use in future chapters to describe current systems and define new ones. You'll be able to use this grammar both to understand and diagram common reputation systems, and to design systems of your own+The phrase //reputation system// describes a wide array of practices, technologies, and user interface elements. In this chapter, we'll build a visual “grammar” to describe the attributes, processes, and presentation of reputation systems. We'll be using this grammar throughout subsequent chapters to describe existing reputation systems and define new ones. Furthermore, //you// should be able to use this grammar as well-both to understand and diagram common reputation systems, and to design systems of your own.
- +
-Many terms describe and analyze the relationships between concepts and attributes in a specific domain of knowledge, including modeling languages, meta-modeling, ontologies, taxonomies, grammars, and patterns. Though we are proposing a reputation grammar, the excerpt below from the Wikipedia entry "meta-modeling" describes what we aim to accomplish with this section, and indeed this entire book: to establish a consistent and standard method for describing reputation models and systems.+
Line 10: Line 8:
[[http://en.wikipedia.org/wiki/Metamodeling|http://en.wikipedia.org/wiki/Metamodeling]] [[http://en.wikipedia.org/wiki/Metamodeling|http://en.wikipedia.org/wiki/Metamodeling]]
> >
-A formalized specification of domain-specific notations . . . following a strict rule set.+A formalized specification of domain-specific notations following a strict rule set.
</blockquote> </blockquote>
-Much reputation-related terminology is inconsistent, confusing, and even contradictory, depending on what site you visit or which expert opinion you read. Over the last 30 years, we've evaluated and developed scores of online and offline reputation systems. We've identified many concepts and attributes common to them all: enough similarity that we're proposing a common lexicon and a "graphical grammar"-the common concepts, attributes, and methods involved-to build a foundation for a shared understanding of reputation systems.+Much reputation-related terminology is inconsistent, confusing, and even contradictory, depending on what site you visit or which expert opinion you read. Over the last 30 years, we've evaluated and developed scores of online and offline reputation systems. We've identified many concepts and attributes common to them all: enough similarity that we're proposing a common lexicon and a “graphical grammar” -the common concepts, attributes, and methods involved-to build a foundation for a shared understanding of reputation systems.
Why propose a //graphical// grammar? Reputation is an abstract concept and deploying it usually requires the participation of many people. In practice, we've consistently seen that having a two-dimensional drawing of the reputation model facilitates the design and implementation phases of the project. Capturing the relationships between the inputs, messages, processes, and outputs in a compact, simple, and accessible format is indispensable. Think of it like a screen mock, but for a critical, normally invisible, part of the application. Why propose a //graphical// grammar? Reputation is an abstract concept and deploying it usually requires the participation of many people. In practice, we've consistently seen that having a two-dimensional drawing of the reputation model facilitates the design and implementation phases of the project. Capturing the relationships between the inputs, messages, processes, and outputs in a compact, simple, and accessible format is indispensable. Think of it like a screen mock, but for a critical, normally invisible, part of the application.
Line 18: Line 16:
In describing this grammar, we'll borrow a metaphor from basic chemistry: atoms (reputation statements) and their constituent particles (sources, claims, and targets) are bound with forces (messages and processes) to make up molecules (reputation models), which constitute the core useful substances in the universe. Sometimes different molecules are mixed in solutions (reputation systems) to catalyze the creation of stronger, lighter, or otherwise more useful compounds. In describing this grammar, we'll borrow a metaphor from basic chemistry: atoms (reputation statements) and their constituent particles (sources, claims, and targets) are bound with forces (messages and processes) to make up molecules (reputation models), which constitute the core useful substances in the universe. Sometimes different molecules are mixed in solutions (reputation systems) to catalyze the creation of stronger, lighter, or otherwise more useful compounds.
-<note>The graphical grammar of reputation systems is continually evolving as the result of changing markets and technologies. Visit this book's companion wiki at [[http://buildingreputation.com|http://buildingreputation.com]]for up-to-date information and to participate in this grammar's evolution.+<note tip>The graphical grammar of reputation systems is continually evolving as the result of changing markets and technologies. Visit this book's companion wiki at [[http://buildingreputation.com|http://buildingreputation.com]]for up-to-date information and to participate in this grammar's evolution.
</note> </note>
-==== Atoms and Particles: The Reputation Statement and Its Components ==== +==== The Reputation Statement and Its Components ==== 
-<html><a name="Figure_2-1"><center></html>// Figure_2-1: Diagramming the reputation statement //<html></center></a></html> +<html><a name="Figure_2-1"><center></html>// Figure_2-1: Much like in archery, anyone can fire a claim at anything. It doesn't necessarily mean the claim is accurate. Throughout this book, claims will be represented by this stylized arrow shape. //<html></center></a></html> 
-<html><center><img width="50%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Ch02-ReputationStatement.png"/></center></html>+<html><center><img width="50%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Figure_2-1.png"/></center></html>
As we proceed with our grammar, you'll notice that reputation systems compute many different reputation values that turn out to possess a single common element: the reputation statement. In practice, most inputs to a reputation model are either already in the form of reputation statements or are quickly transformed into them for easy processing. As we proceed with our grammar, you'll notice that reputation systems compute many different reputation values that turn out to possess a single common element: the reputation statement. In practice, most inputs to a reputation model are either already in the form of reputation statements or are quickly transformed into them for easy processing.
Line 38: Line 36:
=== Reputation Sources: Who [or What] Is Making a Claim? === === Reputation Sources: Who [or What] Is Making a Claim? ===
-Every reputation statement is made by someone or something. A claim whose author is unknown is impossible to evaluate: the statement "Some people say product X is great" is meaningless. Who are "some people"? Are they like me? Do they work for the company that makes product X? Without knowing something about who or what made a claim, you can make little use of it.+Every reputation statement is made by someone or something. A claim whose author is unknown is impossible to evaluate: the statement “Some people say product X is great” is meaningless. Who are “some people” ? Are they like me? Do they work for the company that makes product X? Without knowing something about who or what made a claim, you can make little use of it.
-We start building our grammar from the ground up - we need a few primitive objects: Entities, Sources, Users and a special group object - the Aggregate Source..+We start building our grammar from the ground up-we need a few primitive objects: Entities, Sources, Users and a special group object-the Aggregate Source..
Line 53: Line 51:
  * **Aggregate Source**   * **Aggregate Source**
-    * Reputation systems are all about collecting and combining or aggregating multiple reputation statements. The reputation statements that hold these collected claims are known as//roll-ups// and always use a special identifier: the aggregate source. This sounds like a special exception, but it isn't - this is the very nature of reputation systems, even in life: Claims that a movie is number one at the box-office doesn't give you a detailed list of everyone who bought a ticket, nor should it. That claim always comes with the name of an aggregation source, such as "... according to Billboard Magazine."+    * Reputation systems are all about collecting and combining or aggregating multiple reputation statements. The reputation statements that hold these collected claims are known as//roll-ups// and always use a special identifier: the aggregate source. 
 +<html><center><img width="50%" src="http://buildingreputation.com/lib/exe/fetch.php?media=InformalFigure_2-1.5.png"/></center></html> 
 + 
 +This sounds like a special exception, but it isn't-this is the very nature of reputation systems, even in life: claims that a movie is number one at the box-office don't give you a detailed list of everyone who bought a ticket, nor should they. That claim always comes with the name of an aggregation source, such as “… according to Billboard Magazine.
=== Reputation Claims: What Is the Target's Value to the Source? On What Scale? === === Reputation Claims: What Is the Target's Value to the Source? On What Scale? ===
The //claim// is the value that the source assigned to the target in the reputation statement. Each claim is of a particular claim //type// and has a claim value. <html><a href="#Figure_2-1">Figure_2-1</a>&nbsp;</html>shows a claim with a 5-star rating claim type, and this particular reputation statement has a claim value of 4 (stars). The //claim// is the value that the source assigned to the target in the reputation statement. Each claim is of a particular claim //type// and has a claim value. <html><a href="#Figure_2-1">Figure_2-1</a>&nbsp;</html>shows a claim with a 5-star rating claim type, and this particular reputation statement has a claim value of 4 (stars).
-<html><a name="Figure_2-2"><center></html>// Figure_2-2: Several of the common claim types //<html></center></a></html> +<html><a name="Figure_2-2"><center></html>// Figure_2-2: A number of common claim types, targeted at a variety of reputable entities. //<html></center></a></html> 
-<html><center><img width="50%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Ch02-Fig_2-1-fig_claims.png"/></center></html>+<html><center><img width="50%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Figure_2-2.png"/></center></html>
<html><a name='Chap_2-Score_Classes'></a></html> <html><a name='Chap_2-Score_Classes'></a></html>
Line 79: Line 80:
<html><a name='Chap_2-Reputation_Targets'></a></html> <html><a name='Chap_2-Reputation_Targets'></a></html>
=== Reputation Targets: What (or Who) Is the Focus of a Claim? === === Reputation Targets: What (or Who) Is the Focus of a Claim? ===
-A reputation statement is always focused on some unique identifiable entity-the //target// of the claim. Reputations are assigned to targets, for example, a new eatery. Later, the application queries the reputation database supplying the same eatery's entity identifier to retrieve its reputation for display: "Yahoo! users rated Chipotle Restaurant 4 out of 5 stars for service." The target is left unspecified (or only partially specified) in database requests based on claims or sources: "What is the best Mexican restaurant near here?" or "What are the ratings that Lara gave for restaurants?"+A reputation statement is always focused on some unique identifiable entity-the //target// of the claim. Reputations are assigned to targets, for example, a new eatery. Later, the application queries the reputation database supplying the same eatery's entity identifier to retrieve its reputation for display: “Yahoo! users rated Chipotle Restaurant 4 out of 5 stars for service.The target is left unspecified (or only partially specified) in database requests based on claims or sources: “What is the best Mexican restaurant near here?or “What are the ratings that Lara gave for restaurants?
Line 92: Line 93:
==== Molecules: Constructing Reputation Models Using Messages and Processes ==== ==== Molecules: Constructing Reputation Models Using Messages and Processes ====
-<html><a name="Figure_2-3"><center></html>// Figure_2-3: A simple reputation model: Vote-to-Promote //<html></center></a></html> +<html><a name="Figure_2-3"><center></html>// Figure_2-3: This is almost the simplest reputation model you'll find. Users endorse articles, and the sum of their votes is displayed by that article. //<html></center></a></html> 
-<html><center><img width="80%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Ch02-AnatomyOfRepModel.png"/></center></html>+<html><center><img width="80%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Figure_2-3.png"/></center></html>
Just as molecules are often made up of many different atoms in various combinations to produce materials with unique and valuable qualities, what makes reputation models so powerful is that they aggregate reputation statements from many sources and often statements of different types. Instead of concerning ourselves with valence and Van der Waals forces, in reputation models we bind the atomic units-the reputation statements-together with //messages// and //processes//. Just as molecules are often made up of many different atoms in various combinations to produce materials with unique and valuable qualities, what makes reputation models so powerful is that they aggregate reputation statements from many sources and often statements of different types. Instead of concerning ourselves with valence and Van der Waals forces, in reputation models we bind the atomic units-the reputation statements-together with //messages// and //processes//.
Line 104: Line 105:
  * **Reputation Model**   * **Reputation Model**
    * A reputation model describes all of the reputation statements, events, and processes for a particular context. Usually, a model focuses on a single type of reputable entity.     * A reputation model describes all of the reputation statements, events, and processes for a particular context. Usually, a model focuses on a single type of reputable entity.
-Yahoo! Local, Travel, Movies, TV, etc. are all examples of ratings-and-reviews reputation models. EBay's seller feedback model, in which users ratings of transactions are reflected in sellers' profiles, is a karma reputation model. The example in <html><a href="#Figure_2-3">Figure_2-3</a>&nbsp;</html>is one of the simplest possible models and was inspired by the //digg it// vote-to-promote reputation model (see <html><a href="/doku.php?id=Chapter_6">Chapter_6</a>&nbsp;</html>) made popular at Digg.com.+Yahoo! Local, Travel, Movies, TV, etc. are all examples of ratings-and-reviews reputation models. EBay's seller feedback model, in which users' ratings of transactions are reflected in sellers' profiles, is a karma reputation model. The example in <html><a href="#Figure_2-3">Figure_2-3</a>&nbsp;</html>is one of the simplest possible models and was inspired by the //Digg it// vote-to-promote reputation model (see <html><a href="/doku.php?id=Chapter_6">Chapter_6</a>&nbsp;</html>) made popular by Digg.com.
  * **Reputation Context**   * **Reputation Context**
Line 114: Line 115:
  * **Reputation Message**   * **Reputation Message**
-    * Reputation messages, represented by the flow lines in reputation model diagrams, are information supplied to a reputation process for some sort of computational action. In this example, the input is a reputation statement delivered as a message to the Raw Sum of Votes process. These messages may come from other processes, explicit user action, or external autonomous software. Don't confuse the party sending the messages with the reputation source-they are usually unrelated. For example, even when the source of a reputation input is a user, the message usually comes from an application - allowing the reputation system to take different actions based on the identity sender of the message.+    * Reputation messages, represented by the flow lines in reputation model diagrams, are information supplied to a reputation process for some sort of computational action. In this example, the input is a reputation statement delivered as a message to the Raw Sum of Votes process. These messages may come from other processes, explicit user action, or external autonomous software. Don't confuse the party sending the messages with the reputation source-they are usually unrelated. For example, even when the source of a reputation input is a user, the message usually comes from an application-allowing the reputation system to take different actions based on the identity sender of the message.
  * **Input Event (Reputation Message)**   * **Input Event (Reputation Message)**
Line 125: Line 126:
  * **Stored Reputation Value**   * **Stored Reputation Value**
    * A stored reputation value is simply a reputation statement that may be read as part of a reputation process that calculates a new claim value for itself or another reputation statement.     * A stored reputation value is simply a reputation statement that may be read as part of a reputation process that calculates a new claim value for itself or another reputation statement.
-Many reputation processes use message input to transform a reputation statement. In our example in <html><a href="#Figure_2-3">Figure_2-3</a>&nbsp;</html>, when a user clicks "I Digg this URL," the application sends the input event to a reputation process that is a simple counter: ''CountOfVotes'' . This counter is a //stored reputation value// which is read for its current value, then incremented by one, and then is stored again. This brings the reputation database up to date and the application may use the target identifier (in Digg's case, a URL) to get the claim value.+Many reputation processes use message input to transform a reputation statement. In our example in <html><a href="#Figure_2-3">Figure_2-3</a>&nbsp;</html>, when a user clicks “I Digg this URL,the application sends the input event to a reputation process that is a simple counter: ''CountOfVotes'' . This counter is a //stored reputation value// which is read for its current value, then incremented by one, and then is stored again. This brings the reputation database up to date and the application may use the target identifier (in Digg's case, a URL) to get the claim value.
<html><a name='Chap_2-Roll-ups'></a></html> <html><a name='Chap_2-Roll-ups'></a></html>
  * **Roll-ups**   * **Roll-ups**
Line 145: Line 146:
=== Building on the Simplest Model === === Building on the Simplest Model ===
-<html><a name="Figure_2-4"><center></html>// Figure_2-4: Adding activity to the Vote-to-Promote reputation model //<html></center></a></html> +<html><a name="Figure_2-4"><center></html>// Figure_2-4: A slightly-more-evolved model. Now, articles are ranked not only according to endorsements, but also the amount of discussion they generate. //<html></center></a></html> 
-<html><center><img width="80%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Ch02-Fig_2-4-fig_reputation_model.png"/></center></html>+<html><center><img width="80%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Figure_2-4.png"/></center></html>
<html><a href="#Figure_2-4">Figure_2-4</a>&nbsp;</html>shows a fuller representation of a Digg.com-like vote-to-promote reputation model. This example adds a new element to determining community interest in an article: adding a reputation for the level of user-activity measured by comments left on the target entity. These two are weighted and combined to product a combined rating. <html><a href="#Figure_2-4">Figure_2-4</a>&nbsp;</html>shows a fuller representation of a Digg.com-like vote-to-promote reputation model. This example adds a new element to determining community interest in an article: adding a reputation for the level of user-activity measured by comments left on the target entity. These two are weighted and combined to product a combined rating.
Line 161: Line 162:
<html><a name='Chap_2-Containers_and_Targets'></a></html> <html><a name='Chap_2-Containers_and_Targets'></a></html>
==== Complex Behavior: Containers and Reputation Statements as Targets ==== ==== Complex Behavior: Containers and Reputation Statements as Targets ====
-<html><a name="Figure_2-5"><center></html>// Figure_2-5: Reputation container: a typical restaurant review //<html></center></a></html> +<html><a name="Figure_2-5"><center></html>// Figure_2-5: A reputation container: some claims make more sense when considered together than standing alone. //<html></center></a></html> 
-<html><center><img width="50%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Ch02-Fig_2-5-fig_review.png"/></center></html>+<html><center><img width="50%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Figure_2-5.png"/></center></html>
Just as there exist some interesting looking molecules in nature and much like hydrogen bonds are especially strong, certain types of reputation statements called //containers// join multiple closely related statements in one super-statement. Most websites with user-generated ratings and comments for products or services provide examples of this kind of reputation statement: they clump together different star ratings with a text comment into an object formally called a //review//. See <html><a href="#Figure_2-5">Figure_2-5</a>&nbsp;</html>for a typical example, restaurant reviews. Just as there exist some interesting looking molecules in nature and much like hydrogen bonds are especially strong, certain types of reputation statements called //containers// join multiple closely related statements in one super-statement. Most websites with user-generated ratings and comments for products or services provide examples of this kind of reputation statement: they clump together different star ratings with a text comment into an object formally called a //review//. See <html><a href="#Figure_2-5">Figure_2-5</a>&nbsp;</html>for a typical example, restaurant reviews.
Line 168: Line 169:
Containers are useful devices for determining the order of reputation statements. While it's technically true that each individual component of a container //could// be represented and addressed as a statement of its own, that arrangement would be semantically sloppy and lead to unnecessary complexity in your model. The container model maps well to real life. You probably wouldn't think of the series of statements about Dessert Hut made by user Zary22 as a rapid-fire stream of individual opinions; you'd more likely consider them related, and influenced by one another. Taken as a whole, the statements express Zary22's experience at Dessert Hut. Containers are useful devices for determining the order of reputation statements. While it's technically true that each individual component of a container //could// be represented and addressed as a statement of its own, that arrangement would be semantically sloppy and lead to unnecessary complexity in your model. The container model maps well to real life. You probably wouldn't think of the series of statements about Dessert Hut made by user Zary22 as a rapid-fire stream of individual opinions; you'd more likely consider them related, and influenced by one another. Taken as a whole, the statements express Zary22's experience at Dessert Hut.
-<note>A //container// is a compound reputation statement with multiple claims for the same source and target.+<note tip>A //container// is a compound reputation statement with multiple claims for the same source and target.
</note> </note>
-<html><a name="Figure_2-6"><center></html>// Figure_2-6: A reputation statement is the target of a helpful vote //<html></center></a></html> +<html><a name="Figure_2-6"><center></html>// Figure_2-6: A reputation statement can itself be the target of a helpful vote. Here, MuvyLuvrhas written a review that others can then rate. //<html></center></a></html> 
-<html><center><img width="65%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Ch02-StatementsCanBeTargets.png"/></center></html>+<html><center><img width="65%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Figure_2-6.png"/></center></html>
-Once a reputation statement exists in your system, consider how you might make it a reputable entity itself, as in <html><a href="#Figure_2-6">Figure_2-6</a>&nbsp;</html>This indirection provides for subtle and powerful feedback. For example, people regularly form their own opinions //about// the opinions of others based on some external criteria or context - ("Jack ////hated//////The Dark Knight//, but he and I never see eye-to-eye anyway.")+Once a reputation statement exists in your system, consider how you might make it a reputable entity itself, as in <html><a href="#Figure_2-6">Figure_2-6</a>&nbsp;</html>This indirection provides for subtle and powerful feedback. For example, people regularly form their own opinions //about// the opinions of others based on some external criteria or context. (“Jack ////hated//////The Dark Knight//, but he and I never see eye-to-eye anyway.)
-<html><a name="Figure_2-7"><center></html>// Figure_2-7: Helpful votes are rolled-up into the review container //<html></center></a></html> +<html><a name="Figure_2-7"><center></html>// Figure_2-7: Helpful votes for a review are rolled up into an aggregate HelpfulScore. It's often more efficient to just store this score back to the review container for easy retrieval. //<html></center></a></html> 
-<html><center><img width="80%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Ch02-HelpfulReviewTabulation.png"/></center></html>+<html><center><img width="80%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Figure_2-7.png"/></center></html>
-Another feature of review-based reputation systems is that they often incorporate a form of built-in user feedback about reviews written by other users. We'll call this feature the //was this helpful?// pattern; see <html><a href="#Figure_2-7">Figure_2-7</a>&nbsp;</html>. When a user indicates whether a review was helpful or not, the target is a review (container) written earlier by a different user.+Another feature of review-based reputation systems is that they often incorporate a form of built-in user feedback about reviews written by other users. We'll call this feature the //was this helpful?// pattern. (See <html><a href="#Figure_2-7">Figure_2-7</a>&nbsp;</html>.) When a user indicates whether a review was helpful or not, the target is a review (container) written earlier by a different user.
The input message takes the form of a single reputation statement: The input message takes the form of a single reputation statement:
Line 186: Line 187:
This model includes only one reputation process: This model includes only one reputation process:
-  - //Calculate helpful score//: When the message arrives load the ''TotalVotes'' stored reputation value, increment, and store it. If the //vote// is not zero, the process increments ''HelpfulVotes'' . Finally set the ''HelpfulScore'' to a text representation of the score suitable for display: "''HelpfulVotes'' out of ''TotalVotes'' ". This representation is usually stored in the very same review container that the voter was judging (i.e., had targeted) as helpful. This configuration simplifies indexing and retrieval; e.g., "Retrieve a list of the most helpful movie reviews by MuvyLuvr" and "Sort the list of movie reviews of //Aliens// by helpful score." Though the original review writer isn't the author of his helpful votes, his review is responsible for them and should contain them. +  - //Calculate helpful score//: When the message arrives load the ''TotalVotes'' stored reputation value, increment, and store it. If the //vote// is not zero, the process increments ''HelpfulVotes'' . Finally set the ''HelpfulScore'' to a text representation of the score suitable for display: ''HelpfulVotes'' out of ''TotalVotes'' .This representation is usually stored in the very same review container that the voter was judging (i.e., had targeted) as helpful. This configuration simplifies indexing and retrieval; e.g., “Retrieve a list of the most helpful movie reviews by MuvyLuvr” and “Sort the list of movie reviews of //Aliens// by helpful score.Though the original review writer isn't the author of his helpful votes, his review is responsible for them and should contain them. 
-You'll see variations on this simple pattern of reputation-statements-as-targets repeated throughout this book. It makes it possible to build fairly advanced meta-moderation capabilities into a reputation system. Not only can you ask a community "What's good?" -- you can also ask ". . . and whom do you believe?"+You'll see variations on this simple pattern of reputation-statements-as-targets repeated throughout this book. It makes it possible to build fairly advanced meta-moderation capabilities into a reputation system. Not only can you ask a community “What's good?-you can also ask “…and whom do you believe?
<html><a name='Chap_2-Mixing_Models_adding_Karma'></a></html> <html><a name='Chap_2-Mixing_Models_adding_Karma'></a></html>
==== Solutions: Mixing Models to Make Systems ==== ==== Solutions: Mixing Models to Make Systems ====
-<html><a name="Figure_2-8"><center></html>// Figure_2-8: Is Abusive: Mixing contexts to make a reputation system //<html></center></a></html> +<html><a name="Figure_2-8"><center></html>// Figure_2-8: Two or more separate models can work in symphony to create a larger, more robust reputation system. //<html></center></a></html> 
-<html><center><img width="80%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Ch02-Fig_2-8-fig_reputation_system.png"/></center></html>+<html><center><img width="80%" src="http://buildingreputation.com/lib/exe/fetch.php?media=Figure_2-8.png"/></center></html>
In one more invocation of our chemistry metaphor, consider that physical materials are rarely made of a single type of molecule. Chemists combine molecules into solutions, compounds, and mixtures to get the exact properties they want. But not all substances mix well-oil and water, for example. The same is true in combining multiple reputation model contexts in a single reputation system. It's important to combine only models with compatible reputation contexts. In one more invocation of our chemistry metaphor, consider that physical materials are rarely made of a single type of molecule. Chemists combine molecules into solutions, compounds, and mixtures to get the exact properties they want. But not all substances mix well-oil and water, for example. The same is true in combining multiple reputation model contexts in a single reputation system. It's important to combine only models with compatible reputation contexts.
Line 198: Line 199:
  * **Reputation System**   * **Reputation System**
-    * A //reputation system// is a set of one or more interacting reputation models. An example is SlashDot.com, which combines two reputation models: an entity reputation model of users' evaluations of individual message board postings, and a karma reputation model for determining the number of moderation opportunities granted to users to evaluate posts. It is a "the best users have the most control" reputation system. See <html><a href="#Figure_2-8">Figure_2-8</a>&nbsp;</html>+    * A //reputation system// is a set of one or more interacting reputation models. An example is SlashDot.com, which combines two reputation models: an entity reputation model of users' evaluations of individual message board postings, and a karma reputation model for determining the number of moderation opportunities granted to users to evaluate posts. It is a “the best users have the most control” reputation system. See <html><a href="#Figure_2-8">Figure_2-8</a>&nbsp;</html>
  * **Reputation Framework**   * **Reputation Framework**
Line 204: Line 205:
<html><a href="#Figure_2-8">Figure_2-8</a>&nbsp;</html>shows a simple abuse reporting system that integrates two different reputation models in a single //weighted voting// model that takes weights for the IP addresses of the abuse reporters from an external karma system. This example also illustrates an explicit output, common in many implementations. In this case, the output is an event sent to the application environment suggesting that the target comment be dealt with. In this case, the content would need to be reviewed and either hidden or destroyed. Many services also consider punitive action against the content creator's account, such as suspension of access. <html><a href="#Figure_2-8">Figure_2-8</a>&nbsp;</html>shows a simple abuse reporting system that integrates two different reputation models in a single //weighted voting// model that takes weights for the IP addresses of the abuse reporters from an external karma system. This example also illustrates an explicit output, common in many implementations. In this case, the output is an event sent to the application environment suggesting that the target comment be dealt with. In this case, the content would need to be reviewed and either hidden or destroyed. Many services also consider punitive action against the content creator's account, such as suspension of access.
-For the //reporter trustworthiness// context, the inputs and mechanism of this external reputation model are opaque - we don't know how the model works - because it is on a foreign service, namely TrustedSource.org by McAfee, Inc. Their service provides us one input, and it is different from previous examples:+For the //reporter trustworthiness// context, the inputs and mechanism of this external reputation model are opaque-we don't know how the model works-because it is on a foreign service, namely TrustedSource.org by McAfee, Inc. Their service provides us one input, and it is different from previous examples:
  - When a reputation system is prompted to request a new trust score for a particular IP address-perhaps by a periodic timer or on demand by external means-it retrieves the ''TrustedSourceReputation'' as input using the web service API, here represented as a URL. The result is one of the following categories: ''Trusted'' , ''Neutral'' , ''Unverified'' , ''Suspicious'' , or ''Malicious'' , which the system passes to the //Normalize IPTrustScore// process.   - When a reputation system is prompted to request a new trust score for a particular IP address-perhaps by a periodic timer or on demand by external means-it retrieves the ''TrustedSourceReputation'' as input using the web service API, here represented as a URL. The result is one of the following categories: ''Trusted'' , ''Neutral'' , ''Unverified'' , ''Suspicious'' , or ''Malicious'' , which the system passes to the //Normalize IPTrustScore// process.
Line 219: Line 220:
  - The //abusive content score// process uses one external variable: ''WebReputation'' is stored in a reputation statement with the same target IP address as was provided with the flag input message. The ''AbuseScore'' starts at 0 and is //increased// by the value of ''Flag'' multiplied by ''WebReputation'' . The system stores the score in a reputation statement with an aggregate source, numeric score type, and the comment identifier as the target, then passes the statement in a message to the //is abusive?// process.   - The //abusive content score// process uses one external variable: ''WebReputation'' is stored in a reputation statement with the same target IP address as was provided with the flag input message. The ''AbuseScore'' starts at 0 and is //increased// by the value of ''Flag'' multiplied by ''WebReputation'' . The system stores the score in a reputation statement with an aggregate source, numeric score type, and the comment identifier as the target, then passes the statement in a message to the //is abusive?// process.
  - //Is abusive?// then tests the ''AbuseScore'' against an internal constant, ''AbuseThreshold'' , in order to determine whether to highlight the target comment for special attention by the application. In a simple (request-reply) framework implementation, this reputation system returns the result of the //Is abusive?// process as ''TRUE'' or ''FALSE'' to indicate whether the comment is considered to be abusive. For high-performance asynchronous (fire-and-forget) reputation platforms like the one described in <html><a href="/doku.php?id=Appendix_A">Appendix_A</a>&nbsp;</html>an alert is triggered only when the result is TRUE.   - //Is abusive?// then tests the ''AbuseScore'' against an internal constant, ''AbuseThreshold'' , in order to determine whether to highlight the target comment for special attention by the application. In a simple (request-reply) framework implementation, this reputation system returns the result of the //Is abusive?// process as ''TRUE'' or ''FALSE'' to indicate whether the comment is considered to be abusive. For high-performance asynchronous (fire-and-forget) reputation platforms like the one described in <html><a href="/doku.php?id=Appendix_A">Appendix_A</a>&nbsp;</html>an alert is triggered only when the result is TRUE.
-This introduction of multiple models, external variables, and results handling completes our basic graphical grammar for describing reputation systems. 
-If you'd like to dive right in and see real-world examples of models, jump ahead to <html><a href="/doku.php?id=Chapter_4">Chapter_4</a>&nbsp;</html>. If you're interested in technical details and want to know more about implementing reputation frameworks and dealing with issues such as reliability, reversibility, and scale, look at <html><a href="/doku.php?id=Appendix_A">Appendix_A</a>&nbsp;</html>. Otherwise, next cover more detail about choosing the right reputation components and models for your specific application. +=== From Reputation Grammar To… === 
 +This chapter defined the graphical reputation grammar, from bottom (reputation statements made of sources, claims, and targets) to top (models, systems, and frameworks). All members of any team defining a reputation-enhanced application should find this reference material helpful in understanding their reputation systems. 
 + 
 +But at this point, different team functional roles might want to look at different parts of the book next: 
 + 
 + 
 +  * **Product Managers, Application Designers** 
 +    * <html><a href="/doku.php?id=Chapter_3">Chapter_3</a>&nbsp;</html>expands the grammar with a comprehensive review of common source, claim, target, and process types that serve as the basis of most reputation models. Think of these as the building-blocks that you would start with when thinking about designing your customized reputation model. 
 + 
 +  * **Reputation Framework Engineers, Software Architects** 
 +    * If you're interested in technical details and want to know more about implementing reputation systems and dealing with issues such as reliability, reversibility, and scale, look at <html><a href="/doku.php?id=Appendix_A">Appendix_A</a>&nbsp;</html>for a detailed discussion of reputation frameworks before proceeding.
 +  * **Reputation Enthusiasts**
 +    * If you're considering skipping the detailed extension of the grammar provided in <html><a href="/doku.php?id=Chapter_3">Chapter_3</a>&nbsp;</html>, be sure not to miss the <html><a href="/doku.php?id=Chapter_3#Chap_3-Craftsman_Tips">Chap_3-Craftsman_Tips</a>&nbsp;</html>for some detailed insights before skipping forward to <html><a href="/doku.php?id=Chapter_4">Chapter_4</a>&nbsp;</html>, which provides a detailed look at common deployed reputation systems.
chapter_2.1258590804.txt.gz · Last modified: 2009/11/18 16:33 by randy
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0