After reviewing this post on platforms and partnerships, there’s more to dig into. By definition, you can’t cross the Bill Gates line by yourself, but who should you be seeking partnership with? Developers who consult or consultants who develop? What tools should you build for them?
At the end of that article, I felt that free form coding was required. My reasoning is that the platform vendor cannot predict valuable use cases well enough to produce the toolkit that a consultant would need. This is not condemnation of the toolkit or the consultant. Rather, it is a recognition that high value jobs require deep linkage to the customer’s processes and data systems, meaning that they are complex and customer specific. This means you’ll need consulting service shops to achieve them, not development shops.
Consulting services partners only have linear contributions to your bottom line though. Managing and supporting them therefore needs to be a linear cost, and that implies keeping their toolkit minimalist and simple in nature.
The most elegant and efficient way to reach this state is to not provide a special toolkit to service partners at all; instead, partners work with the same toolkit that your own development teams use. Imagine a company in which every team’s functionality is available via service interfaces that designed to be eventually public. Such a company is not only using Conway’s Law for good, they are enabling partners by enabling themselves. This doesn’t eliminate partner-vendor squabbling, but it can keep the tenor focused on more easily resolved questions. It’s easier to answer “we want a bigger slice of these deals” (single variable, money) than “we want an easier and more flexible development toolkit” (what do easy and flexible even mean).
“APIs everywhere” as a partner service model also generates the maximum value for a development partner, who is now unconstrained. They may plugin to your stack anywhere and create value in any way. However, this is not an unalloyed good. Where many services partners are constrained to a single platform vendor (or at least a preferred vendor per use case), the development partner has a more flexible destiny. They are also more inclined to risk, since their business model rests on big upfront investments with uncertain but hopefully exponential rewards. If the platform vendor’s stack is completely open, a development vendor can easily subvert the vendor’s intention, and is far more likely to try it than a services partner. A few interesting examples: Elastic’s fight with AWS, AirBNB’s uneasy relationship with listing indexers, and Twitter’s on-again-off-again stance towards third parties. One might use an analogy: services partners for dependable, steady growth, development partners for high risk, potentially explosive growth. This can be a helpful model in deciding what vendors to support, but isn’t as helpful when deciding what toolkit to ship to them.
It’s worth picking apart the difference between technical support of a model and legal support of a model. Open APIs as a technical choice is a clearly beneficial system: internal and external teams are on the same footing, allowing maximal value to customers for minimal effort expenditure. The downsides of the model are in business risk. Remediation of that risk is a business problem, and the resolution is a partnership contract requirement and a technical enforcement via access keys. That’s obviously not an option for a fully open source system, but I can’t say I’d advise a fully open source approach to any platform business anyway.