Hi Kai, what is Semtinel and how did you get started developing it?
Semtinel is a research prototype for the analysis of thesauri in order to support their semi-automatic creation, modification, and maintenance. Thesauri and other hierarchical concept schemes, like taxonomies, are widely used in the library field to classify and describe the subject of resources (like books). The maintenance of these thesauri is cumbersome and time-consuming and questions about the quality of a thesaurus and its suitability for a specific purpose are not easy to answer.
To answer such questions was my motivation to think about new ways for the analysis and visualisation of thesauri and finally to develop Semtinel.
What are the main problems Semtinel tries to solve and how is it unique?
Semtinel, while definitely being a research prototype, is an extendable framework, that allows the import of data (thesauri, documents, and links between both) in various formats and provides several visualisations and statistical analyses that can interactively be combined by the user. It is also possible to develop new visualisations or analyses. We try to keep the interface and the framework as simple and intuitive as possible, focused on our specific tasks.
Some of the functionality is comparable to similar frameworks, like Protege for ontologies. But Protege, for example, is very complex and uses a more general approach.
How did you decide to base this application on the NetBeans Platform?
The very first prototype of Semtinel was actually developed in C# using the .NET framework. After the first successful presentations of the prototype at conferences, I thought about a clean reimplementation. During this time, I decided to switch to Java, mainly due to the fact that much more (open source) software in the research community is based on Java and more researchers, including our own students, are used to it.
For me, it was clear that I had to use a rich client platform for further development, as my first prototype already was too complex and otherwise I would have needed too much time for the development of the actual user interface.
The decision between Eclipse and NetBeans was not so easy. I had some experiences with Eclipse RCP and used the Eclipse IDE for years. To make a long story short, the reasons for the NetBeans Platform were:
- I had NO experience with the NetBeans Platform (usually a bad reason, but a good one, if you are curious...).
- 100% Swing based (arguable, if this is an advantage, but I liked it).
- And finally and most important: the very good graphical GUI editor. Almost as good as Visual Studio and the lack of such a (free) editor in Eclipse was always a pain for me.
Of course, I checked by feature comparison, a lot of reading and some tests, that the NetBeans Platform is as powerful as Eclipse RCP and that there is no major drawback. My conclusion here was that there is no better or worse, both seemed to be very good and stable. That's why I based this far reaching decision on the abovementioned minor points.
What are 3 ways in which you have benefited from the NetBeans Platform?
- Easy implementation of all these things that are usually "forgotten" in software implemented by researchers: background tasks, progress bars, menus...
- The NetBeans Platform influenced the way I developed Semtinel. It encouraged (or forced, but that sounds negative) a consequent modularization which kept the code manageable. The modularization is especially great for Semtinel because we have students who develop their own modules as part of their theses. This way, they do not disturb the main development of the application.
- Umm, I just like it, does that count? :-)
Was there anything that pleasantly surprised you about the NetBeans Platform while you were working with it?
Nothing special, rather a lot of small things. In general, I found it very pleasant that after a (not so hard) learning phase, the development was really straightforward and fast. So I definitely saved a lot of time in the long run by using the NetBeans Platform, even if it needed some investment at the start.
Anything that could/should be improved about the NetBeans Platform?
The main thing: incremental builds! That is something that is definitely better solved in Eclipse. I know, it is due to Ant and using Ant has a lot of advantages. But I admit, I am a "small change, compile, test, small change, compile, test" developer and then it is really annoying. Module reloading and using a module suite on top of the Semtinel core modules helps sometimes, but not always.
Do you have a few tips (e.g., code snippets or hidden features) that you think other NetBeans Platform developers should definitely know about?
I developed a quick and dirty NetBeans Update Center in PHP and described it here:
For me, this is very useful, as my students can just upload their new modules and distribute them this way to other students.
I need no special infrastructure other than a PHP enabled webserver. And as much as I like Java, usually there is no application server running on university department servers.
What's the future of the application and can the open source Java community contribute in some way?
Currently we are (still) working on a release version for the interested public. But anyone who is already interested can get a current version of Semtinel and the source code. I hope that the development will go on, it mainly depends on researchers and motivated students who are willing to do their research with it. I talked to several libraries who maintain thesauri and who are willing to test Semtinel and give me some feedback. The ultimate goal of course would be a user community who indeed uses Semtinel in a productive environment.
Anything else you'd like to add?
I would like to thank the developers and users of NetBeans who gave me this great piece of software, as well as the necessary knowledge how to solve my problems, whenever I searched for it on the web. And more than one time I found a solution on your blog, so I also want to thank you personally for your efforts.
Thanks Kai and all the best with the ongoing work on Semtinel!