Gestalt Grows Up
Nov 20, 2009 In Development By Joshua AllenLast week, we discussed the fact that Microsoft invests heavily in both HTML5 and Silverlight, two technologies that other companies would have you believe are mortally opposed. Our commitment to both was underscored this week by our announcements about IE9 and Silverlight 4.
When we launched Gestalt beta less than 4 months ago, our goal was to demonstrate a really simple idea: that a proprietary plugin like Silverlight complements and advances the standards-based web. With today’s launch of Gestalt 1.0 and the first few widgets in the Gestalt Widgets Pack, I’d like to drill deeper into this underlying philosophy of Gestalt.
Gestalt: More than the Sum of the Parts
The word “gestalt” is a German word that roughly means “the whole is more than the sum of the parts”. The web, being a combination of lowest common denominator web standards (whether “open”, “de facto” or “de jure”) and speculative proprietary extensions whose backers hope will one day attain “web standard” status, has always been a “gestalt” of sorts.
As new ideas are tested out in the world of proprietary extensions, some will graduate and be implemented by a majority of browser vendors and/or standardized as part of a W3C specification. The ubiquitous browser search box, 2d drawing APIs, and vector graphics, for example, all proved themselves as part of vendor-specific browser plugins before wending their way toward standardization.
Besides acting as a proving grounds for new concepts, proprietary plugins can work with, rather than against the open web in a few other ways.
The Friendly Trojan Horse
It takes awhile for all browser vendors to implement a new open specification. But we can often accelerate the process by building implementations of open specifications on top of proprietary plugins that already run in all browsers. In this case, we use the proprietary plugin as a “friendly Trojan Horse” – a stop-gap implementation until all browsers implement the functionality.
A perfect example of this strategy is the way that Gestalt enables Ruby and Python in web browsers. Both languages are open source and open standards, and other browser vendors have explored integration. But browser vendors have not prioritized this work, so Gestalt’s solution provides a cross-browser stop-gap.
This strategy has a long history on the web. Brad Neuberg used Flash to bootstrap Dojo’s offline functionality (later part of Google Gears), and more recently to bootstrap SVG atop Flash. Perhaps the first widespread example was IEFrame, a plugin for Firefox that enabled enterprise Firefox users to run applications built on IE’s XML+XSLT standards support. If you look hard enough, you can usually find implementations of any prospective web standard built on either Silverlight or Flash.
Included in this category are our sample video and audio widgets, which come with the Gestalt widgets pack. By adding a <script> tag to the top of your HTML file, you can automatically enable use of HTML5-compatible video and audio tag syntax:
<html>
<head>
<script type="text/javascript"
src="/dlr/dlr.js"></script>
<script type="text/javascript"
src="/dlr/dlrmedia.js"></script>
</head>
<body>
<audio autoplay="false">
<source src="foo.mp3"
type="audio/mp3"></source>
</audio>
</body>
</html>
Our implementation is by no means the only way to get HTML5 video and audio in Internet Explorer and other browsers. But we had fun exploring the idea of an interim implementation on Gestalt. Our video and audio players are implemented in Python (with an optional Ruby implementation available); you can skin them by adding a skin=”skin.xaml” attribute. We support the same video and audio codecs that Silverlight does. Note that it would be relatively trivial to add support for Flash video and audio as well; but that was not a priority for us.
You can learn more about these widgets here, or download the source for yourself.
Progressive Enhancement
Enabling progressive enhancement is another way that plugins can contribute to the Web’s “gestalt”.
The functionality available in plugins will always be a superset of the functionality provided by default in the browsers. When this functionality is purely additive, and not meant as a stop-gap for existing standards, it’s best to use it such that the page can still be used without the plugin, but “lights up” when the plugin is available.
This, too, is a common technique on the web, and is the idea behind our coverflow widget. You can use the popular lightbox technique to showcase lists of images in your web pages; if Silverlight is available, the lightbox UI is enhanced to take advantage of the powerful coverflow animations enabled by Silverlight.
View Source Has a Posse
Besides demonstrating the potential for stop-gap standards implementation and progressive enhancement, we had a more important goal for Gestalt: to investigate ways that leading-edge technology embedded in Silverlight could be seamlessly folded into the familiar paradigms of the standards-based web.
Historically, RIA plugins like Flash have been black boxes that smugly sit within web pages, refusing to interact with their surroundings. RIA plugins have much to offer HTML and CSS, yet they often just compete for attention and real estate within web pages, much to the dismay of users.
This dissonance makes life complicated for web developers, too. When building web pages, you want to just fire up your favorite text editor, write some markup and script, and then hit “refresh” in your web browser. There is no separate build or compile step and no deployment packages or manifests to deal with. Proprietary “black box” plugins often require developers to code using entirely different conventions from those used in front-end web development. Chris Messina wrote an article discussing some of the drawbacks of the “black box” approach.
The Gestalt Approach
Like jQuery, Gestalt doesn't compete with the page. It enhances it. Gestalt gives you islands of enhanced functionality within your web pages without the snobbishness we have grown accustomed to in such scenarios.
Both Silverlight and Microsoft’s Python and Ruby implementations were originally designed with this model in mind, so it wasn’t a huge stretch for Gestalt to adapt both technologies. Gestalt seamlessly integrates with the way you already build web pages, adding language=”python” and language=”ruby” to your choices for HTML <script> tags, and enabling XAML to embed directly in HTML. No need to install any IDE or perform build/compile steps – you just write your markup and hit “refresh” in the browser. You can use “view source” and your favorite text editor to view, adapt, and embed any of the Gestalt widgets.
Conclusion
When you combine lowest common-denominator web standards with cutting-edge proprietary functionality, it is possible for the whole to be more than the sum of the parts. Although Gestalt uses Silverlight, we think that the same three principles should apply to any cutting-edge plugin that wants to be a good citizen of the web:
- Seamlessly support the “view source”, markup-oriented development model of the web.
- Enable bootstrapping of new web standards by being a flexible host.
- Expose leading-edge functionality in a way that supports progressive enhancement.
What do you think? Go ahead and comment below, or talk to us on Twitter. Don’t forget to tag your Gestalt-related posts with #gestalt.



Follow the Conversation
3 Comments so far. You should leave one, too.
I love how with Gestalt you’re embracing and extending HTML5.
For instance wth the video tag you’re supporting closed captioning out of the box without me having to write a line of code.
The ability to edit a page in notepad and just hit F5 in the browser and see the change is great… and having the power of Silverlight and the ability to code against it in Python (rather than need the whole Visual Studio and C# wiring) is great for quick testing…
Hey Joshuah – the German word ‘Gestalt’ translates to ‘Form’ or ‘Shape’ or ‘Human Shape’. You’re probably thinking of ‘Gestalt Theory’ which is often explained with the phrase ‘the whole is greater than its parts’ and refers to the way our brain processes perceptions and forms a whole out of individual shapes.
@Daniel – Yeah, I’ve been planning to write something about “Niemand hat meine Gestalt als der Ich”, relating dopplegangers, avatars, and identity theft. That’s a line from Titan, by Jean Paul (who was German, but changed his name).
The quote about “sum of its parts” is indeed from Gestalt therapy, but is faithful to the way that Goethe or Rudolf Steiner talked about relation of whole to parts. It’s the only common usage of the word “Gestalt” in English, where it has become pretty common outside of the therapy context. I would never use the word to signify a human outline, except in a metaphorical context like from “Titan” above. Hopefully someday the Germans will stop using it in such a pragmatic and concrete way, and join us in using it with the deep metaphorical significance it deserves. :-)