<?xml version="1.0" encoding="utf-8" ?>
<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/">




    



<channel rdf:about="http://weblion.psu.edu/news/news/RSS">
  <title>News &amp; views</title>
  <link>http://weblion.psu.edu</link>
  
  <description>
    
       What’s happening in and around WebLion, plus what we think about web-related subjects. Products in the pipeline, upcoming deadlines and more.
       
  </description>
  
  
  
            <syn:updatePeriod>daily</syn:updatePeriod>
            <syn:updateFrequency>1</syn:updateFrequency>
            <syn:updateBase>2008-06-04T22:33:21Z</syn:updateBase>
        
  
  <image rdf:resource="http://weblion.psu.edu/logo.jpg"/>

  <items>
    <rdf:Seq>
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/contentwellportlets-2.0.1-released"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/plone-4-an-interview-with-zope-news"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/wsapi4plone-alpha-3"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/content-editing-and-creation-in-plone-is-faster"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/calendar-sprint-wrap-up"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/namespace-packages-replies-to-replies"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/are-we-overusing-namespace-packages"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/pse2009-may18-deadline-1day-to-go"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/plone-symposium-east-registration-deadline"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/pse2009-3-days-to-register"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/repoze.bfg-tutorial"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/managing-newsletters-with-out-of-the-box-plone"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/empty-portlets-to-see-or-not-to-see"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/alexander-limi-to-open-plone-symposium-east-2009"/>
        
        
            <rdf:li rdf:resource="http://weblion.psu.edu/news/training-agile-methods-python-programming"/>
        
    </rdf:Seq>
  </items>

</channel>

    <item rdf:about="http://weblion.psu.edu/news/contentwellportlets-2.0.1-released">        <title>Portlets gone wild with ContentWellPortlets 2.0.1 </title>        <link>http://weblion.psu.edu/news/contentwellportlets-2.0.1-released</link>        <description>This new release adds the ability to add portlets to the footer area. It also has 6 portlet managers per area. This means 20 total portlet managers including the 2 on the sides that ship with plone.</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>ContentWellPortlets takes the frustration out of making complicated dynamic pages.  Instead of making some hand coded page view that you want to use for just certain pages, you can now quickly add portlets in the content area (above and below) and the footer area with just a few clicks. The footer well area was added due to being requested by members of the Penn State family and its popularity on sites like <a href="http://digg.com/">digg</a>, <a href="http://espn.go.com/">ESPN</a>, <a href="http://nytimes.com">The New York Times</a>, to name a few.</p>
