Maintaining Dual Products with Salesforce.com’s Apex: Does it Make Sense?
I recently read a comment by Marc Benioff that baffled me. Dan Farber recently interviewed him and summarized the interview in his latest post Salesforce.com’s platform ambitions. In the interview, Farber asks Benioff whether a company like SuccessFactors should write natively to the Apex platform instead of just integrating with Salesforce.com through the sForce API. Here is the excerpt from Farber’s post:
“I [Farber] asked him [Benioff] whether a company like SuccessFactors, which has an HR on demand application with more than 2 million subscribers, should write to the Apex platform, rather than just integrate with the salesforce CRM application through Web services. ‘I think it would be wise to natively support our platform and have a version on their’s. There is no reason not to do both,’ he said. ‘I am sure their competitors will if they don’t…’”
Say it ain’t so! Hopefully one you (the readers) can help clarify this for me, as my nimble mind seems to be crippled by the weight of Benioff’s reply. What I got out of it is that Benioff recommends you, the software engineer or ISV, maintain two equivalent products as two implementations: one of your own likings and one using the ultra cool, ultra fantastic (sarcasm) proprietary and closed Apex language and stack. That is, maintain two code bases, market two products (I guess one to Salesforce.com customers and one to everyone else??), patch two different products when you find bugs, etc. Oh, and by the way, if you don’t your competition will; the advantage of spreading themselves thin will undoubtedly endow your competitor with the ability to crush you in share of market numbers. Ok, I must admit, that’s simply my take on that excerpt (and don’t forget my disclosure, I founded a SaaS platform company of my own) so I’m asking anyone reading this to weigh in: what do you think Benioff was trying to say? Did I understand it correctly?

(2 votes, average: 4.5 out of 5)


Sinclair,
It’s probably not fair for me to reply here because we talk about this every day, all day… but I’d like to extend your example and reframe the question:
If your understanding is correct, and Marc Benioff proposes that developers fork their projects and maintain an Apex codebase, then let’s assume that other platform players will follow in his footsteps. After all, the only safe platform is a “walled garden” right now, right? Well, then my question becomes… what makes developers interested in jumping on a platform? This is the cannibilization notion we talk about all the time in SaaS. In order to pursue SaaS, you (the developer) must give up a piece of your core competency to join one of these platform ecosystems. What is the most important part of that decision on the developer’s part? Is it just a matter of “My CTO told me to do it, so I’ll start writing Apex code too.” Is maintaining, say, .NET code AND Apex code for the same product an issue in anybody’s eyes?
I’m interested too.