[imc-cms] fwd: Re: Indymedia.org CMS Developers Survey - please read!

ryan ryan at linefeed.org
Sun Feb 11 10:54:43 PST 2007


----- Forwarded message from Martin Aspeli <optilude at gmx.net> -----

Date: Sun, 11 Feb 2007 13:35:11 +0000
From: Martin Aspeli <optilude at gmx.net>
User-Agent: Thunderbird 1.5.0.9 (Macintosh/20061207)
Newsgroups: gmane.comp.web.zope.plone.devel
To: ryan <public-ryan-3w8n9lCM/xNg9hUCZPvPmw at ciao.gmane.org>
Subject: Re: Indymedia.org CMS Developers Survey - please   read!



Hi Ryan,

I think this sounds like a very sensible approach. :)

I'll attempt to answer below. You may also be interested in an essay I 
wrote yesterday, which attempts to take a frank and pragmatic look at 
how people "on the periphery" may see and should think of Plone. It 
probably applies to most open source projects, but it may be useful to 
you anyway. If you want to discuss more, let us know. :)

See http://optilude.wordpress.com/2007/02/10/oh-how-we-love-to-hate-plone

>---------- (survey begins) ----------
>
>INDYMEDIA CMS DEVELOPERS SURVEY
>Please fill in as many questions as you can. When you are completed,
>you should email your responses to 
>imc-cms-IAPFreCvJWNT5zshQc7waEB+6BGkLq7r at public.gmane.org
> 
>1) Survey Part 1 - Personal Details
>   a) Your name?

Martin Aspeli

>   b) Your geographic location?

London, UK

>   c) How long have you worked with Plone and what work do you do
>      with the project?

I've been a core developer for about 2.5 years, and a user of Plone for 
about 3 years. I used it first in an academic project, and then begun 
contributing to the community. I also did some freelance consulting from 
time to time. I am currently serving on the Framework Team, and I've 
contributed in whole or in part to about a dozen new packages to Plone 3.

>   d) Do you work on any other CMS projects?

No.

>2) Survey Part 2 - CMS Basics
>   a) What programming language is Plone written in?

Plone runs on the Zope application server, which is written in Python. 
Plone is extended in Python, and visual elements are normally created 
using Zope Page Templates, which are HTML-like.

>   b) What is the backend database used by Plone?

The main content store is the ZODB, Zope's object database. Plone can 
talk to other databases, but since relational databases are not very 
good at semi-structured, hierarchical content, almost every installation 
uses the ZODB at least for some content.

>   c) Are there other servers required (application server, Tomcat,
>      etc)?

Installing Plone requires Python and Zope. Note that the installers will 
install and configure Zope for you. See http://plone.org/download.

>   d) How do you describe the overall software design of Plone?

This is too broad a question to give a sensible answer to. Plone is a 
mature application and thus has a lot of different components. 
Sometimes, this can be complex to understand in detail for new 
developers, though most developers find that they need deal only with a 
subset of the stack.

To attempt to "draw" something from the top-down:

 [ Web browser ] <-- user

 [ Web server ] <-- Can put squid cache or apache in front of Zope for 
performance, normally done as a proxy

 [ Zope publisher/HTTP server ] <-- Zope can serve data over HTTP by 
"publishing" objects in the CMS

 [ Skin/presentation layer ] <-- Can be general, heavy use of CSS and 
web standards, easy to customise

 [ Content model ] <-- Most "things" in Plone are content objects. 
These can be created using the Archetypes framework, which makes the 
task of creating new content objects fairly declarative, with 
out-generated forms.

 [ Plone configuration ] <-- A "Plone Site" is "just" an object in the 
ZODB, with the rest of the content and configuration contained within 
it. It also stores persistent configuration data.

 [ CMF ] <-- The Zope "Content Management Framework" provides CMSish 
functionality, which Plone builds on

 [ ZODB ] <-- The Zope Object Database is a transparent data store. 
