A Facebook of Things


Summary

When we talk about social products and services, the question that naturally arises is: what will be the Facebook of Things look like? Here are my thoughts.

Social products and services, like the Toyota Friend

Marc Benioff has spoken about "social products and services" at multiple events over the last year. He uses Toyota Friend as an example of a social product. Here's a video of a joint Salesforce and Toyota press conference where Benioff talks about what this means (the meat starts at about 4:20)

Marc says "The car needs to become your friend. How does the car speak to me? How does the car integrate with the dealership and the factory? How does the car help me get to the service station? ... I want a relationship with the car in the same way I have a relationship with my friends. ... The car is going to become social. All our products are going to become social." (emphasis mine)

I have to admit when I first heard this, I wasn't sure I understood it. The demos that accompany the Toyota Friend pitches didn't help, because they mostly seemed like dashboards. Do I really want my car sending me tweets or writing on my wall? But as I've thought about it, I think Benioff's vision, while short on implementation details, is a brilliant articulation of a concept I've believed for a long time--what I'm calling the Live Web. Brilliant because it puts things in terms that almost anyone can understand.

The idea of social things (I'm just going to say "social things" from now on as a short hand for "social products and services") raises a few interesting questions:

  • What does it mean for things to be social? I think it means more than being chatty.
  • What does a Facebook of Things look like and how does it work? Facebook and other social networks were built for people--things need something different.

We understand intuitively what it means for animals to be social because we're social. Insects like bees, ants and termites create societies that are super organisms. Prarie dogs, monkeys, whales, apes, and humans all create societies. When we think of social animals we expect that they will do more than simply communicate with each other. A school of fish is not "social" in the same way that bees are--fish don't cooperate. We expect cooperation in social animals that complete tasks more complicated and sophisticated than any individual can do independently.

Societies are not hierarchical. They are networked. See my last post On Hierarchies and Networks for more on this. I happen to keep bees, so I know a little about how they work. While there is a "queen" and bees have different roles at different stages of life, the overall operation of the hive is remarkably decentralized, being controlled by pheremones that the queen and other bees emit. For example, when a bee detects a threat to the hive, it emits a pheremone that serves as an alarm to other bees, who respond individually--not under any kind of centralized command or control. The guard bee doesn't "command" other bees to go sting the intruder, rather it says "intruder" and other bees know what to do. The rules governing the proper response to an intruder are encapsulated inside each bee.

In a similar way, social things aren't just chatty, telling you about their status. Neither are they making requests or issuing commands. Rather, a social thing cooperates with other things you own on tasks that matter to you--your purposes, intents, and interests. They don't accomplish this because someone has set up an elaborate hierarchy of command and control, but because they are designed to cooperate. Of course, this is easier said than done. We are better at building hierarchical systems than enabling networked systems.

If you've been following my writing, you'll know I have specific ideas about how this can be accomplished--or at least how we can progress toward the ideal of loosely-coupled, cooperating networks of things. There are three key ideas:

  • Data in motion is better than data at rest
  • People (and their information) matter
  • Networks trump hierarchies

I think events play a key role because they enable networked systems, whereas requests work best inside a tightly-coupled, command and control hierarchy. The only way to reduce coupling is to wean ourselves from our dependence on hierachical systems. Events also support semantic encapsulation--the idea that a product or service in the network keeps as much of its semantics to itself as possible. This is critical to reducing coupling between components.

Another important idea is that people are at the center of the interactions between the things they own and use. We can't build a coperating network of things if we place the person they are supposed to be serving on the sidelines. My things are different than your things (yeah, we share some) and they need to cooperate on my behalf. Being at the center of the interactions doesn't mean I'm coordinating them or somehow driving them. For this to work, I need to be involved only in the most critical interactions or when there are decisions only I can make.

If things are social, what is the "Facebook of Things?" What constitutes the network that they use to store their relationships and communicate? This Facebook of Things can't be Facebook. Facebook stores the relationships between people and has a limited set of verbs for how people interact: post, share, poke, message, etc. My car likely wants to do more than "share" with my GPS. My TripIt account doesn't need to merely "poke" my Expensify account.

A network that serves as the Facebook of things needs to support a larger set of events than these few verbs. Events are subject-verb-object triples. Because of the nature of what needs to be communicated, events need to be free-form and flexible. The systems that respond to them should support complex event scenarios to recognize situations more complicated than what a single thing can communicate with a single event. For example, "Phil's leaving on a trip and his car needs gas" is a combination of two events: "Phil's leaving on a trip" and "Phil's car needs gas." These two events mean something important to me when they're linked. Less so when they're not.

This event network must be universal--standards-based and open. I call it the "global event bus" or GEB. The GEB supports raising event and subscribing to specific kinds of events for specific entities. The GEB must also support discovery for event processors and generators. Everything I own and use will eventually tie into the GEB.

The addition of identity to the GEB allows each entity (usually a person) to overlay their own personal event network (PEN) on top of the GEB. A PEN comprises the collection of things that a person owns, personal data she controls, and the apps she uses to manage scenarios (think "take a trip," "find a service provider," etc.). All of these, on the basis of being associated with an identity, link products, services, data, and applications together in a social graph in service of an individual. My PEN is obviously different than yours--it is uniquely individual and personal. The PEN is the "society" or "ecosystem" in which my things interact and provides a new model for integration. Adding new things, new data, and new apps is easy because the entire network is loosely coupled and the architecture supports emergent interaction. (See my living room scenario in On Hierarchies and Networks for more detail on this.)

As I said, this is what I call the Live Web, but if "Facebook of Things" works better for you, go right ahead and think of it that way. I believe such a system is inevitable. While its exact nature and form may differ from what I envision, I don't think the overall idea will be long in coming. We can build this now and it will prove extremely valuable--so it will be built.