<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss1full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns="http://purl.org/rss/1.0/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">




    



<channel rdf:about="http://limi.net/frontpage/RSS">
  <title>Alexander Limi</title>
  <link>http://limi.net</link>
  
  <description>
    
       …on user interface design, content management, Plone and life at Google.
       
  </description>
  
  
  
            <syn:updatePeriod>daily</syn:updatePeriod>
            <syn:updateFrequency>1</syn:updateFrequency>
            <syn:updateBase>2006-10-22T14:28:24Z</syn:updateBase>
        
  
  <image rdf:resource="http://limi.net/logo.jpg" />

  <items>
    <rdf:Seq>
        
            <rdf:li rdf:resource="http://limi.net/articles/reinventing-tabs-for-the-browser" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/hello-mozilla" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/28-hours-later" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/goodbye-google" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/submit-your-questions-for-the-plone-conference-2008-keynote" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/mark-ramm-is-coming-to-the-plone-conference" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/yes-it2019s-true" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/google-chrome-benchmarks-and-more" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/trimmit-review" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/kill-your-tv" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/simplifying-plone-conclusion" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/composite-pages-listings-and-content-proxies" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/improve-plones-handling-of-rich-media" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/simplify-plones-editing-experience" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/simplifying-plone" />
        
    </rdf:Seq>
  </items>

<geo:lat>37.758434</geo:lat><geo:long>-122.435126</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/limi" type="application/rss+xml" /><feedburner:emailServiceId>limi</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /></channel>

    <item rdf:about="http://limi.net/articles/reinventing-tabs-for-the-browser">        <title>Reinventing tabs for the browser</title>        <link>http://feedproxy.google.com/~r/limi/~3/jh8cJeM3n8o/reinventing-tabs-for-the-browser</link>        <description>The road to Firefox.next: Making tabs better.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/reinventing-tabs-for-the-browser>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>Let us start with a screenshot from a well-known tech news site. Don&rsquo;t click the Digg button &mdash; even though I know you want to &mdash; it won&rsquo;t do anything:</p>
