Salesforce.com’s Apex: Benioff’s Handcuffs for On Demand


When I first read of the Apex rumor, (Salesforce.com’s new “on demand programming language and platform”) over at Salesforcewatch.com, I started monitoring some of the various blogs and sites I regularly read for related news. I was hoping to find some tidbits of information that aren’t part of Salesforce.com’s marketing spiel. After Salesforce’s official Apex announcement, I found an excellent article that Dan Farber wrote about his discussion on Apex with Salesforce.com co-founder Parker Harris.

Harris discussed Apex in various contexts, defining it as a language with syntax that is a hybrid of SQL-esque style statements mixed with Java, and that the learning curve should not be a problem, allowing developers to quickly build on-demand applications. This sounds enticing and definitely has a lot of “wow factor” fluff associated with it. But once we get past all of this rhetoric, what substance are we left with? What trade-offs are we required to make? The answer is as easy as looking at the history of the industry.

As an industry, we’ve struggled hard and continue to struggle against being “held down” or “locked in”. The ramifications of requiring that an entity or development firm be veritably tied to another are massive, and quite frankly, the proposition sucks. Granted, working with a company like Salesforce.com gives a vendor exposure to a large customer base. This has an inherent value associated with it, but what about long term strategy and what about risk? Harris describes the language as new and powerful, but never mentions lock-in and limiting. We’ve reached a day in age where the advent and proposition of SOA allows use to start forgetting about implementation details and to focus on solving problems, not working around vendor lock in. We have a plethora of languages and implementation platforms that are very good at what they do, and are very open. We know Sun has promised to fully open-source Java giving the community control over much of its definition. Microsoft has published an open specification for the .NET platform and for C#, allowing developers to build new languages for a powerful platform, or build .NET implementations from scratch, such as Mono for Linux. As a whole, the industry is moving more toward interoperability and openness, where reinventing the wheel and building difficult to break proprietary locks is looked at as both silly from technological and strategic standpoints. Why then, has Salesforce.com opted to peddle proprietary nonsense as their on-demand platform and language? Because Benioff wants to handcuff vendors, preventing them from ever leaving. After all, watching AppExchange’s “application” count only go up through the blocking attrition by making it expensive to decouple your business from Salesforce.com is quite nice…

Apex, based on the description, seems like an evolution of SAP’s ABAP Objects (Advanced Business Application Programming Objects) language and NetWeaver, only evolved for on-demand and some quasi-OOP platform. While I appreciate Apex’s resemblance to Java, its still proprietary, just like ABAP and NetWeaver. While SAP touted ABAP as the end-all app development language and NetWeaver as the premiere platform for building business applications, we know full well that your general purpose technologies and languages as a whole have trumped things like NetWeaver time and time again. Granted, NetWeaver lets you use Java through some tight “hooks” to NetWeaver if you don’t want to ABAP, but your still “hooked.” NetWeaver and ABAP are not “mainstream” (how often do you see Digg/Slashdot/Red Herring articles on powerful applications or companies built on NetWeaver?). Apex presents the same proposition as NetWeaver: build your applications using Salesforce.com’s proprietary stack and you get to NOT have the flexibility of easily moving from Salesforce.com to another platform, of NOT being able to use for-sale and open source libraries in your applications, and having the pleasure of existing within Apex’s limitations. We’re in a day in age where we do not need YAPL (Yet Another Proprietary Language) or YAPP (Yet Another Proprietary Platform). I can’t imagine that Apex will be well accepted by the mainstream because of its lack of openness, flexibility, and overall stink-of-Salesforce aroma that surrounds its essence.

This makes me question Salesforce.com’s motivation. Why not embrace the many, many (and maybe one more ‘many’) well built technologies as the core implementation proposition to your vendors? Why provide something that is proprietary and less powerful, all while reinventing the wheel; according to Harris, they haven’t quite figured out debugging yet and have yet to come up with a way for vendors to build a UI because they “…need to build a pretty radical UI layer “. Excellent, I can’t wait for Apex UI Super Duper Extreme, the language for “on demand UI development”. My take on it: (1) Marc Benioff wants to keep the vendor close by making it expensive to build on and strategically unfeasible to leave the Apex platform and (2) they already have plenty of time and money invested on their own internal platform, which wasn’t originally designed for public use, and have retrofitted it to be a general purpose platform. Number (2) is very reasonable and any company would have done the same. We don’t need a specialized stack for on-demand. The power of on-demand and SaaS as a distribution model can be realized with the knowledge and technologies we have. The notion that a specialized “language” knock-off is needed to facilitate on-demand is absurd. The full power of on-demand can be provided without it, through a platform that embraces current technology.

*Gasp* Imagine if you could write an application using your existing knowledge set and a well accepted technology stack and still deliver it through a platform, on demand with oodles of multi-tenancy, single instance, high availability fun?! Nah, that could never happen…well, at least not until someone steps up to the plate…

Update: As per Mr. Joseph’s comment, I have removed the following sentence from the post:

I doubt a big Apex movement will be started on Sourceforge, seeing as how becoming a Salesforce partner developer costs more than an XBox 360