Most developers don't have to worry about it very much, since it stores 
and loads objects behind the scenes (e.g. when you try to "traverse" to 
them). It's transactional, highly scalable, proven on huge sites (but 
huge sites require some knowledge and configuration, always)

 [ Zope source code ] <-- The app server itself

 [ Plone source code ] <-- Distributed as add-on modules to Zope (aka 
"products"). These set up the Plone site and support the various 
functionality

Don't know how helpful that is, but it lists the big pieces.

>   e) Can you give details about real-world scaleability
>      considerations for Plone?

There are huge Plone sites out there (tens of thousands of logged-in 
users, millions of "anonymous" visitors). Scaling to huge loads will 
always, on any platform, require practical knowledge and skill. If you 
haven't done it before and you need "big" scale, I always recommend you 
hire someone to advise you - it'll be cheaper than making rookie 
mistakes. Caches such as Squid play a big part in this.

>3) Survey Part 3 - CMS Functionality
>   a) A core feature of our software is the ability for anonymous
>      users to post media to appear on the site. Is this easily
>      added to a site using Plone?

Yes. It would require some tweaks to the standard workflows, or the 
creation of some bespoke "content submission" forms that could create 
the content. The reason for this is that all content items need an 
owner, and if the "anonymous user" owns an object, then anyone could 
edit it. Another approach is to let people "join" the site and then 
publish content as their newly-created users. This is how Plone works by 
default.

>   b) Can you describe the site search functionality available?

All content objects are indexed and searchable. There is a "live search" 
on every page, and a more detailed search form. Custom fields can be 
made searcheable quite easily. People have also done integration with 
e.g. Lucene or the Google Search Application in the past.

>   c) How is RSS/XML/RDF support included?

RSS is available on most "listings". There is no RDF support out of the 
box, but if you needed it, you'd most like write page templates to 
generate the necessary XML by performing some search or inspecting some 
content. "XML" is too general to be answered. I think it depends on what 
you want out of the "RSS/XML/RDF", though.

>   d) We would like to have one server per site which allows many
>      instances of actual websites, each with different admin logins
>      and different websites altogether. Is this easy to set up with
>      Plone?

I believe so. The devil is always in the details, but in general, each 
"instance" of the Zope app server can have several "instances" of Plone 
sites within its database. You can also have multiple skins and of 
course multiple logins within the same Plone site, and use security and 
workflow to control who sees what, e.g. by group.

>   e) Can you describe the multimedia support in the software? We
>      allow users to upload and manipulate online all types of media -
>      mpeg, mp3, ogg, jpg, pdf, etc. 

Plone has out-of-the-box content type for images, and the "File" content 
type can manage any other type. There are add-on components (see 
http://plone.org/products) which provide more specific support for media 
files, e.g. with inline players or metadata extraction, depending on 
what your needs are. There are also components that provide full-text 
indexing (the reason this is not quite in the core of Plone is that it 
depends on OS-level tools like wv or lynx to extract text from objects, 
and this may make deployment harder for some users).

>   f) Internationalization is very important to us. Many of our sites
>      support 2-3 or more languages. Can you describe how this is
>      accomplished in Plone?

Plone excels at internationalisation. The UI is fully translatable and 
comes in dozens of languages (note that it normally takes some time 
after a major new release for the translations to catch up, but if you 
find some part of the UI is not translated, it's quite easy to add the 
necessary strings to the translation files and contribute them back). 
Plone also supports internationalisation of *content*, where people 
manually translate content into multiple languages and user either 
chooses which language to see (defaulting to their browser language if 
possible). This is supported via LinguaPlone 
(http://plone.org/products/linguaplone).

>   g) What types of anti-abuse or anti-spam measures are in the code?

Email addresses that are output in a page are protected with rudimentary 
spam protection. Security settings are easily tweaked to accommodate 
different abuse scenarios, e.g. public signups versus approvals versus 
admin-created users. Commenting on content is by default for logged-in 
users only. There are also add-ons like PloneCaptcha which provide 
additional levels of security.

>   h) Is there a calendar included in the codebase? 

Yes. A site-wide calendar takes Events that are published in the site 
and displays them in a portlet. There are other calendaring tools with 
more sophisticated features available as add-on components too.

