Outsourcing commenting on a Plone site

I’m eyeballing IntenseDebate.com, recently acquired by WordPress, who offer a hosted third-party blog/website commenting service, and am starting to wonder whether it might be a good idea to write a Plone add-on product that integrated IntenseDebate as a commenting system for Plone.

It seems like there would be some pros and cons.  What do you think?  Worth the effort or a waste of time?

World Plone Day Seattle – A Huge Success

The team here at ONE/Northwest hosted Seattle’s World Plone Day event last night, part of a coordinated worldwide Plone “day of outreach” that reached over 22 countries.

Here in Seattle, we had a capacity crowd of about 40 folks, with a great mix of experienced Plone hands, Plone beginners and the “just curious.”  I gave a short “overview of Plone” talk, based heavily on the great slide deck that Constance Wilde put together for WPD, and my colleague Sam Knox did a short “basic training” for end-users.  We finished up with some Q&A, which was an interesting mix of really specific technical questions and general questions about features and capbilities.

All in all, a great event with a lot of positive energy.  Thanks to the entire global World Plone Day team for their tremendous organizing and cat-herding, as well as to the Seattle Plone community!

Happy World Plone Day!

Today is World Plone Day, a global “day of outreach” for the Plone open-source CMS community.  In a few hours, we’ll be hosting 40+ folks here at ONE/Northwest HQ in Seattle, just one of the dozens of World Plone Day events taking place in over 22 countries around the world.

It’s been a pretty amazing global effort, thanks to some great work from Robert Allende, Gerry Kirk, Constance Wilde, Tim Knapp and many others.  And, judging from the IRC messages, Twitter posts, and live video streams, the various workshops have been well attended, enthusiastic and full of great Plone energy.

I’m really excited to close out the day in style here in Seattle!

Plone Code Swarm

Chris “cbcunc” Calloway has put together two great video visualizations of Plone’s community activity over the past eight (!) years.

Check out:

Plone core code swarm — a visual representation of the evolution of the Plone core from 2001 to 2008.

Plone collective code swarm — same idea, only this time it analyzes the universe of Plone add-on products

It’s really amazing to see the fireworks that surround major code checkins, and to see the moment in time when legendary Plone contributors like Martin “optilude” Aspeli and Hanno “hannosch” Schlichting (just to name two) first appeared on the scene. 

(Eagle-eyed viewers will spot my name flicker around the edges of the Collective from 2006 onward.)


Plone Code Swarm from Chris Calloway on Vimeo.

Flexible external redirects in Plone: a brainstorm

Sam Dorman of the League of Young Voters just tickled my funnybone with a really nice idea for how to elegantly handle external redirects in Plone.  I think this would be really easy to roll up into a nice user-friendly product that would have tremendous, wide-ranging re-usability.  I’d love your thoughts on it.

The problem

Lots of online activism campaigns (like the League!) use generic content management tools like Plone for their main website and supplement it with more specialized online advocacy tools like Democracy In Action.  It’s a winning combination that takes advantage of inexpensive, easy to use, best-of-breed tools.

The problem is that you can wind up with some messy URLs.  For example, Democracy In Action URLs can look like this:

https://salsa.democracyinaction.org/o/315/my/donate.jsp?supporter_my_donate_page_KEY=someVariable

Ugh.  Not very user friendly to stick into an email, a tweet or a blog post.  What Sam really wants is to have a redirect URL like this:

http://go.theleague.com/someAction/someVariable

That will automatically redirect you to the DIA page, with someVariable appended.

“Why not just do this with Apache rewrite rules?” I can hear you asking.  Because Sam’s not an apache administrator, and doesn’t know how to write a regular expression (and neither do I).  We want these to be manageable by people with Plone-user skills, not server-admin skills!

My vision

As Sam was telling me his story, a little vision appeared in my mind’s eye.

I imagine an “external redirects” control panel in Plone, where you would be find a screen that would let you add lightweight “redirects” that would have the following attributes:

  • Redirect name (the “someAction” in the example above)
  • Redirect destination (the external URL you’re redirecting to.  Variables to be allowed with things like $1, $2)
  • Enabled/disabled checkbox

