Geertjan is a DZone Zone Leader and has posted 468 posts at DZone. You can read more from them at their website. View Full User Profile

Interview: Network Inventory Manager on the NetBeans Platform

  • submit to reddit
Charles Bedón is an electronics & telecommunications engineer from the Universidad del Cauca in Colombia. He's been involved in free software communities for more than 10 years. He began as a developer of mobile and web applications, then moved to the field of deployment of OSS for telecommunications companies.

In the past year, he's specialized in quality and process management and ITIL, and spent a brief period as sysadmin. Lately, he's been working as an IT consultant and full time developer for Kuwaiba, together with Gélber Mahecha, Julio Lopera, William Burbano, and Huber Muñoz (who is seen with Charles in the pic).

What, in a nutshell, is Kuwaiba?

Kuwaiba is an ambitious enterprise open source Network Inventory System, developed in Java, and focused on scalability, reliability, usability, and interoperability. 

The name needs some explaining. When we started, we were looking for a meaningful, maybe mythological, name from some of the ancient Colombian indigenous cultures, in particular from a region in Colombia called Cauca. We finally found a hero who had a sticky name: "Kuwaiba"... and now his memory remains somehow in our software.

How did your involvement with the Kuwaiba project come about?

In short, it was 2007 and I was finishing my first project related to network inventory, where Julio Lopera was my technical peer and Gelber Mahecha was my boss. We had had to deal with a lot of issues to get the system working as required and we finally had time to talk about our shared experiences.

Basically, we realized that we (neither the customer, nor ourselves, i.e., the provider) had not taken into account a major factor when planning the system deployment: people. The curious thing is that none of the vendors at that time took people into account either, nor seem to be doing it now. They always want to sell licenses and charge convenient fees for developing additional features, but they never tell you that the staff will have to face an important shift in their workloads or that maybe your operative and business processes won't be effective anymore once the system enters into operation or what happens if the customer decides to deploy a new technology and the provider doesn't have support scheduled  for it or what if the end user just "doesn't like the GUI".

Sounds obvious, but believe me, the customer never weighs up all these factors well enough. So we asked ourselves: "What about creating a solution addressing these problems, supported by the right services?"

Time for the idea board:


I've always wanted to start a project like this, but my daily duties prevented me from doing so. When I began to work as a freelancer, I found more time to devote to serious things, so I tried to join the people that had been somehow involved in big network inventory projects in the past. Together we created a task force, which is how I explained the idea to my partners only a couple of months ago and they agreed to collaborate.

A project like this requires tons of work. Funding a year of continuous work of skilled professionals in an ever changing market like IT and telcos is almost a no-go situation. So we decided to open it up for everyone and work on a business model based purely on services, rather than software.

That all sounds very exciting. :-) What makes Kuwaiba unique?

Five things:

  • Free. It's free, as in speech and as in beer. We have a long term commitment with the Free Software cause and we want to protect the four freedoms of the users of the system.

  • Beyond the IT Infrastrcture. This project doesn't focus only on IT infrastructure (servers, workstations, routers, etc), it wants to go beyond, supporting operations of mobile operators, PSTN, NGN operators, ISPs, carriers and the like. You can find good open solutions out there for network inventory, all of them focused on IT infrastructure. In fact, the system's architecture may support a general purpose inventory; you should only change the default classes for those according to your business.

  • Object Oriented Data Model. The elements are actually instances of business classes, taking advantage of inheritance, encapsulation and others concepts, making the system highly scalable, extensible and with a clean code base.

  • Usability. We want to provide a light interface, oriented to profiles, so the interface will depend on what type of user is going to use the client. By now, we're coding the foundations so the usability test will be performed in later releases. What is almost common in all the open tools available is that they all seem to be conceived from the point of view of developers trying to scratch their own itch.

  • Experience. We are taking into account many learned experiences of past implementations for operational support systems and, especially, inventory systems. Our intention is to build a framework that is not only open but also highly flexible, that lets us (and of course,  the community) develop best practices in the deployment of these kinds of projects, which mostly cross the boundaries to end up as an adventure into the unknown. We firmly believe that a people oriented OSS, supported by the right administrative model and friendly business processes, is a competitive advantage for a company. To put all these things together, you don't only need an excellent system from the technical point of view, but also a set of services to help the organization to leverage the shift successfully.

Can you show a screenshot?

Sure, here is the main window:


What have been the main challenges while working on this project?

We can group the challenges into two areas:

  • Operational. One of the main challenges is starting a project with low resources and to have a result that one can be proud of (and more important with credibility) in front of big players like IBM or TelCordia. It’s crucial to keep a regular timing for each release in order to show progress to the community and to hopefully gain adepts and good contributions for the framework (which is actually the background of the project).

  • Functional. There are a lot of good ideas to implement in the system, however we must identify those needed for the basic framework and how they are translated into functions to fulfil the promise we are making. In order to meet this challenge, we believe we must use a product development methodology, but adapted to a free software project context.

Which libraries are used, i.e., what are the technical specifics?

Server side:

  • PostgreSQL 8.3, BSD-like license (It should work fine for any RDBMS supported by the ORM)
  • JPA 1.0 (EclipseLink 2.0.1, EPL)
  • JAX-WS 2.0 (Metro, CDDL)
  • Glassfish V3, CDDL (It should work fine for any EJB 3 container)

Client side:

  • NetBeans Platform (using NetBeans 6.8 as IDE)
  • Crystal Diamond Icons (it's not libraries, but they deserve the credits)

In the future, we expect to integrate a mapserver, a CMS and a BPM server, but they are a black box right now.

Why is the NetBeans Platform the application framework underneath Kuwaiba?

In the beginning, we decided to discard the idea of using a web-based interface because of the complex user interactions we would need, such as contextual actions, wizards, drag & drop, report design, and connection of objects to canvases, etc. In short, we'd need to put in too much work to make a rich yet usable interface in a reasonable period of time. RIAs have a great future, but at this stage, a conventional desktop application approach is more suitable for these kind of systems. (Not to mention the browser compatibility that is still a hot matter.)

The second issue has to do with freedom. Java is a mature technology supported by leading companies, while being always open to community input. Java is open itself (mostly), cross-platform, and it's a language that we've been working around with for years.

So, the next question was "what framework can we use to develop a desktop application under Java?". Here the main options are NetBeans Platform and Eclipse RCP. Personally, I had been working with NetBeans (the IDE, not the platform) back in 2004, when it was a slow pachyderm and I hated it. Later, I started to develop mobile applications with Eclipse and I got to love it. This time, however, I decided to give NetBeans a second chance and I'm very happy to have taken that decision, since it has everything we were looking for and much more besides, as an IDE and as a platform for developing desktop applications.

And of course, the NetBeans Platform has an active community eager to help and share experiences, which is very important for neophytes.

Published at DZone with permission of its author, Geertjan Wielenga.