<p>Here are some screenshots of Penn State sites that will use it or are already using it:</p>
<div style="margin: 15px 20px; display: block">
<a href="http://weblion.psu.edu/its-cwp/image_view_fullscreen"><img style="margin-right: 10px;" src="http://weblion.psu.edu/its-cwp/image" alt="null" height="200" width="251" /></a> 
<a href="http://weblion.psu.edu/agsci-cwp/image_view_fullscreen"><img style="margin-right: 10px;" src="http://weblion.psu.edu/agsci-cwp/image" alt="null" height="200" width="297" /></a>
<a href="http://weblion.psu.edu/tlt-cwp/image_view_fullscreen"><img src="http://weblion.psu.edu/tlt-cwp/image" alt="null" height="200" width="276" /></a></div>
<p>Adding, Moving and Deleting portlets per page or folder is incredibly easy now:</p>
<div style="margin: 15px 20px; display: block">
<a href="http://weblion.psu.edu/its-cwp-edit/image_view_fullscreen"><img style="margin-right: 10px;" src="http://weblion.psu.edu/its-cwp-edit/image" alt="null" height="200" width="197" /></a>
<a href="http://weblion.psu.edu/its-cwp-footer-edit-1/image_view_fullscreen"><img style="margin-right: 10px;" src="http://weblion.psu.edu/its-cwp-footer-edit-1/image_preview" alt="null" height="200" width="264" /> </a></div>
<p>Please check out <a href="http://plone.org/products/contentwellportlets/">ContentWellPortlets</a> and let us know what you think.</p>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Rob Porter</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>for tlt blog</dc:subject>                    <dc:subject>for planet plone</dc:subject>                    <dc:subject>portlets</dc:subject>                <dc:date>2009-10-13T19:00:44Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/plone-4-an-interview-with-zope-news">        <title>Plone 4 – An interview with Zope News</title>        <link>http://weblion.psu.edu/news/plone-4-an-interview-with-zope-news</link>        <description>Jan Ulrich Hasecke interviews me for Zope News.</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[Last month, I was interviewed by Jan Ulrich Hasecke for the <a class="external-link" href="http://www.zope.de/redaktion/dzug/zope-news/zopenews09-web.pdf/view">latest issue of Zope News</a>. The interview is published in German, so I thought some might be interested to read the original English version.
<p>&nbsp;</p>
<p><strong>Hi, Eric. You are the release manager of Plone 4, which is expected to be released in late 2009. Do you think we will have a final release of Plone 4 this year?</strong></p>
<p>I certainly hope so. Our current schedule aims for a December 1 final release. I really don't want to have to spend my Christmas break packaging up a Plone release, but we'll see how it goes. The Plone Foundation asked for a release before year's end and that's given us about 7 months from start to finish to get Plone 4 shipped.</p>
<p>We set up a very aggressive schedule and, so far, have been right on track. Because of the aggressive timeline, we'd planned to make the featureset much smaller than previous major releases. Surprisingly, we received a record 57 PLIPs (PLone Improvement Proposals), 42 of which were accepted for consideration by the Framework Team. The developers were given only six weeks to complete their initial implementations and 37 of those 42 PLIP implementations have been submitted for review. That's an 88% return. Amazing. I was telling myself that we'd be lucky to see ten. The Plone developers have met this challenging schedule head-on and are doing absolutely amazing work. I could not be prouder.</p>
<p><strong>Browsing the <a class="external-link" href="http://dev.plone.org/plone/wiki/Plone4">accepted proposals</a>, I think the major improvements are BLOB support in the ZODB by default, the change to SecureMailHost, the usage of TinyMCE instead of Kupu as default richtext editor, the new collections backend, the new commenting infrastructure, a redesigned search form, and content import and export. Would you agree and can you elaborate on these changes?</strong></p>
<p>As release manager, I feel somewhat obligated to say that I love each and every one of my PLIPs equally. That said, there are definitely some that are going to generate more buzz than others. Foremost, and the reason this release even exists, is the move to Python 2.6, Zope 2.12, and CMF 2.2. Being able to depend to an officially-supported, more efficient version of Python is something that everybody has wanted. Between those three upgrades, there's certainly a lot to for us be happy about: optimizations, packaging, BLOB support, mailhost improvements. I have to give a lot of praise to Hanno Schlichting and David Glick, they've handled the majority of that integration and are saving me from having to worry about it at all.</p>
<p>TinyMCE is more actively maintained than our current editor, Kupu, and has proven to be much more extensible. It will be forming the basis for the Deco page layout editor that will be coming in a future release. Introducing it now saves us from some of the problems we ran into with Kupu in later Plone 3 releases and exposes the community to it before Deco arrives.</p>
<p>There has been a lot of work done to improve Collections: a much more intuitive UI with inline updating and live results, simpler templates, and a much cleaner backend. Four Digits just put out a <a class="external-link" href="http://blog.fourdigits.nl/collection-contentlisting-and-search">writeup</a> describing the results of their sprint. It's a good read.</p>
<p>One PLIP that I really think isn't getting the attention it should be is the indexing and search of East Asian languages. It's been something that has held back adoption of Plone there and could open up a large new market for us.</p>
<p><strong>Plone 4 will have guided tours for new Plone users driven by Amberjack. What is this all about? Will I be able to make my own guided tour of my custom Plone site?</strong></p>
<p>Unfortunately, the Amberjack implementation didn't make it in before the deadline, so we won't be seeing it in the 4.0 release. I'll be pushing to get it into 4.1 though. The idea is that we'll be able to provide walkthroughs of different tasks throughout the site. So if a user is having trouble adding a new Collection, for example, they'd be able to click a help link to be taken through the process: "click this highlighted button", "add your Collection's title here" and that sort of thing. Tours should be theme-agnostic, so existing tours will integrate well with your site, and new ones can be added without much trouble. Nate Aune showed it off in a <a class="external-link" href="http://www.slideshare.net/Jazkarta/amberjack-lightning-talk">recent lightning talk</a> and gave a great overview of how Amberjack integrates with Plone.</p>
<p><strong>Is there a preview of the new Plone default skin?</strong></p>
<p>It's still very much a work-in-progress. Alex's goal was to create something more modern, and could be legitimately considered for use as a corporate site with very little customization. The CSS and HTML behind it should be a lot simpler and much easier to use as a starting point for a custom theme.</p>
<p><strong>Thank you very much!</strong></p>
<p>Thank you!</p>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Eric Steele</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>for planet plone</dc:subject>                <dc:date>2009-09-18T02:53:54Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/wsapi4plone-alpha-3">        <title>Web Services API for Plone Alpha 3 Release</title>        <link>http://weblion.psu.edu/news/wsapi4plone-alpha-3</link>        <description>Details the release of the wsapi4plone.core package and the plans for future releases.  The final report of the AtomPub for Plone Google Summer of Code project.  </description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<div id="web-services-api-for-plone-alpha-3-release" class="section">
<p>The <a class="reference external" href="../trac/weblion/wiki/WebServicesApiPlone">web services API for Plone project</a> was part of the Google Summer of Code (GSoC) project "<a class="reference external" href="http://www.coactivate.org/projects/plone-web-services/google-summer-of-code-project-for-plone-web-services">Atom Publication Protocol (AtomPub) for Plone</a>".  The <a class="reference external" href="http://pypi.python.org/pypi/wsapi4plone.core">web services API for Plone (wsapi4plone.core) package</a> is a Plone product that provides small, easy to learn XML-RPC interface to Plone content.  The <a class="reference external" href="https://svn.plone.org/svn/collective/wsapi4plone.parfait/trunk/">Parfait (wsapi4plone.parfait) package</a> is a web services gateway interface (WSGI) middleware that enables AtomPub for Plone.  The GSoC project goal was to provide an XML-RPC interface for <a class="reference external" href="https://svn.plone.org/svn/collective/wsapi4plone.parfait/trunk/">Parfait</a> that in turn would enable AtomPub requests and responses for Plone.</p>
<p>The project was unique for GSoC, in that there were two individuals working on the same project.  Chelsea Bingiel and myself have been working towards the same goal but on different levels of the system.  Chelsea had been working on <a class="reference external" href="https://svn.plone.org/svn/collective/wsapi4plone.parfait/trunk/">Parfait</a>, while I was working on the core package of the <a class="reference external" href="http://pypi.python.org/pypi/wsapi4plone.core">wsapi4plone</a>.  The end result is a functional AtomPub interface for Plone, as well as a Plone web services API.</p>
<div id="the-google-summer-of-code" class="section">
<h2>The Google Summer of Code</h2>
<p>The <a class="reference external" href="http://pypi.python.org/pypi/wsapi4plone.core">wsapi4plone</a> wasn't built exclusively for <a class="reference external" href="http://www.coactivate.org/projects/plone-web-services/google-summer-of-code-project-for-plone-web-services">the AtomPub GSoC project</a>.  In fact, <a class="reference external" href="../trac/weblion/wiki/KevinKalupson">Kevin Kalupson</a> and I had been in a project planning phase before the GSoC project came to our attention.  The initial goal was to create a small, easy to learn web services API for Plone.  It was determined the best way to approach the problem was to use the tools available to us <em>in</em> Zope 2 and Plone.  XML-RPC was determined to be the best tool for the job, because it works out-of-the-box in Zope 2.</p>
<p>The week before GSoC ended, <a class="reference external" href="http://weblion.psu.edu">WebLion</a> invited Chelsea Bingiel to <a class="reference external" href="http://psu.edu/">Penn State</a> for a three day sprint on the AtomPub project.  The goals of the sprint were to make HTTP GET, POST, PUT, and DELETE AtomPub requests and responses against a test instance of Plone.  Chelsea had a lot of the ground work for the middleware created before the sprint, which made it very easy to attain these goals.  The sprint was successful, AtomPub requests to create, update and receive objects from Plone work to spec.</p>
</div>
<div id="current-state-of-the-project" class="section">
<h2>Current state of the project</h2>
<p>Version 0.1a3 of the <a class="reference external" href="http://pypi.python.org/pypi/wsapi4plone.core">wsapi4plone.core package</a> was released last week.  A few of the major improvements are:</p>
<blockquote></blockquote>
<ul class="simple">
<li>Bug fixes that came out of our AtomPub sprint.  The biggest one was the way in which one sets up the parameters for the post_object and put_object calls.</li>
<li>SchemaExtender fields now show up in the call results.</li>
<li>Usage documentation for the XML-RPC calls has been created.</li>
<li>Tests have been added and/or rewritten.</li></ul>
<blockquote></blockquote>
<p>There are several other <a class="reference external" href="../trac/weblion/query?status=new&amp;status=assigned&amp;status=reopened&amp;component=wsapi4plone&amp;order=priority&amp;report=19">bugs, tasks and enhancements</a> are  ticketed in the <a class="reference external" href="../trac/weblion/wiki/">WebLion Trac site</a> that have been fixed or started, but lack tests.  Any opinions, thoughts and comments on those tickets would be appreciated.</p>
</div>
<div id="thoughts-about-future-releases" class="section">
<h2>Thoughts about future releases</h2>
<p>Items that will be in the next wsapi4plone.core release:</p>
<blockquote></blockquote>
<ul class="simple">
<li>Improve the documentation using <a class="reference external" href="http://sphinx.pocoo.org/">Sphinx</a>.</li>
<li>Provide documentation for service adapters.</li>
<li>Extract the the Archetypes service adapters out of wsapi4plone.core into wsapi4plone.services.archetypes.</li>
<li>Create and document the wsapi4plone extensions components.</li>

