CMSFAQ
From techmeet
[edit] Indymedia Content Management System (CMS)
More related Informations about the CMS...
... and the Background of the Network and there needs.
[edit] Frequently Asked Question (FAQ)
This FAQ tries to be a summary for the discussion of the last years, to help new developers to understand the requirements and goals of the new cms.
[edit] Why does Indymedia need a new CMS?
- The current Codebases are outdated
- We don't have enougth developers to work on Mir or SF-Active, the two maijor Codebases in the network
- The remaining developers for Mir and SF-Active are busy to just keep things running
[edit] What is the current status of the CMS?
After two years of discussion, we are still at the scratch-board and had a long research of all kind of possibilities. Make sure you have a look around in the CMSSurveyList
[edit] What is the outcome of the Research?
At the end of the reasearch we had three groups
- Drupal
- Plone
- PHPCake / new development / new cms
[edit] Drupal
There is and was a active group of Drupal hackers, even before the hole CMS Discussion in 2006. There are a couple of IMCs who are using Drupal. For some small IMCs, Drupal is a very good choice, since it is easy to customize and does not need any big programming experience for customizing.
If you know Drupal, join the kids and help them. IMC Drupal Development
[edit] Plone
It would be possible to use Plone to recreate the current features of a Mir based Indymedia Site. It would even use the same amount of Server Resources. More informations on the Plone Wiki Site.
[edit] PHPCake / New CMS
This Group would start a new CMS.
[edit] What are the Requirements for the new CMS?
There is a CMSWhatWeWant Feature Request List from 2006 that will give you a good overview of the needed Front-end functions.
However, there are more requirements and ideas for the back-end and the general structure of the CMS. We will try to address these ideas and requirements in this FAQ.
[edit] Why a new CMS?
If you read the Request List, you might get the impression that there are at least 10 CMS out there that would make it possible to create a Indymedia Site.
However, there are 4 requirements that no CMS out there can fulfill.
- A modular structure to separate and spread the functionality over different servers. (The search on one box, the admin on another etc.)
- Lightweight and fast
- A Static Producer CMSProducer
- Content Distribution and Replication (Middleware)
We are aware of the problems that come with a new CMS. Without a large group of developers, we will end up in the same situation as indymedia is now.
The old codebases had a very specific functionality, special purpose, and the lack of good documentation made it hard to use them for anything but indymedia. With MIR we have a flexible software, but it was never used outside of Indymedia because of the different approach and hard setup.
[edit] Why should i separate the CMS over many servers?
First of all, it happens that the State and Police is taking away our servers. Using many servers in many country's makes it harder to take down the hole network at once. Having many different servers with different resources creates a big need for a very flexible CMS to optimize the usage of the servers.
[edit] Why not use the normal Cache and Back-end Setup?
We already use squid, varnishd and mod_proxy together with the old PHP CMS, but this setup is not fail-save at all. As soon as you take down the back-end server, the hole website is down. No cache will continue to deliver a half working website.
[edit] How would you split a CMS over different servers?
You can separate the functionality of a CMS into different categories.
- The output of any kind of static content
- The output of dynamic content like search results or tag clouds
- The interaction for any write process to the site, adding a tag, publishing a article.
So the idea is, that each of these modules will continue to work, even if the database and back-end server is down, they should have there own autonomy.
[edit] How does that look like in detail for...
[edit] ...static Output?
Output of static content like images should be no problem. Each of these static output servers will have a complete copy of all static files. It would also be possible to create servers based on the type of the content (audio, video, images etc). This gives more flexibility for the usage of the bandwidth and disk space.
It is also a big help to have the text content as static .shtml Websites available. This makes it possible to continue to share all informations even if the database and back-end is offline.
We had moments in the network where we just edited .shtml files on a couple of mirrors, to keep the users informed about the outage of the back-end server. Try that with any kind of cache.
For more informations about this topic, read the Producer Wiki: [1]
[edit] ...dynamic Output?
Well, you will run into some problems here, that will have a impact on the structure and functionality of the web-site.
- You can not access the database directly, but have to work with a local cache of the informations you need. That Cache would only change in case of updates of the related content.
- Example 1: A search would have a index of all articles and there titles, summary, but not the full article.
- Example 2: A tag and categories browser would only have the article <> tag mapping
- If you use the static shtml files to display articles, you can not mix them with dynamic content.
- You need to separate your website into a dynamic and static part
- Or you need a dynamic and static presenetation of the same site. After a User Login, you would switch to the dynamic presentation.
[edit] ... User Interaction
Well, here you would implement all the possible write operations via CGI and AJAX Interfaces.
[edit] How can two server exchange informations ?
Well, the most common way to exchange informations between servers are "Remote Procedure Calls" RCP like SOAP or XML-RPC. However, they are very limited in the functionality and the XML Overhead don't make them lightweight.
There are some Enterprise Solutions called Middleware and they Provide Functions we need and you would have to re implement with RPC.
- Save Transmission of any Data
- Subscriber / Publisher Model
[edit] What Middleware would you use?
We stumbled over the Middleware Solution ICE from ZeroC and hope it will be a good choice. There is still a need to have a closer research of ICE, to make sure a possible setup would scale and be fast.
[edit] How would you intigrate a Middleware into a CMS?
If you think of the Model View and Controller, the Middleware would be a Layer in Front of the Model.
Lets have a look at this Graph
http://cyberpunk.cl/malandro/03.jpg
"publish" is the view, frontend the controller. What we add now, is a abstraction layer called "publisher".
The Workflow for creating new content looks like this:
- publish: Verify the Input Data
- publish: Pass the RAW Data to the frontend
- frontend: Create the Content Object
- frontend: Pass the Content Object to the Publisher
- publisher: Transfer the Content Object to the Model Server
- publisher: Pass the Content Object to the Model
- model: Transform the Content Object to a Database Object
- model: Save the Content in the Database
[edit] More Informations
[edit] Where can i find some Code?
There are two projects by now that came out of the CMS Discussion.
[edit] HyperActive
A Ruby on Rails IMC Site that shows new Features like Events and Places. It was build for IMC Denmark, but gives you a good Overview of the possible Look of a new IMC CMS.
[edit] Malandro
- http://codecoop.org/projects/malandro/
- http://codecoop.org/scm/viewvc.php/main/?root=malandro
- http://cyberpunk.cl/malandro/ (Graphs)
Malandro is the first code that is using the ICE Middleware. At the moment (April 2008) it is not more then a raw skeleton of classes to show the structure and setup of the new CMS. However, it is possible to add new content, so you can see how all components are working together.
Malandro is using:
- Python
- CherryPy
- Ice 3.1.2
- SQLalchemy
- Cheetah or Clear-Silver as Template Engine (still testing)
[edit] How do i get in contact?
- IRC: irc.indymedia.org Channel #cms
- Mailing-List: http://lists.indymedia.org/mailman/listinfo/imc-cms
[edit] Who is participating ?
Feel free and add yourself to the List! :)