I’d see this as a DataGridWidget or something similarly quick and easy.  A site could have quite a few redirects to manage on a single screen, we’d need to use KSS well to avoid too many page reloads.

Practicalities

Plone’s current “Link” object supports some very basic external redirection, and we could extend that as described at PLIP 126, but I’m not convinced that this is a very ideal approach.  The use case I’m trying to cover is about “placeless” adminstration of lots of links, not administering one-by-one links that are scattered within the content hierarchy.  Also, implementing this functionality with full-fledged content objects creates some problems with viewing vs. editing mode, which I think can be avoided with a centralized, approach based on a utility tha could be overriden or extended.

The other concern that would have to be addressed with this approach is namespace collision.  I think that could be avoided by doing a quick catalog search to make sure your proposed actionName doesn’t conflict with an existing content object (KSS validators to the rescue!).  We might be able to entirely avoid namespace collision by letting you define a subdomain in the control panel (e.g. go.mydomain.org), and if possible push that into VHM.

We’d probably need to sanitize variables so that this doesn’t allow any weird injection attacks.

Thoughts on collective.contentleadimage

I’ve just spent a few minutes checking out Radim Novotny’s new product collective.contentleadimage aka “ContentLeadImage,” which promises to provide simple thumbnail images for all Plone content objects.  It’s a neat idea that scratches an itch we often feel here at ONE/Northwest, but unfortunately, I think the execution is still a bit too rough for production use.  I’d love to see Radim develop it a bit more, though, so here are some of my thoughts and suggestions.

Let’s start with the concept: Plone’s built-in News Item content type provides a handy “thumbnail image” field that lets you upload an image that appears in content listings and the object display.  It’s a really nice, simple way to add visual appeal to News Item objects.  I’ve often wondered why all standard Plone objects don’t include this capability.  Apparently Radim did as well, and it is this problem that ContentLeadImage solves.  Bravo!

ContentLeadImage also provides a nice little control panel configlet that lets you configure the sitewide image and thumbnail size, as well as letting you choose whether to show the thumbnail image in the body text of the content object, next to the description, or (oddly) both.

Finally, ContentLeadImage provides a new view for folders, that slips the thumbnail image into the folder listing view.  Nice!

While the basic concepts are sound, I have a few minor things to pick on:

  • First, and most importantly, I think ContentLeadImage needs to let the site administrator choose which content types get lead images.  Applying them to all content types in the site is probably not wise.  For example, ContentLeadImage adds a lead image to News Items, which already have an equivalent feature, and to Images, which seems rather redundant.
  • The lead images are not really formatted; they should be display with styles that mimic how News Item images work, both in the content object, and in the new folder listing view.  
  • Turning on lead images in both the Description and body text (the default settings), produces two lead images on each content item, and is not a very sensible default setting.  I’d suggest showing the image in the body text only, styled to look like a News Item image.
  • Lead images are scaled down to user-configured sizes, but unfortunately, the images are scaled once at upload time, and if you change the sizes later, they’re not rescaled.  I think it might make more sense to use Plone’s built-in PIL resize scales, and let the user choose between them, and change whenever they like.
  • Images can’t be captioned.  That would be nice.
  • Lead image field should probably be after the body text field, not before it, ala News item images.

Ultimately, I’d like to see this functionality implemented directly in ATContentTypes, with a PLIP, for Plone 3.3 or 4.0.  :-)

ATImageEditor: evolving quickly!

Nathan Van Gheem’s beautiful product-in-the-making, ATImageEditor, an image editor for Plone, is coming along nicely. Since I first wrote a gushy love note to it a couple weeks ago, Nathan’s been hard at work improving it with:

  • Control over JPEG compression quality (very useful!)
  • A new UI featuring a photoshop-style floating image editor palette (very spiffy!)
  • Display of image dimensions and filesize
  • Brightness/contrast and sharpen/blur adjustments
  • Undo/redo support

Wow! This is probably the most day-to-day useful-for-end-users Plone product since Steve McMahon’s amazing PloneFormGen.

Nathan’s still got a pretty short todo list, so I’m hoping to see a final release soon! I’m sure he’d love to have a few more eyeballs on it to test, so if being able to edit images directly inside of Plone sounds good to you, give it a whirl!