<li>Provide JSON responses for <tt class="docutils literal"><span class="pre">text/html</span></tt> requests on the calls.</li></ul>
<blockquote></blockquote>
<p>Additional related tasks:</p>
<blockquote></blockquote>
<ul class="simple">
<li>Provide a python testing framework for packages using the wsapi4plone calls outside of Plone.</li>
<li>Tighten up existing wsapi4plone.* package integration using automated tests and a buildbot setup.</li>
<li>Think about using <a class="reference external" href="http://funkload.nuxeo.org/">Funkload</a> to see how fast (or slow) the API calls are.</li></ul>
<blockquote></blockquote>
</div>
<div id="progress-is-being-made" class="section">
<h2>Progress is being made</h2>
<p>The <a class="reference external" href="https://svn.plone.org/svn/collective/wsapi4plone.parfait/trunk/">wsapi4plone.parfait package</a> is functional and has produced more than satisfactory results, but it is far from complete (the nature of open source projects).  The AtomPub specification has some incompatibilities with Plone (e.g. AtomPub is inherently flat, folder hierarchy is something that needed a work around).  There are still a few challenges to overcome, but the package is looking good for a summer's worth of coding.</p>
<p>Since the <a class="reference external" href="http://pypi.python.org/pypi/wsapi4plone.core">wsapi4plone.core package's</a> first demonstration at the <a class="reference external" href="../trac/weblion/wiki/PloneSymposiumEast2009">Plone Symposium East 2009</a> it has come a long way, but it is still in an alpha state.  There is a lot of work yet to be done, but the time and effort spent on this project will open up Plone to a world of new possibilities.</p>
<p><a class="reference external" href="http://www.coactivate.org/people/skleinfeldt/profile">Sally Kleinfeldt</a> is right on, <a class="reference external" href="http://blog.jazkarta.com/2009/08/07/plone-web-services-things-are-looking-up/">things are looking up</a>.</p>
</div>
<div id="references-and-further-information" class="section">
<h2>References and further information</h2>
<ul class="simple">
<li><a class="reference external" href="../trac/weblion/wiki/WebServicesApiPlone">Web Services API for Plone wiki page</a></li>
<li><a class="reference external" href="http://blog.jazkarta.com/2009/08/07/plone-web-services-things-are-looking-up/">Plone Web Services: Things are Looking Up</a></li>
<li><a class="reference external" href="http://www.coactivate.org/projects/plone-web-services/google-summer-of-code-project-for-plone-web-services">AtomPub GSoC project page</a></li>