<p><img class="image-inline" src="http://limi.net/media/digg-tabs.png" width="589" height="131"></p>
<p>So, what&rsquo;s going on here? It&rsquo;s quite obvious that:</p>
<ul>
<li>The current way multiple pages are handled in browsers isn&rsquo;t doing its job well enough, at least not for the advanced users.</li>
<li>There seems to be no one-size-fits-all when it comes to having multiple pages open at once, and an astounding number of add-ons to modify tab behavior.</li>
</ul>
<p>When tabs first started appearing in browsers &mdash; Opera and Firefox being the ones at the forefront &mdash; the web (and computers!) were in a very different state than now. People were exceptionally happy to be able to have 6-7 pages open at the same time, and using only one window to do it.</p>
<p>Fast-forward to 2009, and a lot of users are pushing the limits of what browsers can handle with regards to how many pages they have open at once. There are significant memory and CPU costs to this new-found power &mdash; but nowhere is the problem more apparent than in the user interface. Different browsers deal with a large amount of tabs in various ways, from allowing multiple rows of tabs (Opera), to having pulldowns that list all available open tabs (Firefox, Safari). None of these approaches work that well, which is why Mozilla has been looking at alternative approaches to manage multiple pages for a while now.</p>
<h2>Table of contents</h2>
<p>Since this is a long post, here are some section links if you want to link to specific sections from your own content:</p>
<ul>
<li><a href="#dontfix">If it ain't broke, don&rsquo;t fix it</a></li>
<li><a href="#existing-approaches">Existing approaches</a></li>
<li><a href="#instrumentation">A note about instrumentation</a></li>
<li><a href="#proposal">Proposal: Some exploratory steps for Firefox</a></li>
<li><a href="#thumbnails-reloaded">For novice/intermediate users: Thumbnails reloaded</a></li>
<li><a href="#power-users">For power users: Quicksilver, meet Firefox</a></li>
<li><a href="#power-user-ui-today">Testing the Power User UI, today</a></li>
<li><a href="#combining">Combinatorics</a></li>
<li><a href="#participate">How to participate in the discussion</a></li>
</ul>
<h2><a name="dontfix"></a>If it ain&rsquo;t broke, don&rsquo;t fix&nbsp;it</h2>
<p>We realize that tabs were the reason a lot of people switched to Firefox in the first place. The first thing people say when we indicate that we are looking into alternative approaches is usually &ldquo;But I like my tabs. Please don&rsquo;t take away my tabs!&rdquo;</p>
<p>So, let us just state for the record: We don&rsquo;t see tabs going away for a long time yet. They will be around in a form similar to the current one, because <i>tabs work really, really well</i> for most people. The large majority of users have no problem with tabs, and they are a very natural and elegant solution to the problem as long as you don&rsquo;t push them too far.</p>
<p>What we <i>do</i> want, however &mdash; is to find a better solution for the users out there that are currently frustrated and unhappy about using tabs to manage a lot of pages. For the tabs case, let&rsquo;s establish some very broad categories of users for the sake of this discussion:</p>
<dl> <dt>Novice users</dt><dd>These are the users that currently don&rsquo;t use tabs at all. These people are like my grandma &mdash; although a tech-savvy grandma, she only visits 4-5 sites, and has no use for tabs.<br></dd> <dt>Intermediate users</dt><dd>These people are the users who are currently happy with the way tabs work. They typically work with 5-10 tabs open.</dd> <dt>Power users</dt><dd>These users have a lot of tabs open &mdash; everyone has this friend that has over 100 tabs open in his browser, and never closes any page &mdash; she just forks off a new tab instead. Or maybe <i>you</i> are that friend.<br></dd> </dl>
<p class="discreet">Pardon the unimaginative names for these categories. They used to have more colorful ones, but then people would say &ldquo;But <i>my</i> grandma&hellip;&rdquo; &mdash; they just exist to frame the discussion.</p>
<h2><a name="existing-approaches"></a>Existing approaches</h2>
<p>Of course &mdash; as the screenshot above told you &mdash; there is no lack of effort to try to make the situation around tabs better. Even Mozilla Labs is currently hosting their Summer &rsquo;09 Design Challenge: <a href="http://labs.mozilla.com/2009/05/introducing-the-design-challenge-summer-09-reinventing-tabs-in-the-browser-2/">Reinventing Tabs in the Browser</a> &mdash; and the previous <a href="http://design-challenge.mozilla.com/spring09/">Spring &rsquo;09 Design Challenge</a> asked people to envision how browsing would look like with as minimalist a user interface as possible.</p>
<p>One of the add-ons for Firefox that has seen quite some uptake among power users lately is the <a href="https://addons.mozilla.org/en-US/firefox/addon/5890">Tree Style Tab</a> add-on.</p>
<p><img class="image-right" src="http://limi.net/media/tree-style-tabs.png"></p>
<p>The reasons for its popularity are easy to understand, it fits the power user&rsquo;s needs well:</p>
<ul>
<li>It lays out the tabs in a <i>vertical fashion as a sidebar</i> instead of horizontal, thereby maximizing the possible amount of visible tabs.</li>
<li>It <i>makes use of the horizontal space</i> that more and more users have available due to the widescreen monitors now being the dominant standard for new screens. (Widescreen monitor shipments surpassed standard aspect ones <a href="http://www.metrics2.com/blog/2006/08/29/2006_notebook_pc_market_dominated_by_widescreen_di.html">in Q1 2006 for notebooks</a>, for instance)</li>
<li>It <i>automatically groups the tabs</i> based on where they came from, e.g. if you spun off a new tab from a Google search, it would become a nested tab like the Apple tab in the screenshot above. Currently, people use different windows, or colors, to group related tabs in other browsers &mdash; and use tab drag/drop between windows to accomplish the grouping they want. This solution is much more elegant.</li>
<li>It <i>makes it easy to navigate more tabs than will fit on the screen</i> with a close-to-zero effort gesture: using the scroll wheel.</li>
</ul>
<hr>
<p>Another noteworthy approach is the way the <a href="http://hetima.com/safari/stand-e.html">SafariStand</a> add-on for Safari handles tabs.</p>
<p><img class="image-right" src="http://limi.net/media/safaristand.png/image_large">Some of the things SafariStand gets right are:</p>
<ul>
<li>Same as with the Tree Style Tabs plugin: It makes it easy to browse a lot of tabs, since you can use the scroll wheel if you have more tabs than will fit on the screen.</li>
<li>Tabs are very visual, and easy to recognize.</li>
<li>Tabs have a large click target.</li>
<li>Most importantly, SafariStand has what we here at Mozilla refer to as <i>partial thumbnails</i>.</li>
</ul>
<p>A full thumbnail screenshot of a page is not really useful in identifying the page, especially if the page is mostly text. By taking a screenshot of the upper left corner of the page (enough to grab the logo + some of the page title), a <i>partial thumbnail</i> becomes dramatically more useful in identifying the page you&rsquo;re looking for. In the screenshot above, the Wikipedia page on &ldquo;User Interface&rdquo; is recognizable even if you had three other Wikipedia pages open.</p>
<hr>
<p>To illustrate what the previous approaches get right, let&rsquo;s look at what the Opera 10 beta does. It includes a similar way to view tabs, but there are a number of issues with this implementation  compared to the others:</p>
<p><img class="image-right" src="http://limi.net/media/opera-tabs.png/image_preview"></p>
<ul>
<li>Here you see a good illustration of why full-page thumbnails are less usable: The Wikipedia page couldn&rsquo;t be distinguished from a different Wikipedia page in thumbnail form.</li>
<li>By putting the thumbnails on top instead of on the side, they steal a lot of space from the content area &mdash; you already want to have the top part of the window be as slim as possible, which is why Chrome and &mdash; until recently &mdash; Safari 4 went to such lengths to use the window border for additional tab space: it gives you more space for the web page.</li>
<li>One thing that can&rsquo;t be seen here: If you add a lot of tabs, the thumbnails shrink their width to become unusable as a visual aid for finding the tab you&rsquo;re looking for.</li>
<li>Even if this implementation allowed you to scroll sideways by using the mouse wheel &mdash; instead of letting the thumbnails become 2 pixels wide when you have 40 tabs open &mdash; it wouldn&rsquo;t have been something a lot of people would even try. Using the vertical scroll wheel to scroll horizontally? </li>
</ul>
<p>As you can see, Opera tries a similar approach as a couple of the add-ons that already exist, but unfortunately missed out on a lot of the smaller details which make these add-ons work well.</p>
<p class="discreet">And for the record &mdash; I&rsquo;m a big fan of Opera, and have been for many years. One of my close friends even worked as their lead UI designer <a href="http://my.opera.com/desktopteam/blog/show.dml/465048">until recently</a>. So I&rsquo;m not picking on Opera here, it was just a great illustration for this discussion.</p>
<h2><a name="instrumentation"></a>A note about instrumentation</h2>
<p>Before we move on to some of the things we want to explore, a quick note on the research and statistics side of this:</p>
<p>Dealing with tabs is a case where more data on usage patterns would be very helpful. Luckily, the Test Pilot instrumentation project from Mozilla Labs is moving ahead with the aim of letting us instrument the browser to get some real numbers on how people use Firefox.</p>
<p>Using this tool, we could poll for useful numbers &mdash; like what the tab distribution is among our test pilot users: how many people use 2-5 tabs, 10-20 tabs, 50+ tabs, etc. I&rsquo;m pretty convinced that not a lot of users have more than 5-10 tabs open &mdash; but of course the ones that have 50+ tabs are really the power users that switched to Firefox in the first place, and we should make them productive.</p>
<p>You can actually graph your own tab usage over time using the <a href="https://jetpack.mozillalabs.com/demos/graph/index.html">Tab Grapher</a>, which is an add-on for <a href="http://jetpack.mozillalabs.com/">Jetpack</a>. So if you want to see where <i>you</i> fit on the scale of tab usage, running this extension could be an interesting way to find out.</p>
<p>Data is always good, and we&rsquo;re looking forward to get a lot more of it in the near future, making it possible for <i>all users</i> to help us make Firefox better.</p>
<h2><a name="proposal"></a>Proposal: Some exploratory steps for Firefox</h2>
<p>As mentioned earlier, there is no obvious approach that will solve the shortcomings of tabs for every type of user. What we should do, is allow you to choose what type of handling you prefer, and seamlessly move between them &mdash; and/or providing natural transition points as detailed below.</p>
<p>Also, keep in mind that this is a smaller part of a much bigger picture that we will detail over the coming months when we start winding up for Firefox.next, now that version 3.5 is close to shipping. There&rsquo;s much more to this proposal than is apparent from this first post.</p>
<h3><a name="thumbnails-reloaded"></a>For novice/intermediate users: Thumbnails reloaded</h3>
<p>If the existing tabs interface works so well for the <i>intermediate</i> users, why should we even look into changing it? The main reason is that the people that fall into this midway classification are getting more and more demanding as users. They start using more tabs, and suddenly over half of them are in territory that we just a few years back defined as <i>power users</i>.</p>
<p>This means that we need a more graceful way to let tabs scale &mdash; or at the very least give people the option to opt into an interface like this, and make it as seamless as possible.</p>
<p>The ideal <i>novice </i>⟷ <i>intermediate</i> interface would have the following properties:</p>
<ul>
<li>Give a good experience for the people who only use a few sites, and only a few tabs.</li>
<li>Make it even easier than it is today to graduate from using one to using more tabs.</li>
<li>Effectively make use of modern widescreen displays, but have an option for resolution-constrained displays too.</li>
<li>When pushing up against the limits what the interface can handle, provide a way to scale to the next order of magnitude.</li>
</ul>
<p>Of the solutions we have explored so far, a sidebar-based solution gives us an array of new options and possibilities.</p>
<p>It&rsquo;s worth noting that for some people, the fixed sidebar approach doesn&rsquo;t work &mdash; it takes away too much screen real estate. One solution for this could be the <i>slidebar </i>&mdash; note the L &mdash; concept that Mozilla Labs have been exploring as part of their work on <a href="https://jetpack.mozillalabs.com/">Jetpack</a>, also present in the current <a href="http://www.mozilla.com/en-US/mobile/">Fennec mobile browser</a> UI. The basic concept is the same as with a normal sidebar &mdash; although it makes use of the screen edge to let you quickly slide out a panel with the content instead of having it visible at all times. This could be a great solution when you are resolution-constrained. Other similar solutions can be found in the Opera sidebar, which expands when clicked. In any case, there are lots of potential ways to make the sidebar temporarily hidden.</p>
<p><img alt="Sidebar in expanded mode" class="image-right" src="http://limi.net/media/sidebar-expanded.png/image_preview">These wireframes explore a variety of functions:</p>
<ul>
<li>Starts out as an interface similar to SafariStand, with partial thumbnails in a sidebar as the main way to switch between open pages.</li>
<li>Some conceptual similarities to a TV &ldquo;channel picker&rdquo; &mdash; novice users would probably just have their favorite sites in the sidebar all the time. It would open the page if not already open, and switch to it if it already is. </li>
<li>Some indicators/buttons can be added to the thumbnails, like RSS icon and favorites &mdash; but we should keep it very minimalist.</li>
<li>There&rsquo;s a large, empty tab available that makes how to create new tabs very discoverable.</li>
<li>The <i>new</i> tab also has an option to perform a search directly from the tab &mdash; turning into the search results page on activation.</li>
<li><img alt="Sidebar in collapsed mode" class="image-right" src="http://limi.net/media/sidebar-collapsed.png/image_preview">Once the number of open pages reaches a threshold where it doesn&rsquo;t make sense to show partial thumbnails anymore, we transition to the favicon + title approach of Tree Style Tabs. This way, we make it easy to discover the next level of tab management.</li>
<li>You can of course also choose to be in one mode or the other explicitly with a mode selector along the top.</li>
<li>There&rsquo;s a &ldquo;filter tabs&rdquo; kind of search box that allows you to narrow down the list of tabs based on title/content.&nbsp;</li>
<li>Similarly, you can opt in to the <i>slidebar</i> behavior for the sidebar if you are resolution-constrained. Tapping the side of the screen with the pointer will then slide out your page overview. This will probably be the default for small-screen devices like where Fennec operates.</li>
</ul>
<p class="discreet">Oh, and we haven't rendered the back/forward buttons, address bar, etc. in these wireframes &mdash; they would of course still be present. We have some changes to these areas that we will detail in coming articles, so we left them out of the wireframes to not confuse the issue.</p>
<p>One cool consequence of this is that open pages &mdash; &ldquo;tabs&rdquo; &mdash; and bookmarks can be the same thing for the simple use cases. Similar to the Mac OS X dock, it doesn&rsquo;t care whether the application is currently open or closed. This is something we will talk more about in a later article, but to keep the discussion focused, we will leave it on the table for now.</p>
<p>We now have an interface that arguably scales down better than the existing interface for people like my grandma, as well as seamlessly transitions once you start pushing it beyond the range of 8-10 tabs.</p>
<h3><a name="power-users"></a>For power users: Quicksilver, meet Firefox</h3>
<p>A pattern that we have observed among the power users is a propensity to get rid of as much of the browser user interface as possible. They often hide all the toolbars, get rid of most of the buttons &mdash; all to get more space for the content, minimize distraction, and because they use keyboard shortcuts for almost everything. They are comfortable without any physical reminders of what the browser&rsquo;s functionality is &mdash; they just want as much space available for their content as possible.</p>
<p>Another interesting pattern that you may have seen if you have used application launchers,<sup>1</sup> <span class="sidenote"><sup>1</sup>Tools like Quicksilver or LaunchBar for the Mac, the launch/search interfaces in OS X (Spotlight) or Windows Vista, or any the various application launchers on Linux.</span> you probably also know that power users are also comfortable keeping the knowledge that their file or application is somewhere on the computer, and care less about where it is actually located.</p>
<p>What this indicates is that:</p>
<ul>
<li>Power users like the UI to &ldquo;get out of the way,&rdquo; and be as minimal as possible.</li>
<li>Power users are comfortable keeping the details of what pages they work with in their head, and don&rsquo;t need UI for bookkeeping.</li>
</ul>
<p>With this information in hand, we could imagine a power user / full screen interface similar to this:</p>
<p><img class="image-right" src="http://limi.net/media/power-user.png/image_preview"></p>
<ul>
<li>There is no UI until you press <b>Ctrl/⌘-L</b> to enter new URLs. No tabs, no buttons.</li>
<li>Pressing <b>Ctrl/⌘-L </b>will bring up the address bar (of course there should be a way to specify a different shortcut like <b>Ctrl/⌘-Space </b>or similar)</li>
<li><i>Existing open pages</i> have an indicator next to them, and selecting them from the pulldown will jump to that tab instead of loading then in the current tab.</li>
<li>There&rsquo;s an easy way to open the selected page in a new tab.</li>
</ul>
<p>With this, power users have a great UI for working with hundreds of pages open at once, and at the same time we have a nice UI for full-screen browsing &mdash; for TV or projection use.</p>
<p>Switching between open tabs would then work like this:</p>
<ol>
<li>Bring up the address bar by hitting <b>Ctrl/⌘-L</b> (or a self-defined shortcut, or a gesture like the <i>slidebar</i> only along the top of the screen),</li>
<li>Start typing the tab name in the address bar,</li>
<li>The open tabs that match what you just typed will show up as the top results in the address bar pulldown,</li>
<li>Selecting an open tab will switch to it,</li>
<li>You open new tabs in the usual way, <b>Ctrl/⌘-T</b>.</li>
</ol>
<p>How would you enable the Power User mode? There wouldn&rsquo;t be a mode switch, you would just turn off the elements you didn&rsquo;t want on the page. If you turn off the address bar, it would work in the manner illustrated in the wireframe.</p>
<h2><a name="power-user-ui-today"></a>Testing the Power User UI, today</h2>
<p>To get a rough idea for how this works in practice &mdash; &ldquo;browsing with no UI&rdquo; &mdash; you are encouraged to test parts of this using the 3.5 version of Firefox:</p>
<ol>
<li>Turn off all the toolbars in the View menu</li>
<li>Turn off the Status bar</li>
<li>Use <b>Ctrl/⌘-L</b> to enter new URLs, use <b>Ctrl/⌘-T</b> to open new tabs</li>
</ol>
<p><i>What&rsquo;s missing from the current version of Firefox that we should fix to make power user &amp; full screen mode usable:</i></p>
<ul>
<li>You can&rsquo;t currently turn off the tab bar. This should be possible. </li>
<li>Full screen mode doesn&rsquo;t work on Mac OS X. This needs to be fixed.</li>
<li>When you use <b>Ctrl/⌘-L</b> to enter a new URL, the address bar lingers around after you have entered a URL, meaning you have to manually turn it off again. It should remember its state, and disappear if you already had it hidden. <i>Update:</i> This works in Firefox 3.5, but not 3.0 &mdash; although you get the tiny dialog version instead of the full-on AwesomeBar. Still, works great for experimenting in the meantime, and future versions will hopefully give you the full AwesomeBar.</li>
<li><i>The address bar should match on already open tab names.</i> This is huge. If we add this, suddenly you don&rsquo;t need to care about where that tab with Slashdot went, you just start typing its name, and Firefox will produce it from the 200+ tabs you have open in your browser, and switch to it.</li>
</ul>
<h2><a name="combining"></a>Combinatorics</h2>
<p>Just so it is absolutely clear: you can pick and choose any variation of the capabilities mentioned above to suit your browsing habits.</p>
<ul>
<li>Power user, but like having a list of what you have open visible at all times? Close everything but the sidebar in collapsed mode to list your 200 LOLcat tabs.</li>
<li>Want to set up a foolproof setup for the four sites grandma uses? Hide the URL bar and pin the four sites in the sidebar, and she can use it as a TV.</li>
</ul>
<p>&hellip;and so on. As you can see, this adds some powerful new tools and abilities to your browsing toolbox.</p>
<h2><a name="participate"></a>How to participate in the discussion</h2>
<p>At Mozilla, we welcome your participation, and we are certain that there are a lot of great ideas out there. While I personally don&rsquo;t have comments enabled on my website for the same reasons as <a href="http://al3x.net/2009/02/24/why-no-comments-more-everything-buckets.html">Alex Payne outlines on his blog</a>, the best ways to participate are:</p>
<ul>
<li>Write up an article on how <i>you</i> think tabs in Firefox should work on your own web site. As long as you link back to my site and mention my name, I will find it, and read it. No, really. My previous employer was Google, that&rsquo;s what we do &mdash; find things.</li>
<li> Participate in the Mozilla Labs Summer &rsquo;09 Design Challenge: <a href="http://labs.mozilla.com/2009/05/introducing-the-design-challenge-summer-09-reinventing-tabs-in-the-browser-2/">Reinventing Tabs in the Browser</a>.</li> 
<li>If your comments are shorter, or you just want to add something to something that has already been written, you might want to post them in the <a href="http://groups.google.com/group/mozilla.dev.apps.firefox/topics">dev.apps.firefox Google Group</a> &mdash; also available in <a href="news://news.mozilla.org/mozilla.dev.apps.firefox">Usenet news group</a> and <a href="https://lists.mozilla.org/listinfo/dev-apps-firefox">traditional mailing list</a> flavors.</li>
<li>If you produce any mock-ups, wireframes or graphics related to this discussion, tag it <code>mozconcept</code> &mdash; on Flickr, Twitter or elsewhere &mdash; and we will see it.</li>
<li>If you don&rsquo;t feel like polishing up something to post for everyone to see &mdash; or just want to test my shiny new flame-retardant suit that I got handed by the Firefox User Experience Team as part of my welcome package &mdash; send me an email at <a href="mailto:limi@mozilla.com?subject=Reinventing tabs">limi@mozilla.com</a>.</li>
</ul>
<p>Thanks for listening! Looking forward to see what you will come up with to help us make tabs better in the next-generation Firefox. <span class="endMarker"></span></p><img src="http://feeds.feedburner.com/~r/limi/~4/jh8cJeM3n8o" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>User Interfaces</dc:subject>                    <dc:subject>Mozilla</dc:subject>                    <dc:subject>The road to Firefox.next</dc:subject>                <dc:date>2009-06-16T00:00:46Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/reinventing-tabs-for-the-browser</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/hello-mozilla">        <title>Hello, Mozilla</title>        <link>http://feedproxy.google.com/~r/limi/~3/QsZizdhCMhw/hello-mozilla</link>        <description>Finally, the secret is out. I have joined the Firefox UI Team at Mozilla to work on the next generation of web browsers.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/hello-mozilla>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>
	Coming from a web application background, I have always had a strong and opinionated interest in web browsers, and know more than I really should about rendering engines, <abbr title="Cascading Style Sheets">CSS</abbr> implementation and all the other stuff that web developers struggle with every day. It’s not pretty, but the past two years have finally brought some real progress in this area.
