<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.limi.net/~d/styles/rss1full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.limi.net/~d/styles/itemcontent.css" type="text/css" media="screen"?><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/simplify-plones-editing-experience" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/simplifying-plone" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/thank-you-plone-community" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/18-things-i-wish-were-true-about-plone" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/fixing-leopard-translucent-menu-bar" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/plone-conference-2007-keynote" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/feed-address-changed" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/leopard-observations" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/quick-link-google-experimental-search" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/foreword-to-professional-plone-development" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/oracle-is-the-404-company" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/behind-the-scenes-of-the-plone-3-launch" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/archgenxml-now-produces-plone-3-code" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/drive-by-compliments" />
        
        
            <rdf:li rdf:resource="http://limi.net/articles/akamai-runs-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.limi.net/limi" type="application/rss+xml" /><feedburner:emailServiceId>556450</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname></channel>

    <item rdf:about="http://limi.net/articles/simplify-plones-editing-experience">        <title>Simplify Plone’s Editing Experience</title>        <link>http://feeds.limi.net/~r/limi/~3/270413721/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><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>   </p>
<p>   <span class="discreet">Check back soon for the next part, where we cover rich media handling.</span></p>
<img src="http://feeds.limi.net/~r/limi/~4/270413721" 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://feeds.limi.net/~r/limi/~3/270413722/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>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.limi.net/~r/limi/~4/270413722" 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>
    <item rdf:about="http://limi.net/articles/thank-you-plone-community">        <title>Thank you, Plone Community!</title>        <link>http://feeds.limi.net/~r/limi/~3/266134158/thank-you-plone-community</link>        <description>It’s been a great eight years, here’s to the next eight.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I’ve always been a fan of <span class="name"><a href="http://www.gapingvoid.com/">Hugh MacLeod</a></span> — and if you haven’t read his <a href="http://www.gapingvoid.com/Moveable_Type/archives/000932.html">How to be Creative</a> yet, save it to your desktop and read it once you have a spare moment. It’s a great summary of how to “stay real” and enjoy what you are doing, as well as how to best pursue your goals.</p>
<p>Today, he announced that he <a href="http://www.gapingvoid.com/Moveable_Type/archives/004478.html">landed a book deal</a>, and in that context he wrote something that sounds very familiar:</p>
<p><q><q>The best thing about being a blogger is the people you get to meet</q>. I have found this to be true and self-evident. When I was younger, the people who inspired me the most professionally were famous, dead, or both. Since I become a blogger the people who inspired me the most became good friends of mine. We hung out. We drunk beer. We ate pizza. It wasn’t a big deal, it was just… lovely. Back in 2004, my blogging buddies and I knew we were onto a good thing. Something powerful and creative and earth-changing. But that’s not the main reason we liked it. We liked it because we enjoyed it, because it was interesting, because of the smart, passionate, fun people we were starting to hang out with.</q></p>
<p>Sound familiar? It perfectly captures my feelings about the outstanding Plone community, which has been an amazing journey for me and hundreds of other developers throughout the years.</p>
<p>It’s been a crazy ride — starting from being unemployed in a small city in Norway, I got to build a world-class company with <a href="http://www.jarn.com">some of the smartest people I know</a>. I now work at Google with another group of exceptionally talented people, call San Francisco my home, spend time with the most wonderful girlfriend in the world, and drive <a href="http://limi.net/elise">the only car I ever wanted</a>. Plone has enabled <a href="http://plone.net/providers">several hundred companies</a> all over the world to run their own businesses, and do what they love to do. It’s mind-boggling, and sometimes the massive reality of it all comes crashing down on me — in a good way.</p>
<p><span class="discreet">If you’re interested in my personal perspective on how Plone happened, it was covered in the <a href="http://limi.net/articles/foreword-to-professional-plone-development">foreword to Martin’s book</a>.</span></p>
<p>So thank you, Plone community. You’re fantastic, and my life is exciting and interesting because of you. I couldn’t have asked for a better group of people to change the world with. I can’t wait to see what the next eight years will be like.<span class="endMarker"></span></p>
<img src="http://feeds.limi.net/~r/limi/~4/266134158" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Meta</dc:subject>                    <dc:subject>Plone</dc:subject>                <dc:date>2008-04-08T05:16:26Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/thank-you-plone-community</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/18-things-i-wish-were-true-about-plone">        <title>18 Things I Wish Were True About Plone</title>        <link>http://feeds.limi.net/~r/limi/~3/225847497/18-things-i-wish-were-true-about-plone</link>        <description>In the interest of furthering discussion about the future of Plone, here are some of my personal opinions on things that I’d like to see applied to Plone — both the process and the software.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Let me preface this with the obvious disclaimers for the readers that aren’t intimately familiar with the Plone community and culture:</p>
<ul><li>This is my personal list, and doesn’t necessarily reflect what the Plone Community wants to do.</li><li>Even though I work at Google, there’s nothing here that constitutes knowledge of any secrets about future products. Any mention of Google here is as an outsider looking in, as I don’t work in the below mentioned focus areas — and have no insights into what they are up to next.</li><li>Some of these are confrontational, some are not — they are all here to stimulate discussion, and not to imply failure or dissatisfaction in any of the areas. The Plone community is a fantastic community <em>exactly because</em> we can have these sorts of discussions out in the open without people taking it personally. </li><li>Make no mistake — we are also a leader in a lot of the areas mentioned — I’m just making sure we keep pushing the curve and continue delivering the best damn content management system on the planet.</li></ul>
<p>This list is merely a brain dump meant to inspire and provoke discussion in the days leading up to the <a href="http://plone.org/events/2008-summit">Plone Strategic Planning Summit</a> at the Googleplex in February 2008. The discussions there will certainly be a bit more high-level than what I talk about below, but this is a good chance for you to read about some of the baggage I will bring to the summit — as well as add your own views to the discussion so we can make note of them.</p>
<p>With that out of the way, get a cup of your favorite beverage, and let’s move on to the list! These are in no particular order, but I numbered them to make it easier to keep track of how far along you are in the document.</p>
<hr />

<a name="1"></a>
<h2> #1: Simple development should be possible entirely through the web interface</h2>
<p>For those of you familiar with Zope, this point can be summarized as “Deliver on the promise of ZClasses”. Yes, I said ZClasses. For those of you unfamiliar with Zope, ZClasses is an old — and now frowned-upon — part of Zope that allows you to construct content types entirely through a web interface. It is what I usually refer to as the “gateway drug” of Zope. Most people that got into Zope in the beginning did so especially based on what ZClasses were supposed to deliver.</p>
<p>Of course, history shows that this didn’t really work out, as there was no transition path from clicking around and making your own simple type definitions, and then move to more advanced programming later on. With Zope 3 and the tools we now have at our disposal, it’s time to revisit this notion, since we can pull it off without any serious drawbacks this time around.</p>
<p> 
The path to get started with Plone should be:</p>
<ol><li>Install Plone, change options and settings to your liking, add simple types for the main business processes you want to mimic — all using the web interface.</li><li>When you have the need for more advanced types — or just want to make sure the setup is repeatable and possible to check in to a code repository or a product: click a button → get a filesystem-based product.</li><li>
Once you are comfortable with the architecture and general approach, you can continue doing the rest using a filesystem-based approach to development.</li></ol>
<p>I know <a href="http://martinaspeli.net"><span class="name">Martin Aspeli</span></a> has done a lot of thinking around this, and has a proposal based on Zope 3 technologies ready, so I think this is already in good hands — but worth exploring and giving feedback on. My major goals to ease the approachability of Plone is to be able to solve the following common tasks using this solution:</p>
<ol><li>Create simple types — then serialize (and diff) to an FS product</li><li>Change setup and configuration — then serialize (and diff) to an FS product </li><li>Create user properties — then serialize (and diff) to an FS product</li></ol>
<p>Zope is one of the few systems that can do this, and we should exploit it for what it’s worth. The ultimate step is always filesystem-based development, but the goal is to be able to do all the simple things without programming — and then be able to dump to file system when you are ready to take it to the next level.</p>

