This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

1. Evaluation of Midgard CMS

This is an evaluation of Midgard CMS test site against GnomeWeb/CmsRequirements . Feedback is welcome.

1.1. Test

Only testers going through the whole GnomeWeb/CmsRequirements/CmsTest can add their points. You can add your comments on the evaluations made.

Ranks: 0 Not supported - 1 Partially possible - 2 Possible but complex - 3 Possible and easy

Task

Greg

Jeff

Joachim

Quim

?

?

?

Comments

Publish static pages

3*

3

Joachim: not top-level. Quim: preview only via Aegir. Henri: You can preview and publish after approval if you utilize staging setup of Midgard. As to top-level pages, you just need to have appropriate permissions for that.

Publish news

3

3

Quim: preview only via Aegir. Henri: See above.

Define friendly URL of a page, including subdirectories

0

1

Quim: "Folders" can be renamed and they act as subdirs; you can't assign a URL like wgo/about to a page though; getting rid of '.html' seems not easy; the URL of wiki pages is linked to the title of the page, isn't it. Henri: the .html ending is not mandatory to use, depends how you set up the site navigation. You can also define your own redirection rules

Publish images in a page

3

3

Publish attached files in a page

3

Publish podcasts / screencasts

2

Quim: there is no module for that, but I guess you can do whatever at a code level. Henri: You just have to configure the datamanager schema used for news items to include the podcastable MP3 file (or whatever)

Integrate aggregated feeds in a page

1?

Quim: would this be done coding? Henri: no coding needed, just install the net.nemein.rss component. Now the server has only a small list of components installed.

Pre-publish a page making it available only to users with editing permissions

2

Quim: via Aegir. Henri: See staging/live above. You can also use ACLs here by removing Read permission from "Everyone" and giving it to content editors.

Customization of forms for different content types (i.e. case studies)

1?

Quim: I guess you can do whatever at a code level. Henri: Again, no real coding needed, just defining page schemas via datamanager. See the Snippet area in Aegir for examples.

Set feeds for new content

1

Quim: news are available only at "news". Henri: Feeds are available for some components, but not all. For example, also Wiki publishes feed of latest updated pages.

Track and diff of all changes made

Henri: see the wiki part for this, though now the default UI isn't exactly intuitive.

Notify that a page has been updated

0

Henri: The watcher system in Midgard enables you to plug in whatever notifiers you need. For example, net.nemein.ping watches for news item updates and pings several indexing services about them.

Revert changes

Henri: supported by RCS subsystem, but not integrated to UI.

Display when a page was last updated

Henri: This is up to the page template. For example, now the last update time is already shown in page meta tags.

Create localizations in the GNOME supported languages

Quim: i18n is not implemented in the test site, there fore can't see how a new language version is created; can't find the list of languages supported by Midgard.

Get language settings from browser

3?

Quim: Henri says it is supported.

Edit interface strings in all languages

Quim: i18n is not implemented in the test site, can't test.

Content as PO files or at least XML import/export

0

Henri: XML import/export is available, but now only through command line (easy to script a web UI for it though)

Set links between different versions of the same page

0

Control version system to detect outdated pages

2

Quim: since versioning is possible there would be probably a complex way to do this.

Visualization of status of translations

0

Create and edit menus and submenus

2

Henri: I'm not sure if you can consider clicking Create subfolder particularly difficult...

Assign pages to menu entires

3

Establish relations between pages

0

Henri: please define?

Create an automatic sitemap

0

Henri: Create folder of type "Sitemap"

Assign keywords to pages

3

Customize homepage to make it look like the mockups

3

Quim: my 3 is an assumption, "easy" if you are into XHTML/CSS/PHP I guess

Customize theme to make it look like the mockups

3

Quim: see above, I would like to know if there are constraints for theming

Set different templates for different sections

3

Quim: see above

Search performance (probably to be tested in a big website)

0?

Quim: no search available. Henri: Indexer is not installed. Would you like me to set it up?

Search results per type of content

0

Henri: Supported in "Advanced search" when indexer is running.

Index content in the server not produced by the CMS

0?

Create new accounts and assign permissions

3

Set permissions policies

2?

Henri: Use "page privileges" or "folder privileges". More info about the ACL system is available.

Set permissions at a page/section level

3

Check documentation for help

2

Activate caching system

?

Quim: is caching integrated? Looks like

Check statistics

?

Quim: I see the link in Aegir but brings no results. Henri: Again, webalizer isn't installed ATM

Backup database

0?

Quim: is it there web interface for backups? Henri: you can perform per-document backups using Aegir (click the disk icon), or full backups using Exorcist.

Upgrade new version

?

Quim: how are upgrades done? Henri: apt-get for Midgard itself, PEAR package upgrades for CMS components. Basically just apt-get update and pear upgrade...

