How Plone Can Become Kick-Ass Community Collaboration Software
Oct 15th, 2005 by Jon Stahl
The quality and power of Plone as a content management system is incredible. It’s got incredible usability, workflow, permissioning, document handling, search, extensibility, internationalization, accessibility — and more. We’ve launched over 40 Plone-powered sites for non-technical clients in the past year with a very small team of people.
However, for websites that revolve around “community” and “collaboration” (whatever those things mean, and believe me I’m often very cynical) I think that Plone’s community collaboration features could use some improvement.
The good news is that most of these features have pretty solid products that already get us 80% of the way there — they just need some focused “polishing.” Here are some thoughts drawn from our experiences at ONE/Northwest, and some of my hopes for the future.
But before I dive in, I apologize in advance. These are all pretty raw thoughts, and there’s likely a lot of half-baked ideas and not-so-great conclusions in here. I thought it better to spit this out into the world to see what response it would attract than to spend too much time polishing it to a sheen.
Preface: What the hell is “community” anyway?
A fair enough question. And I’m not sure I’m really up to metaphysics as I write this on the bus ride home. In the context of Plone, I’m talking about features like:
- Blogging
- Aggregation of RSS feeds, with the aggregated items available as first-class content objects.
- Integration of “traditional” online community tools content such as mailing list archives, etc.
- Discussion Forums
- Tagging content
- Publishing content out to “social software” services such as upcoming.org, flickr.com, del.icio.us, commontimes.org, etc.
Here’s my rundown of the tools landscape for each of these:
Blogging
Blogging is perhaps the building block of community collaboration software. Plone has a number of blogging products. Unfortunately, none of the are yet truly outstanding, and we have a bit of a problem of too many choices, all of them somewhat mediocre. Here’s my rundown, your thoughts welcome:
I consider the “essential” features for a solid blogging product as follows:
- Multi-blog, multi-author
- Rich-text entries that can include images
- Send and receive trackbacks (but resist trackback spam!)
- Allow admin to choose between registration required to comment, and reg. not required (but still not spam-magnet) — VisitorComments seems like a decent example.
- Send pings to a ping service (if any still don’t suck in six months)
- Sensible, ideally configurable archiving paths.
- Super bonus points for XML-RPC compatbility for blog desktop authoring tools.
Like many in the Plone community, I had high hopes for Quills. But I’m worried that the recent demise of Etria leaves the project in limbo.
Knotes holds some promise, and seems very featureful, but as I tried it out in its sandbox, it still seems buggy and way too complex/quirky in its UI. Perhaps this could be cleaned up, I don’t know. Also has some pretty big dependencies, not sure how big a deal that is. One to watch, that’s for sure.
I’ve also been playing around a bit with EasyBlog, which seems to be moving rapidly right now. Has a pretty nice set of features, could still use some polishing around trackback usability, but seems promising.
RSS Content Aggregation
A key function of a “community” website is the aggregation of content that community members are creating “out there” — blogs, delicious links, photos on flickr, etc. RSS is the lingua franca that allows content from these tools to be syndicated between sites.
There are two main Plone products that allow a Plone site to aggregate content: CMFSin and CMFFeed. However, neither is entirely satisfactory. Here’s the scoop:
CMFSin
CMFSin is a “lightweight” RSS aggregation tool. Its core features include:
- simple feed aggregation
- the ability to aggregate mulitiple feeds into “channels”
However, its limitations are many:
CMFSin currently configured via somewhat cryptic text files in the ZMI. This makes it tough for novice site managers, who would prefer to work through the Plone UI.
CMFSin runs in the foreground, and can significantly slow down site performance during a refresh.
Items CMFSin collects are not “first-class” content objects — they’re not added to the catalog, and they don’t persist in Plone after they expire from the feed.
Users can’t “remix” CMFSin-aggregated feeds by selectively promoting or suppressing items.
CMFSin only aggregates headlines and summaries, not full content bodies.
In short, CMFSin is suitable for “light duty” aggregation of ephemeral content like news headlines or delicious links, but not for sites that want to use RSS syndication as a core element of building a content library.
While not every website needs this more robust syndication, it is easy for me to imagine a generation of collaboration sites that bring together (and replicate) content from a network of partner websites via RSS.
CMFFeed
CMFFeed is a more ambitious product that picks up where CMFSin leaves off. It does good things like:
Treating aggregated content as first-class content objects, opening the door for incoming feeds to be edited and remixed. Running in the background as a separate ZEO process, which avoids slowing page-loads to refresh feeds
While holding lots of promise as a power-aggregation tool, CMFFeed is not quite ready for prime time. It still lacks:
- A quick-and-easy install process – lots of mucking about in the ZMI still required.
- Through-the-web configuration — a must-have feature so that non-technical site admins can manage the aggregation process rather than Plone developers.
- Caching of feeds across multiple Plone instances on a single server. (A must have if you’re hosting lots of small sites on a single server which will want to draw on the same feeds — exactly that situation we face at ONE/Northwest.)
From my decidedly non-technical point of view, it seems like a relatively small bit of UI polishing plus server-wide caching could push CMFFeed over the hump to greatness.
Mailing List Archives
Email discussion lists are still amazingly powerful community collaboration tools. Even more so when they have good, searchable web archives – that can be seamlessly integrated into the community’s website. See where I’m headed?
While Plone has a few decent mailing list tool my feeling is that reimplementing email discussion list functionality in Plone is somethign of a waste of effort – there’s already lots of good discussion list software out there like Mailman, Sympa, etc. What Plone most needs, IMHO, is a relatively simple email list archiver. (Yeah, with external discussion list software, you’re giving up user integration, but I think that’s OK.)
PlonePostOffice appears to be very close to having this functionality. What it appears to be missing is:
- Through the web configuration for non-technical end-users
- Support for handling attachments (convert to File object within a folderish message object?)
The developer, Ivo, has indicated that he’s interested in doing some sponsored work on PPO. I’m hopeful that it can quickly become a great mail archiving tool for Plone. Let me know if you’re interested in talking about co-sponsoring some work on PPO.
Discussion Forums
Plone doesn’t have a truly solid forum tool. CMFBoard appears to be dead. KNotes/KDiscussion is a promising contender, but is perhaps a bit too complex for its own good. Another promising contender is Ploneboard, which has a very strong pedigree as a project of Plone Solutions.
I’ve already been working with Marshall Mayer of LiveModern.com, who has one of the larger CMFBoard installs out there, on set of specifications for a next-generation forum product for Plone. Our current plan is to organize some community investment in Ploneboard.
To that end we did some initial brainstorming on the forum features that LiveModern (or any active forum community) would need, and put the results up on the Seattle Plone website. After making contact with Limi and Tim Hicks at Plone Solutions, we refined and reined in our initial braindump and started fashioning PLIPs at the official Ploneboard page.
At this point, we are eager to expand the conversation to include anyone who is seeking a moderately-featureful forum product for Plone to figure how we can pool resources to bring it into existence. Take a look at the PLIPs, offer feedback, and let me know if you’re interested in putting resources into the process.
Tagging
Tagging seems to be all the rage these days in web-collaboration circles. While I’m often skeptical, I definitely have found the tagging system of del.icio.us to be hugely valuable. And Plone has the stub of a tagging feature in its Keywords, enhanced by PloneKeywordManager, but what it lacks is a polished user interface that scales to collections of a 30-60 tags (or more). I believe that implementing a tagging UI like that of del.icio.us would be a relatively easy “winâ€? that would help Plone users “tagâ€? content more effectively.
Creating a “tag cloud” as a way to visualize and browse the contents of a Plone site should also be a pretty easy win.
On a related note, it should be easy to get views and RSS feeds of tagged Pone content at the URL: http://plonesite/tags/nameoftag.
I definitely need to do more thinking about how tagging works on a collaborative website with many authors contributing content.
Update: It looks like the folks at DividedLine are perilously close to delivering exactly what I’m looking for. Yippee! Here’s hoping they package it up and kick it out Real Soon Now.
Publishing content to community aggregation sites such as flickr, delicious, etc.
While Plone can pretty easily receive content from a community aggregation site that emits RSS — and would be even better with a power aggregator such as a turbocharged CMFFeed, it doesn’t have much support for publishing content to such services. That’s too bad. It would be really nice to be able to create content once in Plone and have it post itself to these online social spaces to reach an even broader audience.
OK, this is a less-than-half-baked idea. But I figured I’d throw it out there anyway to see if it sticks.
Where do we go from here?
If you’ve made it this far, thanks for reading. You’re probably wondering what I’m planning to do about all of this. Well, that’s in part up to you. These are bigger issues that I (or ONE/Northwest) can tackle alone.
First of all, I think we need to get a good conversation going in the Plone community to refine these ideas, and more importantly to figure out who else is feeling this pain and what resources they can bring to the process of creating solutions.
So, I invite your comments — what parts of this are right, and which are wrong? What do you think are the most important community features that Plone needs to have? Are there promising products that I haven’t mentioned that need some energy? Have I unfairly judged anything? In short, I’ve taken a whack at naming the problem. Where should we go from here?
Hi Jon - thanks for your comments on Plone as a collaboration tool. This is an area in which I am also particularly interested. Just a few comments. qPloneBlog is based on SimpleBlog and extends it with ping, RSS2, trackbacks, technorati tags, etc. http://quintagroup.com/services/plone-development/products/plone-blog ATPhoto has preliminary support for uploading photos to flickr.com. CMFContentPanels allows for through-the-web addition of RSS feeds and user selectable placement of the feeds on a page. One thing that was missing from your list of collaboration tools was calendaring. The Calendaring product by Sidnei da Silva looks the most promising in this area. http://plone.org/products/calendaring
-Nate
Nate,
Thanks for the useful info — I’ll definitely be checking these products out. Is there a place where I can see CMFContentPanels in action doing its aggregation stuff?
How could I have overlooked calendaring???
Another kind of tool which should be mentioned is a groupware tool which allows for teams to collaborate online. The 3 that I know of for Plone are: Teamspace,(objectrealms.net), GrufSpaces (ingeniweb.sf.net) and mxmWorkgroups (www.mxm.dk). Teamspace looks the most promising and flexible of these. -Nate
Wow, I just got CMFContentPanels going after a bit of struggling with Feedparser. Pretty neat. It doesn’t seemt to be able to catalog RSS items to make them searchable, or store them as content objects for the long-term — so in this respect its CMFSin like. However, it’s much more flexible about how stuff is displayed, and very user-configurable. A nice step forward, but still somewhat short of “aggregation nirvana.”
Just to add one tool to this very useful survey: For handling mailing lists including full-text searchable archiving there is also Mailboxer for Zope (written by Maik Jablonski; http://mjablonski.zope.de/MailBoxer) and its Plone wrapper PloneMailBoxer (kind of adopted by Robert Rottermann; http://svn.plone.org/view/collective/PloneMailBoxer).
The German-speaking Zope User Group (DZUG; http://www.dzug.org) is using it since years to manage the various German mailing lists around Zope. Head over to http://www.dzug.org/mailinglisten/zope if you want to browse the archive of our main mailing list there.
Raphael
Plone, I’ll admit is a great content management and collab package. But both drupal and/or it’s activist step child cvicspace blows plone away as a community and organizing tool, IMHO. And their CMS and publishing capability is no slouch either. Feed aggregator, blogs, mass mailing, donation, volunteer, FOAF, forums, collobotrtive books and wiki..
There may well be a python over PHP bias at work here but, again IMHO, that is simply bias and not based on any tangible performance or flexibilty differences. Especially now what with PHP 5’s OO approach.
Plone may well get there someday; drupal’s there now.
Sasquatch,
Drupal is a great product, no doubt about it, and it has blazed a lot of trail in terms of implementing community features.
However, we belive that Plone has an extremely powerful and flexible underlying architecture and can quickly implement most of these features, too. And that’s what we’d like to see.
I would add that there is no reason for both Drupal and Plone not to co-exist as options for groups building community collaboration sites. Each project can learn from the other, certainly Plone developers can take a look at the functionality that Drupal has and borrow and improve upon it. I know the larger PHP community has done this in response to the Plone/Zope/Python stack with projects such as PHPTal (http://phptal.motion-twin.com/introduction.html).
Jon,
I forgot to mention in discussions of social software on the mailing list for Plone (and now that it isn’t happening there anymore…) that we created a script to work with Calendaring for multi-site calendars. It functions to import events from a given site (or many sites) and import them into a “hub” site. No fancy syncronizing with offline, etc, etc yet, but it gets the job done. We use this for the Business Alliance for Local Living Economies (www.livingeconomies.org), where they collect all the events from the local network affiliates (see events, the ones with “Philadelphia” in title are imported, for example).
Anyway, if others are interested, it may serve as a started for creating better shared calendar functionality.
Cheers,
Chris
Chris-
That is pretty cool — I know that Nate and others are looking to organize a Calendaring sprint in SF for early December. Sounds like that’s the convergence point.
It would be really cool if one could easily dump public events to a web-based calendaring tool like Upcoming.org.
Jon Stahl’s Journal » Blog Archive » How Plone Can Become Kick-Ass Community Collaboration Software
Jon Stahl’s Jour…
Hi Jon,
Thanks for the “wish list” redux of community networking features. The organization where I work, Earth Share, is very much the hub of a community, with 66 conservation organzations that make up our federation. We would like to expand our role as an exhaustive resource for news, volunteer opportunities and upcoming events in WA. I’ve been somewhat hesitant to make the switch over to Plone, mostly due in part to the steep learning curve. I feel fairly comfortable updating and customizing the back end of our Movable Type system which is admittedly inadequate for what we use it for. However, I think we would take the leap to Plone if it could do much of what you mentioned, smoothly. Here’s what I would ideally want from a CMS:
News, volunteer opportunities, and events aggregated chronologically, by organization, and by issue area (category). We would need some sort of custom archetype to parse each piece of content differently in different sections of the site. For instance, a news article from one of our organizations, like EarthCorps, would be displayed on our News page (blog) in its entirety, as an excerpt or summary format on the EarthCorps page, and as a sidebar or excerpt on a category page about Habitat Restoration. To take it a step further, this content would ideally be posted from an RSS feed from the EarthCorps site, with the ability to edit, add links, images, etc. And it would link to a discussion forum about habitat restoration.
While I’m sure that Plone could do most of this now, with a good deal of customization, can it do it smoothly? I’m truly asking, I really don’t know. Take your WordPress site here — it’s news done right. You have a link to the RSS feed of the blog and comments, comments nicely displayed at the bottom of each post, a link to the next and previous article, a polished date, time and author tag at the bottom of each post. It’s a well done blogging tool. I’d like to see Plone with a blog as nice as WordPress, but with the flexibility to parse that news (blog) content in many different ways in other sections of the site, with the same level of detail. I’m sure it could be done with some highly customized archetype but I’d be at a loss if I wanted to make even the smallest changes — to the word count of an excerpt, or the way a link or date is displayed, for example. Maybe it’s just my inexperience with Plone, but this ability to easily customize the way content is displayed seems much easier on the basic CMS/blogging tools like WordPress and MovableType.
I would also value the ability to parse and display content differently on different areas of the site as it applies to upcoming events and volunteer opportunities. In the case of Earth Share, it would be ideal to have a calendar with everything listed, from all of our 66 organizations, but also a calendar of upcoming events and volunteer opportunities for each organization or within a specific issue area. Again, I’m sure this could be done already with some customization but it would be ideal to have this content flexibility built-in to a calendar tool. And as you mentioned, to have this content fed by RSS feeds from our federation organizations would be the icing on the cake.
I think one of the greatest advantages of a system like Plone is its ability to cross-reference content. Someone interested in volunteering with EarthCorps, might also be interested in reading news about them or attending their upcoming fundraiser. As a nonprofit employee, I’d like the ability to create these connections, between content objects, without a detailed knowledge of Python and TALES. I’m sure my gripes certainly don’t reflect those of the nonpofit user community, most of whom pay the consultants to create the tools, but I did think it it would be worthwhile to share our community network needs.
How about a Plone programming class Jon, from ONE/Northwest, now that you have so many groups using the system?
Dave,
The simpler and less capable the tool, the easier it usually is to do simple customizations.
That said, we’re working right now on a “Plone Developers Bootcamp” that is tentatively scheduled for the week of March 27th here in Seattle. Sounds like you’re raising your hand for the “pre-registration” list.
All of the functionality you’re talking about Plone either does right now (with some fairly simple customization) or will do Real Soon Now. See, for example, the upcoming Calendar Sprint.
[...] Jon Stahl’s Journal talks about a new tool for community building in How Plone Can Become Kick-Ass Community Collaboration Software. Plone is an open-source CMS (Content Management System). In a lengthy analysis, Stahl focuses on key community building features: Blogging Aggregation of RSS feeds, with the aggregated items available as first-class content objects. Integration of “traditional� online community tools content such as mailing list archives, etc. Discussion Forums Tagging content Publishing content out to “social software� services such as upcoming.org, flickr.com, del.icio.us, commontimes.org, etc. Blogging Aggregation of RSS feeds, with the aggregated items available as first-class content objects. Integration of “traditional� online community tools content such as mailing list archives, etc. Discussion Forums Tagging content Publishing content out to “social software� services such as upcoming.org, flickr.com, del.icio.us, commontimes.org, etc. [...]
I’d like to point out that Quills development is ongoing, if not fast. True enough, the old Etria site is toast, and the releases there are out of date. If you check plone.org/products, though, there has been a recent release of 0.9 final, which was a long time coming. I’m sure one of the original two developers is still involved with the project. Observe his posts to the Plone users mailing list.
The product is in the Collective subversion repository, and there are branches belonging to various people. Somebody on #plone recently said to me, ‘there are many quills branches you can chase in search of various hopes and dreams’ or something along those lines. So it is way premature to give up on Quills as a product.
That said, you didn’t mention Coreblog2, which is a new version of Coreblog done as a Plone product. This has only been released in the past month or so, and development seems to be coming along. I have a lot of confidence in the future of this product, simply because the author has done all this before with Coreblog as a Zope product.
This was a very interesting article which is right along the lines of what I am trying to accomplish with Plone. I’ve also seen quite a few of your sites on del.icio.us, you do excellent work modifying the layout of Plone. This is my first time at this blog, did you ever write an entry about the customization process you use?
Hi Will,
Thanks for stopping by!
As you point out, this article is already getting pretty outdated. Quills is developing nicely, and in fact I think this article actually played some small role in nudging the development paths of Quills and EasyBlog a bit closer together.
I’ve been checking out COREBlog with some anticipation — the Plone version wasn’t out when I first wrote this article. My initial enthusiasm has been tempered somewhat by the fact that it does not have a public SVN repository, so it’s hard to get a sense of what’s “in progress” or for others to contribute to it. But I agree that there is much potential out there.
And, thanks for the kind words about ONE/Northwest’s Plone sites. I haven’t written much yet about our customization processes, but you know, I think that’s a great idea. Look for a short post on that Real Soon.
[...] Jon Stahl has some good reasons for why Plone needs a good blogging product, and what sorts of features such a product should have. [...]
Have you looked integrating the Zope-based GroupServer platform?
Ideally folks would have one login and be part of a site’s e-list/forums in an integrated fashion.
See: http://groupserver.og http://e-democracy.org/groupserver
Geez… how did you get CMFContentPanels working with RSS feeds??? This is really REALLY bugging me…
Hi Jon and you other contributors
I hope we can get this subject into the agenda of the 2007 Naples conference. To me one of the crucial questions underlying a discussion on collaborative systems is the combination of face-to-face (f2f) and face-to-screen (f2s) types of collaboration - mainly because I sense a conflict between these working styles, in the present rather early stage of computer supported collaborative work (CSCW). To take this topic to its extreme it seems as it clashes with the question of what it means to be a human being and how we thrive. To take Plone to the next step of making it a good support for collaboration, we must understand how it interacts with the real world work-flows, and how it actually partly mirrors partly reorganises the behaviour of people. With the Plone community and the vast experience of people here, there is very good reasons to expect cutting edge solutions. I look forward to that - it will change my collaborative life.