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

Interview: NetBeans Platform at Next Google Summer of Code?

04.07.2010
| 12476 views |
  • submit to reddit
Mathieu Bastian is a highly motivated software engineer, interested in data visualization, and leader of the Gephi project. He currently lives in Paris, but also stays in Prague from time to time. He has several years of experience with Java programming and likes to develop applications that are easy to install and easy to use. He likes challenges, and visualizing massive graph structures in real-time "is a nice one".

Gephi is an open-source graph visualization software, recognized for its performance and usability. For the second year, the project has been selected by Google for the Google Summer of Code program. Mathieu will be mentoring two or three students during the summer and continue the work on core development and documentation.

On Twitter you recently wrote that the NetBeans Platform would be good to have at GSoC. Why do you believe that to be the case?

Gephi is a mentoring organization at the Google Summer of Code. Last year we got 4 students, this year we hope to get 5 or 6.

The Google Summer of Code program is short, students have three months to learn how the application code works but above all to “Get Things Done”. Our aim is to reduce the learning curve of the environment and help students produce clear and reusable code. The NetBeans Platform helps a lot in various ways:

  • Thanks to a modular design, we can propose subjects that will extend or interact with one or two APIs only, trying to keep the low-level complexity hidden.

  • With the NetBeans Platform, students don’t lose time understanding build procedures or where to start in the code. They create a new module in a NetBeans Platform application, add API dependencies, and can then start coding right away. When drafting specifications, mentors make sure the job can be translated in a set of NetBeans modules, with a particular role for each. Students may learn new things trying to answer questions like “Can your module be detached from the UI?” or “How to let plug-in developers add new features to your module?”. That is positive because that is something you don’t learn at university. The NetBeans Platform development quickly demonstrates the important tradeoffs of large applications.

  • The NetBeans Platform also facilitates collaborative development, as modules can evolve independently in different code branches with versioning support and be packaged easily.

What are the main gains your application acquired from the NetBeans Platform?

The software architecture is much clearer and more reliable than before. It has been divided into a set of modules, each communicating through a dozen APIs.

Porting the application to the NetBeans Platform was the perfect occasion to rewrite core modules in a modular paradigm. That eventually brought clarity and opened the way for new developers to join the project. With well-written and documented APIs, newcomers can quickly extend the application and get things done.

Our reliance on standard technologies: Java, Swing and now NetBeans Platform, is an essential element of trust. It is important for Gephi to be seen as a reliable and long-term project to seek for new contributors.

Here is a screenshot:

How is the NetBeans Platform particularly well suited in the area covered by your application?

First, Gephi uses JOGL (Java OpenGL library), which is Swing and fully supported in NetBeans. Thanks to NetBeans OpenGL Pack, it is quite easy to create a 3D application on top of the NetBeans Platform.

But the most important benefit is modularity. The ability to let developers create plug-ins easily is essential. Gephi’s project core is visualization, but it is extensible in many directions. One could code a module to visualize enterprise data or develop a proof-of-concept transportation network algorithm within Gephi. One could also visualize links between pieces of software with the help of a Gephi plug-in. Networks are at the heart of many different problems and thus require flexibility in tools. The modularity offered by the NetBeans Platfrom covers this flexibility need in most cases. You can always replace a module by your own implementation if you're not satisfied with what's available. Because covering all use cases at once is not possible in our domain, modularity is the only choice.

What are your favorite NetBeans APIs?

  • Lookup is the backbone of a NetBeans Platform application and must be cited first. We repeatedly use the service provider scenario to propose extensible features like algorithms, filters, or new file format support. I really like that a single annotation is enough to add a feature and directly see it integrated in the user interface.

  • I also really appreciate the Explorer & Property Sheet API for its richness and simplicity. It saved me a lot of development time not doing JTree, JList or JTable hacking.

  • And the AutoUpdate API, now we have our update server where Gephi automatically connects to get its latest modules version. Users can report an issue on our bugtracker in the morning and get Gephi updated in the afternoon without downloading a new version!

Any tips for getting started with the NetBeans Platform?

For software designers looking at using NetBeans Platform for their project, I would recommend to read Jaroslav Tulach's book: Practical API Design: Confessions of a Java Framework Architect. It gives really good insights about sustainable software design.

Tips for more advanced NetBeans Platform users?