</p>
<p>
  On the end-user side of things, the web has evolved tremendously the past few years, but there are still elements of the interaction models that are fundamentally broken, and the approachability for people that are new to the internet&#8202;&mdash;&#8202;or are otherwise disadvantaged&#8202;&mdash;&#8202;isn’t as good as I’d like it to be. In the other end of the spectrum, all current web browsers struggle with scaling up their user interface to keep up with the most demanding power users.
</p>

<p>
 With my new job at Mozilla, I get to put my efforts towards making the leading open source browser even better, and help advance the web, change the way people use the internet&#8202;&mdash;&#8202;and hopefully fix some of my own pet peeves along the way.
</p>

<p>Another reason that I’m very excited about working here is that Mozilla <em>gets</em> open source. They <em>get</em> evangelism, and they <em>get</em> open standards. The chance to work with experts in these areas will help me advance both the Plone and Mozilla projects.
</p>
<p>
	I don’t think I could have asked for a better fit, or a nicer group of people. I’m looking forward to the opportunity ahead of me, and I can already tell that it’ll be expanding my horizon in unpredictable and amazing ways.
</p>

<p>
  I couldn’t be more excited about what the future holds. <span class="endMarker"></span>
</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/QsZizdhCMhw" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Mozilla</dc:subject>                    <dc:subject>Meta</dc:subject>                <dc:date>2009-04-22T21:00:00Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/hello-mozilla</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/28-hours-later">        <title>28 hours later</title>        <link>http://feedproxy.google.com/~r/limi/~3/FK9YRQRU8pU/28-hours-later</link>        <description>It’s been 28 hours since I announced my departure from Google.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/28-hours-later>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>Wow.</p>
<p>I had no idea that so many people were even reading this site, and was again reminded just how amazing the communities around <a href="http://plone.org">Plone</a> and Google are.</p>
<p>During the last 28 hours <a href="http://limi.net/articles/goodbye-google">after announcing that I am no longer with Google</a>, I have received:</p>

<ul>
<li>Over 150 email messages from friends and strangers expressing support and asking what happened, and what I’m doing next.</li>
<li>Over 30 emails from former Google team members, and people from other teams saying “WTF, dude — I heard about your story, this is <em>not</em> supposed to happen at a place like Google. That’s f—ed up.”</li>
<li>Four offers of job interviews with major companies in Silicon Valley — not counting the startups I have never heard of.</li>
<li>Requests from five journalists from sites and magazines I have heard of asking me for comments. And no, I don’t think it's appropriate for me to discuss this with the media, even anonymously — but thanks for asking, you’ve all been very polite and respectful.</li>
<li>Two invitations to have lunch at Google. I appreciate the humor in the middle of all this, guys.</li>
<li>Countless IMs, IRC conversations, Facebook messages, and phone calls checking that I’m OK, that I can stay in the US, <em>et cetera</em>.</li>