<a name="2"></a>
<h2>#2: Themes should not require Plone-specific knowledge<strong></strong></h2>
<p> There are several reasons why there aren’t a lot of high-quality themes available for Plone. Most of it is a reflection of the fact that Plone is a more sophisticated solution that tends to have paying customers and businesses as a core audience. Obviously, this isn’t conducive to a large theme library in the same way as   blogging software like WordPress — simply because companies and organizations pay a lot of money for their designs, and don’t want other web sites looking like their site.</p>
<p>The other reason is that it currently requires a lot of CSS knowledge to work with Plone to produce a theme that will be maintainable as well as being future-proof. Separating the theme layer from the main templates in a way that makes it possible to hand a template to a web designer independently of Plone is what we have always wanted to do. </p>
<p>This reality is getting closer with the arrival of Deliverance, an approach that makes a separate “theme layer” that is independent of Plone, and can be worked on without having any knowledge about how Plone works. Deliverance is currently being used by several sites, and is maturing rapidly due to the great work of <a href="http://radio.weblogs.com/0116506/"><span class="name">Paul Everitt</span></a> and the <a href="http://www.openplans.org"><span class="name">OpenPlans Team</span></a>. I believe having Deliverance — or something similar — as part of the Plone core would be a sensible and game-changing move, provided it can deliver on its promises.</p>
<p>Again, this is something that I believe is in good hands, but needs shepherding, cheer-leading and feedback to make sure we make it as simple as possible to put your own look on Plone.
</p>

<a name="3"></a>
<h2>#3: Fantastic searching/grouping/batching operations for content should be accessible to everyone </h2>
<p>The best way to sum this up for those of you who are familiar with Plone already would be <em>Collections on steroids</em>. There is a real need to organize and group content in Plone in various ways, and the current Collection and search implementations in Plone barely scrapes the surface of what we’re capable of in this area.</p>
<ul><li>The first step would be to mimic a slice/dice interface that all Plone developers are intimately familiar with: the Trac search. For those of you unfamiliar with Trac, it looks a lot like the Smart Folders in Mac OS X. The goal would be to offer similar query — and especially grouping — abilities in the core Collection type and also the advanced search form. This alone would make Plone a fantastic tool for content management.</li><li>Assigning metadata to items in a collection of content — be it permanent or temporary — should be possible for all content. Construct your collection of content using the search/grouping interface and then apply tags, expiry dates and contributor metadata to it is a necessity. I cannot stress this enough.</li><li>Another related quick fix would be to treat CSV as a first-order citizen for export/import of data — especially in Collections and users/groups — as well as wherever else data comes in a tabular format. CSV is the lingua franca of structured data and data manipulation/exchange, and we’re not exposing this in Plone at all right now. Since Python has great libraries for handling CSV data, it’s time we start using them.</li><li>In the same vein, faceted browsing of the search results to make it easy to narrow down the result set. This is essentially the same back-end with a slightly different UI on top.
</li></ul>

<a name="4"></a>
<h2>#4: Rich media should be a seamless part of the Plone Experience</h2>
<p> One of the major growth areas we see in the Ploniverse is the need to handle rich media in a graceful and elegant way. Audio and video data in particular, but also interactive media like Flash.</p>
<p>This presents a number of challenges on both the front-end and back-end:</p>
<ul><li><strong>On the back-end:</strong> Seamless and efficient storage of large files (aka. “BLOBs”), and performance in serving up these without using too much memory or CPU on the server side</li><li><strong>On the front-end:</strong> Easy upload of a large number of files, as well as playback and dedicated view modes for audio, video and picture collections.</li></ul>
<p>The back-end part of this equation has received a lot of attention lately, with Zope 2.11 shipping with native BLOB support that massively improves the memory and storage requirements as well as the performance of serving up large files. On the Plone side, <a href="http://zitc.de/"><span class="name">Andreas Zeidler</span></a> has done an amazing job and created an implementation that makes this available on the Plone side of things, and this work is scheduled to land in Plone 4.0.</p>
<p>On the front-end, projects like <a href="http://plone4artists.org">Plone4Artists</a> have explored a number of different approaches to handling these types of data in Plone, and there are several important lessons to learn there.</p>

<a name="5"></a>
<h2>#5: Streamlined, unified install experience on all platforms</h2>
<p>Plone already has the best install experience of any content management system — it’s really the Gold Standard in how easy you can make it to get started with such a sophisticated framework across all the major platforms. So why do we need to change it? The reason is simple: recent progress towards integration and unification with the Python world — especially eggs (similar to JAR files for those of you from the Java world) — necessitates some improvements here.</p>
<p>The current situaton is also that we have three separate cores of the installers, one for each of Windows, Mac OS X and Unix/Linux. The more we can share between these implementations, the easier it becomes to release software as well as troubleshoot problems regardless of what platform people are on.</p>
<p><span class="name">Steve McMahon</span> and <span class="name">Kamal Gill</span> have done great work done on updating the Unified Installer to be egg-based recently, which lays most of the groundwork in getting the Windows and Mac OS X installers to use the same infrastructure. I want to make sure Windows is not left behind, as this is a very common <em>evaluation</em> platform for Plone — even if people end up installing it on Linux/Unix-based platforms when it goes into production.</p>
<p>However, I want to take this further, and think about the next steps in both initial install experience, upgrade experience, and how to install add-on products. Going into great detail on this would necessitate an entire document in itself, but I’ll list my current brainstorming notes in this area. If you have any feedback on this, please help out, these are loosely joined ideas that may or may not make sense — or even be realistic:</p>
<ol>
<li>Install Plone/Zope in a consistent way that is 100% insulated from other changes to the system Python and other Plone/Zope instances on the system.</li><li>Install add-on products without having to do the download/unpack/locate directory dance. One way to do this would be to let “known good” projects be installed using the web interface, others might require server access.  “Yes, I have a backup” button when installing.</li><li>Ability to ask questions during <em>install</em> — before the add-on product gets installed. In a lot of cases, this will influence how the add-on is installed and set up.</li><li>Ability to ask questions during <em>upgrades</em>: “We changed the default
policy for X to do Y, but unless you want us to change your default
setting, we will leave it the way it was.”</li><li>Show an indicator on whether we consider it safe to upgrade to the next available version X of Plone, based on the dependency information listed in the currently installed eggs — ie. if all add-on products say they work with the next version of Plone, tell the user this. If not, let him know which ones don’t have support yet.</li><li>Is it possible tocreate a roll-back mechanism to downgrade installs in case add-ons screw something up? Yes, you should always have backups, but it would still be a great addition that would alleviate a lot of nervousness on behalf of the site admin.</li><li>An easy way to clone your production instance to a development server.</li><li>Upgrade Plone/Zope using the web interface with just selecting to do so — ask for backup locations, etc. </li><li>Make the installer more like a "network installer" — ie. comes with the core, and then gets the relevant eggs online. Could even check for newer versions when you run it, and ask if you want the newer version instead. Minimizes the initial download, and makes it easier to handle release files. The role of the installer: set up a sane, insulated environment with Python + easy_install that works!</li><li><a href="http://www.agmweb.ca/blog/andy/"><span class="name">Andy McKay</span></a> had a great idea of super-simple, standalone ZPT-based (not Zope!) application to replace the Plone Controller — making it cross-platform. Upgrade options, test running and so on could also be added here.</li></ol>