Exploring NetBeans IDE source code is not as difficult as it may seem. Read the FAQ! The source code is split into modules and thus makes the first exposure easier. I learnt a lot digging into it:

  • how to split features in modules

  • how to write good API documentation

I also reused quite a lot of UI code that I found in NetBeans code, looking for hidden treasures.

Finish this sentence: "If I had known..."

If I had known the NetBeans Platform before, I wouldn’t have developed my own (unfinished) Java desktop application framework...

Anything else you'd like to share at the end of this interview?

The applications are on for the Google Summer of Code! Students can look at Gephi’s list of ideas and apply now. Get paid during the summer for working on cool projects and your favorite technologies.

 

 

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

Comments

Varun Nischal replied on Wed, 2010/04/07 - 1:00pm

Mathieu, it would be great, if you could share some expertise by articulating it in some form. Blogs, articles, wiki, etc.. It's strange to see people create great applications on NBP and articulate less about it.

Well, there are exceptions everywhere and Geertjan is one ;)

Anyways, good luck for GSOC.

Fabrizio Giudici replied on Thu, 2010/04/08 - 5:12am

One of the coolest things seen around. I second Varun's wishes, I'd like to see Mathieu and other authors blog on the project - it looks like a mine of ideas and resources (*).

A first curiosity just after a random look at sources. I see .pot files, that should be related to localization. Can you give us some hints? Localization with multiple languages and keeping everything in sync with a project that is still evolving is one of the things that I've never able to manage.

(*) Too bad that it's _all_ GPL... I understand that GPL is important in such cases for preserving the ownership of the project and contributing to a marketing ecosystem modeled on the author's wishes... but what about releasing at least some non-strategic utility components under LGPL, so they can be easily reused?

For instance, I understand that there are some implementations of state-of-the-art algorithms, such as layout, clustering, etc... People like me who's not involved in data visualization would welcome some simple thing e.g. to smart layout of things on the Visual Library(= arranging widgets so that they don't overlap etc...).

Fabrizio Giudici replied on Thu, 2010/04/08 - 5:23am

Of course, my other question is why did not you use the Visual Library for graphs, but rewrote your own component. I suppose that the VL has got some limits for your scenario. Thanks!

Mathieu Bastian replied on Thu, 2010/04/08 - 12:04pm in response to: Varun Nischal

@Varun Yes I'll think about a blog article that could serve the NBP community, but I'm currently plainly focused on fixing bugs and documenting Gephi. I'm far from beeing as efficient as Geertjan on this point ;)

Mathieu Bastian replied on Thu, 2010/04/08 - 3:41pm in response to: Fabrizio Giudici

 @Fabrizio We are doing some experiments about localization, but nothing working for the moment. About GPL, we are putting efforts to build the ecosystem you're describing but we may release essential components in LGPL in the future, when they will be stable enough.

About reuse, components like Layout, Filter or Clustering can be reused in other applications dealing about graphs easily, the only condition is to use our Graph API, as modules are dependent from it. I'm preparing a tutorial about that point.

And of course we do our own visualization engine, which scales to hundreds thousands elements. No existing 2-D drawing library do this with the level of interaction we need.

Martin Spasovski replied on Mon, 2010/04/12 - 5:37pm

Congrats, and hope to see Gephi on GSoC next year again! - I started learning NetBeans RCP few months ago (made my MP3 player :P), so I'll be able to apply then :)

Also, it's good to see apps based on NB RCP that aren't CRUD oriented or an IDE for a new language, but something different and refreshing.

Fabrizio Giudici replied on Tue, 2010/04/13 - 3:25pm in response to: Martin Spasovski

Martin, is your MP3 viewable? Screen shots? Open source? Thanks.

Milos Silhanek replied on Sat, 2010/09/18 - 6:22pm

I tried it and it is great! Smart and fast. I will explore data from modules dependencies, package grouping. It shows number of module dependencies by class references. Well made.

Carla Brian replied on Fri, 2012/05/04 - 8:59am

I think this is really an efficient software. It is easy to use because it is open source. Good thing I stumbled upon in your post. - Theodore Stroukoff

Mateo Gomez replied on Thu, 2012/07/26 - 3:06am

great interview with Mathieu Bastian...its a great insight chicken burrito recipe

 

Matt Coleman replied on Fri, 2012/07/27 - 4:42am

google codes are always welcome to us

graphic design buffalo

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.