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?
- 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?
- 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)
- 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.
What are the main advantages to you of the NetBeans Platform?
The APIs themselves. We use extensively the Nodes and Explorer APIs, but the module dependency model as a whole is extremely convenient. We have corrected some of our bad habits figuring out the best way to split the code into modules in order to implement our architecture. Working this way is aligned with one of our core goals, which is to provide a usable interface that can be shaped according to the needs of specific user profiles. Not all the end users have to do the same things, so why expose the same graphic interface to all of them? What if a user just needs the reporting tool? Or a circuit designer? Or what if I'm a typist and need a simple interface to insert a lot of information as quickly as possible?
The modular approach lets us accomplish these objectives nicely. Showing a simple, attractive, and intuitive interface helps people to adapt easily to changes, which implies using a system that is complex enough to handle that. It's pointless to make the end user to go through a painful experience just because the framework used to build the interface is monolithic.
Besides that, one of the most important things is the time saved because using the NetBeans Platform keeps us from wasting time coding low level stuff for managing window behavior, notifications, or actions. I really like that.
On the other hand, we also like the license, because we expect to support closed source third party plugins, as well.
What could be improved about the NetBeans Platform?
I'd like to have more general purpose widgets integrated into the NetBeans Platform, like date pickers for Property Editors or like those in Swing Labs.
What kind of code contributions would be good for this open source project?
Code? Any! Mostly on the server side because the server has to be highly optimized to provide high performance interfaces to others systems like ERP, CRMs, Trouble Ticketing Systems, Alarm Management Systems and the like, with a strong data integrity management scheme.
But code is only a part of what people can contribute. We encourage IT and telecommunications professionals to help us consolidate a complete data model. That is, to define which classes and attributes should be available (say, Rack, Shelf, RadioLink, SpliceBox, etc) and models (simplified group of elements and relationships which can represent a real world scenario) on different technologies (ATM, SDH, DWDM, xDSL, UMTS, etc).
We also need to create a library of equipment to be used as templates. For this, we need information about the equipment, e.g., how many ports and what type of ports a given board has and how many slots can a shelf of a given manufacturer contain. That's a really huge task, but we hope the community can help us get it done.
Here's another screenshot of the application:
What are the future plans like, i.e., the timeline and planned features?
That's a short question with a very large answer, so I'll try to summarize.
Short term, next six months:
- Turn the system multiuser, with session and transaction management and secure the components (Implement some OWASP recommendations and so forth)
- Provide reporting capabilities (integration with iReport, probably)
- First version of an editor for building complex queries. What I have in mind is to build queries and reports using a editor like the used in LabView (http://tmenguy.free.fr/TechBlog/wp-content/2007/06/qnxlabviewfig1.jpg), this is, connecting modules, with no code at all. I think of a queries modeled and formatted using XML.
- Dynamic data model: The user should be able to create, modify and delete classes and attributes at runtime without losing the object orientation, this is , without using dummy classes or tricks like that. I'm thinking of OSGi, but honestly, but it's something we have to review with calm.
- Support for physical connections: You should be able to connect network elements (and passive elements like patch panels or antennas) using electrical, optical or wireless media. If possible, try to integrate Google Maps or any map server to provide GIS capabilities
Medium term, in the coming year:
- Add project management features (to reserve physical and logical resources, create )
- Add social networks capabilities to support collaborative work, like share actions or activities within a project
- Add a knowledge management system
- Add a tool to document the ever changing data model.
Long term, a year or more from now:
- Add support for various technologies - models, toolkits, and wizards to create logical connections - (MPLS, SDH, xDSL, UMTS)
- Interfaces with other systems like SAP or OpenNMS (alarm correlation and root cause analysis)
- Implement something related to data mining to use for business intelligence (helping with planning issues, early problem detection, network resources optimization)
The potential is infinite. Sometimes I feel overwhelmed, but solving problems the best way possible is our job as engineers, so we're pretty optimistic to achieve great things backed up by an active community!
Finally, can you introduce the others on the project?
Currently, in addition to myself, there are 4 engineers working on this project, all from Colombia. They are, in order of recruitment:
- Gélber Mahecha. Computer Science engineer focused on telecommunications and an electronic technician. He's been involved in several projects related to performance and status monitoring systems, for technologies like SDH, Fiber Optic, Wireless networks and SS7 signaling. His experience has grown from basic electronics (the beginning of his professional career was the repair and training of PBX and measurement equipments) to project manager and technical manager for many telecommunications projects across Latin America. This has given him a base to understand networks and, later, operational support systems.
- Julio Lopera. Computer Science engineer from Universidad de Medellín. He's been working 6 years in a major carrier company in Colombia, as the admin of core business platforms like CRM, network documentation, alarm management and network inventory. Currently he's finishing a specialization in IT Management, leading research that looks towards generating an information management model for Telcos relating to network inventory and based on Data Governance.
- William Burbano. He's also an Electronics and Telecommunications Engineer from Universidad del Cauca. He's worked as web developer for 3 years, and then moved to work in the NOC of a mobile operator.
- Huber Muñoz. He's also an Electronics and Telecommunications Engineer from Universidad del Cauca. He's been working for 7 years in web development mostly in PHP. He's worked extensively on GIS environments like MapServer, OpenLayers, and even GoogleMaps. In fact, one of the planned features for Kuwaiba is integration of the inventory system with a GIS to provide outside plant infrastructure management and he's eager to lead this topic along with William.
Well, nice to meet you all and all the best with Kuwaiba!