<a name="6"></a>
<h2>#6: Increased focus on a culture of systematic benchmarking and performance tuning</h2>
<p>Like in Alcoholics Anonymous, the first step to healing is to realize that you have a problem. Unoptimized Plone sites tend to be quite slow, and while there are numerous ways to make them go faster, they all require additional knowledge from the integrator. We can do a lot with a little investment here, as earlier optimization efforts have shown. We need to get rid of the attitude that “there’s not much we can do about performance, Plone is a bit slow since it does so much for you”. Every single time we have examined this closer, there are huge wins to be had on a number of levels. </p>
<p>The complimentary side of this is to establish a nightly testing framework, in the same manner we already run automated, comprehensive code tests every night. Knowing <em>when</em> something started being slower is just as important as speeding up things — especially since we rely on the combined stacks of CMF, Zope and Python. A small screw-up can have massive consequences for us, and it can be hard to track down what changed. If you have a day-to-day log of some central performance statistics, you can narrow this down to specific changes — both upstream and in Plone itself.</p>
<p>Some of the things we can do:
</p>
<ol>
<li>Nightly speed benchmarks (we want to know <em>when</em> code was added that made things slower) </li><li>More analysis on where the CPU time goes — will need Zope gurus here, as it’s very opaque to analyze at the moment, we tried this with <a href="http://www.culater.net/"><span class="name">Mike Solomon</span></a> (Python performance guru at YouTube), and it’s really hard to know what the components are for an outsider — even for our seasoned, battle-scarred Plone veterans.</li><li>Graph dependencies in an attempt to clean up code and make things simpler. The current inheritance trees in Plone + CMF + Zope are quite convoluted at times, and there’s probably a lot of simplification potential here once we see the bigger picture.</li><li>I want a random content population mechanism! To do proper automated benchmarks, you need a realistic body of content to test it with. Luckily, <a href="http://tarekziade.wordpress.com"><span class="name">Tarek Ziade</span></a> and others at the Snow Sprint 2008 <a href="http://tarekziade.wordpress.com/2008/01/21/snow-sprint-report-2-benchmarking/">already started work on this</a>.</li></ol>

<a name="7"></a>
<h2>#7: Improved tabular data story </h2>
<p>Right now, Plone is a great choice for content-centric applications, and it also has the possibility to integrate with more structured, relational data via the SQL database adapters. However, most of these solutions are old — and while they work, Python has acquired a number of great SQL integration tools in the meantime, SQLAlchemy being the weapon of choice for most relational-thinking Pythonistas.</p>
<p>I believe this is an important focus area, but since I’m not an SQL guru, I’ll leave it to others to comment on how this can best fit into the Plone experience. I have a related suggestion, though — one that we have been kicking around for quite a while at various sprints and workshops, but never had time to look into:</p>
<p>I want us to have a simple “Grid” type as one of the core Plone types. Looking at the average user, they usually reach for a spreadsheet not when they need calculation abilities — but when they need something that looks tabular. Week plans, project planning and overviews — all very structural data. Of course you can do this in a table in a normal HTML page, but that’s not how people think.</p>
<p>The Grid type wouldn’t even have to have any spreadsheet-like properties included — as long as it could deal with text input in tables and do some rudimentary operations — like import/export CSV, and possibly feed other parts of the system with the data. This would be the perfect back-end for things like polls, questionnaires and other similar applications. You could then export the data as CSV for specialised handling and analysis/graphing, if needed. Of course, using the <a href="http://code.google.com/apis/chart/">Chart API from Google</a> would be an easy way to provide an optional graphing capability if your data is public. But I assume I’m a bit biased in this area.</p>
<p>Whether this would be backed by something like SQLite with the ability to scale up to another SQL database as the storage later — or simply be a basic type — I’ll leave for the people with that kind of experience to decide. In any case, a Grid type would fill a real need in the current Plone line-up.</p>

<a name="8"></a>
<h2>#8: Unify similar concepts</h2>
<p>Programmers often have a tendency to abstract away things until they are almost unrecognizable, to the great frustration of UI designers everywhere, of course. Making things too generic makes it hard for people to recognize patterns and makes it harder for them to let the tool guide them in what they want to do. However, the opposite tendency is also very much prevalent, and leads to a lot of redundant implementations, and confusion in what add-on products to use.</p>
<p>Building a unified back-end for some central application structures would make it easier to maintain an infrastructure that is well-tested, performance-audited and maintained. I won’t go too far into this, since it’s way outside my league, but some suggestions for common applications that could share APIs and implementations — but have different user interfaces to fulfill the specific needs — are:</p>
<ul><li>Ratings, comments, forums, mailing lists</li><li>Blogs, feeds, mail-in support, mail-out support, newsletters</li></ul>
<p>These could even ship with the core, but be deactivated by default. But I know I’m pushing it here — and I’m also tackling another element of this in a later point — so I’ll leave it as an exercise for the reader to help identify clusters of similar functionality.</p>

<a name="9"></a>
<h2>#9: Provide a fantastic page compositing story </h2>
<p>At the moment, there are several page compositing add-ons available for Plone. None of them make for a fantastic experience in creating pages that are composed of other pages, listings and resources — but it’s one of the most important focus areas for Plone 4.0. If I had my way, the user would never have to think about abstract concepts like viewlets, portlets, listings and content — the approach would be the same for everything.</p>
<p>Like the unified installation area, this is highly complex and could fill a document by itself — but I wanted to have a placeholder here, so we can discuss the current approaches and where to go in Plone 4.0. Hopefully this will be where I get to spend most of my development time for the 4.0 release. </p>

<a name="10"></a>
<h2>#10: Content re-use is overrated — people like folderish</h2>
<p>This is a personal pet peeve, but since I said I would include some confrontational issues for discussion… ;-) </p>
<p>There are absolutely user stories where content re-use is important, but those tend to be highly specialized cases, not the common case. Example: why isn’t an Event folderish? How about a Page? You can always find them later, and Plone’s built-in Link Integrity will stop you from doing stupid things like deleting content that is referenced elsewhere. There might be technical reasons why we’re not doing this — and if there is, I’d like to hear them.</p>
<p><em>Note:</em> I’m not advocating using File field/widgets, which I agree are an abomination in most cases. I want to be able to add resources inside a content item, though. The simple reason is: that’s how people think, and we’ll have to build around that notion, at least for the basic functionality. Combined with our powerful search capabilities, this  is a problem I’m confident we can provide an elegant solution for.</p>

<a name="11"></a>
<h2>#11: Take project workspaces seriously</h2>
<p>Plone is an ideal platform for highly collaborative work, and we have been improving this story over the years. Organizations like OpenPlans have also done a lot of great exploratory work in this area. It’s time to bring some of that hard-earned knowledge into Plone proper. Using an approach similar to what <a href="http://martinaspeli.net"><span class="name">Martin Aspeli</span></a> has created with his b-org add-on, it should be possible to offer simple, compelling and efficient project workspaces without adding a lot of complexity or code. </p>

