The product more or less died in the early 2010’s. The original site and servers perished in 2020 or 2021 (?). The domains (mmbase.nl and mmbase.org) were in possession of one of the original sponsors XS4ALL, and were transferred in september 2021.
The code base was copied to github a few years before.
MMBase is coded in java. It used to have its own templating language (SCAN), but soon templating was mostly done in JSP, and an extensive 'tag library' was provided.
An early history and overview was also published in IBM Systems Journal · February 2005
The last release was MMBase 1.9.6. Releases used to be in our own MMBase Maven repositories (http://www.mmbase.org/maven2, http://www.mmbase.org/snapshots), which don’t exist either anymore. I’ve tried to push some artifacts to maven central and sonatype) in the meantime. This work is not completed. The presently default branch on github is the MMBase 1.9 branch. May be it would be usefull the at least create and publish a 1.9.7 version and publish all its artifacts to maven central.
At the time (around ~ 2010 or so) we were actually busy with an MMBase 2.0, which would have involved 'portlet' functionality and such. We may try to release some of it after all. We also started to split up the mono-repository of MMBase 1.9 in several distinct github repository like:
bom: Just a maven pom file with dependencies
bridge: Collects interfaces to MMBase. MMBase used to have at least 2 implementations:
The core implementation, which backs all data by a relational database. The database layer uses XML’s to define possible tables, and supported several database implementations like MySQL, PostgreSQL, HSQL, Informix, and IIRC even Oracle.
The RMMCI implementation, which is backed by another MMBase via RMI. This was used e.g. to create a workflow with 'publishing', where via RMMCI data was synced.
taglib: Used in templating, talks to the MMBase bridge, but also contained a lot of utility tags.
utils: Collects several utilities. E.g. MMBase had its own logging framework (originating before similar products like slf4j)
Which hopefully will make 2.0 versions of these a bit more usefull. E.g. I’d myself sometimes wish I could use these nice
mm: tags again, or perhaps some classes from
org.mmbase.util even if I’m not using MMBase itself anymore.
Database abstraction and data models
MMBase has a database abstraction layer, but was always based on relational databases like MySQL or PostgreSQL.
Using XML configuration files one would define the possible tables (referred to as 'builders'), and possible relations between them (which themselves are 'builders' too). These 'builders' could extend from each other, and the 'core' of MMBase would always provide the most basic ones.
Using the thus defined model of data, 'generic' edit tools exists. Originally human editors were using these kind of editors.
Task based editors
Later appeared 'task based' editors, or 'editwizards'. These were using XML’s to define common 'edit tasks'
Caching and invalidation
Query results are cached, and events are sent to prune cache entries that may be effected. The exact implementation of that is pluggable, and configurable.
It is possible to run several instances on the same database. The instances may broadcast events between them using multicast or unicast. In the last case the cluster communicates its members to each other using entries in the database.
RMI and staging/live
MMBase is several ways highly modular
Define the possible object types (builders) that can be used in the current MMBase instance
Define a collection of 'needed builders', 'needed relations' and bootstrap data for those.
A component defines as set blocks of templated data.
Functions basically wraps any peace of functionality, and makes it available in templating.
The internals of MMBase itself are pretty well i18ned. Encodings are taken care of, and texts which may be displayed to users are normally translatable. It does not supply an out-of-the-box solution for actual content, but implementors could implement that easily.
Other projects hosted at github.com/mmbase
Originally at the subversion server at scm.mmbase.org
CMS Container: Developed by Finalist IT Group. It used to be used by a variety of web sites, I think mainly of municipalities and such
Didactor: An E-learning environment. Originally mainly developed by Johannes I think, and later by Henk
Template Engine: Used at VPRO, developed mainly by Kees
NatuurMonumenten: A CMS ('LeoCMS', referring to, I think, the municipality of Leeuwarden) Originally developed by Henk.
Forked because dissappeared themselves
A-Select: A single sign on system, which MMBase (the 'aselect sub project') had support for
kupu: A rich text editor, which MMBase (the 'richtext sub project') had support for
Sites still running on MMBase
The most noticeable one is:
There might be more?
This page is hosted at github pages, so currently are just static pages. We’re using adoc. The original documentation of MMBase was in Asciidoc XML’s, I’ll try to get them published here too somehow.
MMBase-issues used to be hosted in a JIRA installation on the MMBase Server. We lost the database but IIRC it wasn’t very functional anymore, because the installation was very much out dated.
Plans for the future
May be it is interesting to put some stuff in docker images to simply have a running MMBase 1.9, so we can see how it was like.
As I recall the taglib-documentation was quite nice, but was generated on the fly with JSP’s. Maybe we should do something about that and copy a version to github pages too
build the stuff from mmbase/documentation and publish somewhere below here