The EU, the Police, Ballistic Crime, and NetBeans
We are Chris Bates and Lukasz Jopek. Chris is Senior Lecturer in Software Engineering at Sheffield Hallam University in the UK and the Scientific and Technical Co-ordinator of a European research project called Odyssey. Lukasz is one of the developers on the Odyssey project, with particular expertise in building client applications using the infrastructure of NetBeans IDE.
Ballistic crime is a problem across Europe but it’s often dealt with as a set of isolated incidents. "Ballistic crime", which includes familiar gun crimes, is any criminal incident involving a weapon that can fire a projectile. Such weapons range from bows and catapults through air guns to military hardware. Many gun crimes, such as the smuggling of weapons or the illicit manufacture of ammunition, are linked both to each other and to other criminal activities, such as the trafficking of drugs or people. These are potentially some of the most serious offences with which the Police deal.
One might imagine that given the potential severity of ballistic crimes, data about them would be shared within and between nation states, but this isn’t done in a structured way at the moment. In some countries, the Police have excellent IT infrastructures and good process for gathering and collating data about serious crimes, but that is not always the case. In addition, there are transnational systems at Europol and at Interpol, but individual forces may not always share their data or, in the heat of an investigation, may not use them to search for additional data.
The European Commission has a research funding programme called Framework 7, usually called FP7. Security is one of the areas which has been relatively well funded in FP7 – not just physical security or obvious anti-terrorism measures, but the security of citizens across the European Union. Odyssey fits into that remit.
The Odyssey project is building a prototype platform which would let Police Forces and other law enforcement agencies easily share data about incidents of ballistic crime. Such data might include the details of individual bullets, spent cartridge cases, or the location of a crime. The EU has necessarily strong legislation to protect the privacy of individuals, which means the platform lets users share only limited information about people, whether they be victims or suspects.
These data can be manipulated in a variety of ways. The main data set is stored in a PostgreSQL database, where it is available for relational querying. Data is exported from PostgreSQL into a number of alternate back-ends, which provide a variety of non-relational querying capabilities. We use SAS 9.2 so that data sets can be mined in a variety of ways, an Intensional Querying back-end makes suggestions on improvements to the queries which are asked, finally, a semantic engine supports richer modes of querying through ontologically valid requests.
We could not expect that users would know how to query four different back-end systems – in fact, we expect that they wouldn’t know how to work with any one of those systems. So we built a Domain-Specific Language called OSL which acts as an abstraction on top of the platform. The user either writes queries directly in OSL or, more typically, uses the client application to drag and drop icons which represent queries, then uses a Properties dialog to parameterize the query.
Why does Odyssey need a desktop client?
The client had to be usable by people who are not really computer-literate and for whom the PC is simply going to be a tool. It had to support drag and drop, results had to be displayed as graphs and the graphs had to be interactive and editable. We needed to be able to play with the properties of both queries and results and to have multiple queries in-play concurrently.
What kind of technical requirements does the desktop client have?
Because the user-base is almost 100% Windows XP, we didn’t have to go cross-platform. We could have developed using Windows, but wanted to stay with Free or Open Source where possible. In the Police, as in most public services, you’re going to come across computers which are a few years old and you want a reasonably lightweight technology which they can all run.
Why/how did you decide to use the NetBeans Platform?
The Odyssey prototype is built using Apache ActiveMQ for messaging between the various clients and servers and a Java-based security infrastructure. We saw the sense in building everything in Java – we had enough complexity dealing with the problem domain.
Lukasz is a Java developer by inclination and knew that pure Swing doesn’t have a sufficiently rich feature set. Ultimately, it came down to a straight fight between Eclipse RCP and NetBeans Platform. We both prefer to use the NetBeans IDE, so went with the NetBeans Platform.
What have you found to be the NetBeans Platform's most useful features?
We've used a number of features to simplify the development process.
- Building with modules forces you to structure the codebase, whilst the whole lookup mechanism means you don’t have to figure out your own way of getting the modules to interact.
- We’ve used the NetBeans Platform's in-memory XML layer file system quite extensively to manage resources – we have a lot of our own objects in use at any one time and the NetBeans filesystem is a relatively simple approach to managing them.
- The most useful aspect of the NetBeans Platform was probably the Lookup API, which enforces modular design.
- The Matisse GUI Builder is very nice - especially as a Free tool, especially when compared to Eclipse's commercial alternatives.
- The Visual Library is extensively used.
What was the learning curve like, what resources would you recommend?
It was, and still is, extremely hard to learn the NetBeans Platform. In the first place, one is faced with both the complexity of the application domain and of the NetBeans Platform. Developing NetBeans Platform applications is not easy, because there are so many new things to learn at once. This continues to be a problem – every new library adds its own layer of difficulty.
The online tutorials from the community often provide an easy start with new aspects and we found the developer and user community very helpful. People like to share resources and sometimes complete projects.
The documentation on the project Website is certainly extensive. Unfortunately, it becomes obsolete far too quickly. The NetBeans Platform changes more rapidly than the documentation. I guess this is an area in which the community should become more involved. Groups like ours really ought to be writing or updating tutorials, etc. Often tutorials cover one specific use of an API and, because they are meant to give an easy start, they often do not cover best practices or ways the API should be used. Instead, they show a simple working example and if you need anything more complex you're on your own.
Any unexpected surprises (good or bad) while you were using the NetBeans Platform?
The NetBeans Platform offers many great features out of the box, where to name a few we were positively surprised with the global Lookup API, features of the Visual Library, and the use of context sensitivity.
On the bad side, updating from version 6.7 to 6.9 required recreation of the projects.
What's the roadmap of the desktop client? What new features are planned?
The Odyssey project finishes at the end of April 2011. We’re about to start doing some final testing with users. Their feedback will help us produce a proposal for the next iteration of the platform. We’d really like to be able to compare images of bullets, cartridge cases, and so on, directly in the client. At the moment, this is done using specialised systems.
Anything else you'd like to share with readers of this interview?
Although the learning process has been difficult, we’ve been able to build a complex application quickly. It took us a week to discover the core API’s and sketch the design we would use. The code is highly reusable and the modular architecture enables seamless integration of modules developed by our partners and lets us incorporate NBMs shared on the web.
If you think that you might need some of the features which the NetBeans Platform provides, we’d definitely recommend using it. Once you’ve done your first large project, future ones will be much easier.