<a name="12"></a>
<h2>#12: Increase efforts on plone.org </h2>
<p>The situation of plone.org is familiar to anyone that runs a successful company: Who has time to update and improve the company web site when business is doing so well? The same goes for the plone.org web site — most of our developers and integrators are busy and happy working on client projects. However, without a major facelift for our communal property, we aren’t doing Plone real justice.</p>
<p>Some things I believe we need to tackle are:</p>
<ul><li><strong>Performance tuning</strong> — currently, nobody has time to look into tuning the setup so it scales better. Currently, it’s a bit painful to use as a logged-in user because of the delays. This is to be expected with our growth, but that doesn’t mean we shouldn’t fix it.</li><li><strong>More functionality for community input</strong> — we need ratings on everything, but especially add-on products.</li><li><strong>Identify documentation leaders</strong> — at the documentation sprint, we put in place the framework and social notion of people having responsibility and oversight of certain areas of the documentation (e.g. LDAP integration). This needs to be put into action, and a consolidation effort for the documentation needs to happen as soon as possible.</li><li><strong>OpenID support everywhere</strong> — yes, <em>especially</em> in things like the issue tracker. Make it easy for casual observers to comment and interact without creating new accounts. Since Yahoo, Google and others are currently adding OpenID support to various services, everyone will soon be able to use this.</li><li><strong>Sell Plone better</strong> — The web site needs to sell Plone better, both in prose and design. The marketing committee and the Strategic Planning Summit are gearing up to address these issues.</li><li><strong>Make it easy to translate web site content</strong> — This is on our more long-term radar, LinguaPlone could be used for this already, but it’s important to have a good workflow and process around this, so translations aren’t outdated when content changes. Expect it to take a while, but make sure you help out in finding the right balance of convenience and structure. Plone is successful on an international scale, our web site should be too!</li></ul>

<a name="13"></a>
<h2>#13: Lower the Migration barriers from other systems</h2>
<p>If we can make it easier to upgrade from other systems to Plone, our adoption will increase. Migration is a complex thing, and can never be 100% automated, but there are a number of things we can do to make it possible for people to receive the Plone goodness even if they started out on a different platform:</p>
<ul><li><strong>A robust XML export/import strategy</strong> — <a href="http://plone.org/products/gsxml">GSXML</a> seems to be the best option I have seen so far, but figuring out what to standardize on, and have one solution that we recommend will make things much easier.</li><li><strong>Share migration scripts</strong> — even if what you did was a horrible hack to get that Sharepoint content into Plone, share it! Over time, people can improve and contribute back to these scripts, and people who are considering a migration have some hard-won knowledge to start off with.</li><li><strong>Support common markup formats from other systems</strong> — The classic case here is people who install  MediaWiki, and then discover “you know, having a bit more granular security would be nice”. Having optional markup modules available so people can stick with what they know will increase the chances of them migrating upwards on the food chain.</li></ul>

<a name="14"></a>
<h2>#14: Realize that web publishing isn’t our main arena</h2>
<p> Another slightly controversial idea. I’m not saying that we should ignore simple web publishing — simply that it’s not an area we will ever be a dominant player in — and we’re not trying to be. A great static deployment story will help tremendously here, but there are several factors that will always make us more of a fringe player in the brochureware corporate web site / blog arena:</p>
<ul><li>PHP systems will always win in pure numbers from pure widespread hosting availability.</li><li>Plone is massive overkill for a simple web site.</li><li>Software-as-a-Service providers like Google and others will also take on this area — and win. </li><li>It’s where the volume is, but not where money and talent is. We do money and talent better than volume. ;-)</li></ul>In my opinion, we should focus our efforts in the areas where we are already doing really well:
<ul><li>Intranet deployments for companies and organizations.</li><li>Highly collaborative workspaces with sophisticated security requirements.</li><li>Document management.</li><li>…and numerous other specialized fields.</li></ul>

<a name="15"></a>
<h2>#15: Let Favorites come back — in a big way</h2>
<p>Early versions of Plone had the notion of “Favorites” — a way to bookmark content that was useful to you in a particular Plone site. This implementation unfortunately was very basic, so it didn’t get much use among the power users, and it never got much maintenance or improvement. Later on, it was dropped, since nobody was willing to maintain it, and it really didn’t do much anyway.</p>
<p>I’m bringing <del>sexy back</del> — uhm, I mean…Favorites back. There are a number of great uses for this feature outside of a simple list of documents, as witnessed by many an inflated web startup over the last few years. I’d like us to bring back new, improved favorite support in Plone. Some ideas for cool things we can do with these:</p>
<ul><li>Use Gmail’s “Star” concept to make an efficient, simple UI to mark content for later retrieval.</li><li>Dashboard portlets with your favorites.</li><li>Let the number of "stars" on a document imply things about its ranking in search results. As del.icio.us shows, this is a great indicator of popularity.</li><li> Introduce the "follow" concept from Twitter to Plone — “star” users like content — and be able to follow their updates and additions in the site. Dashboard portlet to list these, with RSS support.</li><li>The favorite marker can mark content to be available offline via plugins like <a href="http://gears.google.com/">Google Gears</a></li><li>…and I’m sure you have other great examples.</li></ul>

<a name="16"></a>
<h2>#16: Improve desktop integration </h2>
<p>Plone is already far ahead of its competitors in this area, thanks to the tireless efforts of Enfold Systems on the Windows side of things with Enfold Desktop. There’s still a lot of challenges here, and some specifics I’d like to discuss are:</p>
<ul><li>Can we extend this kind of functionality to the OS X and Linux desktops? </li><li>Can we publish guidelines that show how to write your add-ons so they are friendly to WebDAV and desktop integration? </li><li>Can we make the Content Type Registries capable of having local configuration mappings, so they do the right thing depending on context — and make it easy to set up new mappings?</li><li>Can we make it easy to batch-apply metadata on upload using some sort of URL mapping?</li><li>Can we build a comprehensive test suite to make sure that our assumptions don’t break when we do changes in the various underlying implementations? Can we make it a given that a shipping Plone release has working WebDAV integration on all the major implementations — every time?</li></ul>

<a name="17"></a>
<h2>#17: "Recommended apps" tier</h2>
<p>This is more a pie-in-the-sky discussion item. Looking at other successful open source communities, it strikes me that Plone has a lot in common with how the <a href="http://www.kde.org">KDE project</a> manages their platform. They have a core that is useful in itself, but also a lot of add-ons that are more or less recommended — and the best-of-breed even ship with KDE itself. Working out how we can achieve a similar model with cues taken from the earlier point on installation capabilities and upgrade/dependency management would be very interesting.</p>
<p>There are a number of add-ons that deserve tighter integration (mostly in a political sense) with Plone — having recommended solutions for certain common add-ons helps the platform in general. We already have some projects that in some ways behave like this — LinguaPlone comes to mind — but having an accepted process and some guidelines around this is something we’ll need sooner or later.</p>

<a name="18"></a>
<h2>#18: Stay hungry/foolish</h2>
<p>Plone has always been great at encouraging experimentation and wild ideas. I want us to continue doing this, and make it clear that we value it — but at the same time let people know that experiments aren’t necessarily going to end up in the core. Do more experimentation and stuff that has “fun” PR value — things like iPhone support and social network features are relevant contemporary examples.</p>
<hr />
<p>What’s on your list? What are the things you’d like to see Plone focus on? Do you have comments or suggestions on any of the above points? <a href="http://www.nabble.com/18-Things-I-Wish-Were-True-About-Plone-to15180006s6741.html">Leave a comment on the mailing list</a>, or blog about your own list!</p>
<p>Thank you for your attention. It’s truly an exciting time in the Plone world. <span class="endMarker"> </span></p><img src="http://feeds.limi.net/~r/limi/~4/225847497" 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-01-29T07:16:38Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/18-things-i-wish-were-true-about-plone</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/fixing-leopard-translucent-menu-bar">        <title>Fixing OS X Leopard’s translucent menu bar</title>        <link>http://feeds.limi.net/~r/limi/~3/186889385/fixing-leopard-translucent-menu-bar</link>        <description>For people using Leopard, one of the few things that make people unhappy seems to be the translucent menu bar. Here's how to revert it to the standard white menu bar without using third-party apps or hacks.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Several add-on products have been released to rectify this, but they all suffer from problems — some of them change the default background image to have a white stripe along the top, others don't work with multiple monitors, mess up the font rendering, etc.</p>
<p>Fortunately, Apple did make this a hidden preference in OS X Leopard.</p>
<p>To change the menu bar to be the old-style white, issue this command using the Terminal — paste in the whole thing, I split it into several lines for readability:
<pre>
 sudo defaults write \
 /System/Library/LaunchDaemons/com.apple.WindowServer \
 'EnvironmentVariables' -dict 'CI_NO_BACKGROUND_IMAGE' 1