For the impatient, here’s a one-minute screencast of ATImageEditor in action.



Plone Conference 2008 Sessions Announced

Matt Bowen, Alex Clark and the amazing Plone Conference 2008 team have announced the 50+ talks that they’ve chosen for Plone Conference 2008.

It’s a pretty amazing batch of talks, chosen from over 100 community-submitted proposals, and aimed at the full range of Plone experience levels. I got a chance to read all the proposals as a reviewer, and I can promise you this: when you show up at the conference you’re going to have a hard time choosing which talks to attend.

Some talks I’m looking forward to not missing include:

  • Alexander Limi: The Future of Plone’s User Experience
  • Rob Porter: Theming a Plone 3.1 site from start to finish
  • Chris Calloway: What You Need To Know About Python
  • Katie Cunningham: NASAScience: the Science Mission Directorate’s Makeover
  • Matt Lee: Plone as a campaigns management platform

I’m also especially pleased that all of my Plone-developing colleagues at ONE/Northwest had their talk proposals accepted, so keep an eye out for:

  • Andrew Burkhalter:  Hybrid Vigor: Plone + Salesforce Integration
  • Jon Baldivieso: Collective Good: Best Practices for Creating, Releasing and Maintaining Add-on Products for Plone
  • David Glick: When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
  • Veda Williams: Cat-Herding for Plone: Organizing and Executing a Successful Remote Sprint

If you’ve been waiting to see the talk list before registering, you’re out of excuses!  And, early bird registration ends August 8th, so register this week to save $50!

See you in DC!

ATImageEditor: Image editing for Plone

I’ve been checking out a pre-release version of ATImageEditor, a new Plone add-on product from Nathan Van Gheem of UW Oshkosh that lets you perform basic image editing tasks (crop, resize, etc.) directly inside of Plone.

This is one of the more impressive, immediately-useful-to-real-people add-on products I’ve seen in a while. I’ve lost count of the number of our Plone site administrators who don’t really know how to use image editing software like Photoshop, GIMP, etc. to crop and resize photos for use on the web. They’ve long been a bit frustrated by the fact that Plone doesn’t provide image-editing tools (it is, after all, content management software, not image editing software).

But, now, thanks to Nathan (and the power of JQuery & KSS, Plone’s built-in javascript UI framework!) Plone can serve as a basic image editor, and that’s all that many folks need.

(Here’s a quick 1-minute screencast of ATImageEditor in action.)

Overall, this an extremely impressive product, one that is sure to be a smash hit amongst everyday Plone users and integrators. It’s a tremendous boost to Plone’s “approachability,” which is one of the major strategic foci of the Plone platform development this year. I hope Nathan will continue to polish & refine it, and possibly propose it for inclusion in a future release of Plone (it’s non-invasive and won’t cause any backwards compatibility issues, which means it’d be a great shiny new feature for Plone 3.2!).

ATImageEditor is a “0.1rc2″ release right now, which means it’s still under active development, and probably not quite suitable for high-intensity production use. However, it’s not very invasive, and thus not very risky to install.

After testing it out a bit, I do have a short laundry list of comments and suggestions. I’m posting them here in order to shine a bit of light on this promising new product and to encourage you to give it a whirl and offer Nathan some feedback of your own.

Continue reading

Floating Voting (For Plone Enhancement Requests, That Is)

Dear Plone community,

Here’s a little trial balloon I’d like to float. Potshots welcome.

I’ve been thinking for a while that we need more structured, scalable ways to listen to our worldwide user community. In particular, I think we need better ways to listen to them for feature ideas, and better ways to understand which of the many great ideas out there would be the most valued for our users.

Community-generated “ideas” sites have become very popular in the technology community in the past year; you can see 3 very successful ones in action over at Ubuntu, at Salesforce.com and at Dell.  I think we could get 80% of the bang for 2% of the effort with one simple trick.  Ready?

Let’s install the VotePlugin into the main Plone issue tracker.

As you can see, it’s a simple, unobtrusive plugin that lets logged users register +1/-1 votes for Trac objects.  Even better, you can make Trac reports based on votes, such as Trac’s own report of the most popular tickets.