</ul>
<p>I’m humbled, and not just a little bit touched by all the support and attention I have received. I’m doing fine, I’m staying in San Francisco for the foreseeable future, and I have a lot of plans and options at the moment, and I’m excited to move on.</p>
<p>A special <em>thank you</em> to the people from the Google User Experience team for inviting me to their gathering in <a href="http://maps.google.com/maps?q=Mission+District+SF">the Mission</a> yesterday, discussing what happened, and what they can do to make sure it doesn’t happen again to someone else in the organization. You’re all amazing people, and I miss working with you already.</p>
<p>Unless something very unexpected happens, this will be the last message about my former Google employment to this site. Thanks for all the support, and if you have any questions, I’m <a href="/contact-info">happy to answer them</a>. <span class="endMarker"></span>
</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/FK9YRQRU8pU" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Google</dc:subject>                    <dc:subject>Plone</dc:subject>                    <dc:subject>Meta</dc:subject>                <dc:date>2009-02-04T02:05:00Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/28-hours-later</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/goodbye-google">        <title>Goodbye, Google</title>        <link>http://feedproxy.google.com/~r/limi/~3/jNL84DmxpTE/goodbye-google</link>        <description>Today was my last day at Google.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/goodbye-google>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>For the past couple of years, I have been working as an interaction designer at Google in Mountain View, California.</p>
<p>Because of manager conflicts, I am no longer with Google. Their handling of the matter has been no less than astoundingly amateurish and highly unprofessional, but I won’t air their dirty laundry here — it’s not worth any more of my time.</p>
<p>Suffice to say, I’ll be surprised if they manage to hold on to their top talent in the User Experience division for more than a year or two. That part of the organization is slowly rotting from the top down, and people have already started leaving. The wasted potential is truly beyond anything I have ever seen in an organization that is otherwise really well run, and has its priorities straight.</p>
<p>I have had the pleasure to work with an astounding number of amazingly talented individuals at Google, and I will miss them dearly. And there are some truly great managers at Google — hopefully I have let them know — I just never got to work with them. To all the designers and researchers I worked with at Google: I really enjoyed meeting and working with you all, you taught me humility, data-driven decision making and overall greatness — please stay in touch. To all the managers that attempted to help resolve the difficult situation I was in: Thanks for the respect, kindness and energy to fight the good fight. Keep it up.</p>
<p>Google is a fundamentally sound company, they have their priorities straight, and they will do well in the foreseeable future. I had a great time there, but it’s time to move on.</p>
<h2>Hello, Plone</h2>
<p>  So, what’s next? Less commuting. More time with friends. Taking care of my ill father. More sunny days outside. More music, travel, sports cars, and guitars. And, of course, <a href="http://plone.org">Plone</a>.</p>
<p>  With the work going into the upcoming Plone 4 release, I’m more excited about the future than I’ve ever been. Some of the best developers I have ever worked with — including Google engineers — are working on the next-generation Plone, and it’s truly in a position to change the world of content management.</p>
<p>  To me, this is the most exciting year in my life. I’m looking forward to spend my time doing what I love, work with the people I admire, and to live and breathe the best open source community on the planet. It’s like coming home.</p>
<p>  Now, if you’ll excuse me, I have a week of sleep to catch up on. Let’s change the world, again. <span class="endMarker"></span></p>
<img src="http://feeds.feedburner.com/~r/limi/~4/jNL84DmxpTE" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Google</dc:subject>                    <dc:subject>Plone</dc:subject>                    <dc:subject>Meta</dc:subject>                <dc:date>2009-02-02T22:20:00Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/goodbye-google</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/submit-your-questions-for-the-plone-conference-2008-keynote">        <title>Submit your questions for the Plone Conference 2008 keynote</title>        <link>http://feedproxy.google.com/~r/limi/~3/qJRSJxQNxGo/submit-your-questions-for-the-plone-conference-2008-keynote</link>        <description>This time, we’ll try something new: submit your questions using Google Moderator, and rank other people’s questions.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/submit-your-questions-for-the-plone-conference-2008-keynote>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>We’ll pick as many as possible of the highest ranked questions and answer them at the end of the keynote. Now, go ahead and ask those questions you always wanted to have answered.</p>
<p><a href="http://moderator.appspot.com/#e%253Dagltb2RlcmF0b3JyDgsSBlNlcmllcxi66QEM">Ask your questions here</a>!</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/qJRSJxQNxGo" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Plone</dc:subject>                <dc:date>2008-10-07T02:07:15Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/submit-your-questions-for-the-plone-conference-2008-keynote</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/mark-ramm-is-coming-to-the-plone-conference">        <title>Mark Ramm is coming to the Plone Conference in DC</title>        <link>http://feedproxy.google.com/~r/limi/~3/orgStACPmmY/mark-ramm-is-coming-to-the-plone-conference</link>        <description>…and I’m excited to meet him again!</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/mark-ramm-is-coming-to-the-plone-conference>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>Known from TurboGears — and more recently, his keynote <a href="http://www.youtube.com/watch?v=fipFKyW2FA4">What Django can learn from Zope</a> — <a href="http://compoundthinking.com/blog/" class="name">Mark Ramm</a> was invited to the Plone Conference to discuss the Python ecosystem and how to expand reuse and collaboration between the different Python web frameworks.</p>
<p>I remember meeting Mark for the first time when Alan Runyan and I delivered the <a href="http://us.pycon.org/TX2006/KeynoteTalks">keynote at the Python Conference 2006</a> in Dallas. We had several great conversations during the conference, but our paths haven’t crossed since — mostly because I’m not really a Python coder, so we don’t attend the same conferences.</p>
<p>I’m looking forward to meeting him again, and I believe he has a valuable perspective on Plone, Zope, Repoze and WSGI that should be enlightening and interesting.</p>
<p>As usual when it comes to conferences, it’s the conversations over a beer after the day’s program is over that really count. We’re excited to welcome you to our conference, Mark! <span class="endMarker"></span></p>
<img src="http://feeds.feedburner.com/~r/limi/~4/orgStACPmmY" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Plone</dc:subject>                <dc:date>2008-10-07T01:45:05Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/mark-ramm-is-coming-to-the-plone-conference</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/yes-it2019s-true">        <title>Yes, it’s true</title>        <link>http://feedproxy.google.com/~r/limi/~3/3ZNXDg6xyXk/yes-it2019s-true</link>        <description>Some of you may already have heard that I’m lucky enough to have been invited to the Python Conference in Brazil to deliver one of the two keynotes.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/yes-it2019s-true>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>If you’re in South America — especially if you’re in Brazil — <a href="http://pyconbrasil.com.br/">I encourage you to check out the program for the conference</a>.</p>
<p>My talk will be “The State of Plone and Lessons from Managing a Top 2% Open Source Project” — and will happen at 2:40pm on Friday Sep 19. </p>
<p>I’m also looking forward to meeting fellow keynote speaker <a class="name" href="http://www.bruceeckel.com/">Bruce Eckel</a>, long-time Python advocate and author of the books “Thinking in Java” and “Thinking in Python.”</p>
<p>With the <a href="http://plone.org/2008">Plone Conference 2008</a> coming up on Oct 8&ndash;10, it’ll be a busy few months — but very exciting and fun. <span class="endMarker"></span></p>
<img src="http://feeds.feedburner.com/~r/limi/~4/3ZNXDg6xyXk" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Plone</dc:subject>                <dc:date>2008-09-15T06:50:49Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/yes-it2019s-true</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/google-chrome-benchmarks-and-more">        <title>Chrome: Benchmarks and more</title>        <link>http://feedproxy.google.com/~r/limi/~3/FwLnfLBOMv4/google-chrome-benchmarks-and-more</link>        <description>Google’s new web browser is here — why is it important, and how does it perform compared to the other browsers?</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/google-chrome-benchmarks-and-more>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>So, it seems our secret <a href="http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html">leaked a little early</a>. The upside is that I get to talk about one of the projects that I’ve wanted to tell you about ever since I started working here at Google.</p>
<p>There are lots of reasons why Chrome is interesting — being a new open source browser using the WebKit rendering engine is one of them — but the main advantage it has over other browsers right now is the V8 Javascript engine. It uses several impressive virtual machine optimizations to make it the fastest Javascript engine out there.</p>
<p>So, what all us techies out there want to know is of course: How much faster is it? Here are the results of running the browser-neutral <a href="http://webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider 0.9</a> Javascript benchmark on Windows:</p>

<ul>
<li><strong>Firefox 3</strong>: 3733 ms</li>
<li><strong>Safari 4</strong>: 3406 ms (aka. WebKit nightly)</li>
<li><strong>Firefox nightly</strong>: 2609 ms (this should be with TraceMonkey enabled, but it’s hard to tell for sure)</li>
<li><strong>Chrome</strong>: 1814 ms</li>