</pre>
</p>
<p>You will have to restart your computer for the change to take effect, but after that the menu bar will stay a solid white.</p>
<p>Enjoy your white, readable menu bar! <span class="endMarker"></span></p>
<p><hr /></p>
<p>If you should ever want the translucent version back, here's the command to revert the change to the default setting:
<pre>
 sudo defaults delete \
 /System/Library/LaunchDaemons/com.apple.WindowServer \
 'EnvironmentVariables' -dict 'CI_NO_BACKGROUND_IMAGE'
</pre>
</p>
<p><span class="discreet">Credit: <a href="http://www.usingmac.com/2007/11/18/leopard-tweaking-terminal-codes">UsingMac.com</a></span></p>
<img src="http://feeds.limi.net/~r/limi/~4/186889385" 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>Software</dc:subject>                <dc:date>2007-11-18T23:57:49Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/fixing-leopard-translucent-menu-bar</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/plone-conference-2007-keynote">        <title>Plone Conference 2007 Keynote</title>        <link>http://feeds.limi.net/~r/limi/~3/178002997/plone-conference-2007-keynote</link>        <description>The hi-res slides from the Plone Conference 2007 keynote are available, including speaker notes.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Better late than never. I just updated the speaker notes — since my presentations pretty much never have bullet points — and uploaded the presentation as a PDF:</p>
<p><a href="/media/Plone%20Conference%202007%20keynote.pdf">Plone Conference 2007 Keynote</a> <span class="discreet">(~7MB, PDF format)</span></p>
<p>Enjoy!<span class="endMarker"></span></p>
<img src="http://feeds.limi.net/~r/limi/~4/178002997" 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>2007-11-01T01:42:06Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/plone-conference-2007-keynote</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/feed-address-changed">        <title>Feed address changed</title>        <link>http://feeds.limi.net/~r/limi/~3/177622003/feed-address-changed</link>        <description>My feed address has changed, hopefully once and for all.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>The new feed resides at <a href="http://feeds.limi.net/limi">feeds.limi.net/limi</a> — and should stay the same even if I ever change my RSS setup. </p>
<p>I'm using the <em>now free</em> <a href="http://www.feedburner.com/fb/a/publishers/mybrand">MyBrand service</a> from FeedBurner. It allows you to host the RSS with them with no future migration pains. Should you ever want to move away from using their service, you have control of the domain your feed is hosted on, since it's just a <code>CNAME</code> under your own domain. </p>
<p>The old feed will continue to work for the foreseeable future, but if you really want to make sure; update your feed reader URL for this site.<span class="endMarker"></span></p>
<p><span class="discreet">PS: The reason <a href="http://planet.plone.org">Planet Plone</a> suddenly started listing all my posts all over again is that it recognizes them by modification date instead of publication date. We should maybe consider pushing out effective date as our date for feeds. It had nothing to do with the feed address change. I apologize for the noise.</span></p>
<img src="http://feeds.limi.net/~r/limi/~4/177622003" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Meta</dc:subject>                <dc:date>2007-10-31T09:45:33Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/feed-address-changed</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/leopard-observations">        <title>Leopard Observations</title>        <link>http://feeds.limi.net/~r/limi/~3/177596170/leopard-observations</link>        <description>I have been running the new release of Mac OS X 10.5 “Leopard” for a while — ever since I was given access to the betas. What's the impression after using it as my main operating system for a while?</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Of course, reviewers all over the world have covered the major areas of the Leopard experience, so I won’t repeat that here. Time Machine, Quick Look, iChat screen sharing, as well as the significant improvements to Mail and iCal have already been covered in excruciating detail.</p>
<p>I’ll talk about some of the smaller enhancements that few of the reviews touched on, but are worth a mention — since they make me happy. Happy is important. Hopefully there are some gems in here that you haven’t discovered yet:</p>

<ul>
<li>On-the-fly repartitioning and resizing of disks without erasing content.</li>
<li>Terminal is massively improved, and supports tabs.</li>
<li>Preview can edit and merge PDFs! You can rearrange, combine, annotate and delete PDF pages with simple drag and drop, and save the result. As a result, most people won’t have to buy Adobe Acrobat anymore, as this is 99% of what they use it for. My prediction is that they will still buy it out of habit, but at least <em>you</em> know that it‘s not necessary anymore.</li>
<li>Keyboard modifier keys can now be set on a per-keyboard basis, so you can remap that Microsoft keyboard you use at work to have the Apple keys in the right location without screwing up your keyboard at home.</li>
<li>Simple settings to share a particular folder with people on your network without sharing the entire drive.</li>
<li>Breadcrumbs in the Finder: Select <code>View</code> &#8594; <code>Show Path Bar</code>.</li>
<li>Scripting and Cocoa bindings, as well as full Interface Builder and XCode support for everyone’s favorite language — Python. I’m excited about what this will let us do.</li>
<li>“Repeat what I do” mode for Automator — finally this application starts being useful to automate repetitive tasks. Piecing together pre-built actions in the previous versions never worked out quite the way you wanted it.</li>
<li>Experimental ZFS read/write support for developers. Need to test whether it makes a difference for Plone startup time soon, I know that HFS is not the most efficient file system when it has to deal with to lots of small files.</li>
<li>Safari is the fastest browser on the planet right now — although Opera 9.5 (currently in beta) will be faster, Safari is the smoothest browsing experience out there at the moment. Also worth mentioning is that the “Inspect Element” part has been improved significantly, and is very valuable when debugging HTML and CSS in Safari.</li>
<li>“Merge all windows” function in Safari. Don’t you hate it when websites open new windows without your consent? Now you can merge them back easily.</li>
<li>Best virtual desktop implementation on any platform — try hitting F8 to activate spaces and press <code>C</code> to collect all the windows, or move the windows between the spaces using drag and drop — even Exposé works in the Spaces view!</li>
<li>Parental Controls + Guest account that is wiped when user logs out &#8594; perfect kiosk mode to use for iTunes/Safari when you’re using your computer as a jukebox at a party, or just handing it over to others so they can use the web for a while. Your Plone instances will stay safe, and your party people won’t read your email.</li>
<li>Finder is now multithreaded, so it pretty much never locks up, even when dealing with disappearing network devices. <code>AutoFS</code> to the rescue!</li>
<li>Network settings panel is now sane and well-organized. Internet Connect application is gone, all the VPN and 3G/modem settings are now where they should have been in the first place.</li>
<li>Related, Leopard supported my HSPDA 3G (mobile broadband) card out of the box, no need for ugly third-party software or drivers. It didn’t even need any setup, just plug it in and connect. Awesome.</li>
<li>Spotlight is much faster, to the point where it is equivalent to Quicksilver when it comes to pure speed. It also ditched the “magic, invisible results window” that made it so annoying in OS X 10.4. It also supports <code>AND/OR/NOT</code> searches now<sup>1</sup>.<span class="sidenote"><sup>1</sup> Oh, and try typing in an equation in the Spotlight search, and it will feed it to the Calculator as you type, and give you the answer directly in the menu. Nice.</span> While I still prefer QS for most operations, this makes it possible to survive on other people’s Macs. </li>
<li>If you search the help menu — which has an inline search bar now — for something that matches a menu item, it will show you in which submenu it resides. Very elegant.</li>
<li>All my installed applications from OS X 10.4 worked! This is very impressive. The <a href="http://plone.org/download">Plone 3 Unified Installer</a> has also been updated to work on Leopard.</li>
<li>Faster! People have mentioned this, but seriously — it’s like getting a new computer. Less disk grinding, more efficient use of multi-core CPUs. After logging in, my startup apps are up and running in about half the time they took on OS X 10.4.</li>