A few thoughts:

  • It would give core developers a better sense of where our community’s pain points really are.
  • It would give non-core users a clear, simple way to submit ideas and express support for others’ ideas.  People like to be listened to. :-)
  • It helps new contributors figure out where they could have the most impact.
  • It would use the proven, existing community collaboration tool that are already working well for us.
  • Voting wouldn’t be binding; that is, developers might not fix the most popular tickets first.  But at least it would give core developers some idea of what hurts the most in the community, and that may be useful in helping folks choose where to spend their scarce and valuable time.

One caveat:

  • VotePlugin requires Trac 0.11; Plone.org is running Trac 0.10, so we’d have to upgrade.  No idea how much of a PITA this is, but I’m guessing it’s not too bad.

So, whaddya think?

Anybody willing to tackle upgrading Plone’s Trac, installing the VotePlugin, and creating a custom report or two?

Animated slideshows for Plone: Slideshow Folder

We’ve just released Slideshow Folder 4.0, a major upgrade to a product we’ve built to make it easy for folks using Plone to create beautiful animated slideshows in their sites. It’s a “Release Candidate 2″, which means we’ve tested it quite a bit, believe it’s ready for production use, and don’t think it has any bugs.

If you’ve ever wanted to have a slick, animated slideshow in your Plone site just by clicking “make slideshow” on a folder full of images, then Slideshow Folder is for you. Give it a spin, and let us know what you think.


Plone Conference Session Proposals Due July 21st!

Just a quick reminder that Plone Conference 2008 session proposals are due July 21st — six short days from now.

If you’ve got a Plone-related skill to teach, a cool project to do a case study about, wisdom about project and business management, or a conversation you’d like to facilitate in the community, take 15 minutes to put together a session proposal! Open source isn’t just about code, it’s about community knowledge sharing, and Plone Conference is what we all make it together!

Here’s where you can submit your proposal!

Plone Conference 2008 talks I’d like to see

A few random ideas for talks I’d like to see at Plone Conference 2008.  In case anybody needs some inspiration.  Chime in with your ideas!  Name names!  Even better, propose one of these talks!  (Note: there are probably lots of talks I’d love to see that aren’t on this list, I just couldn’t think of them on the flight home from New Orleans!)

Non-technical

  • Selling Plone: A Hands-on marketing workshop with Mark Corum
  • Plone Foundation open-house: Foundation board members take questions.  Need a moderator(?)
  • State of Plone keynote: Alex & Alan.
  • Consulting practice management panel — focus on small to medium-sized integrators and how they can grow and succeed.
  • PloneGov overview — focus: how can it be a model for Americans?  Xavier, Newport News people.
  • Plone4Edu overview —  Mike Halm, Chris Calloway.  Explaining the model and how to replicate?  Or pitching the Edu project to new potential members?
  • Paul Everitt philosophizing about the community (?)
  • Migrations and Migraines:  Moving UW Radiology to Plone – Cris Ewig
  • The Politics of Selling Plone inside large institutions – ??  panel?
Beginner
  • Theming Plone 3  – Plone 3 way — Veda Williams  (Also include GloWorm & CSS Manager)
  • Buildout for beginners
  • Practical deployment strategies for small organization or departmental sites  - Penn State or UW folks
  • How to evaluate an add-on product
Intermediate
  • Moving towards the core: an introduction to the Plone team’s developer practices.  If you’re ready to start contributing to the Plone codebase, this is a quick introduction to our community’s best practices.   Wichert?  Alex?  Martin?
  • Brandon: intro to Zope Component Architecture (reprise of NOLA talk)
  • Caching  - Calvin, Joel, or Ricardo.
  • Intro to KSS: Joel Burton
  • Plone-Salesforce Integration: Andrew Burkhalter
  • Extending Plone’s built-in content types with SchemaExtender: Jon Baldivieso (?)
  • State of multlingual support (Hanno)
  • Making custom portlets the Plone 3 way
  • Managing viewlets and viewlet managers to create customized page layouts
Expert
  • Deliverance – Explained by someone who has good empathy for real-world themers.  :-)
  • Import/Export – Martijn Peters?
  • Design session: architecture for next-generation commenting (Martin, Chris Johnson, Jon Stahl?)

