[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