It was just a few weeks ago at salesforce.com's DreamForce Conference that the company known for its on-demand CRM solutions rolled out force.com and a new development tool it's calling visualforce. In hopes of getting a demonstration of the product, I caught up with salesforce.com's vice president of developer marketing Adam Gross for a reviewcast. Reviewcasts, for those of you who have never seen one, involve a unique blend of WebEx style Webcasting, 2-camera videotaping, and usage of a podcasting rig to support a more interactive dialogue where I can ask questions -- all of which results in the sort of video that you see above. It's an experimental format that I'm still working on, but given the feedback we're getting, it appears to have some legs and I'll be looking to do many more of these over time.
I got my start in the IT business in the early 80's as a software developer. I cut my teeth on some Cobol but when I discovered dBase II on the PC, it was like pure oxygen compared to building forms driven database applications on a mainframe using CICS. To a programmer like me, what made dBase special was how quickly I could build and debug custom database applications. The DOS-based software made it simple to build some relational databases and generate rudimentary data entry and viewing forms. But its real power kicked in when you wrote your own custom code and laid-out your own forms. Over time, there was dBase III, dBase IV, and dBase V and then, a variety of third party offerings that worked with dBase databases (.DBF files) and source code in a way that they could be substituted for the dBase software itself. One of those was Foxpro which eventually found its way into Microsoft's portfolio of development tools as Visual Foxpro. It became the go-to tool for anybody developing PC or LAN-based database applications not just because of its DBF backwards-compatability (dBase files with mission critical data were everywhere), but also because of how easy it was to visually customize the user interface (thus the "visual" in Visual Foxpro).
Visual Foxpro wasn't alone in this capability to, in the context of a PC, strap wizard-driven or custom user interfaces onto flat or relational databases. There was of course Microsoft's own Access (at the time, equally configurable for non-mortals), Lotus' Approach (named after its approachability), and Borland's Paradox. But that was PC-based stuff. Today, the need to create custom schemas with custom user interfaces is no different (in fact, there's more demand for it than there's ever been).
What's new is the Web and how a growing number of service providers are delivering what was essentially Visual Foxpro, but they're like hosted versions of it that run in a browser. For example, there's the database that's built-into WebEx's WebOffice, Intuit's on-demand Quickbase, dabbledb, and Zoho's database just to name a few. One advantage of these Web-based offerings over the old PC approach is how much simpler it is to roll a database out to a workgroup of users. In phase one, you design and deploy the database. In phase two, you give a URL and some credentials to each user needing access to the application (without going into detail, the PC way of deploying multi-user databases was extremely painful).
But whereas most would probably classify those offerings as software-as-a-service based Web-based database offerings (proficient at data management, forms, and reporting), salesforce.com sees visualforce as a part of a platform-as-a-service (PaaS) strategy. As you can see in the video, Gross walks us through a sample database application (in this case, it's a blogging app but it could be anything). He shows us the database schema and then several "views" of the the final product. One view, the basic database view, isn't so friendly. But, through what Gross describes as "pixel-level control over the user experience" (kind of like what you had in Visual Foxpro), the customized views, built using visualforce, are far more friendly and suitable to the context of the database app at hand (again, blogging, but, again, it could be anything).
But beyond this pixel level control is where the PaaS part kicks in. It's one thing to be able to throw up some forms and reports into a browser as the other offerings do. Sometimes included with that is some multi-user capability and the ability to scale up (both in terms of database size and number of users). But, it's an entirely different beast once you need to strap some business logic to it and it's still yet another beast to be able to draw upon a library of business widgets for inclusion in that logic.
As you can see in the video, once your forms are generated, the source code for the pages is easily viewable and includes a mixture of HTML and hooks (called visualforce components) into salesforce.com's underlying infrastructure. Once your HTML forms have access to an infrastructure like the one salesforce runs, that's when things start to get interesting. Not only is the sky the limit in terms of integrating business logic into your database app, but you also get to pull on everything from the CRM functionality that's baked into salesforce.com to the "plug-in" functionality available from third parties through salesforce.com's AppExchange. For example, if you need volume e-mail capabilities, you could draw upon that functionality from an AppExchange member whose specialty that is, like ExactTarget.
Personally, as a former database and custom app programmer, when I look around the technology industry for places to drop anchor and latch onto an ecosystem, visualforce really reminds me of that aha! moment that I had with dBase, where I (a) instantly saw a quantum leap over the de facto approach to the same problem (IBM CICS on a mainframe with Cobol for the business logic) and (2) felt I had encountered a platform-based ecosystem that had strategic legs (in other words, skills developed for this ecosystem would be highly marketable for the foreseeable future). Bottom line, if I went back to the future and was at that crossroad of deciding what basket to put my eggs in, I'd probably put them in the force.com basket.