Mr. Kingsley pointed out that there is no fee for being a developer. After some research at some other sources, it is only for “certifying” the application that a vendor is required to pay a $10,000 fee.

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts
Where’s the “App” in AppExchange?
On Service Delivery Platforms for SaaS



Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

Reader Comments

You’re confusing an option for a constraint. It would be handcuffs if no other form of development was available. You can continue to use our API and build apps on your platform of choice. New features, like outbound messaging, where an event inside Salesforce can trigger an external web servicec, where built almost exclusively for developers who want to do this.

However, there are a number of developers who don’t want to do that. If you don’t want to host your code on your own server and just want us to run it, now there is an option to do so. There are also performance and stability advantages to doing that.

To correct some of the other misinformation in your post: It costs nothing to become a Salesforce.com developer. The developer edition is free. Listing the app you develop on the AppExchange directory is free.

Kingsley,

Thank you for the comment and the correction on the cost of being a developer. It only costs to certify an AppExchange application, not develop or list.

Respectfully, while Apex presents an option, it also poses a constraint for the reasons mentioned. Obviously, the fact that people can choose to build an Apex app makes it an option, so the statement is vacuous. When you say you can “build apps on your platform of choice” you automatically invalidate one of the things that Benioff highlighted many times: you don’t need hardware, or staff, etc. So while you can build on your own platform (Ruby, Java, whatever), it is a severely crippled vision when compared to the supposed promise offered by Apex.

The same performance advantages and ability to run code on platform infrastructure could still have been given to developers if Salesforce chose to build a platform on an existing technology stack.

Zoho has a service called Zoho Creator. It is an online application creator. You can create applications interactively in the GUI and it also has a scripting (query integrated) language called Deluge.

http://zohocreator.com
http://zohocreator.com/help/deluge/index.html

[…] Ok, ok, I’m starting to feel bad writing about Salesforce.com. Well, maybe not. Someone has to do it, right? This week is Dreamforce, where Salesforce runs ’round town tooting their own horn much to the chagrin of individuals who feel their vision isn’t so hot. In all seriousness, why do some of us not see Salesforce as the save-all answer or as a “shining star” in the industry? Well, a prior post of mine discusses the introduction of Apex as one reason, but what else? Let’s start with finding the apps in AppExchange. […]

Hi Sinclair,
I just posted on Apex on my salesforce.com blog. Apex and the API are equal ways to develop on our platform. An Apex instruction invokes the exact same code that the SOAP API invokes, less the transport related overhead.

“you don’t need hardware, or staff, etc.” - Don’t need is not the same as can’t have. We have a great web services API, and Apex can’t do anything that the API can do. There is no crippling of anything. Just another option, which some people find convenient.

Hi Sinclair:

Per your post, and specifically “This makes me question Salesforce.com’s motivation. Why not embrace the many, many (and maybe one more ‘many’) well built technologies as the core implementation proposition to your vendors?”

