[imc-cms] [Midcom-devel] Indymedia.org CMS Developers Survey - please read!

Eero af Heurlin eero.afheurlin at nemein.com
Mon Feb 12 22:39:17 PST 2007


> 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 at lists.indymedia.org
> 
> 1) Survey Part 1 - Personal Details
>    a) Your name?
> 

Eero af Heurlin

>
>    b) Your geographic location?
> 

Finland, Europe.

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

10+ Application (==components) development and framework development.

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

No.

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

C

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

right now MySQL, since 1.9 any libgda compatible.


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

Midgard is the application server, it runs as apache module, the CMS
part is "MidCOM" or Midgard COMponents which runs on top of Midgard.

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

While the separate modules cause some installation complexity (you can't
just untar a file and have a running CMS) it also offers security and
performance (we have never had any breaks in Midgard itself, of course
since the applications are written mostly in PHP, breaks in PHP affect
Midgard installations). The MidCOM framework on top of which
applications are usually written is also a pretty clean design.

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

I was involved in a PoC for the finnish post, a normal server running
Midgard (with database and all) and Squid reverse proxy in front of
Midgard (still running on the same server) could acceptably handle 200
concurrent users (and this was without any proper data to actually tune
the DB or Squid)

> 
> 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 Midgard?
> 

MidCOM has ACL system which allows granting whatever rights also to
"EVERYONE".

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

One can use Lucene based indexer daemon and if that is available the
components will index/reindex objects on create/edit.


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

There is a library which allows components to easily parse and generate
feeds (and many components use it).

>    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
>       Midgard?
> 

Note that Midgard has a feature called "sitegroups" or virtual
databases, which allows you to host any number (up to servers load
scaling) of "customers", each sitegroup can contain any number of sites
(there is quota support for each sitegroup, etc)

Of course running multiple separate servers is also an option, the best
approach really depends on the case. I have deployed many single servers
 (some of which host up to 7 sites, all belonging to the same
organization) and a few hosting (for small hosting company).

>
>    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.
> 

Uploading is not a problem (it's just blobs), additionally the standard
widgets allow some image operations (automatic rescaling, rotations etc)
as for "real" image manipulation, that would probably require some sort
of Flash widget to be usable, the backend code for the widget to use
would be very simple.

I have been thinking of implementing similar "filter" library we use for
the image operations to allow easy resampling and format conversions on
audio as well.

>
>    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 Midgard?
> 

Midgad has a feature called Multilang which is meant just for this, you
can multiple content versions of same object (the object definition XML
["MgdSchema"] defines which fields are Multilang and which not). Midgard
uses UTF8 natively which means no character set issues and most of the
user interfaces have been localized to various languages (and adding new
localizations is very simple).

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

There is captha datatype which allows you to protect forms that are
accessible without login. Some components implement moderation etc.

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

yes (3 to be exact: one "event calendar" aimed for annoucing events on
websites, one "group calendar" for everyday business use and
"reservations" for reserving resources [like meeting rooms or cars or
whatever] they all use the same event object as base).

> 
>    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?
>

1. Log in
2. Go to page you wish to edit
3. From toolbar choose Page->Edit (or if AJAX editing is activated,
doubleclick on any editable field [indicated with onhovers]).
4. Edit
5. Save

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

This is entirely on the Components to handle, the discussion (forum if
you like) component has functionality to report abuse and moderators can
then review those messages.

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

Which networks and do we talk about filesharing or instant messaging or
what ? "Standard" person hCard widgets have support for jabber and skype
status icons for example.

>
>    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?
>

Now doing this securely is an interesting problem, supposing you still
want to mostly keep users totally separate (like 2d implies). The new
granular replication system (not production ready quite yet, but will be
in a month or so) would allow easy replication of select users/groups
across database (be it virtual or real) boundaries (inside a virtual
database all users can log in on all sites, but ACLs of course govern
what they actually can see/edit...)

>
>    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 Midgard?
>

Midgard runs entirely from database, but if you wish to make a static
mirror you can jsut use wget, Midgard has clean URLs. As for "real" (as
in also running Midgard) mirrors you can use replication (which can also
used for staging/live with approval check etc).

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

The style/templating engine is best of breed. the MidCOM components
framework is very good (it has a slight learning curve for new
developers, but offers a ton of services). The architecture is very
nice, there is the core library which fully abstracts  the database
(preventing SQL injections etc) to which the language bindings bind to
use the OO API.

>
>    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 enough of the way you really work but I'd suppose it would
fit very well (it's very flexible).

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

site builder documentation (developer documentation is very good [since
coding standards for MidCOM dictate proper use of PHPDoc] and end-user
documentation is also pretty good) is something that definetily needs
improvement. Installation needs to made simpler for "single organization
servers", now the installation supposes the server is going to be used
for hosting and thus asks a lot of questions that are unneccessary.

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

In wider deployment :)

But seriously: The system is over 10 years old already (and under
constant improvement) in five years we have fixed the current
annoyances, found new ones, fixed them, had some more great ideas,
implemented them, found more annoyances and fixed them. It's very
organic prosess you can't just extrapolate from here.

/Eero


More information about the imc-cms mailing list