martes, febrero 03, 2009

Inside FlightGear

An interview with Curtis Olson, the man behind FlighGear

FlightGear has become one of the most successful software flight simulators ever.

Now it's run 24/7 by thousands worldwide, both in isolated machines and in servers. You can find very active communities of users and developpers in Germany or Australia. A true phenomenon of our days.

So we approached Curtis cautiously, knowing he must be a really busy guy, but we found instead a talkative and nice fellow who really shows enthusiasm and love to the things he is in.

Warning... I got his reply to my questionnaire back in July, 2008, but it was me who failed posting it as soon as every FlightGear fan would have loved to.

So I apologised before him yesterday, and got his pardon. Now I beg yours.

The interview you are about to read it's in no way out of date, though. As we say in Spain better late than never.

So, no more delays... Right here right know, with you... Curtis Olson!

Curtis, how did you start thinking on writing FlightGear? What was the purpose of it?
I had been an active user of the Sublogic/Microsoft flight simulator since the Apple II days. In the mid-90's I started a little project that would glean local weather station reports from the internet and insert them into a MSFS situation file so next time you started up the sim, you would have real current weather for your session. In the process of completing this project I observed that perhaps 5-10% of my time went towards the fun stuff of adding new functionality and about 90-95% of the time went towards the tedious task of figuring out what bytes in the situation file corresponded to which weather parameter and how the data was encoded in those bytes.

I thought there had to be a better way.

What if an open source simulator existed? Then people could spend 90% of their time adding new functionality and maybe only 10% of their time learning the infrastructure which is open and transparent with all the source code available. People wouldn't have to limit themselves to a few external API's, but instead they could actually modify or extend the core source code to do new things that would never be possible to add to a commercial sim.

And besides how hard could it be to write a flight simulator from scratch?!? Well, it turns out to be pretty hard and pretty time consuming, but our little group was young and naive, and by the time we discovered we had no business developing an application this complex or difficult, we had many parts of it working and we were way past the point of no return.

From the outset we wanted FlightGear to be attractive to hobbiests, do-it-yourselfers, academic and industry researchers, flight training companies, and also to "average" home aviation enthusiasts that just want to fly simulators for fun.

What is the main problem or barrier you have found in your way? Where did you source your means to carry it on?
I think both these questions are related.

In my view our biggest barrier is time. Most of the flightgear developers have day jobs, many of us have families, all of us have a variety of other important priorities in our lives. And all of us go through seasons of our lives where we have more and often less time to contribute to our hobbies. So finding the time to make significant contributions to the project is often the biggest difficulty.

The core developers have contributed immense amounts of time over the years on a volunteer basis. If you were to count the number of lines of code in the FlightGear project, and use a conservative estimate for how many lines of code can be developed per day, then add up all the time that has gone into developing code and assign a fair wage to that time, you will quickly see that the "value" of the FlightGear project runs into the 10's of millions of dollars. But all this time has been contributed by 100's of individuals working on a volunteer basis for the benefit of the FlightGear project and the FlightGear community.

What is the main lessons you have learnt along the way?
That's a hard question to answer. We started FlightGear in 1996 so we've been at almost 12 years and it's sometimes hard to differentiate between lessons learned from FlightGear versus lessons learned simply from living life.

I think if you do look back over the course of this project you see examples of many life's lessons. For instance, FlightGear is a clear example that a dedicated group of people can come together and with enough persistance, applied over a long enough time frame, and make a nice and useful contribution to the world. I guess I've also learned that everything is 10 times harder than you first think, and takes at least 10 times longer to do, but you also learn 10 times more than you thought you would need to learn, so in the end it is all for the best.

Has the growth of FlightGear surprised you?
My answer to this question is a cautious no, it hasn't really surprised me. I don't want to sound like I am some great visionary, and every ounce of success has been paid for in advance with an appropriate amount of sweat. But even when this project first started, I had a sense that it was going to be successful. I can't explain exactly why, but it just felt right. I knew if I and others put in enough hard work at the start, and honestly, for the first few years of the project, the weight of the project and the vision for the future was carried on the shoulders of very few people.

