Makumba is a technology designed by BEST that helps you to rapidly develop web applications that keep their data in a database (i.e. data driven web applications). It is implemented in Java and offers a Java API and a JSP tag library to the web app developer. The technology has been in use since late 2001, and is being further developed, based on users' experience and requests.

If you are interested in Makumba you might want to take a look to ParaDe, a Parallel Development environment. The only thing you need is an internet connection and a browser to develop your application!

Makumba is open source and the product of the volunteer work of individuals who have a background in the IT Committee of BEST. Everyone is welcome to use and contribute to Makumba.

Description of Makumba around a short example First you describe the data in a text file, called data definition. It contains lines like:
    name= char[30] ;Name
    dob= date      ;Date of birth
Say you call the above record a "Person". Makumba can use this information to perform the right action when manipulating the database or generating HTML output. Of course, complex applications have more types of data, with pointers from one to the other. Makumba can generate SQL statements that create the needed tables and do read/write operations in a database of your choice. It currently supports MySQL, Informix, DB2, PostgreSQL and ODBC but many other database engines can be easily supported if needed. What's more, you can copy data from one database to another (this is very important in BEST, we port data a lot, we develop on Windows with ODBC or MySQL and run on Linux with Postgres, etc). At the interface level, Makumba can generate html for inserting, editing, viewing and deleting data from the database. You don't have to care about details of HTML forms, parsing the CGI arguments, composing SQL statements etc. All this routine work is done for you, but you can freely build upon it. For instance, following code will show a selected person. You mix HTML and Makumba jsp tags to get the desired view.
    <mak:object from="general.Person p" where="uniqueCondition">
               <b><mak:value expr="p.name"/></b>
               was born on <mak:value expr="p.dob"/>
    </mak:object>
If you wish to add a new Person to your database, you can just write the following code. It takes care of creating an input form in HTML, and arranges for all necessary database commands to be performed after submit.
    <mak:newForm type="general.Person" ... >
            Name : <mak:input name="name"/> <br>
            Date of birth : <mak:input name="dob"/>
    </mak:newForm>
Makumba will choose appropriate input controls for each datatype, as indicated by the data definition above. Behind the HTML pages, developers can optionally write "business logic" in Java that adds certain operations to the basic actions (insert, edit, delete). For this, the full power of Java, enhanced with the Makumba API for e.g. database handling, is available. You can see more in a slightly more detailed example.

So more or less this is it. Lotus Notes does the same but we found it impossible to use it because of visual programming (rather than plain text files) and other problems. Other tools (say MS Access) have similar problems, plus we don't want to be dependent on one technology. We want to work with plain text files because it's easy to cooperate at a distance using them. We want everything to be simple for the web app developer. That's why all routine actions are handled by Makumba.

These webpages might be a bit out-of-date, as most our efforts are going to using, developing and designing future enhancements of Makumba. We apologize for that.

#### Worldwide mirrors

SI, EE, RO, US
2001-2005