The Open Road to Qt Code 3 - Jean-Baptiste Kempf

The Qt blog today focuses on a young software engineer from Paris, France who has a rich track record of working in community-based technology groups stretching back to his time as a college student. Jean-Baptiste Kempf is not only a keen advocate of the Qt framework; he is also chairman of VideoLAN, the open source project behind the highly portable VLC media player.

Jean-Baptiste Kempf

As an open source trailblazer and influencer, we were keen to corner Jean-Baptiste for a question and answer session in order to get an insight into his hopes and fears for the technological road ahead and find out what role Qt plays in the development of his projects.

Aron: Tell us in broad terms about how the ideas behind the VLC player took shape and at what point Qt came into focus as part of this initiative.

Jean-Baptiste: The VideoLAN project started as a student project in the Ecole Centrale Paris in France. VLC media player was the client in the VideoLAN solution, along with the now-defunct VideoLAN server. This solution was done to stream video on the campus network. The VideoLAN software became open source and VLC became very popular on most of the platforms. The interface was done in wxWidgets for a long time but we needed to move to something more modern, powerful and flexible. Qt was the logical choice and VLC's default interface is now in Qt.

What aspects of the Qt framework do you find most useful and what parts of Qt do you think you focus on next for the forthcoming stage of your VLC development process?

The best things in Qt are its documentation, its flexibility and its ease of use. You spend more time thinking how to do the interface than actually coding it! So far VLC is using QtCore and QtGui; we use most classes of QtGui, including Model/View, Styles and Accessibility. VLC 1.1 will use Animations that came in Qt4.6 and probably more of Graphics View Framework. What we are really looking forward to is new technology like new generation model/view.

You are working on a video editing tool which is completely based on Qt while the media player itself is more of a ‘mix’ of technologies – in practical terms how do you balance which elements of which technology you decide to use and deploy?

Deciding what technology to use is difficult, because you have to be careful not to fall in the 'bloat' world: I know these days everyone seems to think CPU and disk power is unlimited, but in the multimedia world, it matters a lot.

VLC is only 17MB to download. To take a new technology, we have to be sure it is going to be universal in terms of internationalization and of computer platform but also quite efficient. We also have to be sure it answers to an actual user problem and not just pleases geeks.

You position VLC as a ‘complete streaming server’; and this means that you have built the product with extended features such as video-on-demand and on-the-fly transcoding so that different formats are converted seamlessly. Why have you taken steps to broaden VLC in this way and what do you see as the next steps that you will need to follow to ensure that it remains a next-generation tool?

VLC is already a well established in people's mind as a media player, but most people don't know about all the features of VLC. Emphasizing on the streaming part is a way to market the new possibilities. However, we are going to simplify the access to those functionalities. About the next generation, VLC is by design modular, so improving some small parts can make it easily take up new technologies.

Taking it back to basics, what’s the strategy that VideoLAN is adopting in order to grow its developer base? Do you think that the way Qt’s development process is has opened up to the community contribution model will benefit your own project’s development – and if so, why specifically?

VideoLAN is already way more open that most open source projects. For example, in VLC, there isn't an official leader for development and VideoLAN doesn't force features or roadmap on VLC. VLC development is very “bazaar” and the power is to the developers actually working! Therefore, to help developer base grow, we have to focus on making development on VLC easier to take up.

The way Qt opened its development process is great because I think it will improve Qt libraries and therefore benefit VLC :)

You have a great deal of international experience working with coders across Europe, the USA and Japan. With a toolset like Qt in mind, how would you say that programmers work differently around the world and do their workflow methods differ as they move from concept to practical on-the-job programming?

The biggest differences I have seen are the ways projects are managed and how difficult issues are tackled. In France, for example, programmers have a lot more difficulty to accept very strict plans on various phases of development compared to Japan. Or they would spend a lot more time to explain the difficulties they had and what slowed them down, while in the US, they would more discuss about how they will do things in the future.

But in terms of code, I don't think it changes a lot.

You run a fairly vibrant developer forum for VLC.

What characterizes a productive online community as far as you are concerned and what lessons do you think your site could perhaps offer Qt itself?

VLC is a very difficult community, because it goes from very technical people doing development to completely clueless users. A productive community is a place where most people can find some help matching their level of understanding. Being able to split the community, without being rude, between users, power users and developers is the key: forum, wiki, websites and bug reports site have to be split accordingly.

You have taken an exhaustive approach towards proving really strong documentation and support with FAQs, How-To’s and provided a channel to ask questions. Is this simply because you see this as a core part of development fundamentals? Or have you taken care over these elements because you have seen it done badly elsewhere and want to make sure your work shines through?

A software complex like VLC is impossible to use correctly without documentation. But I doubt we can advise Qt on this... Qt's documentation is the best out there. About the IRC channel, this is where the community lives every day. But we could improve a lot :D

What’s next for the VLC and Qt? Or if you prefer, what developments would you like to see in Qt over the next five years to make your own development programmes perform even more effectively? Which are your main pain points?

As I already said, we are looking quite a lot on the animation part of QtGui. This is something that was lacking to Qt so far. What we really looking forward to is the work on next generation View/Model based on Graphics View; so far, it is very powerful, but quite difficult to understand in the beginning and misses some cool features of Graphics View. Finally, what we would love is a better way to cross-compile Qt for Windows from Linux, with the new buildsystems of Qt.

Blog Topics: