Makumba Whitepaper
The basic idea of Makumba application development is as follows:
-
the Organisation describes the data in a simple and neutral Data
Definition language
-
a database layer reads the Data Definition and automatically generates
code that represents and processes the data in a database engine. Several
SQL
engines are supported for now. Data is fully portable between different
Makumba supported databases. Soon, data will be represented in XML
-
a presentation layer reads the Data Definition and automatically generates
a user interface. HTML interface is generated for now, through a JSP taglib
-
the webmaster can adjust the default HTML presentation to the lowest detail
-
OQL can be used to interrogate the database.
The database layer uses the data definition to translate the OQL into the
host SQL and provides the data in the format required by the data definition.
-
the programmer can add "organisational logic" between the interface and
the database depending on the organisation's needs
The following are high priorities of Makumba:
-
phased development (easy to start an application in order to collect data,
and to adjust it later on when further processing is needed)
-
simplicity (a minimum necessary number of features, small code, easy to
maintain)
-
distributed development (people developing at different locations at different
times)
-
collaboration between programmers and webmasters, allowing them to put
their skill and inclination to full use and not do jobs that are too boring
or too difficult for them
-
ability to finely adjust HTML interface
-
platform and database engine independence
-
data compatibility (for copying and replication) across multiple databases
The following are _not_ high priorities of Makumba, but can be addressed
later:
-
speed (most current database drivers are the minimum necessary, but they
can be optimized using stored procedures and engine-specific features)
-
multiple features for complex needs
Why didn't BEST use JSP, Lasso LDML, Cold Fusion CFML, etc?
We have looked at the mentioned technologies and found several problems,
that we try to solve in Makumba
-
they are commercial (CFML, LDML)
-
they don't put data definitions to full use in order to generate default
interfaces during rapid application development
-
their SQL queries are SQL engine dependent, making applications not portable
across SQL engines
BEST developed Makumba out of the following needs:
-
they need a simple technology to base all the applications on. BEST
had several legacy applications built with different technologies (Java,
Lotus Notes), with different data formats, that needed to communicate better
-
distributed development: BEST developers are not co-located, and meet rarely
-
multiple platforms and database engines: a typical developer would use
Windows and ODBC or MySQL databases. The developed software runs on Unix
(Solaris or Linux) with Postgresql
-
multiple member inclinations: programmers don't like to do web pages, so
the simple interface that they generate with Makumba can later be adjusted
by people who like to write web content
-
need for small number of features that can be learned by members in a short
time. BEST students only stay 3 years on the average in the organisation
-
applications need to be started up fast and adjusted later on, when specialised
people are available for programming work. In the meantime, data can be
gathered.
-
they already had experience with websites generated by Java servers: Java
CGIs, servlets, JML
(a technology they invented in 1996, similar to nowadays JSP, etc
-
they found Lotus Notes programming much too heavy, with lots of unneeded
features, hard to learn and its visual programming model was unsuited for
distributed development.
-
the Notes databases didn't intercommunicate sufficiently due to the specialisation
need to achieve such communication
-
Lotus Notes web content adjustment possibilities were low comparing to
the HTML-oriented solutions like JML
and JSP