<li><a class="reference external" href="http://www.coactivate.org/projects/plone-web-services/">CoActivate Group: Web Services Project</a></li>
<li><a class="reference external" href="http://pypi.python.org/pypi/wsapi4plone.core">wsapi4plone.core</a></li></ul>
</div>
</div>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Michael Mulich</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>for planet plone</dc:subject>                <dc:date>2009-08-31T12:50:00Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/content-editing-and-creation-in-plone-is-faster">        <title>Content editing and creation in Plone is faster with archetypes.schematuning</title>        <link>http://weblion.psu.edu/news/content-editing-and-creation-in-plone-is-faster</link>        <description>Some bench marks of content editing and creation in Plone with and without archetypes.schematuning installed.</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<h2>Background</h2>
<p>For about the past week I have been working on batch creation of Faculty Staff Directory people for a Plone site that WebLion will soon be hosting.&nbsp; The site is currently Plone 2.1 and the Faculty Staff Directory is a MS-SQL db with PHPParser making the queries.&nbsp; These tables have been dumped to csv files, massaged slightly and then processed and combined with python to extract the data and create objects which are sent via xml-rpc to a Plone site for creation or update.&nbsp; Things had been running 'fast enough' but did start to slow down yesterday when I started to update the Person objects with relationships to the person's specialty.&nbsp; Erik Rose had mentioned archetypes.schematuning yesterday and the speed up he had seen in another site, so I thought I would give it a try.</p>
<h2>Test Environment</h2>
<p>&nbsp;</p>
<p>Here is an overview of the system I am working on and some numbers that I observed.</p>
<p>The records were updated in one request to the wsapi4plone.core XML-RPC webservice using wsapi4plone.client and <a class="external-link" href="../svn/weblion/weblion/WebSlinger/trunk/">wsapi4plone.webslinger</a> to pre-process the data before sending any requests.</p>
<p>Environment in which these benchmarks were made:</p>
<ul><li>RHEL 5.3 32-bit running in VMWare Fusion.&nbsp; 1 virtual CPU, 1GB RAM.</li><li>Python 2.4.3</li><li>Plone 3.2 from Buildout</li></ul>
<p>&nbsp;</p>
<h2>Packages Installed for Plone</h2>
<table class="listing">
<tbody>
<tr>
<th>Package</th>
<th>Version</th>
<th>URL</th>
</tr>
</tbody>
<tbody>
<tr class="odd">
<td>wsapi4plone.core</td>
<td>0.1a3</td>
<td>http://pypi.python.org/pypi/wsapi4plone.core</td>
</tr>
<tr>
<td>Products.FacultyStaffDirectory</td>
<td>2.1.1.2</td>
<td>http://pypi.python.org/pypi/Products.FacultyStaffDirectory/2.1.1.2</td>
</tr>
<tr class="odd">
<td>BioPersonExtender</td>
<td>1.1d1</td>
<td>https://weblion.psu.edu/svn/weblion/biologyDepartment/BioPersonExtender/trunk/</td>
</tr>
<tr>
<td>archetypes.schematuning</td>
<td>1.1</td>
<td>http://pypi.python.org/pypi/archetypes.schematuning/1.1</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
<h2>&nbsp;Benchmark Times for the Creation or Update of 244 FSDPerson Records</h2>
<table class="grid listing">
<tbody>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
</tbody>
<tbody>
<tr>
<th>schematuning installed</th>
<th>Create/Update</th>
<th>TIME(HH:MM:SS)</th>
<th>Records per Second</th>
<th>Seconds per Records</th>
</tr>
<tr class="odd">
<td>FALSE</td>
<td>Create</td>
<td>00:22:24</td>
<td>0.18</td>
<td>5.51</td>
</tr>
<tr>
<td>FALSE</td>
<td>Update</td>
<td>00:04:26</td>
<td>1.09</td>
<td>0.92</td>
</tr>
<tr class="even">
<td>TRUE</td>
<td>Create</td>
<td>00:04:29</td>
<td>0.91</td>
<td>1.10</td>
</tr>
<tr>
<td>TRUE</td>
<td>Update</td>
<td>00:01:03</td>
<td>2.87</td>
<td>0.25</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Kevin J. Kalupson</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>for planet plone</dc:subject>                <dc:date>2009-08-28T17:24:57Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/calendar-sprint-wrap-up">        <title>Calendar sprint wrap-up</title>        <link>http://weblion.psu.edu/news/calendar-sprint-wrap-up</link>        <description>Our sprint yielded 2 lovely UI improvements for Plone4Artists Calendar.</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://plone.org/products/plone4artistscalendar">Plone4Artists Calendar</a> is my favorite calendaring product, but I'm often reluctant to recommend it due to some minor but nettlesome UI quirks. So, at the recent <a href="../trac/weblion/wiki/PloneSymposiumEast2009/CalendarSprint">Plone Symposium sprint</a>, we (Chrissy Wainwright, Kevin Harvey, Catherine Williams, Brian Hoffman, Eric Prescott, another Brian whose name escapes us, and I) put Plone4Artists Calendar up on the workbench in an effort to make it more usable out of the box.</p>
<p>Our first target was the 5 tabs that frame the main calendar view. Day, Week, and Month would show grid-style views for their respective periods, the List tab would show a month's worth of events in straight-down-the-page format, and Past would show (all?) the past events, again in list format. These tabs have been a common source of surprise to users, as they conflate duration with presentation style. Our new UI has only Day, Week, and Month tabs, following the conventions of most other calendar software. Calendar and list view are available in each of these via a pop-up menu that switches formats via JavaScript. We removed the Past tab altogether, as one can navigate to the past by clicking the left-hand arrow or by clicking the calendar icon to expose a pop-up calendar.</p>
<p><img alt="New, fewerly-tabbed interface!" class="image-inline" src="../images/p4a-calendar-pared-down-tabs" /></p>
<p>Our other effort was to localize the product's time and date display. Substantially written by our friends in Europe, Plone4Artist's formats were hard-coded to 24-hour time and day-month date ordering. We took a step toward obeying Plone's localization settings by fixing the former of these:</p>
<p><span style="line-height: 4px; "><img alt="12-hour formatting in Day view" class="image-inline" src="../images/p4a-calendar-12-hour-formatting" /></span></p>
<p>(We didn't realize until too late that Plone 3.2 introduced a time-only format string in portal_properties, so we spent quite a long time designing and implementing an heuristic to deduce a time-only format from the time-and-date format that was the only option in 3.1 and earlier. 3.1 people are welcome to send us beer or baked goods.)</p>
<p>Congratulations and thanks to all the sprinters! The calendar situation is a bit brighter, and we had a lot of fun brightening it.</p>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Erik Rose</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>plonesymposiumeast2009</dc:subject>                    <dc:subject>for tlt blog</dc:subject>                    <dc:subject>for planet plone</dc:subject>                    <dc:subject>sprint</dc:subject>                <dc:date>2009-06-16T17:35:00Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/namespace-packages-replies-to-replies">        <title>Namespace packages: replies to replies</title>        <link>http://weblion.psu.edu/news/namespace-packages-replies-to-replies</link>        <description>Clarifications, your comments addressed, and why I still think we should lay off the namespace packages</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Many thanks to all who posted such thoughtful replies to <a href="http://weblion.psu.edu/news/are-we-overusing-namespace-packages">my apparently incendiary post on namespace packages</a>. Since I was off-network last week (Grand Canyon&mdash;woo!) and not able to respond in realtime, I&rsquo;ve taken the liberty of summarizing and addressing some salient points en masse below.</p>
<h2 id="Namespacesareusefulforavoidingnamecollisions.">&ldquo;Namespaces are useful for avoiding name collisions.&rdquo;</h2>
<p>Of course they are. I should been clearer in my main point, as a lot of folks ended up banging on an open door here. Namespaces&mdash;as an abstract concept&mdash;are lovely. What&rsquo;s wrong is our use of setuptools&rsquo; implementation: as we use them, namespace packages are awfully noisy and obtrusive from a package consumer&rsquo;s point of view&mdash;they make new users walk straight through their implementation details, both in svn and on disk,&nbsp;before they can get to any code.</p>
<p>But a lot of this is due to funny conventions. We use namespace packages in an unusual way in the Plone world: we never put anything but a single package inside them, making the outer folder mostly empty and mostly noise. We don&rsquo;t take advantage of setuptools&rsquo; support for putting N submodules and packages inside a namespace package, which would make the signal-to-noise ratio more acceptable. So I wonder, can we come up with a shorter, fewer-empty-folders way of namespacing?</p>
<p>Indeed we can. One of my proposed solutions, using names like <tt>plone_app_redirector</tt> instead of <tt>plone.app.redirector</tt>, provoked an implication that I was simply inventing a different spelling. Quite the contrary, <tt>plone_app_redirector</tt> is simpler in 2 substantial ways:</p>
<ul>
<li>No 2 extra folders to traverse on disk and in svn </li>
<li>No <tt>__init__.py</tt> files with unusual import magic to understand or ignore </li>
</ul>
<h2 id="Products.isnolongeruniquelymagic.">&ldquo;Products.* is no longer uniquely magic.&rdquo;</h2>
<p>Thanks to Martin Aspeli for pointing this out; I meant to mention it. As Martin says, <a class="ext-link" href="http://plone.org/products/plone/roadmap/247"><span class="icon">any package can have the auto-loading magic of Products.* in Plone 3.3</span></a> if it declares the right egg entrypoints. No more ZCML slugs&mdash;hooray!</p>
<p>However, Ian Hood and Chris McDonough also raise a good point: as funny-looking as the <tt>Products</tt> namespace is, it at least signifies &ldquo;this package is a Plone plugin&rdquo;. (There aren&rsquo;t many third-party Plone plugins that are also useful in a general Python context, so the distinction remains relevant.) We probably should include this I-am-for-Plone-ness in the package name so as to not crash into comparable plugins for other frameworks. A few possible naming conventions:</p>
<ul>
<li><tt>PloneFormGen</tt>. Start everything with a &ldquo;Plone&rdquo; prefix, as most Trac plugins start with &ldquo;Trac&rdquo;. But, if applied inconsistently (as it would be during any transition), this would land us in the same situation as KDE&rsquo;s start menu, where things randomly start with K and new users wanting a spreadsheet have to look for both Spreadsheet and KSpreadsheet. </li>
<li><tt>PonyPloneTheme</tt>. Put the Plone identifier at the end. With the entropy up front, this is better for visually scanning alphabetized lists and for type-to-select. (In places like the Collective svn, similar types of products, like themes, could be grouped into folders as with the current <tt>pasplugins</tt> folder.) </li>
<li><tt>NerfHerder</tt>. Keep Plone signifiers out of the name, and use egg metadata like <a class="ext-link" href="http://pypi.python.org/pypi?%3Aaction=list_classifiers"><span class="icon">trove classifiers</span></a>. This has the possible disadvantage of colliding with non-Plone packages, but, then again, namespace is pretty big. Regardless, we should get some trove classifiers for common types of Plone add-ons. If there can be a <i>Topic :: Desktop Environment :: Window Managers :: Oroborus :: Themes</i>, there can certainly be one for Plone themes, one for Plone plugins in general, and perhaps a few other subslicings. </li>
<li><tt>Products.NerfHerder</tt>, perhaps the most reasonable compromise of evils: we&rsquo;re already a decade into that particular hole, and it&rsquo;s only one level deep. It doesn&rsquo;t invent any more conventions to memorize or transition to like <tt>collective.*</tt> or <tt>plone.*</tt>, it doesn&rsquo;t smash into general-Python namespace, and, if you don&rsquo;t move your trunk when you eggify, it doesn&rsquo;t defeat type-to-select either. I still dislike the namespace package due to the previously discussed implementation ugliness, but that may be fixable by technical means (watch this space). If I could erase the world and start over, I might go with a different scheme. But, since a transition would take forever and be confusing all the while, I&rsquo;m willing to settle for <tt>Products.*</tt>. In fact, I&rsquo;m fairly persuaded by Chris McDonough&rsquo;s statement that &ldquo;It&rsquo;s completely, totally useless to have Products outside the Products namespace.&rdquo; </li>
</ul>
<h2 id="Namespacesshouldcommunicatelicensing.">&ldquo;Namespaces should communicate licensing.&rdquo;</h2>
<p>Martin writes:</p>
<blockquote>
<p>Namespaces also communicate ownership. For example, we&rsquo;ve been able to formulate useful policy around the licensing of packages in the plone.* (soon to allow BSD licensing) and plone.app.* (to stay GPL licensed) namespaces.</p>
</blockquote>
<p>Cordially disagree on this one: this is what the <tt>license</tt> metadata field is for. (Incidentally, I suspect no one outside an intimate group of core developers has any idea the difference between <tt>plone.app</tt> and <tt>plone.*</tt>.)</p>
<h2 id="Thetrunkshouldmovewhenyoueggify.">&ldquo;The trunk should move when you eggify.&rdquo;</h2>
<p>Plone is one of the few projects where egg names typically reflect their import paths. Joel Burton, who interfaces with lots of new users in his training classes, finds this aids comprehension. So let&rsquo;s keep it. In fact, I never suggested otherwise: either way, you&rsquo;ll be checking out a folder called "trunk", not a folder named after the egg. My beef is with the practice of uprooting an existing svn trunk and moving it to a new location when eggifying an old product. There&rsquo;s just no point. WebLion trains new developers all day long, and this practice is a rich source of confusion. It&rsquo;s also a waste of time to have to look in two places when browsing a repository, and, if carried through, it&rsquo;ll result in hundreds of abandoned top-level folders in places like the Collective.</p>
<p>Joel further writes, of keeping trunks still:</p>
<blockquote>
<p>[T]he intended benefit, doesn&rsquo;t exist. Your buildout wouldn&rsquo;t still work if it expected a classic product at /svn/JoelsBlog--there isn&rsquo;t a classic product there, but a nested egg namespace. So, your buildout would -still- break, and in a much less newbie-understandable way.</p>
</blockquote>
<p>The intended benefit is not to keep buildout from breaking. It&rsquo;s going to break no matter what&mdash;which is another failure that should be separately addressed, perhaps with better checking for common mistakes. My intent, rather, is to surprise people less when browsing repositories and, secondarily, to reduce top-level pollution in repositories.</p>
<h2 id="Youreanidiot.">&ldquo;You&rsquo;re an idiot.&rdquo;</h2>
<p>Probably. Here are my recommendations nonetheless, now a little better shaped thanks to your good-natured hammer blows:</p>
<ul>
<li>Reserve namespace packages for breaking up enormous legacy packages, <a class="ext-link" href="http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages"><span class="icon">as intended</span></a>. Namespacing for any other purpose can be done more simply with plain prefixes, and many of our existing uses of namespacing (<tt>collective.*</tt>, <tt>plonetheme.*</tt>) would be better served by egg metadata. I'll be using egg metadata only and hanging out in the <tt>Products</tt> namespace to avoid colliding with non-Plone projects.</li>
<li>Don&rsquo;t move the trunk when eggifying. You&rsquo;re going to break people&rsquo;s checkouts either way, so why double the number of folders in the repo, make everyone search twice when browsing, and defeat type-to-select? </li>
<li>Keep company names, license names, and other metadata out of package names&mdash;since changing them breaks people&rsquo;s imports and buildouts&mdash;and nest them cozily in egg metadata. Plone products should probably all be in the <tt>Products.*</tt> namespace. (You talked me into it. :-)) </li>
<li>Fix those ZopeSkel&nbsp;templates. In answer to jjmojojjmojo&rsquo;s question about how best to do that, I&rsquo;d have the plone3_theme template spit out products in the <tt>Products.*</tt> namespace but give an example like &ldquo;PonyTheme" when prompting for a name. And continue to put &ldquo;web zope plone theme&rdquo; in the egg keywords.</li>
</ul>
<p>Again, I really appreciate all your responses. If any of my reasoning is wrong, please point it out and save me pain!</p>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Erik Rose</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>subversion</dc:subject>                    <dc:subject>software architecture</dc:subject>                    <dc:subject>for tlt blog</dc:subject>                    <dc:subject>for planet plone</dc:subject>                <dc:date>2009-06-16T14:00:00Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/are-we-overusing-namespace-packages">        <title>Stop abusing namespace packages</title>        <link>http://weblion.psu.edu/news/are-we-overusing-namespace-packages</link>        <description>Plone has been in a nosedive toward unchecked complexity lately. Here's one easy, high-yield problem we can solve.</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>For about the past two years, Plone has been in a nosedive toward a development complexity asymptote that, if unchecked, will put a halt to new developer interest. I hate this. Every time I see a developer give up and start over, I mourn his or her inevitable reinvention of the tens of years of real-world-tested knowledge embodied in Plone's codebase.</p>
<p>To be sure, complexity is sometimes the price for solving a genuine problem, but today I'm going to hammer on one instance that's been almost purely a reckless running after shiny new toys. In particular, we have acquired an unhealthy habit of abusing namespace packages. How and why? Here's a primer on when we should use them and when they just make things more complicated.</p>
<h2 id="Whatsanamespacepackage">What's a namespace package?</h2>
<p>Namespace packages are those things like <tt>collective</tt> in <tt>collective.tagcloud</tt> or <tt>plone</tt> and <tt>app</tt> in <tt>plone.app.portlets</tt>. They are prefixes on the pathname of a Python module, implemented by wrapping an empty folder (called say, "collective") around it and plopping a short, magical <tt>__init__.py</tt> inside. The result is that you can distribute <tt>collective.foo</tt> and <tt>collective.bar</tt> as separate packages but still import them via <tt>import collective.foo</tt> and <tt>import collective.bar</tt>.</p>
<p><a class="ext-link" href="http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages"><span class="icon">A much hairier and more comprehensive explanation</span></a> is available in the documentation of setuptools, out of which namespace packages spring.</p>
<h2 id="Goodnamespacepackages:breakingupiseasytodo">Good namespace packages: breaking up is easy to do</h2>
<p>Namespace packages are great for breaking enormous legacy packages into smaller parts that can be maintained and distributed separately, without breaking people's imports. They were likely motivated by the gigantic <a class="ext-link" href="http://peak.telecommunity.com/DevCenter/"><span class="icon">PEAK framework</span></a> which is by the same author as setuptools, Phillip Eby. As PEAK grew, Eby wanted a way to update subpackages like <tt>peak.config</tt> or <tt>peak.storage</tt> without having to ship an entire new 50MB tarball. However, he couldn't just change over to separately distributed modules called <tt>peak_config</tt> and <tt>peak_storage</tt> without breaking all the client code that said things like&hellip;</p>
<pre>import peak.config
</pre>
<p>So, he made <tt>peak</tt> a namespace package and had the best of both worlds, the only cost being some occasional weird lines in an <tt>__init__.py</tt>.</p>
<p>Zope has a similar story. I'm guessing at the archeology, but it should be safe to say that <tt>zope</tt> started out manageably small and only later grew into a 68MB behemoth that was inconvenient to distribute as one gigantic tarball. Of course, by that point, enough people depended on it that they couldn't just change all the import paths around, so the <tt>zope</tt> package became a namespace package, too, giving us today's <tt>zope.index</tt>, <tt>zope.event</tt>, and so on. All well and good.</p>
<h2 id="Badnamespacepackages">Bad namespace packages. Bad. Go sit in the corner.</h2>
<p>However, for a variety of reasons, the Plone community has gone absolutely bonkers with namespace packages. We use them for branding, like the Simplon company did with <tt>simplon.plone.ldap</tt>. We use them for categorization, like <tt>plonetheme.nautica05</tt>. We even use them for no apparent reason at all, like the 315 products called <tt>collective.something</tt>. We've caused a lot of noise for no technical or usability benefit.</p>
<h3 id="Filesystempaths:ouch">Filesystem paths: ouch!</h3>
<p>Out of the box, if I want to get to the source code of Plone's redirection machinery, I have to go into <tt>plone.app.redirector-1.0.10-py2.4.egg</tt>, then into <tt>plone</tt>, then into <tt>app</tt>, then, finally, into the <tt>redirector</tt> folder, where all the code lives. The extra traversals are a waste of time. David Glick even got mad enough to cook up <a class="ext-link" href="http://pypi.python.org/pypi/collective.recipe.omelette/"><span class="icon">the omelette buildout extension</span></a> to patch around the problem. Am I missing some reason we didn't simply go with <tt>plone_app_redirector</tt> and save 3 levels of folders and weird <tt>__init__.py</tt>s? It's not like we had legacy imports to placate.</p>
<h3 id="svnhideandseek:ouchandahalf">Subversion hide and seek: ouch and a half!</h3>
<p>In svn, the problem repeats itself with an additional twist. People eggifying classic products (our own <tt>FacultyStaffDirectory</tt> is guilty of this) often move their source to a new folder with "Products" prepended: <tt>Products.FacultyStaffDirectory</tt>. I can understand the use of a <tt>Products</tt> namespace package for compatibility with Zope's old import magic, but is it really necessary for 50% of the stuff in a repository to start with "Products"? This kills typeahead, and, more importantly, makes developers look in two places for the code: "Hmm, let's look in <tt>FacultyStaffDirectory</tt>. No trunk folder! Ah, a README-trunk.txt: 'Your princess is in another castle.' Okay, I'll back out of here and try <tt>Products.FacultyStaffDirectory</tt>. Those are 2 minutes I'll never get back." Sure, use the <tt>Products</tt> namespace if you must, but let's keep our svn directory names unsullied.</p>
<h3 id="Branding:doubleouch">Branding: double ouch!</h3>
<p>When namespace packages are used for branding, everything has to change when the company divests itself of the product. When Simplon donated <tt>simplon.plone.ldap</tt> to the community at large, it had to rename it to <tt>plone.app.ldap</tt>, thus breaking everybody's buildouts and imports. Let's keep company names out of package names.</p>
<h3 id="Description:ouchathirdtime">Description: ouch a third time!</h3>
<p>Namespaces are often misused to describe functionality, like in <tt>plonetheme.*</tt>. This is just as wrong as when I named AutoMemberMakerPasPlugin (which I've remedied in WebServerAuth) and is nothing more than a repetition of the horrors of file extensions. Actually, it's worse: at least extensions are postfix and don't impede type-to-select. We have perfectly good egg metadata where we can declare that a package is a Plone theme. In fact, the plone3_theme ZopeSkel/paster template spits out the keywords "web zope plone theme" by default. The <tt>plonetheme</tt> prefix is redundant right out of the box!</p>
<h2 id="Letsfixthis">Let's fix this</h2>
<p>A lot of the excess namespaces come from some bad ZopeSkel/paster templates which make it really hard to create an egg-based product <em>without</em> a namespace package. I certainly don't blame newbies for getting led down the wrong road, but a lot of us should know better. Let's clean up our act:</p>
<ul>
<li>Reserve namespace packages for their intended use: breaking up enormous legacy packages. I see a world market for maybe five namespace packages. </li>
<li>Stop using the <tt>collective</tt> namespace. It conveys no useful information. It's just noise. </li>
<li>When you use the <tt>Products</tt> namespace to eggify an old-style product, don't move your trunk. You're going to break people's checkouts when you delete the old trunk anyway, so you might as well just change it in place. </li>
<li>Scribble your company name all over your readme and egg metadata, not in your package name. Learn from Apple, who is now stuck with an API full of <a class="ext-link" href="http://stackoverflow.com/questions/473758/what-does-the-ns-prefix-mean"><span class="icon"><tt>NSThis</tt> and <tt>NSThat</tt></span></a>. </li>
<li>Fix the ZopeSkel templates that spit out things like <tt>plonetheme.*</tt>. We can't expect themers to be Python import machinery wizards and fight it themselves. </li>
</ul>
<p>Those of us with an understanding of namespace packages have a responsibility to use them properly&mdash;everyone else will follow, for better or worse. This is a battle in the complexity war that's technically easy to win <i>and</i> one that new users and developers see early in their Plone experiences. Let's swat this piece of low-hanging fruit down.</p>
<p class="callout">After you read the excellent comments below, check out my summary and response in <a href="http://weblion.psu.edu/news/namespace-packages-replies-to-replies">Namespace packages: replies to replies</a>.</p>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Erik Rose</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>subversion</dc:subject>                    <dc:subject>software architecture</dc:subject>                    <dc:subject>for tlt blog</dc:subject>                    <dc:subject>for planet plone</dc:subject>                    <dc:subject>themes</dc:subject>                <dc:date>2009-06-08T12:05:00Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/pse2009-may18-deadline-1day-to-go">        <title>Registration deadline approaching fast for Plone Symposium East and associated training</title>        <link>http://weblion.psu.edu/news/pse2009-may18-deadline-1day-to-go</link>        <description>Register by May 18. Training starts May 26. Symposium starts May 28.</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p>Been meaning to <a class="external-link" href="http://tinyurl.com/plonesymposium2009-register">register for Plone Symposium East 2009</a>? (Yes, that's <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009">the Plone get-together</a> that starts on Thursday May 28 in State College, Pennsylvania: the week after next).</p>
<p>Thinking of signing up for <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/training">one of the five training events</a> happening on the Tuesday and Wednesday before the symposium? Joel Burton, Donna Snow, Chris Calloway, Gerry Kirk, Chris McDonough, Tres Seaver and Paul Everitt are all ready to help you get to grips with topics ranging from Plone theming and site development best practices to Agile project management, Python and repoze.bfg.</p>
<p><strong>You still have time to register</strong>! But not for much longer.</p>
<p>Cinderella's coach pulls away from the registration ball on <strong>May 18</strong>. After that, your fairy godmother may not be able to make the registration forms work for you.&nbsp; So get together those glass slippers, pumpkins, broomsticks, magic wands or whatever other paraphernalia you need, and <a class="external-link" href="http://tinyurl.com/plonesymposium2009-register"><strong>sign up now</strong></a>.</p>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Catherine Williams</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>conference</dc:subject>                    <dc:subject>training</dc:subject>                    <dc:subject>plonesymposiumeast2009</dc:subject>                    <dc:subject>deadline</dc:subject>                    <dc:subject>for planet plone</dc:subject>                <dc:date>2009-05-17T21:24:32Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/plone-symposium-east-registration-deadline">        <title>Plone Symposium East registration deadline extended</title>        <link>http://weblion.psu.edu/news/plone-symposium-east-registration-deadline</link>        <description>Your last chance to register for talks and training just got last-chancier.</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p>It seems that a few people have waited until after the final moment to try register for this year's North American Plone event, Plone Symposium East. To accommodate those stragglers and try to squeeze a few more people into the beautiful Nittany Lion Inn, we're extending the registration deadline until May 18th. So please, if you're interested in joining 100+ of your closest (Western Hemisphere) Plone friends for <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/plone-symposium-east-schedule">talks</a>, <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/training">training</a> and <a class="external-link" href="../trac/weblion/wiki/PloneSymposiumEast2009/Sprints">sprints</a>, make sure you <a class="external-link" href="http://guest.cvent.com/EVENTS/Info/Summary.aspx?e=1d49c05b-0879-49f0-8000-e04297968fc6http://guest.cvent.com/EVENTS/Info/Summary.aspx?e=1d49c05b-0879-49f0-8000-e04297968fc6!">register now</a>!</p>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Eric Steele</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>plonesymposiumeast2009</dc:subject>                    <dc:subject>for planet plone</dc:subject>                <dc:date>2009-05-13T15:00:00Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/pse2009-3-days-to-register">        <title>3 days left to register for Symposium East</title>        <link>http://weblion.psu.edu/news/pse2009-3-days-to-register</link>        <description>A few big dates coming up at Penn State</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><strong>18, 20,</strong><strong> 3:</strong> is a set of very important numbers on the Plone calendar.</p>
<p>Why do they matter you ask?&nbsp; Well, let me tell you!</p>
<ul>
<li>In <strong>18</strong> days, the events of Plone Symposium East kicks off with an <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/training">excellent line-up of training sessions</a>...</li>
<li>Followed by the <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/plone-symposium-east-schedule">symposium itself gets underway</a> with an <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/alexander-limi-looking-forward-to-plone-4">opening address from Alexander Limi</a>, in only <strong>20</strong> days.&nbsp; Which leaves...</li>
<li>...<strong>just 3 days left to <a class="external-link" href="http://tinyurl.com/plonesymposium2009-register">register</a></strong><a class="external-link" href="http://tinyurl.com/plonesymposium2009-register"> for the symposium</a>!!!</li></ul>
<p>For those who have already registered, we look forward to seeing you two weeks from now.&nbsp; In the meantime, hop over to the <a class="external-link" href="../../trac/weblion/wiki/PloneSymposiumEast2009">symposium wiki page</a>, to look for <a class="external-link" href="../../trac/weblion/wiki/PloneSymposiumEast2009/MessageBoard">ride and room shares on the message board</a>, and <a class="external-link" href="../../trac/weblion/wiki/PloneSymposiumEast2009/Sprints">join and organize sprints</a> and <a class="external-link" href="../../trac/weblion/wiki/PloneSymposiumEast2009/Bofs">Birds of a Feather sessions</a>.&nbsp;</p>
<p>For those who haven't yet registered...<a class="external-link" href="http://tinyurl.com/plonesymposium2009-register"><strong>HURRY UP!!</strong></a>&nbsp; We can't wait to see you either!</p>]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Michael Miller</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>conference</dc:subject>                    <dc:subject>plonesymposiumeast2009</dc:subject>                    <dc:subject>deadline</dc:subject>                    <dc:subject>for planet plone</dc:subject>                <dc:date>2009-05-08T18:59:12Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/repoze.bfg-tutorial">        <title>Repoze.BFG Tutorial</title>        <link>http://weblion.psu.edu/news/repoze.bfg-tutorial</link>        <description>Are you a Python web developer who thinks there might be some great stuff hidden away in Zope but you consider it inaccessible to you because you feel that Zope imposes too many foreign concepts for your tastes? Are you a more-or-less happy Zope developer that has the nagging feeling that much of Zope is unnecessary "baggage" on your current project? Maybe you're a Plone developer who feels that Plone is unsuitable for one of your current projects because it's too complicated?