</ul>
<p>&hellip;the only downside is that Leopard is ugly as sin, and the new additions have pretty serious UI issues — Stacks and the Dock in particular. I’m hoping that <a href="http://gui.interacto.net/">UNO</a> will be upgraded to support Leopard eventually. I never have — and never will — use the Dock, so I’ll leave those UI rants for others<sup>2</sup>.<span class="sidenote"><sup>2</sup> For an extremely detailed review of Leopard, including its UI warts — I recommend  <a href="http://arstechnica.com/reviews/os/mac-os-x-10-5.ars">John Siracusa&rsquo;s review of Leopard at Ars Technica</a>.</span></p>
<p>The same goes for the translucent menu bar, WTF were they thinking? Visually and functionally, it’s the worst crime Apple has inflicted on its users in quite a while. While there are utilities that claim to put back the old-style menu bar, they fake it by putting a white area behind the menubar, which screws up the font rendering and doesn’t work with multiple monitors. Hopefully there’s a hidden setting to return to the old look somewhere.</p>
<p>Enough with the UI rants — is Leopard a worthy upgrade? </p>
<p>In my opinion, a resounding yes. It’s an extremely polished and solid release, and has served me well for quite a while with no problems. You can tell that this has been a major cleanup release, things are more consistent, faster and just plain well done. It’s like <a href="http://plone.org/download">Plone 3</a> for your desktop. ;-)</p>
<p>Many small annoyances are fixed. Random example: renaming a file with an extension selects <em>only</em> the text before the dot, so you don’t end up removing the extension by mistake. There are hundreds of these tiny improvements.</p>
<p>Apple continues their great work on refining their operating system and the Mac experience — and although I would have liked to see something earth-shattering and revolutionary on the UI front in this release of OS X, I'm happy with a solid, incremental upgrade like Leopard is. There's always OS X 10.6 for the revolutionary, fun stuff.<span class="endMarker"></span></p>
<p><span class="discreet">Upgrade tip: I tried moving over my home folder manually instead of letting the Migration Assistant handle it for me — that didn’t work so well, and I had several permission issues. Trust the Migration Assistant, it is your friend. I did a clean install, and then used the Migration Assistant to move my backed up OS X 10.4 home folder and settings to the new OS. It even migrated my weird network setup perfectly. Slick.</span></p>
<img src="http://feeds.limi.net/~r/limi/~4/177596170" 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>Productivity</dc:subject>                    <dc:subject>Software</dc:subject>                <dc:date>2007-10-31T05:22:01Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/leopard-observations</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/quick-link-google-experimental-search">        <title>Quick link: Google Experimental Search</title>        <link>http://feeds.limi.net/~r/limi/~3/174072425/quick-link-google-experimental-search</link>        <description>Wish you could use Google without having to reach for the mouse? See results on a timeline or a map? There's some cool stuff available that I haven't seen mentioned anywhere.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I have become addicted to keyboard shortcuts on search results myself. They are the same as the Gmail shortcuts (aka. the <a href="http://www.vim.org/">vi</a> shortcuts), and they make searching and jumping to the relevant search result extremely efficient.</p>
<p>It takes a single click to enable it for your searches, so head over to the <a href="http://www.google.com/experimental/">Google Experimental Search</a> page.<span class="endMarker"></span></p>
<p><span class="discreet">PS: I had nothing to do with these features, I'm just a big fan, and think people here would appreciate the keyboard shortcuts — I know I can't live without them anymore.</span></p>
<img src="http://feeds.limi.net/~r/limi/~4/174072425" 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>Google</dc:subject>                    <dc:subject>Productivity</dc:subject>                <dc:date>2007-10-24T01:13:12Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/quick-link-google-experimental-search</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/foreword-to-professional-plone-development">        <title>Foreword to Professional Plone Development</title>        <link>http://feeds.limi.net/~r/limi/~3/161745426/foreword-to-professional-plone-development</link>        <description>Martin's excellent book on Plone development is shipping, and you can read my foreword for his book — a mini-history of Plone as seen from my personal perspective — here.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>As Martin <a href="http://martinaspeli.net/articles/weve-gone-gold">announced earlier today on his site</a>, the companion book for the Plone 3 release is now shipping from Packt, and you can <a href="http://www.packtpub.com/Professional-Plone-web-applications-CMS/book">order the book here</a>.</p>
<p>I had the honor to write a foreword for the book, reproduced below.</p>
<hr />
<p>It’s always fascinating how life throws you a loop now and then that changes
your future in a profound way—and you don’t realize it at the time. As I sit
here almost six years after the Plone project started, it seems like a good
time to reflect on how the last years changed everything, and some of the
background of why you are holding this book in your hands—because the story
about the Plone community is at least as remarkable as the software itself. </p>
<p>It 
all started out in a very classic way—I had just discovered Zope and Python,
and wanted to build a simple web application to teach myself how they worked.
This was back in 1999, when Zope was still a new, unproven technology, and had
more than a few rough spots. I have never been a programmer, but Python made
it all seem so simple that I couldn’t resist trying to build a simple web
application with it. </p>
<p>After reading what I could find of documentation at the
time, I couldn’t quite figure it out—so I ended up in the online Zope chat
rooms to see if I could get any help with building my web application. </p>
<p>Little
did I know that what happened that evening would change my life in a
significant way. I met Alan Runyan online, and after trying to assist me, we
ended up talking about music instead. We also reached the conclusion that I
should focus on what I was passionate about—instead of coding, I wanted to
build great user interfaces and make things easy to use. Alan wanted to
provide the plumbing to make the system work. </p>
<p>For some reason, it just clicked
at that point, and we collaborated online and obsessed over the details of the
system for months. External factors were probably decisive here too: I was
without a job, and my girlfriend had left me a few months prior; Alan had just
given up his job as a Java programmer at a failed dot-com company and decided
to start his own company doing Python instead—so we both ended up pouring
every living hour into the project, and moving at a break-neck pace towards
getting the initial version out.</p>
<p>We ended up getting a release ready
just before the EuroPython Conference in 2002, and this was actually the first
time I met Alan in person. We had been working on Plone for the past year just
using email and IRC chat—two technologies that are still cornerstones of Plone
project communication. I still remember the delight in discovering that we had
excellent communication in person as well. </p>
<p>What happened next was somewhat
surreal for people new to this whole thing: we were sitting in the audience in
the “State of Zope” talk held by Paul Everitt. He got to the part of his talk
where he called attention to people and projects that he was especially
impressed with. </p>
<p>When he called out our names and talked about how much he
liked Plone—which at this point was still mostly the effort of a handful of
people—it made us feel like we were really onto something. This was our
defining moment. </p>
<p>For those of you who don’t know Paul, he is one of the
founders of Zope Corporation, and would go on to become our most tireless and
hard-working supporter. He got involved in all the important steps that would
follow—he put a solid legal and marketing story in place and helped create the
Plone Foundation— and did some great storytelling along the way. </p>
<p>There is no
way to properly express how much Paul has meant to us personally—and to
Plone—five years later. His role was crucial in the story of Plone’s success,
and the project would not be where it is now without him. </p>
<hr />
<p>Looking back, it
sounds a bit like the classic romanticized start-up stories of Silicon Valley,
except that we didn’t start a company together. We chose to start two separate
companies—in hindsight a very good decision. It never ceases to amaze me how
much of an impact the project has had since. </p>
<p>We are now an open-source
community of hundreds of companies doing Plone development, training, and
support. In just the past month, large companies like Novell and Akamai—as
well as government agencies like the CIA, and NGOs like Oxfam—have revealed
that they are using Plone for their web content management, and more will
follow. The Plone Network site, plone.net, lists over 150 companies that offer
Plone services, and the entire ecosystem is estimated to have revenues in the
hundreds of millions of US dollars annually. This year’s Plone Conference in
Naples, Italy is expected to draw over 300 developers and users from around
the world. </p>
<p>Not bad for a system that was conceived and created by a handful of
people standing on the shoulders of the giants of the Zope and Python
communities. </p>
<p>But the real story here is about an amazing community of
people—individuals and organizations, large and small—all coming together to
create the best content management system on the planet. We meet in the most
unlikely locations—from ancient castles and mountain-tops in Austria, to the
archipelagos and fjords of Norway, the sandy beaches of Brazil, and the busy
corporate offices of Google in Silicon Valley. These events are at the core of
the Plone experience, and developers nurture deep friendships within the
community. I can say without a doubt that these are the smartest, kindest,
most amazing people I have ever had the pleasure to work with. </p>
<p>One of those
people is Martin Aspeli, whose book you are reading right now. </p>
<hr />
<p>Even though
we’re originally from the same country, we didn’t meet that way. Martin was at
the time—and still is—living in London. He had contributed some code to one of
our community projects a few months prior, and suggested that we should meet
up when he was visiting his parents in Oslo, Norway. It was a cold and dark
winter evening when we met at the train station—and ended up talking about how
to improve Plone and the community process at a nearby café. I knew there and
then that Martin would become an important part of the Plone project.</p>
<p>Fast-forward a few years, and Martin has risen to become one of Plone’s most
important and respected—not to mention prolific—developers. He has architected
and built several core components of the Plone 3 release; he has been one of
the leaders on the documentation team, as well as an active guide in Plone’s
help forums. He also manages to fit in a day job at one of the “big four”
consulting companies in the world. </p>
<p>On top of all this, he was secretly working
on a book to coincide with the Plone 3.0 release—which you are now the lucky
owner of. </p>
<p>This brings me to why this book is so unique, and why we are lucky
to have Martin as part of our community. In the fast-paced world of
open-source development— and Plone in particular—we have never had the chance
to have a book that was entirely up-to-date on all subjects. There have been
several great books in the past, but Martin has raised the bar further—by
using the writing of a book to inform the development of Plone. If something
didn’t make sense, or was deemed too complex for the problem it was trying to
solve—he would update that part of Plone so that it could be explained in
simpler terms. It made the book better, and it has certainly made Plone
better. </p>
<p>Another thing that sets Martin’s book apart is his unparalleled
ability to explain advanced and powerful concepts in a very accessible way. He
has years of experience developing with Plone and answering questions on the
support forums, and is one of the most patient and eloquent writers around. He
doesn’t give up until you know exactly what’s going on. </p>
<p>But maybe more
than anything, this book is unique in its scope. Martin takes you through
every step from installing Plone, through professional development practices,
unit tests, how to think about your application, and even through some common,
non-trivial tasks like setting up external caching proxies like Varnish and
authentication mechanisms like LDAP. In sum, this book teaches you how to be
an independent and skillful Plone developer, capable of running your own
company—if that is your goal—or provide scalable, maintainable services for
your existing organization. </p>
<hr />
<p>Five years ago, I certainly wouldn’t have imagined
sitting here, jet-lagged and happy in Barcelona this Sunday morning after
wrapping up a workshop to improve the multilingual components in Plone. Nor
would I have expected to live halfway across the world in San Francisco and
work for Google, and still have time to lead Plone into the future. </p>
<p>Speaking
of which, how does the future of Plone look like in 2007? Web development is
now in a state we could only have dreamt about five years ago—and the rise of
numerous great Python web frameworks, and even non-Python solutions like Ruby
on Rails has made it possible for the Plone community to focus on what it
excels at: content and document management, multilingual content, and solving
real problems for real companies—and having fun in the process. Before these
frameworks existed, people would often try to do things with Plone that it was
not built or designed to do—and we are very happy that solutions now exist
that cater to these audiences, so we can focus on our core expertise. Choice
is good, and you should use the right tool for the job at hand. </p>
<p>We are lucky
to have Martin, and so are you. Enjoy the book, and I look forward to seeing
you in our help forums, chat rooms, or at one of the many Plone conferences
and workshops around the world.</p>
<p>— <em>Alexander Limi, Barcelona, July 2007</em><span class="endMarker"></span></p>
<p><em>You can buy the book <a href="http://www.packtpub.com/Professional-Plone-web-applications-CMS/book">Professional Plone Development here</a>.</em></p>
<p style="text-align: center;"><a href="http://www.packtpub.com/Professional-Plone-web-applications-CMS/book"><img src="/media/professional-plone-development-cover.jpg/image_preview" alt="Professional Plone Development" /></a></p>
<img src="http://feeds.limi.net/~r/limi/~4/161745426" 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>2007-09-26T23:44:27Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/foreword-to-professional-plone-development</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/oracle-is-the-404-company">        <title>Oracle is the 404 company</title>        <link>http://feeds.limi.net/~r/limi/~3/147903187/oracle-is-the-404-company</link>        <description>It's the weekend again, so excuse my little dig at Your Friendly Multibillion-Dollar Neighborhood Company. I just thought this was too funny not to share. Or maybe I just need to get out more.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Curious about what Oracle had to offer in the Content Management space, a couple of us did some research earlier today, and wanted to read about their content database. We went to the <a href="http://www.oracle.com/technology/products/database/content_management/index.html">main page for their Content Management product</a>:</p>
<p><img class="image-inline" src="/media/oracle-cms.png" alt="Oracle Content Management" /></p>
<p>Click the “Oracle Content DB” link, and you get:</p>
<p><img class="image-inline" src="/media/oracle-404.png" alt="Oracle 404 message" /></p>
<p>I have to admit, their tagline “Oracle is the <strong>Information</strong> Company” seems somewhat… ironic at this point?<br /></p>
<p>Sounds like they need a <a href="http://plone.org/products/plone/features/3.0/new/link-and-reference-integrity-checking">Content Management System that avoids broken links</a>.<span class="endMarker"></span></p>
<p><span class="discreet">(Thanks to </span><span class="name">Brian Johnson</span><span class="discreet"> for pointing this out)</span><br /></p><img src="http://feeds.limi.net/~r/limi/~4/147903187" height="1" width="1"/>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>limi</dc:creator>        <dc:rights />                    <dc:subject>Software</dc:subject>                <dc:date>2007-08-24T23:03:43Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/oracle-is-the-404-company</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/behind-the-scenes-of-the-plone-3-launch">        <title>Behind the scenes of the Plone 3 launch</title>        <link>http://feeds.limi.net/~r/limi/~3/147539026/behind-the-scenes-of-the-plone-3-launch</link>        <description>Several things about the Plone 3 launch were interesting, but weren't necessarily suitable for the main release announcement. For those of you interested in the fascinating details, I'll cover some of them here.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<ul><li>The Plone 3.0 release announcement made the <a href="http://digg.com/tech_news/Plone_3_0_released">Digg front page with over 500 diggs</a>.</li><li>We handled about four times our usual number of unique visitors, and the site didn't slow down at any time during this period — big thanks to<span class="name"> <a href="http://www.wiggy.net">Wichert Akkerman</a></span> for setting up the <a href="http://www.varnish-cache.org/">Varnish cache proxy</a> to handle the traffic spike:</li></ul>
<p style="text-align: center;"><img src="/media/release-traffic-3.0.png" alt="Release Traffic" /></p>
<ul><li>The downloads are pretty evenly split between Europe and the Americas,
with Asia doing about 20% as many downloads as either of those.</li><li>We moved our main download repository from Sourceforge to Google Code.</li><li>Plone was released on Windows, Mac OS X (both PPC and Intel), Linux and general *ix, as well as a SUSE Linux package at the same time. Thanks to efforts of the installer and packaging people, we pulled off a flawless simultaneous multi-platform release.</li></ul>
<p>Other interesting facts from the code perspective:</p>
<ul><li>Over 8000 lines of code could be removed right after tagging Plone 3.0.<sup>1</sup> <span class="sidenote"><sup>1</sup> For those of you wondering why it was done after the release, not before — that's the way deprecation of old code works. It ships with one release after being retired, and is then removed in the next major release. This makes it easier to support two releases at once for our add-on product authors.</span> Big kudos to <a href="http://hannosch.blogspot.com/"><span class="name">Hanno Schlichting</span></a> for doing this cleanup work. Taking out old code is as important — if not more  so — as adding new code.</li><li>17 image requests in Kupu — our visual editor component — were <a href="http://www.nabble.com/Kupu-now-uses-CSS-sprites-p12002614s6745.html">reduced to one single request</a> using <a href="http://www.alistapart.com/articles/sprites">CSS sprites</a>. This has a major impact on the initial load, so Kupu shows up much faster. It is similar to the <a title="Some preliminary Plone 3.0 benchmark results" href="/articles/some-preliminary-plone-3.0-benchmark-results">reduction in HTTP requests for Plone</a> overall that I covered earlier.</li><li>Close to 300 changes were committed and about 50 bugs fixed the last 3 days before the release. This would have been really risky and impossible to pull off unless we had our unit tests to ensure that Plone 3.0 would still be a stable and flawless release. If you know anything about software engineering, you'll know how impressive (and slightly frightening) this is.</li><li>Even with the record download numbers, it seems — at least so far — that Plone 3.0 is the most defect-free release we have produced so far. It's of course too early to tell for sure, but if early indications are anything to go by, this release has fewer bugs than any of our previous major releases.</li></ul>
<p>A great effort by the team, and the next logical step towards Plone world domination.<span class="endMarker"></span></p><img src="http://feeds.limi.net/~r/limi/~4/147539026" 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>2007-08-24T00:44:37Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/behind-the-scenes-of-the-plone-3-launch</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/archgenxml-now-produces-plone-3-code">        <title>ArchGenXML now produces Plone 3 code</title>        <link>http://feeds.limi.net/~r/limi/~3/141892979/archgenxml-now-produces-plone-3-code</link>        <description>ArchGenXML is a tool that can turn UML diagrams into Plone add-on modules, and yesterday it was updated to produce Plone 3 compliant code.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>The reason a lot of non-programmers (including <em>yours truly</em>) can be so productive with Plone and build their own add-on modules and custom content types with advanced behavior and workflow policies is that we can work in a diagram-centric modeling language like UML.</p>
<p>ArchGenXML is the — rather cryptic  — name for the software that turns UML into executable Python code, so it can be used in Plone. Yesterday, <a href="http://vanrees.org"><span class="name">Reinout van Rees</span></a> updated it to produce Plone 3 compliant code, marking a major milestone in the preparations for the Plone 3.0 release.</p>
<p>The final piece of the puzzle was to make AGX generate GenericSetup-style workflow definitions — meaning that workflows are defined in a simple XML syntax instead of Python code. Said XML syntax <em>is</em> easy enough that you can write it by hand, but when workflows get beyond a certain complexity, it certainly helps to have a diagram instead of tracing XML definitions.</p>
<p>Why is this so important? It allows a lot of the simple, home-built content types created for Plone 2.1 and 3.0 to be updated to Plone 3.0-compatible products by feeding the UML model to AGX — no other work required.</p><p><del>At the moment, you have to use <a href="http://subversion.tigris.org/">SVN</a> to get the code from the trunk of the <a href="http://svn.plone.org/svn/archetypes/ArchGenXML/trunk/">AGX repository</a>, but we'll hopefully have a proper release as soon as the current code has been tested by a few more people.</del></p>
<p>Update: <a href="http://plone.org/products/archgenxml/releases/1.6.0">AGX 1.6.0 beta is now available</a>, and supports Plone 2.5 and 3.0.</p>
<p>Reinout is definitely this week's Plone Rock Star — although he's competently backed up by all the people fixing bugs during the bug day/weekend we just had. This release is shaping up to be nothing short of amazing.<br /></p>
<p>Time to get excited about Plone 3!<span class="endMarker"></span></p>
<img src="http://feeds.limi.net/~r/limi/~4/141892979" 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>2007-08-07T07:19:40Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/archgenxml-now-produces-plone-3-code</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/drive-by-compliments">        <title>Drive-by…compliments?</title>        <link>http://feeds.limi.net/~r/limi/~3/138148557/drive-by-compliments</link>        <description>Upon returning to the Plonemobile a couple of days ago here in San Francisco, I found a note under the windshield wiper.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Usually, the content of such notes mean that you just got a parking ticket, but this one was different:</p><p><img class="image-inline" src="../media/social-edge.jpg/image_preview" alt="We are doing socialedge.org on Plone. You rock!" /></p><p>I assume they saw the license plate, and left a note:</p><p><img class="image-inline" src="../media/license-plate.jpg/image_preview" alt="Plone License Plate" /><br /></p><p><a href="http://www.socialedge.org/">Social Edge</a> is an NGO focused on social entrepreneurs. In their own words, their mission is to:<br /></p><p>• Connect social entrepreneurs, their partners and allies to discuss cutting-edge issues shaping the field</p><p>• Foster frank dialogue, mutual respect and a sense of community among all in the sector</p><p>• Promote learning from the best, promising and disastrous practices</p><p> It certainly made my day. Thanks, Social Edge! Keep on fighting the good fight!<span class="endMarker"></span></p>
<img src="http://feeds.limi.net/~r/limi/~4/138148557" 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>2007-07-28T01:31:20Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/drive-by-compliments</feedburner:origLink></item>
    <item rdf:about="http://limi.net/articles/akamai-runs-plone">        <title>Akamai runs Plone</title>        <link>http://feeds.limi.net/~r/limi/~3/137006450/akamai-runs-plone</link>        <description>It's all a big party — several high-profile sites have revealed that they run Plone over the past week, and now we can add Akamai to that list.</description>        <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>If you don't know <a href="http://www.akamai.com">Akamai</a>, they are a company that essentially hosts content for events and sites that need immense amounts of bandwidth and quick response times.</p>
<p>They power large sites like the Apple website, as well as sites that need a lot of bandwidth for a short time, like the Winter Olympics 2006 event in Turin. They routinely serve up about 10-20% of all the world's web traffic.</p>
<p>And they use Plone to build their web site. Who's next?</p>
<p><a href="http://plone.net/sites">Have a look at the sites that are already running Plone</a>.<span class="endMarker"></span></p>
<img src="http://feeds.limi.net/~r/limi/~4/137006450" 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>2007-07-24T21:56:42Z</dc:date>        <dc:type>Page</dc:type>    <feedburner:origLink>http://limi.net/articles/akamai-runs-plone</feedburner:origLink></item>




</rdf:RDF>
