Copyright © This document is created under the Mozilla Public License
Abstract
This glossary tries to provide an overview of the terms used in MMBase and their meaning. As MMBase has evolved during the last years, its language evolved with it. This means that sometimes one term refers to two concepts, whereas in other occasions two terms are synonyms for one and the same thing. Therefore this document tries to describe the meaning of the terms used in MMBase in the different contexts. Next to this, the glossary tries to provide a list preferred terms.
Table of Contents
Below you see how a term is explained in this glossary. First an example of the term MMBase is given.
for managers: open source content management system, with strong multi-media features
for dummies: a tool by which you can build intelligent web sites
for techies: java based web-application, which acts as an object oriented interface to relational databases
for information analysts: content management system by which text, images and other content can be managed in an object oriented way
The different elements in the definition of a term are described below.
first definition with information about who uses the term or expression, and in what situation
second definition with information about who uses the term or expression, and in what situation
A geeky synonym for 'I agree'.
One of the elections in a vote
See Also vote.
A value for the `dir' attribute of reldef and insrel nodes. It only says something about the visibility of the relation. Every MMBase relation is bidirectional in the sense that it has a clearly defined source and destination, but that it not meant when we talk about `bidirectional' relations in MMBase.
See Also unidirectional, reldef, insrel.
The bridge is the set of Java interfaces which are to be used to talk to MMBase. If one uses the bridge, all actions are authorized by the security system, which does not happen if one talks to the core of MMBase directly.
Templating languages should communicate through the bridge, and for example the MMBase Taglib is doing this.
There is currently one `basic' implementation of the bridge, and also one alternative implementation which makes it possible to talk to a `remote' MMBase by remote method invocations.
See Also Remote MMBase Cloud Interfaces, MMBase Cloud Interfaces, core, MMBase tag library.
The xml configuration file which defines an object type in the MMBase object cloud.
The xml configuration file used by MMBase to create a table in the database.
Example 2. Example of a builder with only one field, named title.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE builder PUBLIC "-//MMBase//DTD builder config 1.1//EN" "http://www.mmbase.org/dtd/builder_1_1.dtd">
<builder extends="object" maintainer="mmbase.org" name="news" version="0">
<searchage>14</searchage>
<names>
<singular xml:lang="en">NewsItem</singular>
<singular xml:lang="nl">NieuwsItem</singular>
<plural xml:lang="en">NewsItems</plural>
<plural xml:lang="nl">NieuwsItems</plural>
</names>
<descriptions>
<description xml:lang="en">News item</description>
<description xml:lang="nl">Nieuws item</description>
</descriptions>
<fieldlist>
<field>
<descriptions>
<description xml:lang="en">Title of the news item</description>
<description xml:lang="nl">Titel (hoofd kop) van het nieuwsitem</description>
</descriptions>
<gui>
<guiname xml:lang="en">Title</guiname>
<guiname xml:lang="nl">Titel</guiname>
</gui>
<editor>
<positions>
<list>1</list>
</positions>
</editor>
<db>
<name>title</name>
<type key="false" notnull="true" size="255" state="persistent">STRING</type>
</db>
</field>
</fieldlist>
</builder>
See Also node manager, object type.
A bunch of interrelated nodes viewed as a unity.
All nodes from one MMBase instance.
All nodes inside an MMBase transaction.
See Also node.
Complicated database queries do not give back simple nodes, but fields from several tables. A record from such a table join is represented by a 'cluster node'. A cluster node is a special kind of virtual node.
See Also virtual node.
An MMBase developer with CVS committing access.
See Also vote, Concurrent Versions System.
Open Source version system, which is used to administrate MMBase source codes. Typical for CVS is that it is possible to use it without acquiring locks on files (which is the way it is used for MMBase). This means that files can be edited simultaneously by different people, but also that the risk for 'conflicts' arises (if a patch cannot be made automatically).
The MMBase CVS repository is hosted on the mmbase.org server.
In several MMBase security implementations the concept `security context' is stored in the owner field, to attribute rights to objects.
A 'User Context' is the MMBase security object which provides the essential identity information for a user: an identifier, an 'owner' abstraction (sometimes also called 'context') and a rank. It is provided by the authentication implementation and is used by the authorization implementation.
A 'Cloud Context' is the bridge object which provides clouds, modules, and empty lists.
In MMBase taglib a 'context' is a container for Taglib variables. It is also associated with every page, the 'context' tag, and (in MMBase >= 1.7) list tags.
MMBaseContext is a core MMBase class, which takes care of initializing MMBase and its configuration. It provides several static methods for that.
In a J2EE environment the web-application is associated with a 'context', which is basically the first part of the path. Often it will be '/', but this is not required for MMBase.
The java classes of MMBase which are `under' the bridge, and should be invisible for casual users. They provide the data persistence and other basic MMBase concepts like relations. The MMBase core is not protected by MMBase security.
All java classes from the 'src' CVS module which are present in mmbase.jar, so everything which is not an MMBase application, is MMBase 'core'.
MMObjectBuilder/MMObjectNode vs NodeManager/Node. When you want to define a new 'object type' with extra functionality then it is currently not possible to extend NodeManagers or Nodes, but you need to extend the core's MMObjectBuilder.
See Also bridge.
The developers@mmbase.org mailing list, sometimes shorthanded to dev-list. This is the most active MMBase mailing list, which is used by the developers community to discuss and answer questions about technical issues.
Information about the subscription and about other mmbase mailing lists can be found on the mmbase web-site.
See Also vote, Internet Relay Chat.
An exception from an edit wizard. It is called like this, because the error page of an editwizard is (was?) introduced with these big friendly letters.
Normally, but a bit unexpectedly, this is read as the completely opposite advice.
This is a reference to the Hitchhiker's guide to the Galaxy which according to the book of Douglas Adams had these words written on the cover.
See Also Editwizards.
Dove is a protocol to receive a part of the MMBase cloud in XML, make changes to it, and send it back. It was inspired by the SOAP protocol (and hence the name Dove, which is a brand of soap), but sadly is not compatible with it.
It was created for use by the editwizards. There is also a Dove servlet, which is not used by the editwizards, but which one could use for similar purposes.
See Also Editwizards.
Editwizards are `task oriented' content editors. Tasks are defined by XML and could for example be something like `create news articles and relate one author and several images to them'. Editwizards are not `generic' editors, which means that they not automaticly allow for creating all possible types of relations, though some parties have been creating tools to automaticly generate all possible editwizards.
Editwizards communicate with MMBase by the 'dove' protocol.
See Also Dove, Don't Panic!.
MMBase supports inheritance. This means that every `news' node is also an `object' node. You can also extend your `mynews' builder from the `news' builder. All fields from news are then inherited to mynews, and mynews nodes can be treated as (because they are) news nodes.
See Also builder.
A relation instance. This is special kind of object type which contains relation objects.
See Also builder, object type, reldef.
The channel #mmbase of the Slashnet IRC network is an active scene which is used by MMBase developers to discuss MMBase in a casual way. It is also much used to get help for installation and implementation issues.
See Also developers list.
Very object oriented open source content management system based (a.o) on java servlet technology.
See Also Everywhere else.
See bridge.
The MMBase foundation covers the non-technical issues with regard to MMBase. The tasks of the foundation includes organizing MMBase Events, facilitating communication between MMBase users, providing management information about MMBase in presentations and brochures, etc. etc.
MMBase committers who are supposed to meet every Thursday to talk about MMBase.
A taglib implementation for MMBase. Tags to access MMBase data, but also more general tags. It consists more or less a complete (however simple) language. The taglib can be used in combination with pieces of Java in your JSP pages.
See Also tag library.
An piece of (MMBase) functionality which is configured by a XML file in <config>/modules/. MMBase itself can be seen as a group of such modules.
When talking about CVS, a 'module' is a kind of main entry of the repository. The MMBase CVS repository currently has the following modules: src (core java classes), documentation (docbook sources), html (general content for the mmbase distro), config (example configuration) and applications (components supported by the community).
An independent piece of software which forms part of one or more larger programs. Different languages have different concepts of a module but there are several common ideas.
Modules are usually compiled separately (in compiled languages) and provide an abstraction or information hiding mechanism so that a module's implementation can be changed without requiring any change to other modules. In this respect they are similar to objects in an object-oriented language, though a module may contain many procedures and/or functions which would correspond to many objects.
Definition copied from The Free On-line Dictionary of Computing (09 FEB 02) [foldoc]See Also Concurrent Versions System.
MMBase objects are generally referred to as 'node', especially in the bridge. A normal MMBase node corresponds to one record in the database (in the table(s) associated with the builder). We recognize also 'cluster nodes' and 'virtual nodes'.
Every Node is uniquely (inside the MMBase instance) identified by a node number. In editors this number field is sometimes even be indicated with 'Object'.
See Also cluster node, virtual node, bridge, object.
This bridge concept represents the object which describes meta information (which fields are available and so on) about node types, and serves to create new nodes and so on.
A synonym for `builder'.
...
Example 3. Example of use in spoken language
The nodemanager of an image makes it possible to scale images dynamically.
See Also builder, object type, bridge.
The base builder, from which every other builder extends.
More general term for 'node'.
An instance of a Java class.
See Also node, builder, inheritance.
See cloud.
An object type defines an object in the object cloud
...
Example 4. In spoken language
The object type of the employee object only contains fields which describe the employee, but are not related to its position in departments and projects.
See Also builder, node manager.
A list of steps. The definition from the bridge's javadoc follows. A comma separated list of node manager names which specifies the path that should be followed. It is possible to explicitly specify a relation manager that should be used to go from one node to an other. If no relation manager is specified between two nodes, all possible relation managers that can be used to go to the next specified node in the path are followed.
See Also Search Query, step.
An MMBase Node defining a link between to other MMBase Nodes. A relation can contain other data. A relation instance.
An allowed relation. Sometimes also 'typerel' entries are referred to as simply 'relations'. It would perhaps be clearer to call these 'allowed relations'
A relation definition or reldef instance.
The builder defining relation roles. It has several fields, which are not all equally important. The most important fields are `sname', `dir' and `builder'. `sname' is the identifying name of this role. `dir' specifies if relations with this role are uni- or bidirectional, and `builder' defines the relation builder (so the actual fields the relations has, and in which table the relations will be stored).
`sguiname' and `dguiname' can be used to attribute names to the source and destination sides of the relations, which can be used in GUI interfaces to describe the relations. The remaining field is `dname' which has no real use. It's original idea would be the `role' as seen from the destination node, but this is not used (in stead, to define that relations must be followed in a certain direction the search direction is stated explicitely).
An alternative implementation of the bridge. Can be used to implement life/staging MMBase's, but can also be useful to inspect/test a running MMBase, because it can run stand alone, and talks by remote method calls to an MMBase instance.
See Also bridge, Web in a Box.
The name of an reldef object. Practicly, it serves as extra way of distinguishing relations, and connects a relation builder to it. One could for example define the role `author' (by creating a reldef object). This role could then be used to allow relations between news and people.
The most often roles are `related' and `posrel', which both lack any real-life semantics.
Two `related' nodes are just that. Two `posrel' related nodes are also just related, but to the posrel role normally the `posrel' relation builder is associated, which allows for one extra field in the relations; the `pos' field with integer type, which makes it possible to order relations.
The original MMBase template language. An interpreted language characterized by several parse stages of the source. Commands, parameters and variables are recognized by $-symbols. SCAN HTML pages use to be mapped to `.shtml'.
Use of SCAN is nowadays discouraged in favor of more modern and standardized scripting manner like JSP and (MMBase) taglib.
Because the long history of SCAN, SCAN-specific legacy code can still be found on a lot of places in the MMBase core code. Even the bridge way to handle with `MMBase modules' is influenced by SCAN.
See Also MMBase tag library, core.
MMBase has a completely abstract way of querying its storage layer. This allows for a great deal of database independency, and also for efficient and object oriented manipulating of search queries. The other option is to use the String oriented SQL language, and this was tried in MMBase < 1.7, but was abandoned as non-feasible in a database (or even storage) independent product as MMBase is.
See Also Structured Query Language, storage, step.
One of the items of a path in a query. You could often read it as `database table' or `builder'. Step is an abstraction of this in the Search Query framework of MMBase.
See Also Search Query, path.
MMBase has an abstract `storage' layer, which is used for persistency of MMBase objects. Currently only database storages are implemented so you can safely read `storage' as `the database which MMBase is using'. There are several types of databases which are supported however, most notably Informix, MySql, Postgresql and HSql.
See Also Search Query.
This is the `general' language to talk to databases. The common denominator of all databases in SQL is actually very small, which largely limits its use for database independent products like MMBase.
To work around the babylon of SQL dialects, MMBase makes use of Search Query objects.
See Also Search Query.
A Tag Library is a SUN defined way to define extra XML-like tags. A tag library is implemented in Java and currently only available in mixture with JSP-pages.
See Also MMBase tag library.
An XML way to add content to an MMBase cloud. It is hardly used anymore.
See Also XML importer, SCAN.
In MMBase object types are objects too. These nodes are stored in the `typedef' builder. It generates a small chicken/egg problem because the typedef type itself is also present aa a node of itself. (Normally the typedef node will have to have number 1)
Typerel is the MMBase builder which defines the allowed relations. If for example you want to create a certain relation from news node to an URL node, then a corresponding typerel record, which allows that must exist.
Inheritance is taken into consideration, so if you allow from object to object (with a certain role), then every kind of relation (with that certain role) should be allowed (because all node types extends object). It is by the way usually not very prudent to actually do this, because allowing every relation will often enforce MMBase to do very complicated queries, which can be very bad for performance.
See Also inheritance, relation, role.
A value for the 'dir' attribute of reldef and insrel nodes. It only says something about the visibility of the relation. A unidirectional relation is not visible from the destination node.
See Also bidirectional, reldef, insrel.
A non-persistent node, which means that you cannot `commit' such a node. Generally no builder xml is associated witch such a node.
See Also cluster node.
Major decisions on MMBase implementation are done by voting by committer on the developers list.
See Also +1, committer, developers list.
A packaged content management system based on MMBase. Typical for WIAB is a fixed object model and a distinction between life and staging environments in two separate object clouds. It was developed for the Amsterdam municipal by Framfab but is maintained by Finalist now.
See Also Remote MMBase Cloud Interfaces.
A way to synchronize data from another source with MMBase data. This happens in a fuzzy way, to avoid duplications because of minor inconsistencies in the source data.
This is part of the MMBase documentation.
For questions and remarks about this documentation mail to: documentation@mmbase.org