Meta-Meta Data

One of the reasons why salesforce.com is successful, is because it is meta data driven.

What this means, is that when you make customisations in salesforce.com, no code is changed, your changes are stored as records in the meta data layer.

This type of customisation has been done for a long time on consumer websites. For example, when you log into Amazon.com, you can show a different home page or layout depending on how your user profile is set up. You get your personal look and feel and login account, despite the fact that you are accessing the same website as millions of others.

Salesforce.com borrowed this approach.

When you first sign up to salesforce.com, you get a clean 'Org' as it's called, much like a fresh sign up to Amazon.com.

You then go about making changes (customising) the system. Every customisation you make is stored in Meta-Objects, Meta-Tables, and Meta-Records. You can actually get access to the Meta Data API, and query these tables, and make configuration changes via web services for example.

So what am I getting to?

Well, having meta data is great, it allows me to easily customise the database, without the need for actually changing a single thing at the database level. This is the one reason why Salesforce.com can push out updates that dont break their existing client's configurations.

But what about when I install applications from the Appexchange?

Well, a Native-Managed Application (as it's termed), from the Appexchange, is in fact a meta-data snapshot. So someone else has configured salesforce.com, saved their configuration as a template of sorts, and put it up on the Appexchange. It is stored as a collection of meta data.

You install it, and it copies those meta data configurations to your Org, and, if it's a managed App, it locks it down so you cant change it.

The entire point I wanted to make with this post, is a problem I see with the entire concept of the appexchange and native managed apps.

The great thing about salesforce.com is that it is customisable via Meta Data - but if I download say a recruiting application from the Appexchange, this app itself is a set of Meta Data, that I cannot change.

Since when I deploy Recruiting from the appexchange, and I want to change the name from 'Candidates' to 'Applicants', I cannot, since it's already been changed and locked down in meta-records.

So much of the benefit of salesforce.com has been stripped, when you buy a module from the Appexchange.

What we need, is Meta-Meta-Data.

We need the ability to customise managed applications, from the appexchange, without the Appexchange vendor losing the ability to push out updates seamlessly and without losing integrity of the code....

I just find this interesting.... will salesforce.com release Meta-Meta-Data? Maybe if I coin a buzzword for it, Web m.0? Or Meta Cloud Computing?

0 comments:

Post a Comment