WebLion is hosting this training on May 27, 2009 prior to the Plone Symposium East 2009. Register by May 11. </description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><strong>Cost:&nbsp;$75</strong></p>
<p><a class="external-link" href="http://guest.cvent.com/EVENTS/Info/Summary.aspx?e=59cdbdee-f3f5-43ac-86e8-e0515726a32b">Register Now</a></p>
<p>&nbsp;</p>
<strong>Description(cont.):&nbsp; </strong>This tutorial will present repoze.bfg, a small web framework in the
spirit of Pylons. The goals of repoze.bfg are simplicity, familiarity
to Zope programmers (but no Zope experience is required), execution
speed, and complete, comprehensive, and up-to-date documentation.
<p>The
repoze.bfg web framework is essentially "Zope lite": it is useful for
development projects where Zope might be overkill, but it uses concepts
and software that may be familiar to Zope programmers. No prior Zope
experience is required to use repoze.bfg. As such, it fits in the same
space as Pylons in the Python web development world: a small,
unobtrusive framework that makes few assumptions about how you want to
accomplish a task.</p>
<p>This framework also forms a bridge between WSGI and Zope technologies.</p>
<p>The Repoze project (<a href="http://repoze.org/">http://repoze.org</a>)
is aimed at making Zope technologies useful in the larger Python world,
as well as making it easy to use WSGI technology in the Zope world.</p>
<p><strong>Audience:</strong> Developers,</p>
<p><strong>Requirements:</strong>
Windows/Linux/Mac OS X laptop required for code-along. A CD with a
pre-chewed virtual environment (Ubuntu Linux as the guest environment)
will be made available to each attendee.</p>
<p>The development
environment will not require network access. CDs will be made available
to each attendee. Attendees who have not already configured a
repoze.bfg development environment will be encouraged to kick off the
installation of the VirtualBox environment from the CD that will allow
them to play along during the guided development phase. An additonal 10
minutes will be devoted to helping resolve installation issues at the
end of the lecture period (right before the break) by at least one
presenter and other volunteers present. Attendees who already have a
running environment can ask questions or optionally take their break
early during this period.</p>
<p>No Zope experience is required, but it uses concepts and software that may be familiar to Zope programmers.&nbsp;</p>
<p align="center"><a class="external-link" href="http://guest.cvent.com/EVENTS/Info/Summary.aspx?e=59cdbdee-f3f5-43ac-86e8-e0515726a32b">Register Now</a></p>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Kevin J. Kalupson</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>plonesymposiumeast2009</dc:subject>                    <dc:subject>for tlt blog</dc:subject>                    <dc:subject>for planet plone</dc:subject>                <dc:date>2009-05-08T16:12:57Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/managing-newsletters-with-out-of-the-box-plone">        <title>Managing Newsletters in Plone</title>        <link>http://weblion.psu.edu/news/managing-newsletters-with-out-of-the-box-plone</link>        <description>I have found that Plone out of the box can handle most requirements for online newsletters...</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<div class="pullquote"><a class="external-link" href="http://plone.org/search?path=%2Fplone.org%2Fproducts&amp;portal_type=PSCProject&amp;SearchableText=newsletters">If this approach doesn't work for you, see newsletter products at plone.org...</a></div>
<p>Are newsletters part of your Web presence? You may be able to manage them without installing an additional newsletter product.&nbsp;Using Content Types and Collections, Plone can handle most of the requirements.</p>
<p>Here's an approach that I've made work for a couple of our online newsletters:</p>
<ul><li><a class="external-link" href="../trac/weblion/wiki/NewslettersInPlone">https://weblion.psu.edu/trac/weblion/wiki/NewslettersInPlone</a></li></ul>
<p>&nbsp;</p>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Rose Pruyne</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>documentation</dc:subject>                    <dc:subject>for planet plone</dc:subject>                    <dc:subject>managing content</dc:subject>                <dc:date>2009-05-08T15:25:00Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/empty-portlets-to-see-or-not-to-see">        <title>Empty Portlets: To See or Not To See</title>        <link>http://weblion.psu.edu/news/empty-portlets-to-see-or-not-to-see</link>        <description>Displaying empty portlets.</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p>Ever have an events or collection portlet that you wished wouldn't disappear?&nbsp; Maybe it wrecked your three column layout...or took with it the only home page link to a news or events section of your site.&nbsp; How about a portlet with the option to show itself even when there are no events or items to display?</p>
<p>Recently one of our partners provided a use case for such a portlet.&nbsp; What they need is a collection portlet that continues to appear even when it is empty.&nbsp; The portlet itself provides a link to the events section of their site, as well as a list of the events for the coming week.&nbsp; Instead of disappearing when the collection is empty, the portlet should not only appear, providing the necessary link, but also display a message such as 'No events scheduled this week'.</p>
<p>That Plone's news, events, and collection portlets by default simply disappear when empty, is certainly a better option than having half formed portlets, with no content, popping about.&nbsp; But I'd like to see the option provided to users.&nbsp;</p>
<p> This could be achieved by adding a check box to the relevant portlets, allowing users to choose if a portlet should appear when empty or not.&nbsp; Further, including an additional text field could give users a place to input a custom message for the portlet to display when it has no items</p>
<p>.</p>
<p>Is anyone else looking for similar functionality from Plone's portlets?&nbsp;&nbsp; Take a look at the example images below and <a class="external-link" href="http://dev.plone.org/plone/ticket/9165">related ticket #9165</a> at plone.org, with suggested code details. &nbsp; I'd like to hear your ideas, pros/cons, and any further suggestions.</p>
<p><img class="image-inline" src="../images/emptyportlet-display/image_preview" alt="emptyportlet_display" /></p>
<p class="discreet">Suggested collection and events portlets appearing empty with custom messages</p>
<p><img class="image-inline image-inline" src="../images/emptyportlet_form.jpg/image_preview" alt="empty portlet form suggestion" /></p>
<p class="discreet">Suggested additions to Events Portlet</p>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Michael Miller</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>for planet plone</dc:subject>                    <dc:subject>portlets</dc:subject>                <dc:date>2009-05-06T18:05:00Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/alexander-limi-to-open-plone-symposium-east-2009">        <title>(Update: link to sprints corrected) Alexander Limi to Open Plone Symposium East 2009</title>        <link>http://weblion.psu.edu/news/alexander-limi-to-open-plone-symposium-east-2009</link>        <description>Alexander Limi, co-founder of Plone will open the festivities at the Plone Symposium East 2009.  Alex's presentation will focus on Plone 4.0 features and future directions.</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p>Ploneistas interested in the future of Plone 4.0 will be delighted to hear <strong>Alexander Limi</strong>, co-founder of Plone, will discuss future directions in his presentation <em>"Looking Forward to Plone 4"</em> at the up-coming <strong>Plone Symposium East 2009</strong>.&nbsp; The <strong>Plone Symposium East 2009</strong> will be held <strong>May 28-29</strong> at Penn State University. Alex will walk through some of the technologies in the Plone 4 release, and give us an understanding of the overall goals for what the next release of Plone will be capable of — and what it means for the world of online content management.</p>
<p>In addition to <strong>Alexander Limi</strong>, an exciting <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/plone-symposium-east-schedule">speaker program</a> has been assembled that will be present on a variety of topics from Plone experts that you won't want to miss.</p>
<p>The Symposium program is not the only way to participate in the Plone community or develop your Plone and Python skills.&nbsp; <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/training"></a></p>
<p><a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/training">Two days of training</a> - <strong>May 26-27</strong> have been organized to nurture the development of your skills. Noteworthy presenters include <strong>Joel Burton</strong> - Best Practices, <strong>Donna Snow</strong> - Plone Skinning, <strong>Chris Calloway </strong>- Python for Plone, <strong>Chris McDonough/Paul Everrit/Tres Seaver</strong> - Developing using repose.bfg, and <strong>Jerry Kirk</strong> - Agile Workshop.</p>
<p>Sprints will be held through out the week and through the weekend  (<strong>May 26-31</strong>). Lots of good sprint topics are being suggested. Come sprint with your friends on your favorite topic or add your own topic.&nbsp; <a class="external-link" href="../../trac/weblion/wiki/PloneSymposiumEast2009/Sprints">Sign-up on our Sprint wiki</a>.</p>
<p>Please <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/">register now</a> and join us in a week full of Plone goodness.</p>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Mike Halm</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>training</dc:subject>                    <dc:subject>plonesymposiumeast2009</dc:subject>                    <dc:subject>for tlt blog</dc:subject>                    <dc:subject>for planet plone</dc:subject>                    <dc:subject>sprint</dc:subject>                <dc:date>2009-05-05T16:45:00Z</dc:date>        <dc:type>News Item</dc:type>    </item>
    <item rdf:about="http://weblion.psu.edu/news/training-agile-methods-python-programming">        <title>Training at Penn State: Agile Methods, Python Programming</title>        <link>http://weblion.psu.edu/news/training-agile-methods-python-programming</link>        <description>WebLion is hosting the Plone Symposium East 2009 on May 28 and 29 and training on May 26-27. In addition to Zope and Plone training, there are workshops in agile methods and Python programming led by professional trainers, at very low cost and open to everyone. Register by May 11.</description>        <content:encoded
    xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<h3>Python Programming</h3>
<p>Chris Calloway will lead a two-day hands-on workshop on Python development: "A crash course in Python for beginners taught by interactive examples. This is a shortened version of my 5-day PyCamp and teaches how to program the Pythonic way." Python is a powerful object-oriented programming language that is easy to learn, enables integration with other languages, and has a vast set of standard and third party libraries. Python is licensed with a GPL-compatible open source license, and is runs on Windows, *NIX, OS X; has ports for JAVA and .NET; and best of all, Python runs on your Amiga! It's the language used by Zope, Plone, and many other CMS and application frameworks. More information and registration: &nbsp;&nbsp;&nbsp; <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/training">http://plone.org/events/regional/plone-symposium-east-2009/training</a></p>
<h3>Agile Programming</h3>
<p>Gerry Kirk will lead a one-day workshop on Agile Software Development. Agile processes use short, iterative development cycles by self-organizing teams where project requirements and software solutions evolve through testing and discovery.&nbsp; Agile programming methods adapt functional requirements and delivered software to rapidly changing realities, such as, uhhh, stock market crashes and falling budgets.&nbsp; More information and registration:&nbsp;&nbsp;&nbsp; <a class="external-link" href="http://plone.org/events/regional/plone-symposium-east-2009/training">http://plone.org/events/regional/plone-symposium-east-2009/training</a></p>
]]></content:encoded><dc:publisher>No publisher</dc:publisher>        <dc:creator>Christian Johansen</dc:creator>        <dc:rights></dc:rights>                    <dc:subject>conference</dc:subject>                    <dc:subject>plonesymposiumeast2009</dc:subject>                    <dc:subject>training</dc:subject>                <dc:date>2009-05-05T12:38:07Z</dc:date>        <dc:type>News Item</dc:type>    </item>




</rdf:RDF>