Additional comments:

Regarding some items JoachimNoreiko marked as "0, not supported" above:

-- HenriBergius

1.2. CMS Platform

1.3. Security

Midgard CMS has had a very good security record ever since 1999. Since all I/O happens through a centralized C library (every content object is a GObject), SQL injection and other problems common with other PHP-based systems are easier to safeguard against. Similarly, database connection is opened by an Apache module at start-up and so DB passwords and other information is not available on PHP level.

All permissions in Midgard are handled through an Access Control Lists system, making it easy to control modification and reading permissions in a fine-grained way. Authentication can happen using any regular Apache authentication module, and can be checked against Kerberos or PAM sources, or Midgard's local user database.

Midgard supports regular Apache SSL features. In addition, it is relatively easy to serve the unauthenticated version of a site over port 80, and the authenticated version over SSL.

Midgard has a well-defined process for making both patch-level releases and major releases. The numbering system is quite similar to the one used in GNOME.

1.4. URLs

Since Midgard supplies its own Apache module, all URLs are by default clean and user-friendly. In addition to the regular, path-based URLs, every resource in Midgard also has a PermaLink that will remain the same regardless of site organization and can be used for linking. PermaLinks are also detected and utilized by some search engines like Google.

1.5. I18N

Midgard has a MultiLang system for localizing content objects, which is currently in process of being rolled into the MidCOM user interface.

Every content change goes into an RCS repository, so such view would be reasonably easy to implement.

This is done by default by the Midgard i18n service.

This is currently under work to be implemented into Midgard proper.

1.6. Authoring

Midgard has a component-based system where the site is created by creating folders managed by different components. The components include such content areas like static content, wikis, file downloads and blogs. The whole site and all contents are managed using a single consistent user interface.

Midgard also provides an AJAX-powered "double click to edit" interface for quick content modifications.

All content has approval status and publication/removal times that can be set as needed.

Editing permissions are managed using the ACL editor.

All edits are stored into the RCS repository together with timestamps and user information.

Midgard's metadata system includes information on editing times and users.

See RCS above.

The metadata scheme is easily extendable via a configuration file to include license selections etc so pages can be marked to be under a Creative Commons license or whatever.

1.7. Markup

The content editing system in Midgard can be set up to utilize W3Cs HTML Tidy to enforce correct and accessible XHTML.

Midgard's content structure is by default hierarchical. The content structure can be constructed into navigation using the Navigation Access Point system..

Midgard includes a Site Map component.

1.9. Feeds

Almost everything in Midgard provides RSS and Atom feeds (plus some other formats) of new content.

Midgard can also import RSS and Atom in Planet-like fashion. See for example Planet DBE

1.10. Theming

Layout can be developed completely by the site builders, though Midgard also provides some premade styles. Midgard's layout engine has been judged as one of the best in CMSs on several years by CMS Watch.

1.11. Expertise

There are some people in the community including TuomasKuosmanen who have Midgard experience. And in any case, HenriBergius is more than happy to help and answer questions.

apt-get or yum, should be reasonably easy.

See above. Midgard has a very good record on backwards compatibility. For example, several applications written for Midgard 0.1 in 1998 still run even though they don't utilize newer features.

Sources are available and easy to track using CVS, mailing lists and RSS feeds. Per-component updates can be installed using PEAR.

Midgard is integrated with the Lucene indexer for full-text search including metadata searching. It is possible also to make more advanced searches like "documents created last July with keyword X".

1.13. Backup

MySQLdump is the easy backup option. In addition, Midgard provides a content-to-XML serialization tool that can be used for importing and exporting content for backups and replication.

See above, clustering and replication is easy to do using the XML serializer and rsync. There are several production environments doing this.

1.14. Issues - Comments

From conversation with QuimGil :

  • user integration with other apps i.e. Drupal and Moin which are two that we already have.

Midgard is a PHP app, so generally some level of integration is easy to accomplish.

We ran one experiment couple years ago with OSCOM about building a "Frankenstein CMS" where different site areas came from different CMSs including Midgard. See my paper on that.

Midgard has a payment backend that provides plugins for different payment types. While this mostly includes Finnish banks, also Paypal is supported.

OpenPsa is a GPLd CRM system built on top of Midgard.

Compared to many other CMS projects, Midgard is actually a quite decentralized project. The development team includes people from at least half dozen different companies. While Nemein is currently the leading consultancy, there are lots of other companies providing services and developing on top of Midgard.

Another point with Midgard is that since the project relies much on GNOME libraries, the Midgard developers are inclined to watch the progress of GNOME quite actively, and are likely to help and tune the application according to needs. Usage of some GNOME libraries also helps in building some more integrated apps.


2024-10-23 11:10