Plone Training in Seattle in June!

I’m very excited to share the news that Joel Burton will be bringing his Plone Bootcamp classes back to Seattle for the third year.  Joel will be offering a repeat performance of his basic week-long “Plone Bootcamp” class (June 16-20) suitable for folks getting started building Plone websites.  Assuming his voice doesn’t give out after the first week, Joel will immediately follow-up with his first-ever-in-Seattle “Advanced Plone Bootcamp” (June 23-26) in which he delves deeper into programming and customization techniques for Plone 3.

I’ve watched lots of people teach technology over the years, and Joel is hands-down one of the best trainers I’ve ever seen.  And at $550 for a full week of hands-on training, this has got to be one of the best deals going.

Plone Returns to New Orleans

Have you bought your plane tickets for Plone Symposium New Orleans 2008 yet? Alan Runyan, Toby Roberts and the team at Enfold Systems have put together a fantastic program that includes:

  • 2 days of Joel Burton’s amazing Plone Bootcamp training — pretty much the best way to jumpstart yourself as a Plone site builder!
  • 2 days of talks from Plone community luminaries and rising stars, including:
  • A “state of Plone” keynote from Plone co-founders Alex Limi and Alan Runyan
  • Case studies from the science, education and nonprofit sectors
  • Technical talks on popular topics such as caching, relational database integration, and using WSGI/Repoze to play nice with other Python web appications.

I’ll be showing off some of the work that the Seattle Plone community has done to integrate Plone and Salesforce.com.

Easy CAPTCHAs in Plone Forms

Thanks to PFGCaptchaField by 4Teamwork, it’s now easy to stick basic CAPTCHAs into Plone forms that you’re creating with PloneFormGen.  It’s a nice bit of work that takes advantge of Jarn’s underlying collective.captcha product.  What I especially like about it is that it makes it possible for non-technical end-users to quickly build forms that can’t be easily abused.

As my colleague David Glick, Alex Limi and I have recently PLIPed, I think it’s time for the Plone core to CAPTCHA-protect its key anonymously-accessible forms, such as the join_form and the contact form.  If we get consensus on collective.captcha as the way to go, and Martijn Peters from Jarn is willing to continue to caretake collective.captcha, we’re willing to do the work to integrate it.

Call For Presentations: New Orleans Plone Symposium

Alan Runyan, Toby Roberts and the rest of the crew at Enfold are putting on what promises to be another fantastic Plone Sympoisum in New Orleans.  They’ve just issued the call for presentations:

We are now ready for presentation submissions for the Plone Symposium.

The Plone Symposium is heavily focused on technical useful tidbits and best practices of Python/Zope/Plone development. The goal for the Symposium is for to cover relevant topics for consultants, systems administrators, and developers. It is the perfect venue for prospects to engage the Plone community because of its intimate setting and core developer to attendee ratio.

Some suggestions for talks for the Symposium:

  • zope.interface / Adapters
  • Eggs / VirtualEnv
  • Buildout
  • Lowering the bar for entry
  • Integrating 3rd party applications
  • Indexing / Events
  • Content mirroring / Entransit
  • RDBMS integration
  • ZODB / RelStorage / zeoraid
  • Consulting projects with Plone
  • R&D and Consulting
  • Plone in the Windows environment
  • Making dynamic scalable sites with Plone

Each presentation should be 30-45 minutes. Speaker should be intimately familar with subject matter. We recommend 5-10 minutes of Q&A section of presentation so audience members are allowed to ask questions.

Speakers will have conference fees waived and will get a t-shirt.

Please send title, abstract of presentation to alan@enfoldsystems.com.

If you’re more interested in attending than speaking, then you can register now.  Early bird pricing ends May 7th.

Plone Symposium East 2008 Videos – Awesome

Plone Sympoisum East 2008 is barely over, but 26 session videos are already up on Plone.tv!

I’m watching fellow Seattleite Cris Ewing from University of Washington give his bravura talk about the big, successful rollout of Plone to the 700-person UW Radiology Department.   It’s a fantastic case study that would be of interest to anyone in an education or large nonprofit context.

Props to the crew from Penn State and to Nate Aune of Plone.tv for getting this stuff turned around so fast and quick!