>   i) How do you describe how a user would edit a given piece of content
>      on the website, or briefly describe the model used in this part
>      of the functionality?

A logged in user sees a green bar with tabs including "edit" around 
content they have sufficient privileges over. This presents a form, 
normally auto-generated from an object's "schema", in which they can 
enter metadata and data. Page content uses a visual editor called kupu.

>   j) How do you describe any type of user moderation system that
>      is built into Plone?

There is no direct moderation built in, but if you need sophisticated 
(e.g workflow-able) user management, a component called "membrane" and a 
layer on top of it called "remember" make it relatively easy to build 
very powerful representations of users. Specific tools such as 
Ploneboard, a bulletin board add-on, will have moderation options as well.

>   k) What types of integration is there with P2P networks?

None that I can think of. I don't understand what the use case would be 
here.

>   l) Another important feature for us is networking between the
>      websites. If we want users from one website to have rights on
>      another website in the network, how could we do this?

By sharing a user database, for example over LDAP or using a common SQL 
datastore for user credentials and properties.

>   m) We are concerned with the ability to easily rsync pages from a
>      website to other servers and setup a type of mirroring scheme.
>      How would this be accomplished with Plone?

If you only want one-way sync, then CMFDeployment will probably let you 
do that, spitting out static HTML pages. There is also Entransit, which 
can generate richer models of the content (in XML) for serving up in 
simple front-end applications (they have demos in PHP, .NET and Zope 3 
for example), though it's not so widely used. You can easily copy an 
entire Plone site from one server to another, but if you want some kind 
of "merge" of two live sites that may be hard.

>4) Survery Part 4 - Miscellaneous
>   a) What do you believe are the top selling points for Plone?

 - The Plone Community. There are few other open source communities 
with such friendship and professionalism. The technology is merely an 
artifact of the community. This means Plone is quite resilient to 
changes in the technology landscape.

 - Extensibility. Most Plone developers contribute to Plone core so 
that they can extend Plone more effectively for their own customers. 
This means that Plone's architecture is very open-ended.

 - Support. Similarly, there are hundreds of organisations who offer 
Plone support, training and development. See http://plone.net

 - Usability. Most people are drawn to Plone because it feels "human" 
and they like the look-and-feel.

 - Proven. Plone is used by small and large organisations across the 
world, and has been around for a long time.

>   b) From what you know about the Indymedia network, how well do you 
>      think IMC would mesh with the development community for the CMS?

I don't know much about Indymedia, but I know that the Plone community 
is very open and friendly. If you make an effort to communicate with us, 
and especially if you show a willingness to contribute something back, 
be it code, documentation, testimonials, sponsorship or something else, 
you'll likely get a lot of reward.

>   c) What are the top 3 areas you believe the development team for
>      the CMS needs to be improved?

 - Interoperability. Plone is very extensible and open, but sometimes 
different types of interoperability requires a degree of programming. 
More standardised entry/exit points for content (e.g. over some common 
XML format) would be useful.

 - Speed. Plone is fairly RAM hungry. Not unusably slow, but there is 
scope for improvement.

 - Documentation. It's very hard to document a system that is used in 
as many different ways as Plone is. There is lots of documentation 
(http://plone.org/documentation), but sometimes hard for people to know 
where to start. See also the aforementioned blog post.

>   d) Where do you see Plone in five years?

See my blog post above :) I think Plone will continue to grow. I think 
it will continue to adopt Zope 3 technologies, and that the community 
will be ever stronger.

Lastly, one piece of advice: I think Plone could be good for you. I also 
think it sounds like you want a fairly complex system. That means that 
you should first of all conduct a pilot to make sure it really does what 
you want. Then, you either need to invest significant time in learning 
the system, or hire someone to coach you, assist you and/or develop most 
of it for you. Along the way, you should do whateve you can to stay 
involved with the community, ask questions on the mailing lists and 
contribute code back if it makes sense.

Hope that help!

Martin

----- End forwarded message -----


More information about the imc-cms mailing list