So my advice to any real developer planning on relying only on Facebook identity: think hard on this, make sure it is the best option. If you can do it, give the user the option to not use Facebook (either some other service, or creating their own account). And if you do only use Facebook, make a plan for the worst case. Having an iPhone app hard-coded to a specific FB app is a recipe for an unexpected 1 week hiatus.
Good advice indeed, but it's the kind of thinking that should have gone on before creating a dependency on Facebook.
Businesses do what is in their business interest. It seems so obvious, but many people don't seem to take in the consequence: if it is in a business's interest to block you, disadvantage you, or even sue you, they will. Whenever you find yourself creating a dependency on another business, this needs to be part of your thinking process, and you need to make allowances for "what happens if they suddenly decide they don't like us anymore". If you make no preparation for that day, don't blame "the opacity of Facebook" for your plight - you should have been aware of this opacity, and prepared for it, from day one.
The following comments on Hacker News show that there is some confusion about the topic even among those who understand the point about dependencies:
You do not rely on other companies only when you rely on open standards. Web development is an example (although you indirectly rely on Google for example). All kinds of apps usually rely on an underlying commercial technology ( windows development, osx development, ios development) whose actions are outside your control.
The Facebook app and Windows app scenarios are not comparable. Microsoft knows that the only reason Windows has succeeded as much as it has is because of its vast and deep pool of applications. As such, there is an incentive for Microsoft to allow a relative amount of freedom when developing Windows applications. Indeed, a bare operating system is quite useless without applications to run on it.
Facebook, on the other hand, became successful without any of the additional third party applications that use it as a platform today. A "bare" Facebook, without any third party apps, retains quite a lot in the way of functionality. This means that Facebook's interests are much less aligned with yours than Microsoft's.
Actually, there is very little difference, fundamentally, between Microsoft and Facebook. They will both act in their own self-interest. The main difference is that we are more certain about what Microsoft's interests (and thinking process) looks like, because we've seen them at work for decades, whereas Facebook is a new player. Another difference is that Microsoft has been sued for these practices before, so they're less likely to engage in them unless they really care.
Here's another major provider who may turn unfriendly in the future: Apple. They've shown what kind of standards they're willing to apply with iOS. Although I don't expect them to apply the same rules to Mac OS X software, anyone who is building Mac-only software should not be under the impression that they are somehow protected from Apple's ever-mysterious business objectives.
So, to conclude this: if you're building something that depends on another business (or even entity), part of your business planning should be to ask yourself, what if they pull the plug tomorrow? Your answer may be "well, we'll find something else to do with our lives", but whatever it is, it shouldn't be "oh my god, I didn't see that coming."
To quote myself, this is what you should do if you intend to depend on another business:
- Ensure your goals and the platform owner's goals are always in harmonious agreement.
- Have a backup plan for what happens if your access to the platform is revoked tomorrow.
If it is impossible to design a valid backup plan, then at least make sure you have insider channels into the company you depend on before you bet your business's future on it.
If you read this far, you should follow my RSS feed here.