Making Money from the NetBeans Platform
First of all, how were you introduced to the NetBeans Platform in the first place?
Three years ago more and more information on the NetBeans Platform started becoming available and I decided to give it a try for one of my pet projects. I really liked what I found, and then introduced it to our company, with this result:
That's ChipInspector (click to enlarge the screenshot), from Genomatix, an analysis program to extract significant information from biological microarrays. Microarrays are fingernail sized plastic or glass chips which are used in laboratories to measure the activity of genes under specific conditions. ChipInspector calculates statistical scores for millions of signals and puts the result in an up-to-date genomic context.
And now I'm working full time
as a consultant and trainer for the NetBeans Platform.
In the company setting, what were the NetBeans Platform's top 5 advantages?
Initially, you only see the obvious benefits, such as the Actions framework and the Window System. Or the Wizards framework and the Options APIs. They definitely make life easier, but after a while you realize that the one main benefit that really makes all the difference is the module system.
The module system helps improve and maintain the loose coupling of the components of your application. So the top five advantages, from my point of view, having worked in a company with the NetBeans Platform, are:
- Module System in general
- System FileSystem
- Datasystem API
- Nodes API, together with Explorer & Property Sheet API
But what about Eclipse RCP?
Eclipse RCP is a nice piece of work as well. It just never was a choice in my own projects because I'm really into Swing.
With SWT it's really
hard to do nice "Filthy Rich Client" stuff, and it performs very
differently on different operating systems. Nevertheless, Eclipse is well
documented and has lots of users, more than the NetBeans Platform. From my point of view, though, that's mainly a marketing issue.
If you compare the two systems, you will see that the differences aren't that big, but the NetBeans Service infrastructure is more powerful, performant, and easier to use. The Lookup, which is used pervasively throughout the NetBeans Platform, is a very elegant pattern for loosely coupled communication, much more performant and simpler to use than OSGi Services, way more elegant than declarative Services, and also more powerful and expressive than Equinox Extension Points.
The NetBeans team also has a dedicated performance team that looks for performance issues and fixes them and you can tell that when comparing the two systems. So, regarding performance and architecture, the NetBeans Platform is probably the better choice.
On the other hand, it's a point for Eclipse RCP that underneath it is OSGi. You can simply reuse a lot of bundles this way. That's why I love project Netigso, it gives you the best of both worlds—the performance and power of the NetBeans module system, plus the ready made OSGi bundles. I'm really looking forward to Netigso being integrated into the NetBeans Platform official release.
So, Eppleton is a consultancy for NetBeans Platform support? How did it get started?
My job at my old company was great, very much like having my own scientific workgroup. I had a lot of freedom to invent things and try out ideas. But still I wanted to have more freedom and be my own boss sometimes.
At some point, companies who knew me from my blog and related projects started asking me to support them with their projects, such as JasperSoft asked me to help them port iReport to the NetBeans Platform.
couldn't help with this project, although I would have loved to have done so, because I was still employed
at my old company.
So... I started thinking that this might be the opportunity I had been waiting for. I love the NetBeans Platform and community, so I thought it would be great to do what I like best as my actual job. Last year I started my company and it worked quite well almost from the beginning. The main part of my job is consultancy and training, as well as from time to time fixing problems or implementing complex features for companies.
But aren't the NetBeans Platform tutorials, FAQs, and mailing list good enough? What added value do you bring? What are the typical questions users have?
The NetBeans tutorials, FAQs, and mailing lists are fantastic recources, but still they can't cover everything:
- Tutorials help you get started.
- The FAQs have very valuable information for a couple of problems, but by far not for everything.
- The mailing list can maybe help you with bugs, but nobody will do an architecture review of your application there, and no company would upload the sources of their application to the mailing list so others can spot a bug.
That's where I can help.
One part of my job is to help with the application architecture. Another part is getting my hands dirty digging through sources and solving problems. That's what I really love most of all!
In addition, there are the trainings. I'm giving courses and workshops
for developers who are using NetBeans as a platform. I've got a list of
standard and advanced course modules and customers can choose from those
and add topics they are specifically interested in. I'm always trying
to find out as much as possible about the specific problem domain, then
I modify the focus and examples of the course accordingly.
The aim is to not only give a training, but to also deliver solutions and strategies the team can apply to their applications right away. So the trainings are very much like workshops and very project and code oriented. It's something like 40% theory and 60% hands-on coding. That has turned out to be the way to get the most out of the trainings for most customers. This way, it also doesn't get boring for me, since I never have to give the same course twice.
Typical questions revolve around topics such as these:
- How to structure resource bundles.
- How to deliver language packs / how to switch languages at runtime.
- There used to be many questions about classloaders and how to fix problems with third-party libraries, but since the error reporting of the NetBeans Platform has improved a lot, this is less of a problem than before.
- Also there are lots of questions about branding, deployment, and the implications of using webstart.
Besides that, there aren't too many typical questions. The needs of customers differ a lot. Most developers have very specific questions, such as how to implement lazy loading with Lookups and Node hierarchies for expensive business objects.
Is there really enough business to pay the rent?
Yes, it's still a small market, but I can make a living solely by doing
NetBeans consulting and training.
Is there anything preventing you from doing this consultancy? After all, the NetBeans Platform belongs to Sun, doesn't it, so how can you be making money from their product?
You're right, I'm making money from Sun's product, but after all that's basically what every Java developer does.
Plus, Sun really turned out to be a
good partner. We both have a valid interest in promoting NetBeans as an
IDE and as a Swing application framework, so I'm doing a lot to promote NetBeans, such as organizing
events and meetings, giving free trainings at universities, or giving
talks and writing articles and books about the IDE and platform, and
most of this work happens in close cooperation with Sun.
Where/how do you find customers?
That varies a lot. Sometimes I'm contacted via my website, my blog or a social network like XING or linkedin. Sometimes I get contacted after an event like a NetBeans day. But most of the time friends and fellow consultants introduce me to new customers.
Can you name one or two things that could be improved in the
There a lots of small technical improvements that could be made, but the most important improvement wouldn't be very technical: I think the NetBeans Platform needs a clear separation from the IDE.
Right now it's not obvious what is part of the NetBeans Platform and what isn't. That causes a lot of confusion. If you start a new project, the IDE is by default the NetBeans Platform that you're developing for. If you update your IDE, your NetBeans Platform get's updated as well, and that's a bad thing. The new Maven archetypes will solve this part of the problem. The overall best solution would be to have a separate release cycle for IDE and NetBeans Platform and to have a new name for the NetBeans Platform.
Anything else you want to say?
Yes, thanks to you, the NetBeans team, my customers, and all the NetBeans Platform community members and friends for their support and for making this the best and most enjoyable job I've ever had!