But at some point along the way, we hit a critical mass of features and users. In the first few years of the project, if I would have been hit by the proverbial "beer truck", the project probably would have fizzled and gone no where. Now I do my best to stay out of the way of all our great developers and many days I feel like my job is more to fascilitate the efforts of our other great developers and less to do all the work myself.

And realistically, the scope of the FlightGear project has grown beyond the ability of a single human to understand it all. Perhaps one of the lessons I've learned along the ways is that sometimes you have to learn how to let go, so that others can have full freedom to develop their way. In doing that, I give up some understanding of how the project goes together and not everything is done exactly how I would do it, and those other developers would say that is a good thing. :-)

...I, in no way, am able to support my family from my FlightGear efforts, but the occasions for small supliments have been welcome, especially now that I have lost my full time job.

And to be honest I am the most proud of the great people that FlightGear brings together, and the fun projects and adventures it has led to...


What do you think on open source movements and volonteer groups? Can they compete with commercial products?
Open source and volunteer groups are great. They allow tremendous freedom for individual developers to pursue their own personal interests and goals. That leads to highly motivated and highly dedicated people, and that leads to some of the most inovative and ground breaking work (I think.) Our developers aren't sitting at their desk all day watching the clock, playing solitaire, and waiting for lunch and 5pm to arrive. Our contributers contribute because they want to be there and there isn't anyone telling them they have to do one particular thing or another. In large part, it's the individual volunteers that set the course of the larger project, largely because they are the ones doing it.

Open source developers most often lead by doing. If you have a boat full of people, it's the ones that do the actual paddling that get to decide where the boat will go ... that wouldn't be the case on a roman galley, but it is the case with an open-source project and the freedom it brings. :-)

What would it be your main advice for other people seeking to start their own project?
My advice is to find a project in an area where you have a strong need or interest. There will be hard days where you will be sick of the project. You'll likely receive strong criticism once in a while. If your reasons for working on the project aren't born out of a passion or a need for the subject, it will be way too easy to get distracted with other things.

Be aware that the world isn't going to automatically hop on board with your ideas and turn it into a runway hit. FlightGear struggled for years, literally, before we achieved enough momentum and enough developers that the project could survive and succeed on it's own. Approach the project from the perspective that it is a 100% volunteer effort.

I think we all have dreams of striking it rich and turning our hobby into an incredible money making venture. Believe me, that still has not happened with FlightGear. However, I have been able to leverage my knowledge of FlightGear to make some consulting money on the side, working with companies that have a need for custom FlightGear development or configuration. I've also found it helpful to remind myself of the educational component of an open-source project.

When I notice how much I've learned in order to complete various subprojects within FlightGear, it helps justify the sometimes extreme amounts of time that have gone into the project. The final observation I have to make is that there is a significant social aspect to FlightGear. I've had the opportunity to meet several FlightGear developers over the years, and it's always fun and rewarding to finally meet in person someone you have been emailing for several years. They never look anything close to what I imagined, even if I never really imagined how they might look.

Is advertising the only money maker for a project like this?
For some reason, my answer to the previous question seems to also begin to answer the next question. :-) For myself, one cool aspect of this project is that I have met quite a few people involved or interested in FlightGear ... either when I travel out of town, or when they happen to travel through my town, or at conferences, etc. On occasion, these contacts have led to paying projects ... developing some addition or extension to flightgear to satisfy a company or group's specific and immediate needs. Once in a while I've been able to be a conduit to connect other FlightGear developers with paying projects when my own schedule or skill set was not a good match.

Really there is no magic, and no hidden fortune here that I have found. It's all about hard work, persistance, striving to do the best job you can possibly do, and occasionally being in the right place at the right time and being ready and able to offer a solution when someone is willing to pay to have it done quickly, or have it done well.

What are your plans for the future?
A better question might be "What does the future have planned for me?" But I'm not the best one to ask that question. :-)

