UNESCO on the NetBeans Platform
These software tools, including the related multilingual documentation and training materials, are aimed at being accessible to Member States, while enabling them to be active and equitable partners in their development. This is particularly important for those who cannot afford to buy commercial software. Of all the software tools developed by UNESCO, the most popular has been the CDS/ISIS software for creating, updating, and searching textual databases. While project managers have an official register of 300,000 institutions and individuals using this software, the real number of beneficiaries can be multiplied exponentially:
The interview that follows focuses on the Windows version of UNESCO's CDS/ISIS software and the project relating to its redevelopment in Java on top of the NetBeans Platform. It is currently under heavy development, as the interview explains, but here is one screenshot (click to enlarge it) to give an impression, with more screenshots later in the interview:
What is UNESCO CDS/ISIS exactly?
CDS/ISIS is a menu-driven generalized Information Storage and Retrieval system designed specifically for the computerized management of structured non-numerical databases. One of the major advantages offered by the generalized design of the system is that CDS/ISIS is able to manipulate an unlimited number of databases, each of which may consist of completely different data elements.
CDS/ISIS is not a relational database system. Records are variable-length records and are identified by a unique ID called the master file number. Records are made of variable-length fields identified by a tag. They can be repetitive and can contain several subfields. For advanced users, CDS/ISIS offers a wide range of programming facilities, enabling the development of specialized applications through the use of its powerful print formats. For real computer programmers, an external programming library, the ISIS_DLL, provides all the necessary tools for developing CDS/ISIS based applications.
WinISIS is the Windows version of UNESCO CDS/ISIS database software and is distributed as freeware.
Many applications based on WinISIS have been developed on a voluntary basis to extend its capacities and are available for downloading from the UNESCO website as well as on partner websites.
CDS/ISIS is very popular in developing countries and it has a strong community of users.
And what's the connection between the NetBeans Platform and WinISIS?
While being very powerful and useful, WinISIS uses relatively old technologies that limit its capabilities and usefulness.
Thus it was decided to start the J-ISIS project. The J-ISIS project’s mission and goals are to develop a new multiplatform Free and Open Source Software (FOSS) CDS/ISIS suite that will provide the same successful concepts and functionalities as the existing UNESCO CDS/ISIS suite, while removing its restrictions. It aims at supporting a Client/Server architecture and UNICODE, while benefiting from the latest software development trends.
One of the objectives is also to maintain the assets and experiences of the existing users. However, the overarching project objective is to develop a long term solution that will be modular, easy to maintain, and possible to extend.
It was decided to use the following elements to achieve the solution described above:
- Java programming language. Because we want a multiplatform solution (Windows, Linux, Mac OS X, etc).
- NetBeans Platform. Because we want to build modular applications and use parts of NetBeans IDE, especially relating to the creation of our Graphical User Interface and Internationalization.
- Berkeley DB. Because it can manage variable-length records. (More about it here.)
- Lucene. Because we need to provide an indexing & searching solution.
- MARC4J. Because we want to support ISO 2709 and MARC bibliographic I/O.
- JFlex and JCup. Because, to shorten development time, we want to generate the print formatting language lexer and parsers.
- NIO-Based Server. Because the database server has to be scalable, using multiplexing, which can then accept thousands of clients. It uses the Java New I/O (NIO) packages introduced in J2SE 1.4.
How did you end up choosing the NetBeans Platform?
Our original application was written in C++ and uses some third-party commercial libraries. We are now rewriting it in Java, i.e., we are writing a completely new application that is supposed to provide the same functionality as before. Therefore, we chose the NetBeans Platform for the following reasons:
- Modularity. One of the project's aims is to create a modular application, one that is maintainable and extensible, and the NetBeans Platform allows us to use a modular approach for developing and distributing the application.
- Swing Extensions. The NetBeans Platform provides a window system offering a Multiple Document Interface (MDI), as well as many reusable GUI components, such as wizards and dialogs.
- "Matisse" GUI Builder. The IDE's GUI Builder facilitates the development of forms and dialogs in our application.
I think that in modern programming, the most complicated tasks relate to the GUI side of an application. The modular programming approach and the reuse of GUI facilities from the IDE make the NetBeans Platform particularly well suited for J-ISIS development. Furthermore, the NetBeans IDE's tools for quickly creating web applications are also highly appreciated.
Even though it isn't complete yet, can you share some screenshots of J-ISIS in its current state?
Here are some:
How is the development process going? How far are you? How many are working on it? What's the timeline?
We also plan to write a web application for providing web access through a servlet to the J-ISIS database server. The use of a Groovy console is also envisaged to provide additional functionalities to the user.
Several developers have contributed to the development of the earlier versions, but I am now the main developer. On the other hand, there are several users who are testing the various functionalities and reporting on the results and bugs discovered. J-ISIS is tested for storing, indexing, and retrieving data in different languages. Thanks to Sherif Hassan Fouad from the Library and Information Center Department of the Arab League, J-ISIS was tested for managing Arabic, including right-to-left display, indexing, dictionary displays, and searches of Arabic terms.
The tentative time line is as follows:
- End of April 2009: Provide, to a limited number of advanced WinISIS users, a pre-beta version of J-ISIS for further testing and checking of the WinISIS functionality.
- May-June 2009: Fix bugs and implement missing functionalities. Develop the web application for searching and displaying results.
- Beginning of July 2009: Provide a beta version of J-ISIS to the ISIS user community.
Are there some specific interesting things you've learned about the NetBeans Platform that surprised you or that you hadn't expected at the outset?
The reuse of the IDE log was quite surprising and helpful because it provides us with the ability to trace the application when we're troubleshooting.
Reusing the NetBeans Platorm window system, and the various GUI components that the NetBeans Platform provides, is also very helpful. Sometimes, however, it is difficult to know which API or module is providing a specific GUI component. Looking at the IDE’s source code is essential for understanding and reusing some its components
What are some challenges that you're facing at the moment?
At the moment, the two main challenges are:
- JDIC. We use JDIC with Mozilla 1.4.1 for displaying database records. It works well most of the time but, sometimes, it freezes the application without any message being produced. Probably my next most urgent task is to go deeper into this problem, while investigating and trying to solve it.
J-ISIS is supposed to be multiplatform, but the Mozilla binary is different and we have not been able to use the multiplatform version of JDIC.
- GUI Internationalization. We are looking for the best GUI I18N strategy for J-ISIS, knowing that it should be possible to dynamically change the language. At the moment, we are not sure about how to organize the bundle files and the ZIP file for deployment.
Any advice on the above two issues would be very welcome!
Note: For a list of other areas where you can contribute to this project, click here!
How come does it make sense for this application to be a desktop app? Isn't everyone and everything moving to the web at the moment?
In fact, we want J-ISIS to be usable both as a desktop application as well as from the web. The desktop approach makes sense because there are many small libraries and document centers in developing countries that need to use J-ISIS on a single host machine without any web servers.
You've put the application on Kenai. How is that of benefit to you? How do you see yourself using that infrastructure going forward?
Kenai is very useful as a forge for sharing application source code and documents, as well as binaries of the latest releases. We have not yet used its full potential, such as other useful tools like the various mailing lists and the Wiki.
Furthermore, Kenai is dedicated to Java applications and we are looking forward to attracting other Java developers who will contribute to the J-ISIS project. NetBeans IDE 6.7 will include facilities for working with Kenai projects, which I think will greatly simplify life when managing projects on Kenai.
Anything else you want to share with readers of this interview?
I have found the "SPARS Project & Osaka University" site very useful for searching examples of code (http://demo.spars.info/j/ ).