The following is an email interview I had with Jean Tourrilhes. For those of you not familiar with Jean, you should visit http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
I'd like to thank Jean for taking time out of his extremely busy schedule! Without further ado, here is the interview:
LQ) Tell us a little about yourself. Where are you from, where did you go to school,
JT) Oh, well, those are mostly boring details.
I'm french, born in Lorient, Brittany (the windy & rainy part of western France). I was a somewhat typical nerd, not interested by school, started programming on an Apple ][, and followed up by assembly on HP 28S and 48GX calculators. I eventually ended up doing an french Engineering school called Telecom Paris (more or less equivalent to Master degree).
After my military service, in 96, I started working for Hewlett Packard Laboratories in Bristol, UK. The weather is rainy, but I did enjoy hiking the british coastline. My work at HP is industrial research, which is between HP product divisions and academic research, helping translating raw research into products, developping prototypes and consulting for the rest of HP about technology.
I did co-developp a Wireless MAC protocol for a home wireless LAN that HP wanted to produce (and eventually cancelled), and this effort eventually transformed itself to the HomeRF SWAP specification, which lead to the first affordable home wireless LAN product in 99.
I moved to HP Labs Palo-Alto, USA in 99. The weather is much better, and it's close to San Francisco. The basic job is the same, I first started working for CoolTown, a project that did popularise Ubiquitous Computing. My follow up was Connection Diversity, which mostly looked at Peer-to-peer connectivity. You can find a glimpse of
that on my web site.
I met my wife while in England, she was also working for HP. She is Italian, she now works for Cisco, and we had our first baby boy about one and half month ago, and that's keeping us real busy.
LQ) what's the hostname of your most favored linux box and why is it named that?
JT) I don't know about favored, but my desktop is called "bougret". Bougret is one of the main character of a french comic called "Rubrique a Brac", by Gotlib. My other boxes have similar names, from various french comics.
It's hard to describe those comics to non-french speakers, because the french-speaking comic culture is vastly more diverse, mainstream and serious than in other languages (either manga or US comics), and this precise type of comic has no equivalent. It's a large part of my childhood, like for most french. This is one of the main thing I miss from France and that I can't find here, even though I imported a large collection.
LQ) Who are your influences?
JT) The only strong influence I can point out are my parents. Each culture has its own strong reference and people, and I appreciate the richness of living into many of them, I gives me more perspective. Probably due to my french culture, I've never wanted to follow anybody in particular, but to chart my own course.
I see myself more as a researcher than a Linux hacker. Of course, all the Free Software and Open Source movement had a strong impact on me, I'm highly admirative of what Linux Torvalds, Alan Cox and Richard Stallman did. But, my role models are more people that you would find in the IETF or IEEE.
LQ) What OS(s) do you use? What is your preferred Linux distro and why?
JT) I'm not an OS zealot. I've always recommended people to keep using what they are most familiar with and use what will get the work done.
What's funny is that I've been working with a person that was a WinCE/PocketPC zealot, so I got to see the other side... I actually believe that OS zealotry is doing a disservice to our community, because if you force somebody into something against his will, you run the risk of creating negative experiences. And, ultimately, what matters is not the OS you use, but what you give to the world, you are not interviewing me because I use Linux ;-)
For my main desktop and my experimental boxes, I use Debian-stable. Linux is the most effective way for me to conduct my research, as it allow me to modify the behavior of the OS in very flexible way. My experimental/victim boxes are 2 SMP desktop and 2 laptops, connected together via Ethernet, 802.11, BlueTooth and IrDA. And I also have a Win2k box for Word and Powerpoint, and a very old HP-UX box for FrameMaker. My cubicle feels pretty warm in the summer, despite HP running air conditioning to the maximum.
At home I use Win98-SE, because I can't be bothered to install Linux, even though I plan to fix that, later...
I use Debian stable because it just works, I get security updates and because I'm used to it, and I only have to worry about it when they release a new stable version, which is every few years. At some point I also tried unstable or testing, but I found that there is usually too many broken dependancies and too much entropy for my taste. My manager prefers RedHat, but has given up on upgrading, so we have some RH 7.3, 8.0 and 9.0 around, depending on how old is the install.
I did set up my Linux environment in 96, based on fvwm2, and did only minor changes to it, so it's totally outdated. The only application I care enough to update is Mozilla, but I run it in a separate user account. I read my e-mail with Mutt, because it's the fastest thing around and ignore HTML. Of course I use my own kernel, directly from kernel.org, and keep my experimental boxes pretty much to the latest.
This king of lighweight setup allow me to recycle computers that nobody else can use, which explain why I have so many. My desktop is a P2 400 MHz (with lot's of disk and memory).
But, I would not recommend that setup to everyone ;-)
LQ) What was your first introduction to Linux? What was the reason behind you using Linux and was anyone in particular responsible for turning you on to Linux?
JT) That's old ;-) At Telecom Paris, the main computing course were done on VAX and SunOS, because at that point Windows3.11 was "not for serious stuff". In the summer of the last year (94), I started a project in TurboC++ that involved hardware and multitasking. When I hit the limitations of TurboC++, Frederic Potter, a early Linux contributor, suggested Linux. That was just like SunOS that I learned in classes, so I never looked back...
In those time, a nice PC had a i486 66 MHz, the distribution of choice was slackware (one a pile of floppies), the kernel was 1.1.X, and XFree86 was a pain to configure. But, somehow, it all worked out.
When I joined HP in 96, I convinced my manager that using Linux would be more expedient for research. Research organisations are more open to this kind of abnormality, so it was no big deal.
Most of the code and APIs I created in Linux was needed for research purpose, and many other research projects in universities did use my APIs and code before the more general public started using them. The iwspy functionality was created for a local MobileIP project. Wireless Events were needed for Connection Diversity (P-Handoff), and have obvious applications to Ad-Hoc routing. Wireless Scanning was developped for people doing location, with the idea of using it in Connection Diversity. The IrDA work was also needed for Connection Diversity (On-Demand TCP and Co-Link).
However, it is true that I tend to do much more than the basic need of my projects, I make sure the end result is useful to others and keep maintaining it, to remain true to the spirit of Linux.
LQ) You must know by now that you are one of the few kernel driver maintainers that has such an extensive web page about their project. How did the Wireless How-to page come about?
JT) Actually, the beauty of it is that I'm no longer maintaining any driver, but I get credit for all the work that other people do in the Linux-Wireless arena. Nowaday, I'm mostly a spectator, and there are many people contributing much more than me to kernel driver, for example I should mention the ground breaking work of Jouni, or Pavel who that has his hands in so many drivers.
The Howto came because I'm a researcher. When you do research, you publish. The Howto was an somewhat unconventional way to publish the results of my work in wireless APIs, and was mostly focused on communicating with researchers. The wireless extension paper is my work that is the most quoted in various research papers.
The second goal of my pages was to publish the Wireless Tools and support their distribution. I personally believe that the whole process to distribute system utlities in Linux is broken, and I sometime envy the way *BSD does it. That's why there is so much pressure to put extra junk in the Linux kernel.
I also would note that, at that time, Donald Becker had much more extensive web pages about his Ethernet drivers, with mailing list and all the jazz, so I was not the first one. His page were mostly geared towards hackers, and unfortunately, they are now mostly obsolete.
Later on, as the audience of my pages changed from researcher to the general public, I did add the technology overview and improved the driver section, and it transformed into what you have now. Obviously, I must update and improve the Howto on a regular basis if I want to remain in the spotlight and keep my name up there in the
Google rankings ;-)
LQ) Recently, a hotly debated question has been: "When will Linux be ready for the desktop?". When do you see that happening (or has it already)? and what do you see as 802.11*'s place in that?
JT) Linux is my main desktop since 99, so it's ready. However, not everybody has the same needs, and I would not claim that Linux is ready for the general public. And, as the technology evolve, new application emerge, so the goal posts are moving forward. Therefore, I would not make any prognostic.
From the experience of my families dealing with computers, my view is that no OS is ready for the desktop at home. You need to babysit those computers all the time. Linux has its aggravations (drivers, apps), Windows has another set of aggravations (decay, viruses), both are much too fussy and time consuming for my families. But Computer Science is still relatively young, which explain its immaturity.
If you are talking about a corporate environment, usually a corporation has enough people and uniformity to make whatever OS they choose a success. Some companies are still using text terminals on mainframes/UNIX, or Win3.11. The desktop of my wife, at Cisco, is Solaris (close enough ;-). Some other companies have clearly decided that Linux was ready enough for them.
I think that 802.11 is not a main factor in term of suitability for the desktop, clearly not at the same level as applications and ease of use, I don't think many people don't use Linux on their desktop because of 802.11 problems, they just complain that 802.11 is not supported. However, it is true that when it come to 802.11, all the familiar issues of Linux are exacerbated, we have more unsupported hardware, driver in poorer state, and it's harder to configure.
Users are complaining, but people always complain, that's their nature. They buy the hardware first, and worry about Linux compatibility later. You don't buy a Machintosh and complain that it doesn't run Windows, so similarly you should spend the time to pick hardware from vendors which are supportive of the community. My Howto give you enough hints on how to do that, and if enough of us do that, that will give a nice incentive for vendors to be Linux friendly.
What about laptops with integrated 802.11 ? Do you know that when Cisco buy laptops for its employes, they rip off the wireless Mini-PCI card and replace it with an Aironet ? The reason is that other cards don't support Cisco security features. Similarly, for Linux users it's quite easy to find a Pcmcia card that is well supported by Linux for $40 and plug that in the laptop.
LQ) The state of Linux wireless device driver support is a little muddled right now, and not for lack of an incredible API. Do you see the problem as primarily an issue of lack of driver writers? A lack of support from hardware manufacturers? A bit of both? Or are there more factors?
I think there are two issue, first the intense competition in the marketplace, second the complexity of the technology.
Competition is good, but you should never abuse of good things. My pages list 12 different 802.11b chipset and 4 post-802.11b chipset. This fragments the user base, and it's clear that not every chipset can be well supported. Ethernet used to be like this, but Ethernet has nowadays less chipsets for a much larger userbase.
Competition accelerate cycles, so chipset stay current less time, and very often by the time the driver reach maturity, the chipset can't be found in the marketplace. The intense maket pressure on chipset vendor means that they have less time and are more protective of their information, so less likely to help Linux.
Wireless LANs are also quite complex. It is at the intersection of two fields which are complex, communication and computing, and nobody can't be fluent in both. The nice API is good, but it means that the driver writer has to figure out how to implement all those API calls and make the hardware do the right thing. The recent trend to move the 802.11 management from firmware to host has also dramatically increased the complexity for driver writers, and the development of a 802.11 layer in the kernel would relieve only some of it.
I believe that with respect to driver writers, we are doing OK. Actually, I'm somewhat surprised that there are so many drivers on my page (more on that in a moment). Driver writers are only human, so give them some time.
In the long run, it's clear that the technology cycles will be slower (less improvements), and the marketplace will consolidate (less vendors), which will improve the situation.
LQ) Followup to that, from the man that maintains the list: Your top 3 best wireless chipset manufacturers? and your top 3 biggest offenders?
JT) For research purpose, one of my favorite is the Cisco Aironet 350. You can tweak all possible parameters, and it's really stable, but it's expensive. The Intersil PrismII has incredible drivers (linux-wlan-ng, HostAP), can be made as an AP, unfortunately the firmware quality is not what it should be (even though it has improved dramatically). You can still find those card for cheap if you look carefully. I also have a sweet spot for the Orinoco, which is a good card with a good driver, but nothing spectacular, and now difficult tofind.
The last card I bought is an Intersil Prism54, which has a driver team very active, but so-so firmware. I've pushed that driver in the kernel, and therefore will show up in most distro, so it's a safe choice if you are addicted to higher speeds. I think that Atheros is a very good choice, but unfortunately it won't be part of the standard kernel. Intel seems to be on the way to become a safe choice, but only time will tell.
The main offenders are TI and Broadcom, which have Linux drivers internally, list Linux support on their web site, but are not releasing those drivers and are not helping the community. Some of those TI engineers even sent me e-mails criticising some features of the Wireless Extensions. It's a shame because both hardware seems to be quite nice. On the other extreme, you have some chipset vendors cutting costs a bit too much on their hardware development and testing, so their products don't work reliably.
LQ) Do you think that the increased popularity of Linux and corresponding usage of wireless devices with Linux has at all influenced wireless manufacturers policies on releasing proprietary chipset specifications to Open Source Developers and do you think that it still is one of the major impediments for Linux wireless driver development?
JT) It definitely has.
Some vendors are very active in helping the Linux community, and releasing fully Open Source driver themselves. If you look in the Howto, you will see that a good proportion of the recent drivers were released by the vendor themselves (Atheros, Prism54, Agere, Aironet, Atmel, ADMtek, Realtek, Ralink and Intel). And some vendors have managed to really involve the community, but most are still tuning their process.
I would even claim that the ratio of driver which are sponsored by companies is one of the highest amongst Linux subsystems. This was not the case a few years ago.
On the other hand, the vendors that don't want to deal with Linux are *really* uncooperative (see above). This is why I would like people to buy hardware mostly from friendly vendors, to thank them for their support.
LQ) What piece of Linux code are you most proud of?
JT) Most of my code is simple and unimaginative. I'm proud of doing consistently maintainable and commented code, and spending lots of time to test it. But, I don't have much pride in my code.
Kernighan said that "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.". I would add that maintaining code over long period of time is twice harder than debugging it, I sometime need to go back to code I haven't touched in years. One of my favorite author, Antoine de Saint-Exupery, said "Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.". At this point, I probably sound really pedantic...
I'm probably not a prolific coder, and you won't find large glob of code written by me. However, I've contributed to many other projects and added my touch to other people's code, and even in some case maintain the code of other people for some period of time.
Very few people are comfortable working with other people code, and most prefer to work only within their own code. This is why the kernel is so modular, so that each is master of his own domain. This also explain why so many project are started from scratch, because people just don't want to take the effort of understanding a specific piece of code that already exists and works. Unfortunately, this is not something you learn at school.
I'm obviously proud of the design of my APIs. API also are hard to get right and need to be as simple as possible. There are actually things I would like to remove from Wireless Extension, but at this point it's too much pain.
Too many people think that designing an API is only about choosing the mechanism, such as using a system call, an ioctl, a file system or a socket. Then, they just export the internal data and methods to the outside word. Actually, designing an API is about specifying those data and methods so that they are unified.
Obviously, people are going to complain because the API doesn't match the internals of their module. This driver internaly use an "SSID", as a C string, but the API specify that it's an ESSID. But that other driver use a "Domain", which is a Pascal string. So, designing an API is making all driver maintainers equally unhappy.
LQ) Imagining yourself back in 1998 when 802.11 was still pre-spec and a lot of the proprietary gear on the market ran on 900MHz, did you ever imagine that just a few years later people would be browsing the web from Starbucks or that the term "wardriving" would have been coined?
JT) Nope. It took me by surprise, I guess that's why it's called a "disruptive" technology.
We did see a future in Wireless LANs. It was already in various vertical applications, and most people agreed that it would go in enterprise once it would be cheap enough (they were a bit optimistic on that one). There was lot's of talk about Wireless ISPs, and 802.16 still keeps these conversations going. At HP, we did see a future in Wireless LANs at home, and were the first to push for residential wireless LANs, that eventually lead to HomeRF. I believe this is where most of the market is nowadays.
I personally thing that public wireless LAN access and wardriving is overhyped. It's as geeky as it can get, and super cool, it impresses friends and ladys, but it won't be the next revolution in computing.
The main problem is that it is not pervasive and dependable enough, so doesn't offer enough value to justify much money. Think of your mobile phone, if you are travelling someplace and if you need to dial 911 at some point, you *know* that you will get connected. With 802.11, you'd better check the map before traveling to see if it's worth bringing your laptop. It's quite clear that the business model is limited, so the only sensible cost is free, as an add-on to another paid service, such as having cable TV in the hotel or using the toilets in cafes and restaurants. Moreover, doing all the accounting and billing adds to the cost. Actually, I'm surprised that Starbucks hasn't yet made it free.
Wireless community deployement will always be limited, like any non-commercial venture (lack of ressources, people, motivation...). The right of way (physical location) is actually a pretty tough issue, some groups manage some local arrangement, but that's not always scalable.
So, yes, you are and will be able to browse the web for free in a few chosen places, mostly cafe, but that's far for ubiquitous broadband some people are deaming about. But, I did not see it coming, so I may still be wrong ;-)
LQ) What do you see as the biggest shortcoming or limitation of the current 802.11 implementations?
JT) The number one issue is power consumption. But, there is no magic, it's not going to be fixed easily. That's what would prevent you to go from "use sparingly" to "leave on all the time". This has a profound impact on what type of applications you can deploy.
Another annoying shortcomming of various implementation is interoperability, especially in ad-hoc mode. The push from vendor to add all kind of extensions, such as security, is making things worse.