In this interview we talk with Agostino. In specific, we talk about:
- The history of Wubi
- Providing a bridge for Windows users to try Linux easily
- Integrating Wubi into the Linux community and specifically Ubuntu
- Making the OS install and later upgrade simple for users
- Feedback from users and other Linux distributions
Sean Campbell: Tell us a little bit about your background, how you got involved with Ubuntu, and your relationship to Wubi.
Agostino: I started using Ubuntu very early on, even before the first release. Around 2003 or 2004, I was a Debian user. I was helping people on forums, and a lot of friends were asking what distribution to use. I was very happy with Debian, but I never felt comfortable suggesting Debian to first timers. So I decided to test some Debian-based distribution that was supposedly “user friendly.”
At the time, the two most popular derivatives were Mepis and Ubuntu. Now it may seem strange, but Mepis was more popular than Ubuntu. Nevertheless, because I liked the Ubuntu philosophy better and in particular its less compromising attitude toward software freedoms, I decided to try Ubuntu. I ended up using it myself, and I have never looked back. Everything I wanted from Debian was there, but with half the hassle.
Gradually, I got more involved with the community, helping people out with issues they ran up against. A typical one was that people had difficulty creating the ISO. Many users didn’t even know what an ISO was, some would literally copy the ISO file on the CD, others would burn at too high speed, others still had to modify their BIOS setup to be able to boot from CD. As much as I liked the idea of a live CD, it didn’t seem to be the right approach for many end users.
Another group of people complained about the partitioning. I had two personal friends who never went to Linux simply because of partitioning concerns. A lot of computers come with a single partition, which is often fully dedicated to Windows, and some people really don’t want to take the risk of modifying that set-up.
So I started thinking of some ways around those issues. I did like the approach of topologilinux and of instlux, but I always felt that they were only addressing half of the problem. What I thought was needed was an installer in a format Windows users were familiar with (i.e., a fairly standard installation wizard executable, such as instlux) but one which would install in a non disruptive way (similar to topologilinux).
As it happens, the underlying technologies that were necessary to implement that were maturing around that time. On one side, Grub4Dos was becoming quite a viable boot loader, and on the other, NTFS-3G (the Linux NTFS driver with write support) was reaching the release-candidate stage. As for the loop module, it had been around for several years. So the building blocks were there and I decided to give it a go.
I wrote a blueprint to illustrate the idea, then Geza Kovacs developed the first prototype. It was an initrd modified to boot from a file containing a pre-made image. The feedback from the users was encouraging, and I joined a few weeks later to fully implement the blueprint. Instead of using a pre-made image, I modified the Debian installer, to make it capable of installing inside of a file and generalized the booting code. The process was very similar to a standard installation from CD.
But because we did not have the resources to provide a customized ISO for each Ubuntu flavor, I had to modify the booting code of the installer so that it would patch a standard ISO image dynamically. There were other changes involved on the Linux side, particularly in the boot loader and sysvinit code to make a standard distribution capable of booting and rebooting from a loop installation. The original project that covered all this backend work was called “lupin” (for “loop-installer”).
This was basically Wubi 7.04.
With 8.04, Wubi became part of Ubuntu and a lot of the changes were incorporated directly into Ubuntu without any need for extra customizations. Today, in terms of files, a Wubi installation is basically identical to an installation performed from a CD.
Sean: What do you think the impact has been of having something like Wubi available to Ubuntu? It’s somewhat unique, although there are obviously live CDs, and you can put a Linux distribution on a USB key. All of these things can accelerate early tryout and early adoption without requiring people to re-partition their drive.
On the other hand, particularly for users new to Linux, this might be a way for them to try it out for an extended period of time, whereas a live CD, as cool as that is, is inherently a temporary experience.
With Wubi, you could continue to use your files and access things in a Windows partition, in a way that’s analogous to Bootcamp on the Mac.
Agostino: Wubi actually wasn’t designed to do long-term installations. The main aim was really to let people try out Ubuntu with confidence. Normally, users that start with Wubi tend to upgrade to a full installation to a dedicated partition at the next release cycle.
I always thought that a live CD is a wonderful idea, but it is still too difficult for many users. As mentioned previously, people do have issues with burning CDs and booting from them and even when they manage to do it, they sometimes get an inaccurate impression of the user experience, because the live CD is far slower and has some limitations (read only access by default, and so on).
What people like to see in the Windows world is an EXE, not an ISO. They download a file, double-click on it, and something gets installed. If they decide they don’t want it anymore, they uninstall it. This is what they are familiar with, and there’s no technical reason why we shouldn’t be able to provide a Linux installation in that form.
Sean: You mentioned that Wubi gave Windows users an easier means to try Ubuntu, but it sounded like that created an interesting initial influx of bug reports and reactions to using it. How did you handle that?
Agostino: I’m quite pleased with the fact that a lot of our Wubi users are first-time Linux users. This was our goal, although of course the fact that very few of them are Linux experts can make it difficult to get good bug reports. Detailed and precise bug reports are always welcome, but much more so when you deal with an OS installer…
In Ubuntu, you have a program that automatically extracts useful information when an application crashes and sends a log report that a developer can look at and get a good understanding of the problem. With OS installers, you run into a lot of situations that are difficult to reproduce, because people have all sorts of hardware, and often the problem manifests itself during the boot stage, so you have no logs whatsoever and users end up in a console with very limited functionality.
When that happens, even experienced users would have trouble extracting useful information to help us debug the issue, let alone first-timers. That can be quite a frustrating experience both for the user and the developer. It was really tricky in the beginning, when we were in the testing stage, and things weren’t always that smooth.
On top of that, in our case, the Ubuntu file system is inside NTFS. One of the current issues is that in Linux, there is no file system check for NTFS. This means that we cannot recover from a corrupted NTFS partition from within Linux, and that implies that we cannot boot from NTFS if it is corrupted. The user has to boot back into Windows, clean up the issue, and then boot Ubuntu again. This is certainly the most annoying aspect at the moment, and it also generates a lot of false positives.
Sean: I assume that for the same reason, you don’t support hibernate and suspend.
Agostino: Suspend is actually supported, but we don’t support hibernation because the current hibernation mechanism used in Ubuntu doesn’t support swap files. And of course we need to use a swap file inside NTFS.
You would have the same issue in regular Ubuntu if you used a swap file as opposed to a swap partition. You can fix that by using a swap partition, but then you might just as well migrate to a full installation.
Scott Swigart: It sounds like your background was primarily Linux, but when you set off on this project, you mentioned that you had to build a Windows installer and do integration with Windows. What was it like to learn enough Windows to get something like Ubuntu to boot and run?
Agostino: I started as a Windows user, but I have been using Linux exclusively since 2000.
Within the Wubi project, I was the developer doing the Linux side of programming. The actual installation in fact happens in Linux, after people reboot their machine, and that required work on the installer and on some standard packages that had to be modified.
In the very beginning, I didn’t use Windows at all, because you can basically boot from a loop file inside of an ext3 file system inside of a VM. All my tests were done with Linux inside of Linux, so the very first Wubi version was, in fact, Lubi, the Linux to Ubuntu Installer. [laughter]
Then I had to test NTFS and for testing I simply used a plain NTFS file system with a boot loader inside of a VM. But eventually, I ended up buying a Windows license (actually a full laptop) to do the final testing. Well, there was some Windows development too, because at the time, the programmer that helped with the original Windows front-end, Oliver Mattos, left and I had to take care of the Windows wizard.
I took the chance to redesign the interface. I always wanted to have a one-page wizard. To be precise, I wanted to have a one-click installer (which of course implies a one page wizard). This is what people see today.
Scott: At what point did Canonical and the broader Ubuntu community take notice of what you were doing?
Agostino: We released 7.04 first, which was completely independent. After we came out with the 7.04 release, which was a beta, we were contacted by Henrik Omma from Canonical.
They invited me to the Ubuntu developer summit, which is an event held every six months, where they do the planning for the next Ubuntu release. In the months preceding and following the meeting I received a lot of help from Colin Watson, who rewrote a good chunk of the installation code and Evan Dandrea who helped with several patches that I had to merge in Ubuntu.
At the summit, I had a breakfast with Mark Shuttleworth and explained, in a few words, what Wubi was about. Mark was very keen, but in general, there wasn’t much interest from most of the other developers. Only two people turned up during the Wubi discussion. I can easily understand that. Linux developers don’t actually need Wubi. In a sense, Wubi is a peculiar open source project. Open source usually works best for products that developers actually use.
And that’s part of why I got involved: I was afraid it would have been difficult to find someone willing to invest time in a project like Wubi. When it finally came out as an official installer, it received a lot of attention.
Even then there were people from the community that didn’t feel comfortable with the new approach. They started to see user reports that where talking about “installation drives”, unfamiliar boot loader configurations, NTFS issues. More veteran users felt a bit lost.
In fact, although most of the files actually installed are identical to the ones you would get in a standard installation, the configuration is slightly different. The first boot loader is actually the Windows one, which in turns loads Grub4Dos. Then, of course, the file system is different. Instead of booting from a partition directly, you first mount the FAT/NTFS partition, then you have to loop mount a file inside that partition, then you boot off that mounted file.
The combination of the loop module, the NTFS driver, the FAT driver, and Grub4Dos allowed us to create Wubi, so we stand on the shoulders of giants. The work on Wubi is minor compared to the work on those other pieces of software.
Scott: Some development depends on very hard, very low level kinds of engineering, but I always like to see an interesting combination of things that already exist. Wubi’s a great example of that.
In hindsight, it seems like an obvious thing to do–get Linux out there and let Windows users try it out, in a really safe way that doesn’t ask them to do very much. But, like you said, it wasn’t really obvious inside of the Linux community, because the people who were already using Linux didn’t have any need for it.
Agostino: Making things easy to install is only half the work. It must also be as easy to uninstall and revert everything back the way it was, which is something people expect of an installer. This is not generally required if you are going to take over the machine, but in a dual boot setup, which is our goal, it is a highly desirable feature.
Moreover, leveraging an existing operating system gives us a lot of advantages. There are a lot of questions that you don’t need to ask, because you can observe what the user is doing in the host operating system. So you can simplify the installation to a great degree. For example, I don’t need to ask what language and keyboard setup the user wants, because there is already an operating system running where such choices have been made.
And because people can easily uninstall , I don’t need to ask whether they are really, really, really sure they want to proceed. We do not have a point of no-return. Users just click “Install,” and that’s it.
This combination of factors creates an extremely simplified user interface. That’s very important, because Linux was plagued for ages by the idea that it was a difficult operating system. I think with Wubi, we may have the easiest operating system installer ever. You have one click, two reboots, and you are up and running.
I hope this will help dismiss all the myths about Linux’s difficulty. That used to be true, but today, we are far ahead on that.
Scott: And as you suggested, a Windows user is comfortable running a traditional Windows installer. Some people are willing to go on their own and figure out how to make their system dual boot and those kinds of things, but it’s a lot easier if it installs and uninstalls like an application.
Agostino: We are working on the ability to start with a Wubi installation and later upgrade that to a full installation within a dedicated partition. We didn’t have the time to finish that work for the next Ubuntu release (9.04). it will be probably be in 9.10.
This way the full installation process becomes a smooth and progressive task. The user will not have to decide up front whether she wants to modify her set-up to install Ubuntu; she can do that one step at the time, and go back along the way if she does not feel comfortable. So the decision to change partitions and bootloader is postponed to when the user has accumulated enough interest and confidence in the new OS, and when they do that, everything is migrated to the new dedicated partition.
Scott: What feedback have you heard from non-technical Windows users about how this has been helpful or interesting to them?
Agostino: There are thousands and thousands of blogs and Wubi stories, most of which are extremely positive. I’m really flattered about it. But, the type of forums I tend to follow with greater attention are the support ones, where people have problems.
This is more interesting for me, because it’s where I can get bug reports. Our typical users are not really familiar with bug reporting tools, and in many cases, the only way to get bug reports in the early stages of the cycle is to go into the dedicated forum and look at the questions people ask.
Scott: What have you seen in terms of interest from other distributions? I realize that right now it’s kind of welded to Ubuntu, or at least that’s the perception. I have to imagine that there would be interest in some of the other distributions, like Open Zeus or Pandora.
Agostino: Yes, a few Ubuntu derivatives contacted me for information on Wubi. Also a Fedora developer showed interest in the approach. As mentioned, it is easier for Ubuntu derivatives. For other distributions, it will probably get easier once we move to Grub 2. That will require less modifications to the core distribution as the bootloader itself is more capable.
Scott: That makes sense. The first time I saw it, I remember thinking of it as being very much like when Apple found small bridges to make people feel comfortable moving over. Wubi gives someone a little more confidence that they can do it, as opposed to, as you said before, just tossing them an ISO.
Agostino: Wubi has its own niche and target: providing users that already have an OS installed with a fully featured dual boot setup so that they can experience Linux for real and decide whether it is something they want to use. And if it is not something they want to use, it allows them to uninstall it. It is similar to but different from the Live CD, and no, it will never replace a full installation.
Sean: We’re getting near the end of our time. Do you have any closing thoughts?
Agostino: I would like to thank all the people that made Wubi possible and whose hard work is not always recognized as it should: Colin Watson and Evan Dandrea from Canonical, Szabolcs Szakacsits for all the work and support with NTFS, and all the grub4dos and grub2 developers, all the testers and translators. I hope we managed to bring people a step closer to the Linux world.
Sean: Well, it’s a great way to work toward the goal. Thanks for talking to us today.
Agostino: Thanks a lot. Have a good day.