One thing I think I'm learning as I go through life is that I don't have nearly as much control over my life as I'd like to think I do. We certainly do have the opportunity to make choices every day, and those choices can have a huge short and long term impact on where we go. But often we are faced with a set of choices where we rather choose none of the above, or reshuffle the cards and get a new set of choices. :-)

I am going through a job transition right now. My previous position which I held for 8 years was downsized and eliminated in early June of this year.

This summer I've been juggling 3 different part time projects. The first is through the Aerospace Engineering department at the University of Minnesota. I am helping to set up a 276 node super computer cluster. Imagine 8 racks of 1U servers, each server containing 2 quad-core opteron chips, so a total of 8 processors per machine ... that is roughly 2200 processors once it all up and running. If you stop and think about it, imagine the logistics of even unpacking 30 machines in a room with all the foam and large boxes and accessories!

The second project is with ATC Flight Simulators. ATC builds light single and light twin training simulators with wrap around visual displays, full cockpit hardware, and an enclosure. There are some proprietary software components in their package, but FlightGear is a huge piece of their system, and enables them to deliver a tremendous amount of functionality and features at a very competitive price. But it is the combination of their physical cockpit hardware, their own proprietary software, the FlightGear open-source software, and full FAA certification that results in an attractive product that someone would want to buy. (And their systems run on Linux by the way ...) :-)

The 3rd project I'm involved in this summer is funded by NOAA. We are developing an unmanned aircraft system (UAS) to be used [hopefully] by several groups within NOAA. Our UAS is fully marinized. In other words, it can land in the ocean, get completely submerged, and all the critical components are protected and sealed. The UAS is capable of being launched from a large ship, or a small boat.
What a nerve! A NOAA unmanned plane takes off before Curtis, in a red cap. Click to enlarge.

It can be recovered in the ocean so there is no need for a complicated net system, or large support ship to operate the UAS. We have developed some computer vision software that can detect things that are floating in the ocean. In other words, it can separate ocean from not ocean. When you are 1000 miles away from the nearest point of land, anything that doesn't look like ocean becomes very interesting. It could be a chunk of plastic debris, derelict fishing gear, or a life raft. No matter what it might end up being it's worth checking out. It is surprising and sad how much debris is actually floating around in our oceans.

Because of the complex patterns of currents, this debris tends to accumulate in convergence zones. So some people might not think there is a problem, and some people and beaches are literally buried in tons of junk that washes up. NOAA would like to find ways to deal with this problem, and finding the debris before it washes up on a reef or entangles endangered species is a high priority for them. As you might imagine, FlightGear plays a roll in this project.

The autopilot for our UAS is largely based on the FlightGear autopilot system and we've also incorporated several other core software components from the FlightGear project. In addition, we can feed our aircraft telemetry directly into FlightGear in real time and see a real time synthetic view of our flight from any perspective that FlightGear supports. We can overaly virtual instruments, heads up display, and even put real world obstacles or goals into the FlightGear scene.

As an added bonus, this copy of FlightGear (which is being driven by the life real world flight data) can be registered in the FlightGear multiplayer system, so now our real UAS is injected as a virtual entity into the multiplayer system so all the other flightgear pilots can see the real UAS.

So for me, FlightGear has led to all kinds of fun and interesting destinations, meeting many fun and interesting people, and learning more than you could ever possible learn in a class room.

I, in no way, am able to support my family from my FlightGear efforts, but the occasions for small supliments have been welcome, especially now that I have lost my full time job. And to be honest I am the most proud of the great people that FlightGear brings together, and the fun projects and adventures it has led to.

If I approached FlightGear from the standpoint of trying to turn it into a money making venture, I think it would be a much different project today, and very likely would not be anywhere close to as interesting or useful or fun.

Thanks a lot, Curtis, for all your comments.

As you can see, it was a whealth of information... wow! It makes me wonder what this man and his fellow colleagues would be able to do with a little bit of help. One thing is for sure, great things ahead!

They like to fly, and you can fly with them.

Do not keep grounded anymore. Jump into your dream plane and reach out for the skies!