The answer is simple - those technologies are not multi-tenant. Apex isn’t just a language – its the execution context to run code on demand and in multi-tenant model. You are using a software frame to analyze a web model, which I don’t think does either your argument or the model justice. (There is a presentation other related technical info avaiable here - http://www.salesforce.com/landing/apex.jsp)

IMHO, the question of openness in a Web world has nothing to with language syntax – it has to do with access. What matters is not what language you express something in, but that the app is available to others via public APIs that follow will known standards. On the consumer Web (where most of these precedents form), the examples would be things like MySpace limiting the ability to embed components in its site or the debate between photo sharing sites accessing each others APIs to allow migration. (And of course all Apex packages can be automatically made available as SOAP Web services.)

Regards,
Adam

Hi Adam,

I want to respond from the bottom up on your post. I do agree with your definition of openness and hope the post doesn’t allude to otherwise; following those standards are key to ensuring everyone’s well-being in the jungle we call the Web.

Implementation plays an important role when attempting to define a consumable Web entity because it is the first working scope for an implementing engineer. The openness comes into play when attempting to work with entities outside this scope, hence standards like SOAP. Apex’s proprietary, non standard nature would require that an implementor tightly couple itself to Salesforce. May I ask what happens if I spend a 1000 or so man hours on an Apex application, and some tens of thousands of dollars paying engineers, and after 6 months on the platform I don’t like it or am dissatisfied? Can I uproot my Apex code and plop it elsewhere? No, I cannot. I would have to port. So my options would be spend more time and money, or just deal with my dissatisfaction. Neither of these are reasonable and equate to laying down sword and shield in battle. If the platform was founded on some well accepted sub-layer, this wouldn’t be an issue.

With regards to “The answer is simple - those technologies are not multi-tenant”, well, I’m not quite sure what to make of it. Most technology stacks (Java, .NET, etc.) could be used to build a natively multi-tenant platform even though they themselves are void of the notion. For example, your statement is equivalent to saying that “.NET is not computing grid capable”. While true, it has been used to build grid computing platforms that are very, very powerful (check out http://www.alchemi.net) and don’t have a “specialized” language. So not being multi-tenant seems irrelavent based on my understanding of that benefit of Apex.

Thanks for adding to the debate, I was interested in reading your take. Take care.

[…] I’m not sure that the world needs another proprietary language.  There is an interesting post here comparing APEX to ABAP . Charles has similar views, well articulated, as usual. Charles notes.. Apex is arguably cooler than its predecessors. Things that are shiny and new always are. Of course things that are shiny and new also have no developer community, install base or ecosystem, but who am I to bring facts into the discussion (they call it Dreamforce for a reason I suppose)? […]

[…] To tie it all together let’s assume that none of the three previous issues have deterred you and you’re ready to jump head first into the SaaS waters.  Not so fast.  What happens if you fail?  More importantly, what happens if your approach leaves you no option but to give up the ghost?  Well, going for broke and developing a standalone solution (application with SaaS tenets rolled into it) is perhaps the riskiest bet - and leaves you with essentially no room for error because as soon as it doesn’t work your bottom line dips.  Not to mention the enormous outlays in infrastructure and development costs.  So perhaps you turn to enablement platforms - they’ll take care of the SaaS for you and you keep just doing what your doing.  Again, not so fast.  As Sinclair popularly pointed out, current platforms introduce vendor lock-in that leaves you feeling a bit used (and broke, and without reusable code) should something go wrong. […]

I think SF’s targeting two things: more complex applications and eventually in-house deployement for big companies. More here:http://roman-rytov.typepad.com/miles/2006/10/whatwho_salesfo.html

[…] Salesforce.com, Apex and Web 2.0 vendor lock-in By Tim There’s a debate under way about whether the new Apex language from Salesforce.com represents a vendor lock-in. Sinclair Schuller says it does; David Berlind says mostly not. Berlind argues that the lock-in is mitigated since you are not forced to use Apex, but can use the same functionality via SOAP web services. I recently wrote a comment on the same topic for IT Week. […]

[…] We’ve had our fair share of vendor lock-in (handcuff) discussions on this blog.  […]

[…] Salesforce.com has definitely reached powerhouse status, and is one of the main proponents of SaaS. For this, I thank them and really see them as a driving force. That aside, what is going on in Marc Benioff’s head? I wrote an article a while back about Salesforce.com using Apex as a lock-in strategy, which spilled over into a ZDNet blog article, and was vehemently opposed by Salesforce.com employees in both articles comments, with arguments ranging from there is no lock-in to there is no way around lock-in and expecting application portability is unreasonable. […]

[…] Salesforce.com’s Apex: Benioff’s Handcuffs for On Demand […]

We know that the lockin is bad for everyone(of course not the owner of the platform) and we also know that we dont need a YAPL. Is there any other platform which doesnt pose this threat? Are there atleast lesser evils?

Thanks,
Arun.PC

Hi Arun,

Thanks for commenting. Currently, the only viable alternative is to piece together custom code with various SaaS components available by providers. The problem is, this still requires a lot of effort. However, it does avoid sub-layer lock-in (no new programming languages, stacks, etc.) since some of these components use industry standard sub-layers. http://www.saasshowplace.com/ has an enablement category with some examples.

As an aside, the platform we are working on alleviates many of the issues discussed, so the best alternative is yet to come;-)

[…] Sure it seems like a kind-hearted message with success written all over it, and it is undeniably unified in its presentation.  But now couple that mantra with the technological implementation that is Apex and here is where the meat of my questions arise.  According to their own Apex landing page, Salesforce.com wants you to create the next Salesforce.com using the ”same tools that salesforce.com’s own development team uses to build [their] own apps.”  Besides being a lot of Salesforce.com’s in one sentence, this seems like a cleverly veiled way of saying “we’ll let you build the next Salesforce.com, but no better.  And we’ll keep you from doing this by giving you only the tools that we give our own application developers… who you will ultimately be competing with.”  See, this way Salesforce.com’s own developers define a ceiling… a gaurded gate through which the ISVs they are ‘enabling’ cannot surpass them.  You see, you can’t really create the next Salesforce.com, you may be able to create what Salesforce.com is today.  Tomorrow Salesforce.com will have progressed, and then you can try to be that.  Sound fun?  Sound endless?  By bringing in developers through Apex, Salesforce.com is swallowing competition in an enterprise application space that it is certainly not giving up.  Is Apex simply a vehicle for making sure that Salesforce.com stays ahead of the game?  After all, if you outgrow or otherwise find little need for the tools provided to you by Salesforce, you’d pretty much have to dismantle your application and start over on a different technology stack - putting you far far behind.  Sounds kind of Borg-ish to me.  Come to think of it… didn’t we talk about the risks of this thing called lock-in before?  In the case of Apex we might be talking about lock-in through assimilation!  Heck, you even have to learn the Apex language.  I rest my case. […]

[…] If you’ve been a SaaSBlogs reader for a while, you’ll recall a post I wrote a while back addressing the problems with Salesforce’s approach to platforms via Force.com (or Apex, or whatever the marketing term of the day was). Now that Force.com is active and pursuing market share, many of the same things I mentioned hold true. What would cause only two hands to raise? That’s easy enough: […]