</ul>
<p>As you can see, it’s fast. Amazingly fast. Over twice as fast compared to Firefox 3, and not far from being twice as fast as Safari 4 too — or WebKit nightly, as the case is here. </p>
<p>The new Javascript engine in Firefox nightlies (TraceMonkey) seems to do well too, but Chrome still beats it if my setup is correct — I'm not 100% sure about whether it's enabled or not in the nightlies. When setting the <code>javascript.options.jit.content</code> variable, it crashes in the date format tests. I was using <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2008-08-22-02-tracemonkey/">this build</a> for my tests.</p>
<p>If you use Javascript-heavy apps like Gmail, it makes a world of difference.</p>
<p><span class="discreet">I do know that for some reason, Safari is much slower running on Windows than on a Mac. The Sunspider benchmark running Firefox 3 against Safari 4 on a Mac shows Safari being much faster than Firefox, which is not the case on Windows. Oh, and I didn't bother running the tests on Internet Explorer — we all know it has the slowest Javascript engine in the business right now.</span></p>
<h2>Other reasons why Chrome is&nbsp;interesting</h2>
<dl>
<dt>  Every tab and plugin is its own process</dt>
<dd>This means that a bad web page or a bad plugin (Flash, anyone?) can take down the entire browser. In the age of tabs and web apps, trust me — this is a killer feature.</dd>
<dt>  It does really smart things to make browsing faster</dt>
<dd>Let me mention one: One of the things that makes browsing slow is that your computer has to ask the DNS every time you follow a link to a different site. Chrome starts doing these DNS lookups <em>in the background</em> while your page has loaded, making the next link you click on start loading instantly<sup>1</sup>. <span class="sidenote"><sup>1</sup> Note that this is different from pre-fetching the page, and takes up a very minimal amount of bandwidth (DNS requests are very lightweight.</span></dd>
<dt>  Offline Mode built-in</dt>
<dd>Chrome has <a href="http://gears.google.com/">Gears</a> built-in, which means that several web apps from Google and others are capable of running even without an internet connection.</dd>
<dt>  It will bring a new audience to the alternative browsers</dt>
<dd>Google has the ability to reach people that would never have installed Firefox — either because they don’t know that it exists, or because they want a browser that is more mainstream. Google is a name they trust, and thus more people will be running open source browsers.</dd>
</dl>
<p>  Oh, and stay tuned for the Mac and Linux versions. They’re coming — I can’t wait to run Chrome natively on OS X. The Windows version is now live, you can <a href="http://www.google.com/chrome">download it here</a>.</p>
<p>  It’s all good. <span class="endMarker"></span></p>
<p><span class="discreet">Thanks to Juliana Tsang for helping me run some of the tests.</span></p>
<p><span class="discreet">And this shouldn’t be necessary, but sometimes people seem to need it anyway: all opinions expressed on this site are mine, not Google’s. But you already knew that, didn’t you?</span>
</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/FwLnfLBOMv4" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Google</dc:subject>                    <dc:subject>Software</dc:subject>                <dc:date>2008-09-02T11:25:00Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/google-chrome-benchmarks-and-more</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/trimmit-review">        <title>Trimmit: Snow Leopard Today</title>        <link>http://feedproxy.google.com/~r/limi/~3/-3fPRgisYXM/trimmit-review</link>        <description>Review: Trimmit reduces footprint of applications on Mac OS X.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/trimmit-review>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>Apple has announced that the current focus for the next version of Mac OS X — “Snow Leopard” — is refinement, optimization and making it as light-weight as possible. As reported, <a href="http://gizmodo.com/5018939/snow-leopard-putting-os-x-on-a-diet-applications-to-shrink-dramatically" title="Apple's Negative Body Image: Snow Leopard Putting OS X On a Diet, Applications to Shrink Dramatically">most applications are significantly smaller</a> in the Snow Leopard developer preview.
</p>

<p>But you don’t have to wait for Snow Leopard to get that particular improvement — a free application called <a href="http://lipidity.com/software/trimmit/" title="Trimmit - Eliminating Bloatware">Trimmit</a> can dramatically reduce the sizes of your current OS X applications today. 
</p>

<p>While setting up a new system, I decided to do some benchmarks and measurements to see what kind of difference Trimmit would make. Are the savings worthwhile? Do applications start faster or use less memory? <em>Only one way to find out!</em>
</p>


<h2>Trimmit’s Approach</h2>

<p><strong>What are the features that make Trimmit better than the alternatives?</strong> It optimizes application bundles — mostly doing stuff the developers should already have done — as well as removing unused languages and processor architectures. Specifically, it:

<ul>
<li>Deletes junk files</li>
<li>Clears resource forks</li>
<li>Strips universal binaries</li>
<li>Cleans out nibs</li>
<li>Strips debug symbols</li>
<li>Compresses TIFF images</li>
<li>Removes unused languages</li>
</ul>

<p>If this sounds familiar, you have probably seen other apps like Xslimmer and <a href="http://monolingual.sourceforge.net/">Monolingual</a> that perform similar tasks. Trimmit outperforms them both — but isn’t quite as user friendly. A small price to pay — and irrelevant in practice, since you aren’t going to use it very often anyway.
</p>

<h2>The Results</h2>

<p>
What do the results look like? Quite spectacular. Popular apps like Mail, iChat and iCal end up a tenth of their original size.
</p>

<p class="sidenote">
The start-up time and memory usage from a freshly booted desktop for iPhoto, Mail and Safari before/after was also examined. There was no significant difference in memory usage nor in startup time — which is as expected, since OS X only loads the parts of the application it actually uses. So the savings only matter for disk space, not performance or memory.
</p>


<table class="listing">

<tr><th>Application</th><th>Original size</th><th>Trimmed</th><th>Size reduction</th></tr>


<tbody>
<tr><td><strong>Address Book</strong></td><td> 55 MB</td><td>  <strong>4 MB</strong></td><td><strong>93%</strong></td></tr>
<tr><td><strong>iCal</strong>		</td><td> 94 MB</td><td> <strong>10 MB</strong></td><td><strong>89%</strong></td></tr>
<tr><td><strong>iChat</strong>		</td><td>114 MB</td><td> <strong>11 MB</strong></td><td><strong>90%</strong></td></tr>

<tr><td>iTunes		</td><td>134 MB</td><td> 35 MB</td><td>74%</td></tr>
<tr><td><strong>Mail</strong>		</td><td>289 MB</td><td> <strong>21 MB</strong></td><td><strong>93%</strong></td></tr>
<tr><td>Safari		</td><td> 66 MB</td><td>  7 MB</td><td>89%</td></tr>
<tr><td>Preview		</td><td> 18 MB</td><td> 10 MB</td><td>44%</td></tr>
<tr><td>QuickTime	</td><td> 29 MB</td><td>  7 MB</td><td>76%</td></tr>

<tr><td>Pages		</td><td>266 MB</td><td>171 MB</td><td>36%</td></tr>
<tr><td>Numbers		</td><td>136 MB</td><td> 59 MB</td><td>57%</td></tr>
<tr><td>Keynote		</td><td>283 MB</td><td>150 MB</td><td>47%</td></tr>

<tr><td>GarageBand	</td><td>180 MB</td><td> 63 MB</td><td>65%</td></tr>
<tr><td>iPhoto		</td><td>178 MB</td><td> 53 MB</td><td>70%</td></tr>
<tr><td>iWeb		</td><td>346 MB</td><td>208 MB</td><td>40%</td></tr>

<tr><td>TextMate	</td><td> 30 MB</td><td> 25 MB</td><td>17%</td></tr>
<tr><td>Google Earth</td><td>111 MB</td><td> 61 MB</td><td>45%</td></tr>
<tr><td>Opera		</td><td> 34 MB</td><td> 15 MB</td><td>56%</td></tr>
</tbody>

</table>

<p>These are just some commonly used apps — the savings are usually just as dramatic with other third-party software. And all those extra megabytes add up in the end.</p>

<h2>Weight Loss Tips</h2>

<ul>
<li>Not all apps can be trimmed: Adobe apps, Firefox, VLC, CSSEdit, Skype, and others won’t work if you trim them — <a href="http://lipidity.com/software/trimmit/help.php">consult the blacklist</a> for a more comprehensive list.</li>
<li>Always let it create a backup — it's the default setting — and make sure you test the newly slimmed version before you delete the original.</li>
<li>Remember that you have to re-trim apps after they auto-update</li>
<li>Trimmit performs significantly better than Xslimmer and Monolingual</li>
</ul>

<h2>Conclusion</h2>

<p>Disk space is cheap these days, but there's really no reason that an application like Mail.app should take up 289&nbsp;MB instead of a more reasonable 21&nbsp;MB on your disk. Trimming your apps can easily free up an additional 2&ndash;5 gigabytes for your system in total, which definitely makes a difference for laptops with smaller hard disks like the MacBook&nbsp;Air.</p>

<p>Besides, how can you resist an application whose icon is Monty Python’s legendary <a href="http://en.wikipedia.org/wiki/Mr._Creosote">Mr. Creosote</a>?
</p>

<p>
	<a href="http://lipidity.com/software/trimmit/">Download Trimmit</a>! <span class="endMarker"></span>
</p>


<img src="http://feeds.feedburner.com/~r/limi/~4/-3fPRgisYXM" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Tips and Tricks</dc:subject>                    <dc:subject>Review</dc:subject>                    <dc:subject>Software</dc:subject>                <dc:date>2008-08-16T11:43:58Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/trimmit-review</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/kill-your-tv">        <title>Kill your TV</title>        <link>http://feedproxy.google.com/~r/limi/~3/GKMmAJTizyU/kill-your-tv</link>        <description>“Where do you find the time?”</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/kill-your-tv>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>
While talking to <a href="http://hannosch.blogspot.com/" class="name">Hanno Schlichting</a> earlier today about his <a href="http://n2.nabble.com/Party-like-it's-2004!-td471171ef293351.html">fantastic efforts at fixing bugs and cleaning the Plone issue tracker</a> — combined, the two of us have managed to resolve 250 bugs from the Plone 3.x maintenance release in the space of a few days — <span class="name">Hanno</span> mentioned that he’d finally managed to unplug his TV for about two weeks after not having a TV for most of his life until the recent last few months.
</p>

<p>
It reminded me about the following excerpt from <a href="http://www.herecomeseverybody.org/2008/04/looking-for-the-mouse.html"><span class="name">Clay Shirky’s</span> speech on cognitive surplus</a> — he’s talking to a TV reporter about his new book, and she asks him about Wikipedia:
</p>

<blockquote>

<p>
She shook her head and said, ‘Where do people find the time?’ That was her question. And I just kind of snapped. And I said, ‘No one who works in TV gets to ask that question. You know where the time comes from. It comes from the cognitive surplus you’ve been masking for 50 years.’
So how big is that surplus? So if you take Wikipedia as a kind of unit, all of Wikipedia, the whole project — every page, every edit, every talk page, every line of code, in every language that Wikipedia exists in — that represents something like the cumulation of 100 million hours of human thought. I worked this out with Martin Wattenberg at IBM; it’s a back-of-the-envelope calculation, but it’s the right order of magnitude, about 100 million hours of thought.
</p>

<p>
And television watching? Two hundred billion hours, in the U.S. alone, every year. Put another way, now that we have a unit, that’s 2,000 Wikipedia projects a year spent watching television. Or put still another way, in the U.S., we spend 100 million hours every weekend, just watching the ads. This is a pretty big surplus. People asking, ‘Where do they find the time?’ when they’re looking at things like Wikipedia don’t understand how tiny that entire project is, as a carve-out of this asset that’s finally being dragged into what Tim calls an architecture of participation.
</p>

<p>
Now, the interesting thing about a surplus like that is that society doesn’t know what to do with it at first — hence the gin, hence the sitcoms. Because if people knew what to do with a surplus with reference to the existing social institutions, then it wouldn’t be a surplus, would it? It’s precisely when no one has any idea how to deploy something that people have to start experimenting with it, in order for the surplus to get integrated, and the course of that integration can transform society.
</p>

<p>
The early phase for taking advantage of this cognitive surplus, the phase I think we’re still in, is all special cases. The physics of participation is much more like the physics of weather than it is like the physics of gravity. We know all the forces that combine to make these kinds of things work: there’s an interesting community over here, there’s an interesting sharing model over there, those people are collaborating on open source software. But despite knowing the inputs, we can’t predict the outputs yet because there’s so much complexity. 
</p>
</blockquote>

<p>
I’ve been television free since I was 18 years old and moved to my own apartment. That’s part of the reason why something like <a href="http://plone.org">Plone</a> could happen, a <a href="http://plone.net/providers">250+ company worldwide phenomenon</a>. <span class="name">Hanno</span> got rid of his TV when he was 20. He's the <a href="http://www.ohloh.net/projects/plone/contributors">most prolific contributor to Plone</a> worldwide.
</p>

<p>
Get rid of your TV. <em>Change</em> the world, don’t just sit and watch.
</p>

<p>…or, as <span class="name">Hanno</span> said: “If you want to be the best — act accordingly.” <span class="endMarker"></span></p>

<img src="http://feeds.feedburner.com/~r/limi/~4/GKMmAJTizyU" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Rant</dc:subject>                    <dc:subject>Productivity</dc:subject>                    <dc:subject>Plone</dc:subject>                <dc:date>2008-07-13T12:30:00Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/kill-your-tv</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/simplifying-plone-conclusion">        <title>Simplifying Plone: Conclusion</title>        <link>http://feedproxy.google.com/~r/limi/~3/VhWWsKR2slw/simplifying-plone-conclusion</link>        <description>What are the next steps?</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/simplifying-plone-conclusion>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>In the articles <a href="http://limi.net/articles/simplify-plones-editing-experience">Simplifying the content authoring experience</a>, <a href="http://limi.net/articles/improve-plones-handling-of-rich-media">Improved handling of rich media</a> and <a href="http://limi.net/articles/composite-pages-listings-and-content-proxies">Composite pages, listings and content proxies</a>, we have laid out an approach to radically simplify the content authoring experience in Plone.</p>
<p><strong>We have in one fell swoop eliminated the need for:</strong></p>

<ul>
<li>Collections as a separate type,</li>
<li>Images as a separate type,</li>
<li>Composite page types,</li>
<li>Proxy (represent one object in two locations) type,</li>
<li>Default pages,</li>
<li>The need for a separate "Contents" tab,</li>
<li>Folder as a separate type.</li>

</ul>
<p><strong>We have made it substantially easier to handle:</strong></p>

<ul>
<li>Rich (“opaque”) media like video, audio and Flash,</li>
<li>Content reuse, i.e. generating new content by reusing other content (example:
  book with 3 different audiences),</li>
<li>Application-specific functionality like forms/polls/maps inside a page.</li>

</ul>
<p><strong>We have made it possible to:</strong></p>

<ul>
<li>Share “snippets of Plone” (widgets) to other systems — blogs, iGoogle, Facebook — you name it.</li>

</ul>
<p>…all while making the UI massively simpler and easier to work with. </p>
<p>And if that wasn’t enough, the infrastructure improvements can be done gradually over a number of small releases in the 3.x series, and then culminate in a Plone 4.0 or 5.0 where we make the entire picture come together in a coherent new user experience. And we mostly don’t need to invent new infrastructure, instead we can build on work done in the Plone 3.x releases.</p>
<h2>Next Steps</h2>
<p>   Where do we go from here? I want you all to help with fleshing out the plan, as well as contributing code and testing resources to make this happen. The next steps will be:</p>

<ul>
<li>Identify which individual components are needed,</li>
<li>Figure out which of them can be built in parallel, and which ones can potentially be included in the 3.x releases,</li>
<li>Identify champions for the different areas,</li>
<li>Schedule sprints for big-picture integration sessions.</li>

</ul>
<p>   We hope to have the first of these sprints at the <a href="http://plone.org/events/conferences/2008-washington-dc/">Plone Conference 2008</a>  — and I hope we’ll see you there! Everyone is welcome this time around, and we’re trying to set up a range of sprint tasks, so that developers of all skill levels can participate in different ways.</p>
<p>I hope you will join us in taking Plone to the next level!</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/VhWWsKR2slw" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>User Interfaces</dc:subject>                    <dc:subject>Plone</dc:subject>                <dc:date>2008-07-08T10:05:00Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/simplifying-plone-conclusion</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/composite-pages-listings-and-content-proxies">        <title>Composite Pages, Listings &amp; Content Proxies</title>        <link>http://feedproxy.google.com/~r/limi/~3/6Spu_U54uQ0/composite-pages-listings-and-content-proxies</link>        <description>Part 3:  Making it easy to do advanced page layout tasks in Plone.
</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/composite-pages-listings-and-content-proxies>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p><span class="discreet">If you haven’t read <a href="http://limi.net/articles/simplifying-plone">the introduction</a>, <a href="http://limi.net/articles/simplify-plones-editing-experience">part 1</a> and <a href="http://limi.net/articles/improve-plones-handling-of-rich-media">part 2</a> yet, please make sure you do so before continuing. Thanks!</span></p>
<p>…and now for the <a href="http://en.wikipedia.org/wiki/Pièce_de_résistance">pièce de résistance</a>:</p>
<p>It’s time to reduce the number of concepts and approaches in Plone. Now that we have the “widget” concept and the new editor capabilities, we have the tools needed to:</p>

<ul>
<li>Eliminate redundant types,</li>
<li>Eliminate the need for a separate “Composite Page” type,</li>
<li>Eliminate the need for a “Display” menu,</li>
<li>Eliminate the need for a separate “Content Proxy” type,</li>
<li>Eliminate the “Default Page” concept,</li>
<li>Eliminate the need for a specialized “Folder” type.</li>

</ul>
<p>I’d also like to get rid of the “Contents” tab, but let’s keep this out of this
particular proposal for the time being, since that’s a separate discussion. Ideally, there should
be a separate “batch operations” interface for batch edit/rename/move/workflow
changes. This proposal can be implemented independently, however — and indeed there is currently a Summer of Code project called <a href="http://plone.org/products/plone-app-batch/">plone.app.batch</a> this year, working on some of this functionality.</p>
<h2>Eliminating redundant types</h2>

<ul>
<li>“Image” as a content type usually doesn’t make sense in itself. One
     exception here is the “photo album” use case, but that’s usually
     not what we refer to when talking about images in Plone. By making the
     images work the way content editors expect them to, we reduce the
     complexity of creating a page with Plone, and in one fell swoop get rid of
     the need for add-ons like RichDocument, PloneArticle and a lot of other
     generalized "keep the resources with the content" products.</li>
<li>“Collection” (aka. Smart Folder) does really not make any sense as a
     content type by itself either. It’s a stored search, meant to be used in a
     context. By implementing it as a widget instead, we free up the content
     editor to use it in more flexible ways.</li>

</ul>
<h2>Eliminating the need for a separate “Composite Page” type</h2>
<p>   Another way of thinking about the widgets system is that <em>every</em> page is
   essentially turned into a page with composition abilities similar to the
   existing third-party “composite page” types.</p>
<p>   Thus, every page is a composite page, and can pull in resources from other
   locations — folder listings, searches, images, movies, forms — you name it.</p>
<h2>Eliminating the need for a dedicated “Display” menu</h2>
<p>   The reason why the Display menu exists in the first place is to make it
   possible to have a specialized view of a folder. But usually, the listing in
   itself only gives you half of what you want — you may want a small blurb
   talking about what the listing contains, an illustration or even a demo movie
   to go along with the listing.</p>
<p>   What is currently thought of as “folder listings” are really just a special
   case of a “listing” widget — plain folder listing or a stored search.</p>
<h2>Eliminate the need for a “Content Proxy” type</h2>
<p>   By introducing a “Content Proxy” widget — and yes, I’m sure we can find a
   better name for it — one can construct a page composed of any other number of
   pages.</p>
<p>  From the simple case of mirroring one page in a different location to
   the more complex case of, say, constructing a “manual for Plone integrators”
   composed of 15 FAQs, 30 how-tos and 5 tutorials that all live in separate
   locations.<p>   Another way to look at it is that to create a content proxy, you create a
   page with a single widget that pulls its content from somewhere else — and
   this content can even potentially be external. Hosted in <a href="http://docs.google.com">Google Docs</a>? No
   problem!</p>
</p>
<h2>Eliminate the “Default Page” concept</h2>
<p>   After all this, you can probably guess how we can get rid of the “Default
   Page” concept. Yes, by using widgets and the new way of doing layout, on a
   folder — or a page, if we get rid of the “Folder” type as outlined below. The composite page abilities in the new approach will be able to turn
   a folder/page into any type of listing — even a mirror of an existing page.</p>
<p>   Technically speaking, if you look at the folder from a file system view like
   WebDAV or FTP, its “body text” will look like a folder with an <code>index</code>
   document inside, similar to how <code>index.html</code> works for HTML files.</p>
<h2>Eliminate the need for a dedicated “Folder” type</h2>
<p>   This a suggestion where I’m still not 100% sure we can make it happen without any performance implications or other problems, but ideally I’d like to get rid of the “Folder” concept altogether. Currently, folders are used to create listings of content added to a particular area — and that’s just as easily accomplished by adding a “dynamic listing” widget. It can list content based on containment, similar to what a “Folder” does today, or based on a set of criteria, like the “Collections” do.</p>
<p>   To me, it makes sense that all objects are “folderish” — to use the Zope jargon for this — but I’m sure there are some constraints and considerations that need to be discussed. This is by no means a necessary part of this proposal, but it <em>would</em> make the experience a lot simpler for the end-user if we could make it work that way. Hopefully the new, unified <a href="http://plone.org/products/plone/roadmap/191">plone.folder</a> implementation scheduled for the next major release of Plone will make this easier too.</p>
<p>   <a href="http://limi.net/articles/simplifying-plone-conclusion">Let's summarize what we have outlined so far</a>.</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/6Spu_U54uQ0" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>User Interfaces</dc:subject>                    <dc:subject>Plone</dc:subject>                <dc:date>2008-07-08T10:00:00Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/composite-pages-listings-and-content-proxies</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/improve-plones-handling-of-rich-media">        <title>Improve Plone’s Handling of Rich Media</title>        <link>http://feedproxy.google.com/~r/limi/~3/qot2alxOeYU/improve-plones-handling-of-rich-media</link>        <description>Part 2: Making it easy to work with audio, video and other opaque content in the editing interface.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/improve-plones-handling-of-rich-media>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p><span class="discreet">If you haven’t read <a href="http://limi.net/articles/simplifying-plone">the introduction</a> and <a href="http://limi.net/articles/simplify-plones-editing-experience">part 1</a> yet, please make sure you do so before continuing. Thanks!</span></p>
<h2>A little bit of history</h2>
<p>   The background for this approach comes from a concept <span class="name">Geir Bækholt</span>, <span class="name">Martijn Pieters</span>
    and others at <a href="http://www.jarn.com">Jarn</a> came up with to help
   <a href="http://www.trolltech.com">Trolltech</a> support a seemingly simple use case:
   They had a centralized price list, and wanted to make sure that everything
   referencing price was always up to date when they were changed the numbers in
   a central location. They were using code templates do do this, which is not
   such a good idea, since it effectively removes things from the indexed
   content, as well as making things fragile by mixing programming logic and
   content. Predictably, none of the content editors in the site were able to
   keep track of this.</p>
<p>   To solve the problem, they invented something they called “snippets” — small
   pieces of text that had a special class that made them replaceable by a
   transform-on-save. I’m not going to cover this implementation in detail, but
   the outcome is that they realized that this approach could support a wide
   range of dynamic insertion capabilities relevant to audio/video media and
   other “opaque” content formats in Plone.</p>
<p>   Where this gets interesting is when we combine it with a couple of other
   concepts, namely arbitrary attachments and portlets.</p>
<h2>Infrastructure: Arbitrary attachments and layout</h2>
<p>   Plone’s current notion of adding an Image object just to get an image into a
   page is a bit cumbersome. There are times when having a separate (i.e.
   end-user selectable) type for images makes sense, for instance in the “photo
   album” use case — but in the vast majority of cases, the user just wants to
   upload an image to use in a page. </p>
<p>   In some cases, it may be desirable to use a
   centralized image repository, some of which may be pre-populated, but page
   editing is still the primary point at which the author considers images.
   What actually happens to the image when it is added isn’t really a concern to
   the user, and shouldn’t factor into how the UI works, which it currently
   does.</p>
<p>   This problem is not specific to images. Adding a Flash animation or
   audio/video media files is no easier — quite contrary. From their experience
   with word processors and other desktop applications, the user expects to be
   able to embed files and resources directly into a document. Plone should make
   this as easy as possible.</p>
<p>   The problem can be solved in a general, flexible way that makes it easy to
   create such attachments and lay them out on a standard page. The solution
   comes in three parts: widgets, editor integration and transformations.</p>
<h2>#1: Widgets</h2>
<p>   A new type of “contextual portlet manager” is added that can keep track of
   portlet assignments annotated onto a content item. Unlike the existing
   portlet managers for the regular portlet columns, this portlet manager is
   never actually rendered directly, but it acts as a container for embedded
   portlets. Importantly, the new portlet manager has a particular marker
   interface so that specific portlet renderers can be used when a portlet is
   assigned to this particular type of portlet manager.</p>
<p>   We call these “widgets”. New widgets are defined that support attachment
   behavior. These must have a view that can render it as a simple icon as well
   as a canonical rendering. This can be achieved by having different portlet
   renderers registered for different marker interfaces on the portlet manager
   and/or request.</p>
<p>   Portlets of this type could include an image widget and a media object
   widget. Both of these would include UI to upload resources directly into the
   widget and way to traverse to the uploaded image or file.</p>
<p>   Additionally, they can consult a global option that lets the user choose a
   folder to act a repository for all images or other assets, via a pluggable
   storage policy. This makes it possible to have a central image repository,
   even though (to the end user) it looks like he’s just adding images to his
   page.</p>
<h2>#2: Visual editor integration</h2>
<p>   Kupu (or whatever visual editor we use as our core editor) gains the
   capability to manage such widgets directly. An add form that includes upload
   widget for the attachment widget may be shown directly inside Kupu. This can
   be made general enough so that other types of attachment widgets can show
   their own forms, although it is likely to require specific UI for images and
   media objects that use attachment widgets behind the scenes.</p>
<p>   The important part: A widget is inserted into the body text by using an
   <code>&lt;img /&gt;</code> tag that renders the widget’s icon representation. For image
   attachments, this may be an actual full-size or thumbnail representation of
   the image, for Flash, it might be a more abstract representation like just an
   icon. It also includes the widget id stored in an HTML class or similar.</p>
<p>   The reason we use an image for this representation is that it’s the easiest
   element to manipulate in an in-browser editor like Kupu. The user can drag
   the icon around the page however he wants, and on saving the page, the
   transformation layer takes care of converting the placeholders into the real
   widgets. If you try to use other HTML tag constructs for this, you quickly
   run into visual editor issues specific to the various browsers.</p>
<h2>#3: Transformation</h2>
<p>   When the page is saved, a text transform looks for these special images and
   replaces them with the rendered representation of the relevant widget.</p>
<p>   It should also be possible to optionally include attached items in the
   <code>SearchableText</code> of a content item, so it will return as a result if you
   search for a term included in the attachment.</p>
<h2>Turning portlets into widgets, a note on terminology</h2>
<p>   The idea of “widgets” needs some more explanation, as well as some
   implementation-specific notes:</p>
<p>   To make portlets more understandable and generic, we rename them to
   “widgets”. The implementation still refers to portlets, this is a UI
   change only. There are some behavioral changes that would make widgets more
   generally useful.</p>
<p>   The main reason for the renaming is that “portlet” is very “jargon”-y — your
   mom certainly does not know what a portlet is. To add insult to injury, the
   Plone portlets implementation isn’t really what the rest of the world is
   talking about when they are referring to portlets — they are usually talking
   about the <a href="http://jcp.org/aboutJava/communityprocess/review/jsr168/">elephantine JSR-168 Java   specification</a><sup>1</sup>,
   so let’s eliminate that source of confusion once and for all. <span class="sidenote"><sup>1</sup>To be fair to Plone, the JSR spec was still in
   its infancy when this particular part of Plone was named.</span></p>
<p>   “Widget” is the term used by several web-based and desktop-based
   implementations of this concept, and people understand what they are at this
   point. “Gadgets” is another term that might be an alternative, but for the
   remainder of this proposal, I will use the term “widgets”.</p>
<p>   On a related note, the intent is also to get rid of the notion of left and
   right columns (as well as the general separation that forces you into a
   certain layout at the moment), but I’ll save that layout discussion for a
   later point. It’s covered superficially in the technical explanation at the
   end of this part, if you’re interested. The short version is that everything
   becomes a widget (the search box, the navigation, breadcrumbs, logo, etc).</p>
<h2>Demonstration & Notes</h2>
<p>   <a href="http://limi.net/media/rich-media-edit.mov">Movie showing the new way to handle rich media</a> <br>(no sound, 5.5MB)</p>

<ul>
<li>Insert a Movie widget</li>
<li>It allows you to <code>Upload</code>, <code>Search/Browse</code> an existing content object, or <code>Embed</code> from an external web site, potentially with some
     settings related to height/width, etc.</li>
<li>For movies and audio, an add-on product suite like a stripped-down version
     of Plone4Artists could supply transcoding and metadata extraction for these
     types. Simple metadata extractors like EXIF (photo metadata) and ID3 (mp3
     metadata) could be in the core, but we don’t really want to ship a full
     suite of video and audio converters by default.</li>
<li>Right-clicking a widget and/or possibly clicking an <img src="info_icon.gif" alt="Info">
 information icon
     brings up the widget settings.</li>

</ul>
<p>   As you can see, this solves a lot of interesting use cases, and the potential
   new capabilities here can not be understated, it’s an incredibly flexible and
   powerful way of handling “opaque” content.</p>
<p>   If you’re interested in the technical implementation details, continue
   reading — if not, you can jump directly to <a href="http://limi.net/articles/composite-pages-listings-and-content-proxies">Part 3: Composite Pages, Listings
   & Content Proxies</a>.</p>
<h2>Implementation notes</h2>
<p>   Some implementation specifics from Martin:</p>

<ul>
<li>Some widgets are global. They are shown on all pages. This is <em>not</em> the
     same as assigning a widget at the portal root that is acquired everywhere.
     One use case here is things like promotions or site-wide information, but
     this mechanism can also be used to manipulate site layout (see below).</li>
<li>There is a “Layout and widgets” control panel were all global widget
     assignments are managed. This includes site-global, group-assigned and
     type-assigned widgets.</li>
<li>Global categories of widgets (assigned by group, content type or globally)
     can be blocked by location as they are now. This should show a visual
     representation of what gets blocked. It should be possible to block all
     widgets in the given category, or only some.</li>
<li>When a contextual widget is added (i.e. one that is attached to a content
     item), it is for that exact content item only by default.</li>
<li>A particular widget assigned to a folder may optionally be set to apply to
     items in the folder only, or to items in the folder and its subfolders.
     However, acquisition is not the default.</li>
<li>Widget assigned to default pages behave as if they’re assigned to the
     relevant folder.</li>
<li>A portlet manager can be associated with a layout grid. A widget’s position
     in the grid is annotated onto the widget’s assignment instance. This
     alleviates the need for multiple portlet managers that only serve to
     represent different areas of the screen.</li>
<li>For this to work, there must be a more granular way of asking a portlet
     manager to render itself than the current approach which uses the
     <code>structure:</code> expression type in TAL. Most likely, this will just be a view
     with a function to render a particular grid cell of a particular portlet
     manager.</li>
<li>Some widgets can only be added as site globals, never to groups, content
     types or content items. These are layout elements that fit into a global
     grid that includes the entire page.</li>
<li>A convenience wrapper widget type makes it possible to wrap any supported
     viewlet into a widget. “Supported” here means that the viewlet provides a
     particular marker interface.</li>
<li>By moving viewlet widgets around the site-global grid, it is possible to
     move the search box, say, from the top right hand corner to anywhere else
     on the screen.</li>

</ul>
<p>   With that out of the way, it’s time to move on to <a href="http://limi.net/articles/composite-pages-listings-and-content-proxies">Part 3: Composite Pages, Listings & Content Proxies</a>.</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/qot2alxOeYU" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>User Interfaces</dc:subject>                    <dc:subject>Plone</dc:subject>                <dc:date>2008-07-08T09:55:00Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/improve-plones-handling-of-rich-media</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/simplify-plones-editing-experience">        <title>Simplify Plone’s Editing Experience</title>        <link>http://feedproxy.google.com/~r/limi/~3/hw5QYUGKWnc/simplify-plones-editing-experience</link>        <description>Part 1: Simplifying Plone’s content authoring experience for end-users. We’re bringing sexy back.

</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/simplify-plones-editing-experience>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p><span class="discreet">If you haven’t read <a href="http://limi.net/articles/simplifying-plone">the introduction</a> yet, please make sure you do so before continuing. Thanks!</span></p>
<p>Over the past few weeks, I have done some experiments in simplifying the UI to
make Plone less intimidating for newbies. A lot of these experiences are based
on deploying it in a limited fashion internally here at Google. Generally, Plone is
in a state now where most of the major areas of functionality is in place, so
it’s time to look at it with fresh eyes — it’s not exactly Plone 1.0 when it
comes to number of things you can click anymore.</p>
<p>I have built a clickable prototype of the new UI, since the best way to
show you what the new editing experience looks like is to show it in action.</p>
<p><span class="discreet">Note that while I’m using the NuPlone theme in this demo, the approach works equally
well with any theme — this is about functionality, not looks.</span></p>
<h2>Demonstration & Notes</h2>
<p>   <a href="http://limi.net/media/simplify-edit-ui.mov">Movie showing the new approach</a> (no sound, 6.6MB)</p>

<ul>
<li>First we show the existing UI, and highlight the various features.</li>
<li>Then we switch to the new proposed UI. The major difference is that
     interface usually only has one button — “Edit” — instead of the entire
     tabs/menu/button structure that was there in the earlier version.</li>
<li>Adding content: Showing the simplified new add menu, notice how there’s
     fewer types. We’ll get to the rationale between these going away in
     the next parts.</li>
<li>When we click the edit button, it does an async request and brings back the
     edit form inline. It turns out that making everything editable inline all
     the time is confusing users, and contributes significant amounts of visual
     noise.</li>
<li>A number of interface elements and functionality has been moved to the edit
     screen. Sharing and History are now on the Edit screen, since they are usually part of the editing flow. </li>
<li>Another common trait of these actions is that they are used only
     occasionally compared to the adding and editing of content.</li>
<li>The “Advanced” menu handles everything that isn’t in the “Default”
     fieldset, i.e things like Effective/Expiry dates, ownership, copyrights,
     local workflows, etc. It also handles add-on screens that would sometimes
     show up as additional tabs in the old-style interface.</li>
<li>Share, History and Advanced show up layered on top of the main content, lightbox-style when clicked — a modal window in
     UI terms. This reinforces that
     the metadata and functionality is a layer around
     the content. It’s not shown in the screencast, as it takes more time to fake than I have right now. Just imagine the existing fieldset implementation in a lightbox-style overlay, and you’ll get the idea.</li>
<li>Moving on to the visual editor, we have collapsed down some less-commonly
     used buttons to a pull-down menu to make the interface as minimalist as
     possible. Not to worry, though: if you have certain things that deserve a
     dedicated button like — let’s say, heavy use of the “highlight” style —
     these can appear on the main toolbar too. Don’t let the super-minimalist
     button setup distract you at this point, it’s there to illustrate the
     concept.</li>
<li>Most significant of the two menus is the “Insert” menu, which can insert a
     number of familiar and unfamiliar content components called “widgets”,
     we’ll get to these in part 2:
<ul>
<li>Tables</li>
<li>Widgets</li>
<li>Listings — both folders and dynamic searches (Collections)</li>
<li>Application functionality like Polls and Forms</li>

</ul>
</li>
<li>This is another one of the ideas that will Change Everything™, since there
     is no need for a dedicated Collection type anymore. If you want to mimic
     the current Collection behaviour, it would be a page with only the
     Collection widget in it. This is an example of how the widget idea starts
     simplifying everything in unexpected ways. I’ll cover this in more detail
     in part 2.</li>
<li>Some things would be moved to the main edit screen, like tags and other
     elements deemed important enough to live there. Don’t pay too much attention to the UI on the tag field, it’s just an input box in this mock-up — of course it would have autocomplete in its final form.</li>
<li>Workflow state has moved to the bottom of the form, as the natural action
     is to do some edits, and then submit the document as part of the editing
     flow. For people with the Reviewer role/permission, the idea is to add an
     additional pulldown on the view of the content too, so they don’t have to
     go to the edit screen to make state changes — in other words the same way
     as things work in the old-style UI, but limited to the power users that are
     reviewers.</li>
<li>We show how you would submit the document for review, and Save it. The
     current thinking is that changing the state would show a review comment
     string field next to the pulldown, so you could enter an optional comment
     to go along with it.</li>

</ul>
<h2>Frequently asked questions and additional notes</h2>
<p>   <strong>What happens to in-line editing?</strong></p>
<p>   If there’s something that we have heard loud and clear from our integrators,
   in-line editing — aka. “click to edit” — doesn’t work that well with
   end-users, so we’ll disable it for general content authoring. Yes, I just
   admitted we were wrong the first time around. </p>
<p>   Instead of trying to work
   around the problem of editing efficiency with “UI hacks” like these, we
   should attack the root of the problem, which can be done in much the same
   way, but with fewer moving parts. There <em>are</em> use cases — mostly specialized
   applications — where inline editing may be the right approach. This proposal
   just states that for the basic content authoring use case, it doesn’t add
   much — except for confusion, annoyance and visual noise.</p>
<p>   <strong>Where is the current state shown on the view, since the menu bar is gone?</strong></p>
<p>   The current plan is to fold it into the by-line along with the
   publishing date and author info.</p>
<p>   <strong>What happens to products that have defined custom tabs and/or menus?</strong></p>
<p>   Ideally, there are very few legitimate use cases for doing this, but I agree
   that some exist. I won’t call out which are gratuitous and which make more
   sense, but I’ll use LinguaPlone — Plone’s multilingual support — as an example of where it might make sense to
   add a new menu.</p>

<ul>
<li>Additional tabs end up as sheets in the “Advanced” edit page.</li>
<li>Menus end up as pulldowns in the view UI (but are discouraged unless there’s a really good reason for them to live there).</li>
<li>Single-item menus become buttons.</li>
<li>A “Translator” role can minimize the UI noise, similar to how we could show the state-change menu for people with the Reviewer role to ease their day-to-day dealings with the system.</li>

</ul>
<p>   In sum, these changes to the user interface make it less cluttered, more efficient, and easier to integrate with custom layouts, as the only thing you have to find space for in a custom design is a button and a pulldown.</p>
<p>   Next, let's look at <a href="http://limi.net/articles/improve-plones-handling-of-rich-media">better rich media handling in Plone</a>. </p>
<img src="http://feeds.feedburner.com/~r/limi/~4/hw5QYUGKWnc" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>User Interfaces</dc:subject>                    <dc:subject>Plone</dc:subject>                <dc:date>2008-04-14T21:35:00Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/simplify-plones-editing-experience</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/simplifying-plone">        <title>Simplifying Plone</title>        <link>http://feedproxy.google.com/~r/limi/~3/kQgFluHPwCM/simplifying-plone</link>        <description>With Plone 3.1 in the Release Candidate stage, and with the continued work on the 3.x line, it’s time to look ahead and see what we can do to make the Plone experience even better for the
next major releases.

</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(<a href=http://limi.net/articles/simplifying-plone>You are encouraged to read this article with its formatting and typography intact, instead of in this RSS reader</a>)</p><p>The <a href="http://plone.org/events/2008-summit/">Strategic Planning Summit</a> at the
Googleplex in February 2008 challenged us to focus on “approachability” as a
major design goal; a way to make sure integrators who try to put together a
project using Plone will have a good first experience. I won’t go into that in
great detail, but I believe <span class="name">Martin Aspeli’s</span> article <a href="http://martinaspeli.net/articles/pete-and-andy-try-plone-4">Pete and Andy try Plone
4</a> serves as a great
primer for the kind of experience we’re reaching towards for our Integrator
audience. If you haven't read it yet, please do.</p>
<p>But what about the people that will use those Plone deployments as their
intranet, web site or collaboration space in the years to come? Don’t they
deserve just as great an experience the first time they are introduced to Plone?
Shouldn’t they be able to master the basics of Plone in about half an hour of
tinkering, and be able to self-graduate to higher understanding of the system
when they see the need for it?</p>
<p>Let’s skip the all rhetorical questions for which the answer is obviously a
resounding “yes” — and let’s not forget that Plone was a revolution at the time, and
enabled a lot of non-technical people to publish and work with content through
their web browsers when few such solutions existed. </p>
<p>This was before Google Docs,
Basecamp, mainstream wiki usage, and even before the word “blog” was something
most people knew what was. Netscape 4 was still a viable browser, Windows 2000
was the new hotness, and Napster was teaching people the about the power of  networks of people and media. Mac OS X and the iPod was just a glimmer in Steve
Jobs’ eye, and <a href="http://bash.org/?122557">Clippy from Word was the most widespread alternative UI</a> for content authoring. People thought we were
crazy to use CSS everywhere for layout, and a new project called <span class="name">Wikipedia</span> asked
if they could <a href="http://en.wikipedia.org/skins-1.5/monobook/main.css">use our style
sheet and layout</a>, and we said yes.</p>
<p>In order to to understand this proposal, an appreciation of what was done in
Plone from 2001 and up until today — versions 1.0, 2.0, 2.1, 2.5 and 3.0 — is
useful. Painted with a broad brush, all those releases were incremental — in a
UI sense, that is. The infrastructure went through great improvements, but the
user interface just adapted to fit around the new concepts that were introduced,
and the core usability approach didn’t change much. Sure, Ajax
functionality, a visual content editor and other nice improvements were added, but the
basic way of doing content authoring remained.</p>
<p>There are good things to be said for interface stability, and I’m
really not proposing major changes in how you interact with Plone on a
day-to-day basis, since it generally works well. Changing a few key
elements can have profound effects on the overall approachability for
the average Plone end-user, however. We can also make it easier for the power users who create
and manage complex content layouts and rely on rich media like movies and audio
to make their sites more compelling and rewarding.</p>
<p>This new UI approach is gradual in its implementation — “progressive
disclosure” for you UI designers out there — but revolutionary in the way it
makes things both simpler and more efficient and powerful at the same time.
Rather than trying to separate the users into explicit "simple user" and "power
user" roles, we make it easier to reach the things you use all the time, and
push some of the functionality to locations where people can find them without
interfering with the general content authoring. So it’s similar to — but more
implicit and gradual than — the idea of a dedicated Power User role.</p>
<p>Whether the elements of this proposal end up in Plone 4.0, Plone 5.0 or Plone
3000, I don’t know. What’s important is that it’s possible to implement pretty
much all of these things as incremental improvements in the coming releases in
the 3.x series, as they make sense as smaller improvements by themselves — or
don’t need to be visible until we flick the switch in a later version.</p>
<h2>What can be improved?</h2>
<p>   Plone mostly works great, but there’s no reason to stop innovating! Some of the
   major areas I think should be improved — and are covered in this proposal —
   are:</p>

<ul>
<li>Rich media handling and dealing with anything that is not a
     simple page of text is harder than we’d like it to be. We want it to be
     equally easy to write content that consists of images, movies, audio and
     content embedded from other web sites.</li>
<li>Composite pages — pages that pull content from a number of locations — is a
     hard concept to get right, usability-wise. None of the existing add-on products have
     supplied a satisfactory solution to this. No offense intended, of course —
     it’s a very hard problem, and people have done a great job exploring
     various different approaches to this.</li>
<li>The content authoring process is currently very artificial — you generally
     need to make sure your images, audio or movies are uploaded to the system
     before you start writing. This is the opposite of how people usually think
     and work.</li>

</ul>
<h2>What are we proposing to do?</h2>
<p>   We suggest a set of changes that will make Plone easier to use, as well as 
   reduce the complexity of (or getting rid of entirely!) the concepts of:</p>

<ul>
<li>Collections</li>
<li>Images </li>
<li>Composite page types</li>
<li>Content Proxies (represent one object in two locations)</li>
<li>Default pages </li>
<li>“Contents” tab</li>
<li>Rich media</li>
<li>Content reuse</li>

</ul>
<p>   A tall order, for sure. Suspend your disbelief for a moment, and let me show
   you how! I know this can seem a bit overwhelming when taken in one sitting,
   but I want you to see the progression and thinking along the way — as well as
   the ideal end state.</p>
<h2>Preamble and credits</h2>
<p>   This proposal is comprehensive and wide-reaching, but it’s <em>not</em> a result of
   me putting on my thinking hat for three months, retreating to my secret
   mountain hideaway with an unlimited supply of my favorite whisky and music.
   Although that does sound tempting, in reality it’s a result of great
   conceptual ideas from people like <span class="name">Geir Bækholt</span>,
   <span class="name">Martin Aspeli</span>, <span class="name">Benjamin
   Saller</span>, <span class="name">Helge Tesdal</span>, <span class="name">Danny Bloemendaal</span>, <span class="name">Cornelis
   Kolbach</span>, <span class="name">Duncan Booth</span> as well as my fellow
   UI designers at Google — you know who you are! As usual, my role is mostly
   putting all these ideas together into a coherent whole, and hopefully I give
   their ideas enough credit and appreciation by proposing something that is
   more valuable than the sum of its parts, clichés notwithstanding.</p>
<p>   So to anyone who has been involved in this discussion over the past couple of
   years — too many to mention, so I won’t even try to name you all — thank you
   for your great input and suggestions! Also a very special thank you goes out
   to <span class="name">Martin</span>, who wrote the initial summary of the
   infrastructural description on his way back to London based on the
   description <span class="name">Geir</span> and myself gave him a few hours
   earlier at the Planning Summit.</p>
<h2>How to read this proposal</h2>
<p>   There are several ways to explain what this proposal covers, and <span class="name">Martin</span> and
   <span class="name">Geir</span> have helped me with the implementation specifications. If you’re
   mainly interested in how this will end up from the end-user point of view, I
   suggest that you read through the technical parts anyway — and ignore
   anything you don’t immediately understand. It will give you a fuller
   understanding of the screencast demonstrations and screenshots that follow.</p>
<p>   I started out with two separate articles on how this would work, but realized
   that for our developers it’s all connected. In the interest of
   efficiency — and actually getting this published — you’ll have to live with
   the somewhat interleaved explanation for now.</p>
<p>   It’s tempting to write a proposal that was five times as long trying to cover
   all the details that are touched on in this proposal, but then nobody would
   read it. So let me know what needs clarification either by <a href="http://limi.net/contact-info">contacting me directly</a> or by posting to the <a href="http://www.nabble.com/Core-Developers-f6745.html">Plone Core Developer list</a>, and I will explain in
   more depth — and if necessary update the proposal to clarify when
   things are confusing or non-obvious. Most of the edge cases — believe it or
   not — have been thought through. At least we think so, but you are of course
   welcome to show us new ones.</p>
<p>   It’s time for a revolution, it’s time to make Plone’s user experience more
   powerful, as well as making it simpler to get started! But enough pillow talk,
   let’s get down and dirty with <a href="simplify-plones-editing-experience">Part 1: Simplify the Editing Experience</a>.</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/kQgFluHPwCM" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>User Interfaces</dc:subject>                    <dc:subject>Plone</dc:subject>                <dc:date>2008-04-14T21:00:00Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/simplifying-plone</feedburner:origLink></item>




</rdf:RDF>
