<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-30309527</id><updated>2010-08-19T13:21:19.308-04:00</updated><title type='text'>Chris Gross</title><subtitle type='html'>Flex, Java, RIAs, Eclipse, and information about the Potomac modular framework for Flex.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default?orderby=updated'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30309527.post-1197928531015568748</id><published>2010-02-01T10:39:00.005-05:00</published><updated>2010-08-19T09:53:45.527-04:00</updated><title type='text'>A World Without Browser Plugins</title><content type='html'>...scares the hell out of me. Apple recently announced the iPad and unless you're living under a rock you've heard about it and probably the brouhaha over its refusal to allow Flash. Apparently the iPad won't allow &lt;i&gt;any&lt;/i&gt; browser plugins.  I am scared to hell.&lt;br /&gt;&lt;br /&gt;Web/browser-based applications are the future. We will continue to move further away from the desktop. Soon enough, almost all widespread software will be browser-based. Today that means HTML+Javascript, plus Flash, Silverlight, Java or any other plugin-based approach. If Steve Job's has his way, we won't have any plugins. The Open Web crowd want the same. So just HTML and Javascript. Regardless of how you feel about HTML+Javascript today, everyone has to agree that the rate of innovation here is very very slow. The HTML5 mess including the recent spat about video codecs shows us again that Design by Committee is the worst sort of process. &lt;br /&gt;&lt;br /&gt;Now imagine a world where this is the &lt;b&gt;ONLY&lt;/b&gt; avenue for new innovations in client-side languages and platforms. If we remove plugins this is all we have left. On the client side, there will be no new languages - just Javascript. There will be no new languages to sprout up like Java or Ruby have done in the past decade. Nope - Javascript is the standard. Nobody will have the motivations (i.e. there will be no money in it) or ability to add a new language to the browser standards. And there will be no way around this via plugins. &lt;br /&gt;&lt;br /&gt;Steve Jobs certainly has his master plan and hopes to make large sums of money on the iPad and the continuing dominance of the iPhone. But the Open Web folks seemingly come from a more philosophic/political agenda - "The Web Should be Free". What happens when that comes true. What happens when we've successfully prevented all corporate interests from profiting off client technologies on the internet? Then certainly no companies will invest in the client technologies. We've salted our own fields. We've put our sole hope for new innovation in a committee process thats proven itself time and time again, both in general theory and in specific practice of these groups, to be slow and fraught with problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-1197928531015568748?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/1197928531015568748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2010/02/world-without-browser-plugins.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/1197928531015568748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/1197928531015568748'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2010/02/world-without-browser-plugins.html' title='A World Without Browser Plugins'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-6951702291184008541</id><published>2010-08-19T09:40:00.003-04:00</published><updated>2010-08-19T09:52:25.283-04:00</updated><title type='text'>ReviewMate - the best Code Review editor for Eclipse</title><content type='html'>We're proud to announce the public beta of &lt;a href="http://www.elementriver.com/reviewmate"&gt;ReviewMate&lt;/a&gt;, the best (in our opinion) code review tool for Eclipse.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.elementriver.com/reviewmate"&gt;ReviewMate &lt;/a&gt;is different from other code review tools because it allows you to add comments right in the context of the code itself.  No more entering code comments in awkward forms.  Simply highlight a few lines of code, click the Comment button, and your new comment bubble will appear in the right margin.  &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PZ35OTegnzA/TG01EiqgwpI/AAAAAAAAADY/plsDmaj0uOc/s1600/reviewmate1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://2.bp.blogspot.com/_PZ35OTegnzA/TG01EiqgwpI/AAAAAAAAADY/plsDmaj0uOc/s400/reviewmate1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5507116271484846738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to ReviewMate's innovative technique for code formatting, almost any programming language can be handled by the ReviewMate editor.  Even formats like HTML and SQL.  If you're Eclipse IDE can format the file, so can ReviewMate.  &lt;br /&gt;&lt;br /&gt;Check out the &lt;a href="http://www.elementriver.com/reviewmate"&gt;ReviewMate &lt;/a&gt;page on ElementRiver.com and sign up for the free public beta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-6951702291184008541?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/6951702291184008541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2010/08/reviewmate-best-code-review-editor-for.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/6951702291184008541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/6951702291184008541'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2010/08/reviewmate-best-code-review-editor-for.html' title='ReviewMate - the best Code Review editor for Eclipse'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PZ35OTegnzA/TG01EiqgwpI/AAAAAAAAADY/plsDmaj0uOc/s72-c/reviewmate1.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-9081478853549796550</id><published>2010-01-13T14:38:00.005-05:00</published><updated>2010-01-13T14:58:00.516-05:00</updated><title type='text'>Code Review editor for Eclipse</title><content type='html'>I'm a big fan of peer code reviews.  I don't think anything helps raise the average code quality of a project than requiring each line of code be reviewed by at least one other developer.  When we know that what we're writing is going to be reviewed, we all write better code.&lt;br /&gt;&lt;br /&gt;But I've never really found a code review tool for Eclipse that worked how I wanted.  The holy grail of review tools (well - my holy grail anyways) was to have a tool that works much like MS Word's review feature.  Where you can add and see comment in a margin on the right of the document.  At ElementRiver, since we didn't find one that had that feature, we wrote one ourselves.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PZ35OTegnzA/S04ilS86BuI/AAAAAAAAACk/7mm5Qt5dq9U/s1600-h/codereview1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://4.bp.blogspot.com/_PZ35OTegnzA/S04ilS86BuI/AAAAAAAAACk/7mm5Qt5dq9U/s400/codereview1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5426312625165829858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This editor is currently part of our beta &lt;a href="http://www.elementriver.com/sourcemate"&gt;SourceMate&lt;/a&gt; plugin for Flash Builder 4, but we plan on pulling it out into an independent product.  It is designed to work with any language that Eclipse supports. &lt;br /&gt;&lt;br /&gt;Features:&lt;ul&gt;&lt;li&gt;Comments are added and updated all on the right margin.  You never have to switch contexts (i.e. switching editors, looking down at a view, etc).  It all done with your code front and center.&lt;/li&gt;&lt;li&gt;Comments are color coded by reviewer and each color can be customized.&lt;/li&gt;&lt;li&gt;Comments are shown in the code itself, in the right hand comment margin, and in the smaller overview ruler.&lt;/li&gt;&lt;li&gt;Comments can be marked resolved.  When resolved, comments are still shown but they're faded out.&lt;/li&gt;&lt;li&gt;and more&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PZ35OTegnzA/S04kD1sFY1I/AAAAAAAAACs/6C57w4-IJh4/s1600-h/codereview2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 304px;" src="http://1.bp.blogspot.com/_PZ35OTegnzA/S04kD1sFY1I/AAAAAAAAACs/6C57w4-IJh4/s400/codereview2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5426314249398215506" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-9081478853549796550?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/9081478853549796550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2010/01/code-review-editor-for-eclipse.html#comment-form' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/9081478853549796550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/9081478853549796550'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2010/01/code-review-editor-for-eclipse.html' title='Code Review editor for Eclipse'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PZ35OTegnzA/S04ilS86BuI/AAAAAAAAACk/7mm5Qt5dq9U/s72-c/codereview1.png' height='72' width='72'/><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-2385577652272627269</id><published>2010-01-04T12:43:00.003-05:00</published><updated>2010-01-04T13:31:54.594-05:00</updated><title type='text'>My Flex 2010 Wish List</title><content type='html'>I can't believe 2009 is already over.  But now that it is, its time to look forward to 2010.  Adobe is planning on  new releases of the Flex SDK, Flash Builder, and the 10.1 Flash Player this year so we all have reason to be excited. (Oh and don't forget &lt;a href="http://www.elementriver.com/sourcemate"&gt;SourceMate&lt;/a&gt; too).  Its probably too late to influence these new 2010 releases, but I'm still going to throw out my Flex wish list for the future.  &lt;br /&gt;&lt;br /&gt;Fortunately my wish list isn't really very long.  In fact, I only have two real items:&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Full HTML browser within Flex&lt;/h3&gt;&lt;br /&gt;Today you can't really integrate HTML content into a Flex application.  There are a few tricky solutions (mostly provided by floating an iframe on top of the Flash player).  Unfortunately these have all kinds of problems.  First, we have to change the wmode of the player for these to even work - and that immediately prevents screen readers from working.  So enterprise applications where 508 compliance is required can't even contemplate these solutions.  And even when we can use them, we're still stuck with other limitations as the actual HTML content is floating above our app and not really inside it.  &lt;br /&gt;&lt;br /&gt;To some people this might not seem like a very important feature request, but I've found quite the opposite.  Every customer or potential customer I speak with runs into this.  Portals/portlets are still all the rage (right or &lt;a href="http://blog.chris-gross.com/2009/10/problem-with-portlets.html"&gt;wrongly&lt;/a&gt;).  Customers want a portal application where they can embed both HTML/JS portlets and Flash portlets.  These customers have to choose HTML as their main platform (i.e. the container) rather than Flex.  Other times, customers have an existing Java-based web app that they'd like to transition over to Flex.  The keyword is &lt;b&gt;transition&lt;/b&gt;.  They can't just throw away their existing app and start over.  They need to replace it bit by bit.  But the architectures of Flex and the Web 1.0 world of these legacy Java web apps don't mix well.  Ideally, they could rewrite the main frame of the application in Flex and pull in pages (say in a tab folder or something similar) of the old web app.  Right now, thats not really feasible.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;This is the #1 reason (in my experience) why organizations don't choose Flex.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Flex Compiler Performance Improvements&lt;/h3&gt;&lt;br /&gt;The Flex compiler is slooooow.  Its been improved noticeably with Flex4.  But its still too slow.  On large projects its horrendously slow.  This is one aspect where Flex and Flash Builder do not compare favorably with HTML/JS (obviously no compiling there) but also with Java or any other platform I've had recent experience with.  I still believe developing with Flex, due to the productivity of the architecture, Actionscript language, and Flash Builder IDE is levels of magnitude better than AJAX.  Yet, I can't stand the constant interruptions while I wait for the Flex compiler to finish.  Fast is a feature!  &lt;br /&gt;&lt;br /&gt;To Adobe's credit, they do appear to be working on it.  I just hope the work done in the Flex 4 cycle is the beginning and not the end of the improvements.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These two changes arise from the experience of Java developers moving to Flex - both my own experience, and what I've gleaned from talking to customers and their developers about moving to Flex. If Adobe resolves these, I think we'd see more Java developers happily using Flex in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-2385577652272627269?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/2385577652272627269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2010/01/my-flex-2010-wish-list.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/2385577652272627269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/2385577652272627269'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2010/01/my-flex-2010-wish-list.html' title='My Flex 2010 Wish List'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-4873902347431175341</id><published>2009-12-14T12:46:00.004-05:00</published><updated>2009-12-14T12:55:01.597-05:00</updated><title type='text'>Refactoring plug-in for Flex Builder</title><content type='html'>While working on our &lt;a href="http://www.potomacframework.org/"&gt;OSGi inspired framework for Flex&lt;/a&gt;, the team at ElementRiver quickly realized we wanted more out of our Actionscript IDE. FlexBuilder is a good IDE but is missing some of the tools we've come to love with the Eclipse Java tooling.&lt;br /&gt;&lt;br /&gt;So we created &lt;a href="http://www.elementriver.com/sourcemate"&gt;SourceMate&lt;/a&gt;. SourceMate adds refactoring, code generation, code snippets, even a very cool code review tool.&lt;br /&gt;&lt;br /&gt;Our beta program begins this week. If you're a Flex developer give SourceMate a try:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.elementriver.com/sourcemate"&gt;www.elementriver.com/sourcemate&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PZ35OTegnzA/SyZ7i6kxhQI/AAAAAAAAACc/Wsbru6dEaJU/s1600-h/extractinter.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 294px;" src="http://1.bp.blogspot.com/_PZ35OTegnzA/SyZ7i6kxhQI/AAAAAAAAACc/Wsbru6dEaJU/s400/extractinter.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5415151441728865538" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-4873902347431175341?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/4873902347431175341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2009/12/refactoring-plug-in-for-flex-builder.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/4873902347431175341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/4873902347431175341'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2009/12/refactoring-plug-in-for-flex-builder.html' title='Refactoring plug-in for Flex Builder'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PZ35OTegnzA/SyZ7i6kxhQI/AAAAAAAAACc/Wsbru6dEaJU/s72-c/extractinter.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-7445595358336984341</id><published>2009-10-01T17:42:00.002-04:00</published><updated>2009-10-01T18:01:17.667-04:00</updated><title type='text'>The Problem with Portlets</title><content type='html'>Great quote from &lt;a href="http://www.watersonline.com/public/showPage.html?page=869051"&gt;this article&lt;/a&gt; on JPMorgan's use of Flex:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;It has the look and feel of a portal with several portlets, but Cassar stresses that it is in fact so much more. "It's a set of very tightly integrated applications in a container," he says. "The problem with the portal technology is that usually the interaction between the portlets isn't there-they each kind of stand alone. They have to run in their own browser sandbox, whereas this really allows for the more tightly coupled interaction."&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Ain't that the truth.  There are some architects that go around telling people that their applications, in fact all applications, should be portlets or mashups or gadgets or whatever term we're using now.  This started in the Java world and seems to be gaining traction in the AJAX world as well.  Count me out.  &lt;br /&gt;&lt;br /&gt;Eclipse and Potomac applications are better examples.  They're made up discrete components that can truely integrate together.&lt;br /&gt;&lt;br /&gt;I'm currently working on enabling untrusted, cross-domain bundles in Potomac.  My primary goal is to ensure that untrusted bundles can integrate deeply with the main application.  We have to move away from iframe-like integration - what I like to call integration via rectangle.  Flash's security model is essentially the same iframe-like model.  In Potomac, we hope to enable better/deeper integration, while still being secure and easy to code.&lt;br /&gt;&lt;br /&gt;p.s. I wonder if those JPMorgan guys have looked at Potomac? ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-7445595358336984341?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/7445595358336984341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2009/10/problem-with-portlets.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/7445595358336984341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/7445595358336984341'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2009/10/problem-with-portlets.html' title='The Problem with Portlets'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-5497725110308134573</id><published>2009-09-22T07:42:00.000-04:00</published><updated>2009-09-22T07:54:42.741-04:00</updated><title type='text'>Potomac Framework is live - OSGi, RCP for Flex</title><content type='html'>I'm happy to announce that we've made Potomac live to the public.  You can find its new home at &lt;a href="http://www.potomacframework.org"&gt;www.potomacframework.org&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;Potomac tries to take the modularity in OSGi and the UI composition from the Eclipse RCP and bring it to Flex.  It isn't an easy task - we've had to write a fair bit of tooling on top of FlexBuilder to help accomplish it.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://cloudfront.elementriver.com/potomac/images/tour1.png"&gt;&lt;img style="max-width:500px" src="http://cloudfront.elementriver.com/potomac/images/tour1.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of the most exciting features of Potomac is its metadata support (Flex metadata ~= Java annotation).  All extensions and extension points are defined in code via metadata.  Its been great to see this feature come together.  Contributions to the UI are handled via [Page], [Folder], and [Part] tags but also other features like [Inject] are also based on extension points.  After seeing the results, it might have been better to rename the feature to more generic since its become more like a generic metadata processor.&lt;br /&gt;&lt;br /&gt;You can see more in the &lt;a href="http://www.potomacframework.org/the-5-minute-tour/"&gt;Potomac 5 Minute Tour&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-5497725110308134573?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/5497725110308134573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2009/09/potomac-framework-is-live-osgi-rcp-for.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/5497725110308134573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/5497725110308134573'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2009/09/potomac-framework-is-live-osgi-rcp-for.html' title='Potomac Framework is live - OSGi, RCP for Flex'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-5604772781298999851</id><published>2009-08-24T16:58:00.000-04:00</published><updated>2009-08-25T15:44:17.208-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='potomac'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><title type='text'>Potomac - OSGi-inspired Flex framework</title><content type='html'>Before I post my next 'Extending FlexBuilder' post, I figure I should talk about why I'm doing such a thing. Truth is, I'm working on a Flex framework. Cue the collective groans from the Flex community. Do we really need another framework? .. Well this framework is a bit different. The primary focus is on modularity. Specifically, the Potomac framework (the name we're using) will be an OSGi-inspired modular UI composition platform. For the last few years I've been working in the Eclipse Rich Client Platform (RCP). Essentially, Potomac takes the principles and goals of OSGi and the Eclipse RCP and brings them to Flex.&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5373637873928807586" border="0" src="http://1.bp.blogspot.com/_PZ35OTegnzA/SpL_LPMcpKI/AAAAAAAAAB8/roJvYuODQPM/s320/potomac.png" /&gt;&lt;/p&gt; Why not just use the normal Flex module system? A couple of reason. First, the IDE support for Flex modules is very simplistic. Modules are defined &lt;em&gt;inside&lt;/em&gt; application projects. This makes large, enterprise-level development difficult. When you have multiple teams working together to produce one large application, you want each team to be working on their pieces in their own projects. Also, having the modules inside the application project prevents them from being reusable in other projects. Once we start thinking about modules being reusable, we can quickly count off many reasons why the current module system is lacking. Thats not to say we should throw it away. In fact, Potomac 'bundles' are built and delivered as Flex modules (just with a lot of stuff thrown in).&lt;br /&gt;&lt;br /&gt;Potomac will be:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;New module system for Flex including new FlexBuilder 'bundle' support&lt;/li&gt;&lt;li&gt;Extension mechanism inspired by, but quite different than, Eclipse extension points&lt;/li&gt;&lt;li&gt;UI Composition and templating framework&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Stay Tuned.  We'll be releasing Potomac in a few weeks.&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5373639880780378850" border="0" src="http://3.bp.blogspot.com/_PZ35OTegnzA/SpMBADTJcuI/AAAAAAAAACM/D030wHhh4J4/s400/ptmcExample.png" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-5604772781298999851?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/5604772781298999851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2009/08/potomac-osgi-inspired-flex-framework.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/5604772781298999851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/5604772781298999851'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2009/08/potomac-osgi-inspired-flex-framework.html' title='Potomac - OSGi-inspired Flex framework'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PZ35OTegnzA/SpL_LPMcpKI/AAAAAAAAAB8/roJvYuODQPM/s72-c/potomac.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-4556668410104438533</id><published>2009-08-13T11:01:00.000-04:00</published><updated>2009-08-13T11:21:30.891-04:00</updated><title type='text'>Notes on Extending FlexBuilder (Part 1: Metadata Processing)</title><content type='html'>For the last couple of weeks I've been hard at work mucking with FlexBuilder internals.  I'm building an Eclipse/FB plugin to provide features in support of an upcoming framework.  So far the results have been positive but there have been a few gotchas.&lt;br /&gt;&lt;br /&gt;Much of the work has been on metadata (i.e. annotations in the Java world) processing.  Java has extensive annotation processing support but not so much with Flex.  There is some promising stuff on &lt;a href="https://bugs.adobe.com/jira/browse/SDK-18718"&gt;generic compiler extensions&lt;/a&gt; in Flex4 but ultimately I entered a &lt;a href="https://bugs.adobe.com/jira/browse/FB-21409"&gt;new bug&lt;/a&gt; to ask for real IDE support.  If/when Adobe gets around to this it will be great, but in the meantime I've gone ahead and forged my own route.  The Eclipse plugin is essentially a new Eclpse project builder that uses the readily available &lt;a href="http://www.adobe.com/livedocs/flex/3/extensibility/CodeModel/codemodel.html"&gt;FlexBuilder code model API&lt;/a&gt;.  Initial results are good:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PZ35OTegnzA/SoQsybOKqII/AAAAAAAAABs/R_XTXhcW9KQ/s1600-h/markers.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 163px;" src="http://2.bp.blogspot.com/_PZ35OTegnzA/SoQsybOKqII/AAAAAAAAABs/R_XTXhcW9KQ/s320/markers.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369465900544731266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the plugin can identify metadata tags and provide validation and error markers.  But there have been a few gotchas.  Of course, things tend to crop up when you're using an API in a new unexpected way.  First issue: the documented public API doesn't provide a way to get the full list of tag attributes on metadata tag.  If you know the attribute name you can call IMetaTag#getValue(name) but if you don't know what the potential attributes are you'll need to cast down to an internal type.  If you cast IMetaTag to BasicMetaTagNode you'll find getAdaptableChildren() which will return you an array of the attributes.  &lt;br /&gt;&lt;br /&gt;The second issue is similar.  There's no public documented way to determine from an IMetaTag where in the .as or .mxml file it came from.  This is critical to allow us to put error markers associated with the correct line numbers.  Fortunately if we cast down again to BasicMetaTagNode we can call getStart() and getEnd() to return the file offsets.  Still that only works when the metadata tag includes attributes (i.e. [MyMetadata(attribute="value")] ).  When you include a metadata tag with no attributes (i.e. [MyMetadata] ) the code model doesn't seem to store the start and end values (they're always -1).  This is probably the most annoying problem.  As a workaround the plugin will drop down to the tag's associated node and show the problem there.  This doesn't look great but at least the user sees an error.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PZ35OTegnzA/SoQtdDyd2MI/AAAAAAAAAB0/1_23uaiZtE0/s1600-h/markers2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 177px;" src="http://4.bp.blogspot.com/_PZ35OTegnzA/SoQtdDyd2MI/AAAAAAAAAB0/1_23uaiZtE0/s320/markers2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369466632988907714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice how the error icon and the red squigglies are associated with the class and not the metatag itself :(&lt;br /&gt;&lt;br /&gt;The final issue seems like a straight-forward bug.  The FB code model throws an ArrayStoreException when you try to retrieve metadata associated with a getter/setter function (&lt;a href="https://bugs.adobe.com/jira/browse/FB-21888"&gt;see bug&lt;/a&gt;).  This has meant the plugin can't parse any metadata associated with accessor functions.  Thats unfortunate and hopefully Adobe will fix this one (go vote on it!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-4556668410104438533?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/4556668410104438533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2009/08/notes-on-extending-flexbuilder-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/4556668410104438533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/4556668410104438533'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2009/08/notes-on-extending-flexbuilder-part-1.html' title='Notes on Extending FlexBuilder (Part 1: Metadata Processing)'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PZ35OTegnzA/SoQsybOKqII/AAAAAAAAABs/R_XTXhcW9KQ/s72-c/markers.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-1007890460725174875</id><published>2009-05-28T17:38:00.000-04:00</published><updated>2009-05-28T17:52:20.034-04:00</updated><title type='text'>On HTML5</title><content type='html'>There's been alot of recent buzz around HTML5 due to Google's recent endorsement. I'm, without a doubt, an open source advocate. Yet I'm not at all excited. Here are some facts.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IE 8 doesn't include any meaningful HTML5 support.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;IE's general market share is still around 70%.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;IE's corporate market share is much higher (probably at least 85%).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Microsoft has dragged its heels on implementing HTML5 in IE.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;IE 8 was just released.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;IE 9 would be the first version to contain the HTML5 feature set (or some meaningful number of HTML5 features).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;IE 9 is likely at least 1.5 years away.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Corporations don't upgrade their browsers very quickly (some are still on IE 6).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Corporations who currently use IE are unlikely to switch browsers for fear of incompatible applications.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;As developers, we can only target a browser feature if our users have a browser that supports it. In other words, HTML5 will have to reach a certain critical mass or threshold until developers can write apps that use HTML5 features.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So, for business applications that have to support IE (i.e. almost all of them), when can we expect to be able to deliver an HTML5 web application? Let me take a shot at an optimistic timeline.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PZ35OTegnzA/Sh8Hdvd4Y0I/AAAAAAAAABk/yjswRcOWTeA/s1600-h/html5_timeline.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 122px;" src="http://4.bp.blogspot.com/_PZ35OTegnzA/Sh8Hdvd4Y0I/AAAAAAAAABk/yjswRcOWTeA/s320/html5_timeline.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5340995890624095042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a very optimistic timeline. It relies on MS releasing IE 9 much faster than they released IE 8. It relies on IE 8 including meaningful HTML5 support (video and canvas tags). It relies on corporations adopting IE relatively fast. So an optimistic timeline means we can start delivering HTML5 apps in 2013. Pessimistically... 2014 or later. In that time, how much further will Flash and Silverlight have come? Three years ago Silverlight didn't even exist. At Microsoft's rate of investment, imagine what Silverlight will be able to do in 2013.&lt;br /&gt;&lt;br /&gt;What could change this? Perhaps corporations will start to deploy multiple browsers (say both IE and FF). Perhaps Microsoft jumps wholeheartedly into HTML5. Neither seems very likely.  Is there something else that will spur corporate adoption of a HTML5 compliant browser?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-1007890460725174875?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/1007890460725174875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2009/05/on-html5.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/1007890460725174875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/1007890460725174875'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2009/05/on-html5.html' title='On HTML5'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PZ35OTegnzA/Sh8Hdvd4Y0I/AAAAAAAAABk/yjswRcOWTeA/s72-c/html5_timeline.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-462548565237725511</id><published>2009-04-13T14:07:00.000-04:00</published><updated>2009-04-26T19:12:00.978-04:00</updated><title type='text'>Intro</title><content type='html'>After a few aborted attempts, I'm finally getting serious about blogging. So before I get going I should probably introduce myself...&lt;br /&gt;&lt;br /&gt;I'm a Development Manager at IBM. Until recently I managed UI Frameworks within the Information Platform and Solutions Division. Now I'm managing a new product (yet to be announced so I can't give any more details). I'm also an avid Eclipse user and developer. I'm an expert on SWT including custom component development which led me to create the Eclipse &lt;a href="http://eclipse.org/nebula"&gt;Nebula&lt;/a&gt; project. The custom Grid component (among others) is 98% my sweat and tears. I've since moved on and don't participate much in Nebula anymore.&lt;br /&gt;&lt;br /&gt;Today my work includes forays into AJAX (Dojo) and RIAs including Flex. This blog will focus on those topics mostly and the battle for developer hearts and minds among AJAX, the Open Web, RIAs, Flex, Microsoft, et al.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-462548565237725511?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/462548565237725511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2009/04/after-few-aborted-attempts-im-finally.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/462548565237725511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/462548565237725511'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2009/04/after-few-aborted-attempts-im-finally.html' title='Intro'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-2997217468194769932</id><published>2009-04-26T17:56:00.000-04:00</published><updated>2009-04-26T18:27:22.566-04:00</updated><title type='text'>Java in the Flash Player</title><content type='html'>Adoption of Flex accelerated after Flex 3 was released.  A big part of that acceleration came from Java developers who were now comfortable coding ActionScript using classes and object oriented techniques.  Adobe should go one step further and add Java to the Flash Player itself.  &lt;br /&gt;&lt;br /&gt;I know some developers will cringe at the idea.  After all, Java has become quite bloated with various APIs and features.  But Adobe should look at what Google has done with the App Engine.  Don't bring over the entire JDK.  Just bring over what APIs make sense for the Flash platform.  Perhaps even just the core language and core features as spec-ed out in the &lt;a href="http://java.sun.com/products/foundation/"&gt;Java Foundation Profile&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;Why would Adobe even bother?  Well certainly it would encourage even more Java developers to adopt Flex.  Some Java libraries and open source projects would be reusable in Flash.  More exciting - the various languages that have been ported to the JVM would come along for free (i.e. Groovy, JRuby).  Arguably the most appealing benefit would be the new synergy between Flash and J2EE servers.  Microsoft enjoys this with Silverlight and .NET and it’s a huge competitive advantage.  This synergy goes further than just client-server communication too.  When building Flex apps, developers typically use a variety of tools that were originally written for Java (Ant, Maven, etc).  In fact, building an enterprise Flex app today practically assumes the knowledge of Java.  &lt;br /&gt;&lt;br /&gt;But adding Java to the standard Flash player could increase its size significantly (even if they limited it to the Foundation Profile).  Instead, Adobe should simultaneously create an extension model for the Flash player so that new additions don't have to be placed in the default player.  Rather they could be downloaded on demand when a Flash app requires them.  The existing Runtime Shared Library (RSL) feature in Flex might suffice but I don't think so.  Either way, Adobe doesn't want to increase the size of the player and most users don't mind an extra on-demand download as long as it’s done quickly and quietly (no scary dialogs).&lt;br /&gt;&lt;br /&gt;This might be an interesting time to start doing this.  Oracle just bought Sun and there are various theories on what Oracle will do with JavaFX.  Many sources seem to think Oracle will likely cut, starve, or kill it.  Oracle might be interested in collaborating with Adobe on bringing Java to Flash (while also dropping JavaFX).  If Adobe did make this happen - the payoffs could be massive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-2997217468194769932?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/2997217468194769932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2009/04/java-in-flash-player.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/2997217468194769932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/2997217468194769932'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2009/04/java-in-flash-player.html' title='Java in the Flash Player'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30309527.post-5131340269015060336</id><published>2009-04-15T10:51:00.000-04:00</published><updated>2009-04-17T13:35:19.558-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='RIA'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>RIAs = badly designed apps?</title><content type='html'>A few weeks ago InfoQ posted an &lt;a href="http://www.infoq.com/interviews/tim-bray-future-of-web"&gt;interview with Tim Bray&lt;/a&gt; on the future the web. He comes out pretty strongly against RIAs. His reasoning, in part, is that RIAs lead to more complex UIs and browser apps lead to simpler UIs:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;"When the web came along people shriked with glee and universally abandoned all those rich immersive responsive pre-internet applications and ran into the arms of the web. I can remember like yesterday content management conference that was held sometimes in the middle late nineties and it was a woman from a large manufacturing company talking about the content management for the technical documentation, which was a pretty big project, and she said "Oh it was so great when the vendors all brought in the web interfaces because it forced them to get rid of all these weird cascading menus and options that nobody ever used, and brutally simplified everything down" and at the end of the day the interface the browser presents is something that people are comfortable with."&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I have to say I agree with the sentiment but not with the specific point that RIAs = bad UIs. So why did we see a general simplification when we've moved to the web? Three reason:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 23px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5324935717301233426" border="0" alt="" src="http://1.bp.blogspot.com/_PZ35OTegnzA/SeX40nmHpxI/AAAAAAAAAA4/kALr7xEsPPQ/s320/filemenu.png" /&gt;The file menu&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 22px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5324936278796516818" border="0" alt="" src="http://2.bp.blogspot.com/_PZ35OTegnzA/SeX5VTVBvdI/AAAAAAAAABA/YNzgpYTHtoY/s320/toolbar.png" /&gt;The toolbar&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 161px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5324936383464773922" border="0" alt="" src="http://1.bp.blogspot.com/_PZ35OTegnzA/SeX5bZP4mSI/AAAAAAAAABI/x_9BmFDxHDM/s320/mdi.png" /&gt;MDI&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;For a long period of time these 3 controls/patterns were considered the defacto UI for a well-designed desktop application. But in reality they really fit only a small cross section of applications. To illustrate, lets examine them one by one.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The FileMenu&lt;/strong&gt;&lt;br /&gt;The file menu is one of the worst offenders. With a little (very little) categorization, we could throw all of our commands and options in one place. Some of these options may open a new dialog or a new window. Some may work against the current window. Some may work against the current selection in the current window. Finding a new command meant meandering through the menu until you came upon what you're looking for. Also, the file menu is only well-suited when your UI revolves around one open document. Ultimately it was used in applications that opened and managed many different types of objects. In some apps, when a user logged in he was presented with an empty screen and a file menu, certainly a daunting experience. Thankfully, even Microsoft is abandoning the old file menu in favor of the &lt;a href="http://en.wikipedia.org/wiki/Ribbon_(computing)"&gt;Ribbon&lt;/a&gt;. You can read about the Ribbon and the problems of the file menu from its main designer &lt;a href="http://blogs.msdn.com/jensenh/default.aspx"&gt;Jensen Harris&lt;/a&gt;. He does a great job at debunking the effectiveness of the file menu and describing the thoughts behind the Ribbon.&lt;br /&gt;&lt;br /&gt;When we moved applications to the web, we didn't have a file menu control to use. That forced application developers to rethink how to layout their functionality for the better. That generally meant commands were put closer to the objects they were acting on.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Toolbar&lt;/strong&gt;&lt;br /&gt;Toolbars aren't all bad. But toolbars that only have 16x16 pixel images with no text are. There are very few features that can be adequately represented in such a small image w/o any description. Many times, users are forced to hover over each button to review its tooltip before knowing what it does. Thankfully the web didn't have toolbars either and instead pushed developers towards hyperlinks. All of the sudden users didn't have to understand cryptic images, they had real text! And that text wasn't buried in some cascading menu. It was probably on the screen next to the object it was working against.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;MDI&lt;/strong&gt;&lt;br /&gt;MDI stands for Multiple Document Interface. MDI is still a staple of UI design. Users need the ability to open multiple objects at once rather than strictly working sequentially. Yet, the original MDI pattern is lacking. Users generally maximized their MDI child windows so they could have the maximum real estate for their current task. But then they ran into the biggest problem with this paradigm, which was that there was no easy way to see what you had open. Today, this MDI pattern is rarely used. Tabbed MDI, where tabs are used to represent documents, is common. With tabbed MDI, sometimes called TDI, users have a visible list of their open documents at all times (i.e. the list of tabs).&lt;br /&gt;&lt;br /&gt;Users struggled mightily when all three (File menu, Toolbar, MDI) were used together. But, back to Tim Bray's original point, are we on the path to repeat these same mistakes? I don't think so. As evidenced by the Ribbon, even desktop applications are abandoning these controls. Yet, we should be careful. RIA platforms like Flex make it easy to fall back into the old patterns. As SpiderMan's uncle once said "With great power, comes great responsibility."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30309527-5131340269015060336?l=blog.chris-gross.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chris-gross.com/feeds/5131340269015060336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.chris-gross.com/2009/04/rias-badly-designed-apps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/5131340269015060336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30309527/posts/default/5131340269015060336'/><link rel='alternate' type='text/html' href='http://blog.chris-gross.com/2009/04/rias-badly-designed-apps.html' title='RIAs = badly designed apps?'/><author><name>Chris Gross</name><uri>http://www.blogger.com/profile/12366188927952959564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05379207768804609042'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PZ35OTegnzA/SeX40nmHpxI/AAAAAAAAAA4/kALr7xEsPPQ/s72-c/filemenu.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>