Commenting 169 Faving or Marking As Favorite 172 Internal Messaging Systems Friending Considered Harmful 176 Sharing Events 177 177 11. Modeling Data and Relationships 79 Getting to the Right URL Permalinks Putting Objects on the Internet 182 Issuing Identifiers 184 Identifying People 185 Using Data-Driven Site Design 186 Handling Containment 186 Changing Identities and Linking Content 188 Identity and Context-Dependent Views Exploring a Video Example 192 Aggregating Data to Create New Content 196 Handling groups and Privacy 197 Handling Privacy and Scaling Issues Making the most of metadata Connecting the relationship to the Content 200 Modeling Relationships 200 Entering the geoworld Becoming"Brokers of the World 205 Considering Time Implications ooking Beyond the Web Summa 208 12. Managing Identities 209 Existing Identities Forms of Identification Email 210 Real Names Versus Aliases and Screen Names 210 OpenID 211 Tips for Account Registration and Verification 213 The Need for Profile Pages 214 Profile Page Anatomy 214 Real-World Profile Pages 216 Table of Contents xi
Commenting 169 Faving or Marking As Favorite 171 Rating 172 Internal Messaging Systems 173 Friending Considered Harmful 176 Sharing Events 177 Summary 177 11. Modeling Data and Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Designing URLs 179 Getting to the Right URL 180 Permalinks 181 Putting Objects on the Internet 182 Issuing Identifiers 184 Identifying People 185 Using Data-Driven Site Design 186 Handling Containment 186 Changing Identities and Linking Content 188 Identity and Context-Dependent Views 188 Exploring a Video Example 192 Aggregating Data to Create New Content 195 Exploring Groups 196 Handling Groups and Privacy 197 Handling Privacy and Scaling Issues 198 Making the Most of Metadata 199 Connecting the Relationship to the Content 200 Modeling Relationships 200 Entering the Geoworld 201 Becoming “Brokers of the World” 205 Considering Time Implications 206 Looking Beyond the Web 207 Summary 208 12. Managing Identities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Existing Identities 209 Forms of Identification 210 Email 210 Real Names Versus Aliases and Screen Names 210 OpenID 211 Tips for Account Registration and Verification 213 The Need for Profile Pages 214 Profile Page Anatomy 214 Real-World Profile Pages 216 Table of Contents | xi
Activity Pages 221 224 13. Organizing Your Site for Navigation, Search, and Activity........... 225 Understanding In-Page Navigation Tagging Content 226 Searching for People Connecting People Through Content 231 Providing Activity Pages Determining Activity Page Conte 234 Filtering Activity Lists and the Past Using Replies to Create Conversations Allowing for Content Initiation Versus Content Follow-Up 239 Providing for Email Updates Creating RSS Feed Who Stole My Home Page? 242 Providing for Site Navigation Creating Page Titles 245 247 14. Making Connections 249 Choosing the Correct Relationship Model for Your Social Application 249 Creating the Language of Connections 252 Blocking Relationships Information Brokers 253 Notifications and Invitations nvites and Add As Follower Requests Secure and Personal Invites Pending Invites 256 Social Network Portability Social Graph 256 Importing Friends by the book Spamming, Antipatterns, and Phishing 259 Address Books, the OAuth Way Changing relationships over Time 263 Administering Groups Public or private? 264 Regulating Group Creation 265 I Table of Contents
Activity Pages 221 Invisibility and Privacy 222 Summary 224 13. Organizing Your Site for Navigation, Search, and Activity . . . . . . . . . . . . . . . . . . . . 225 Understanding In-Page Navigation 226 Tagging Content 226 Searching for People 229 Connecting People Through Content 231 Providing Activity Pages 232 Determining Activity Page Content 234 Filtering Activity Lists and the Past 236 Using Replies to Create Conversations 237 Allowing for Content Initiation Versus Content Follow-Up 239 Providing for Email Updates 240 Creating RSS Feeds 241 Who Stole My Home Page? 242 Providing for Site Navigation 243 Creating Page Titles 245 Summary 247 14. Making Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Choosing the Correct Relationship Model for Your Social Application 249 Creating the Language of Connections 252 Blocking Relationships 252 Information Brokers 253 Notifications and Invitations 253 Invites and Add As Follower Requests 254 Secure and Personal Invites 255 Pending Invites 255 Spam 256 Social Network Portability 256 Social Graph 256 Importing Friends by the Book 257 Spamming, Antipatterns, and Phishing 259 Address Books, the OAuth Way 260 Changing Relationships over Time 263 Administering Groups 264 Public or Private? 264 Regulating Group Creation 265 Summary 266 xii | Table of Contents
15. Managing Communities ∴267 Social Behavior in the Real World 267 Starting Up and Managing a Community Trolls and Other Degenerates Separating Communities 270 Encouraging Good Behavior Authenticating Through Profile Pages 271 Rating Posts and People Gaming the System 274 Membership by Invitation or Selection 275 Rewarding Good Behavior 275 Helping the Community Manage Itself 276 Moderating a Community 277 Intervention and Course Correction 278 Premoderation and Libel Extreme Measures: Banning Users and Removing Posts Absent Landlords Lead to Weak Communities 281 Filtering and Automation 281 Balancing Anonymity and Pseudo-Anonymity 282 Summary 283 16. Writing the Application............ Small Is Good: A Reprise How Social Applications Differ from Web Applications 286 Agile Methodologies 287 Deployment and Version Control 288 Testing Live Is Possible, but Use Conditionality Test-Driven Development 291 Automated Builds Make Management Easier 292 Applying Developer Tools to Social Applications Making Use of Flexible Development with Your Community frastructure and Web Operations Managing Operations esigning Social Appl cations Using Prototypes, Not Pictures 296 Assisting Developers with Use Cases 297 Designing in Good Behaviors 297 Your App Has Its Own Point of view How Code Review Helps Reduce Problems The Power and Responsibility of Naming Being REStful 301 Beyond the Web Interface, Please 302 i18n L10n and Their Friend UTF-8 Table of Contents I xii
15. Managing Communities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Social Behavior in the Real World 267 Starting Up and Managing a Community 268 Trolls and Other Degenerates 269 Separating Communities 270 Encouraging Good Behavior 271 Authenticating Through Profile Pages 271 Rating Posts and People 272 Gaming the System 274 Membership by Invitation or Selection 275 Rewarding Good Behavior 275 Helping the Community Manage Itself 276 Moderating a Community 277 Intervention and Course Correction 278 Premoderation and Libel 279 Extreme Measures: Banning Users and Removing Posts 280 Absent Landlords Lead to Weak Communities 281 Filtering and Automation 281 Balancing Anonymity and Pseudo-Anonymity 282 Summary 283 16. Writing the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Small Is Good: A Reprise 286 How Social Applications Differ from Web Applications 286 Agile Methodologies 287 Deployment and Version Control 288 Testing Live Is Possible, but Use Conditionality 290 Test-Driven Development 291 Automated Builds Make Management Easier 292 Applying Developer Tools to Social Applications 292 Making Use of Flexible Development with Your Community 293 Infrastructure and Web Operations 294 Managing Operations 295 Designing Social Applications 296 Using Prototypes, Not Pictures 296 Assisting Developers with Use Cases 297 Designing in Good Behaviors 297 Your App Has Its Own Point of View 298 How Code Review Helps Reduce Problems 298 The Power and Responsibility of Naming 299 Being RESTful 301 Beyond the Web Interface, Please 302 i18n, L10n, and Their Friend, UTF-8 302 Table of Contents | xiii
Bug Tracking and Issue Management Tracking Tools 305 Prioritizing Issues Differentiating Bugs from Feature Requests Handling Security 307 Rapid User Interfaces Rapid Prototyping 309 Scaling and Messaging Architectures Ajax Helps with Scaling 310 Queuing Non-Visible Updates 311 Real Time versus Near Time Polling versus Pushing 312 XMPP Messaging External Processing: Scaling on the Fly and by the Batch 314 Performance Testing 315 Languages Dont Scale 315 Cache. Then Shard 315 Fast and light Data Storage 316 mplementing Search 317 Identity and Management of User Data 318 OpenID for Identity 318 What to Ask for on Registration 319 When a User Chooses to Leave 320 ccessing Content via OAuth 321 Federation 324 Making Your Code Green and Fast 325 Building Admin Tools and Gleaning Collective Intelligence 326 Social network analysis Machine Learning and Big Data Sets Reputation Systems 329 17. Building APls, Integration, and the Rest of the Web “ On the Internet" Versus“ In the Internet” Making your place within the Internet 332 Why an API? Exposing Your Content to Search from the Internet Running Services, Not Sites Being Open Is Good 335 Arguing for Your API Internally Implementing User Management and Open Single Sign-On Integrating Other Services 337 I Table of Contents
Bug Tracking and Issue Management 304 Tracking Tools 305 Prioritizing Issues 306 Differentiating Bugs from Feature Requests 306 Handling Security 307 Rapid User Interfaces 308 Rapid Prototyping 309 Scaling and Messaging Architectures 309 Ajax Helps with Scaling 310 Queuing Non-Visible Updates 311 Real Time Versus Near Time 312 Polling Versus Pushing 312 XMPP Messaging 313 External Processing: Scaling on the Fly and by the Batch 314 Performance Testing 315 Languages Don’t Scale 315 Cache, Then Shard 315 Fast and Light Data Storage 316 Implementing Search 317 Identity and Management of User Data 318 OpenID for Identity 318 What to Ask for on Registration 319 When a User Chooses to Leave 320 Admin Users 320 Accessing Content via OAuth 321 Federation 324 Making Your Code Green and Fast 325 Building Admin Tools and Gleaning Collective Intelligence 326 Social Network Analysis 328 Machine Learning and Big Data Sets 329 Reputation Systems 329 Summary 330 17. Building APIs, Integration, and the Rest of the Web . . . . . . . . . . . . . . . . . . . . . . . . 331 “On the Internet” Versus “In the Internet” 331 Making Your Place Within the Internet 332 Why an API? 333 Exposing Your Content to Search from the Internet 334 Running Services, Not Sites 334 Being Open Is Good 335 Arguing for Your API Internally 336 Implementing User Management and Open Single Sign-On 336 Integrating Other Services 337 xiv | Table of Contents
Lightweight Integration Works Best 337 Avoiding Data Migration Headaches 338 ing Duplication 338 Email Notifications: Managing Your Output from Multiple Applica tions Making an API the Core of the Application Handling People and Objects, the Stuff of Social Applications esigning an API 340 REST 341 KMPP Response Formats 342 Comparing Social APIs 343 Tumblr 343 Twitter Reviewing the APIs Writable APis Extending and Fine-Tuning Your API 346 Wrapping API Calls Using API Alternatives 347 Using HTML Badges Interoperability Is Harder with Snowflake APIs 347 Sticking with Standards 348 Standardizing APIs 348 348 Creating a Standard 349 Managing the Developer Community 349 API and Scaling Issues 350 Allowing Integration 350 Real Time versus Near Time for APis 351 APIs Can be restrictive 352 Not Just Your Own API 52 Create an API? 353 353 18. Launching, Marketing, and Evolving Social Applications 355 Loving and Hating the Home Page 355 Your Site launch The Soft-Launch Approach 359 The Hard-Launch Approach Your Product Name 360 A Friendly Invitation 361 Table of contents
Lightweight Integration Works Best 337 Avoiding Data Migration Headaches 338 Avoiding Duplication 338 Email Notifications: Managing Your Output from Multiple Applications 339 Making an API the Core of the Application 339 Handling People and Objects, the Stuff of Social Applications 339 Designing an API 340 RPC 341 REST 341 XMPP 342 Response Formats 342 Comparing Social APIs 343 Tumblr 343 Flickr 343 Twitter 344 Reviewing the APIs 345 Writable APIs 346 Extending and Fine-Tuning Your API 346 Wrapping API Calls 346 Using API Alternatives 347 Using HTML Badges 347 Interoperability Is Harder with Snowflake APIs 347 Sticking with Standards 348 Standardizing APIs 348 Using OpenSocial 348 Creating a Standard 349 Managing the Developer Community 349 API and Scaling Issues 350 Allowing Integration 350 Real Time Versus Near Time for APIs 351 APIs Can Be Restrictive 352 Not Just Your Own API 352 Create an API? 353 Summary 353 18. Launching, Marketing, and Evolving Social Applications . . . . . . . . . . . . . . . . . . . . . 355 Loving and Hating the Home Page 355 Your Site Launch 359 The Soft-Launch Approach 359 The Hard-Launch Approach 360 Your Product Name 360 A Friendly Invitation 361 Table of Contents | xv