Wubi port to Fedora
From Open Source@Seneca
more to come
Wubi is the brainchild of Agostino Russo. From what I understand, Ago or xivulon, had monitored the experiences of people (normal people, not programmers) with regards to attempting to switch from licenced OSes to free systems like Linux. He noticed that people were struggling with the fundamentals like running fdisk and everything todo with partitions. So he automated the process. As he puts it (actually my paraphrase), 'in Windows, you click on a windows executable (say wubi-installer.exe) answer a couple of questions then go get yourself a coffee and when you get back it will be done - you reboot and you have a dual-bootsystem. Now that is cool. It should come as no surprise that Linux systems are more and more into the mainstream. It is my belief that Linux distributers must adopt a new approach, a new mindset with regards to attracting users. Users should be considered to be customers, clients whatever you want to call them but treat them like they were actually paying customers. I think that the whole Linux distribution system is broken. Because Linux is free, everybody, form software developers to distribution executives expect their users, their customers! to understand things that only system administrators should have to know. The other OSes don't do that - they never have done it. Ask any MS Windows user what she thinks of fdisk and you will get nothing but a funny look. Removing the complicated bits from the install process will increase the user base which is a good thing. It is the philisophy driving things like Wubi that is will help extend Linux use.
The state of Wubi
Wubi is in the process of changing from a combination of NSIS and bash scripting languages with C++ on the windows side to file creation and other low level stuff (like writing the ISO to the disk). This, the switch to python, should make the code much more approachable - only one thing to learn. The second part of the major change is that much of the back-end code has been moved upstream and with the next Ubuntu release the code in the wubi back-end will be more reliant onthe official release ISO.
The current available code is in version 8.10 and it is the non-python code. All releases, as far back as 7.04 are available at launchpad.org (which is managed by cannonical). This site maintaining the code uses Bazaar version control management system The site is open to all developers and I will be using it for the Fedora Wubi development code but also being very careful not to make anything public before the Wubi team have publicized it. Once bazzar is installed on your development computer, it is possible to get the latest copy of a branch (trunk) of code very easily - bzr branch lp:wubi will put a complete copy of the latest wubi code on your own computer.
Wubi architecture, because of the way Wubi works, is initially a Windows application then rebooted Linux installation, Wubi is made up of a front end, which is wubi.exe and runs in Windows, and a back-end called lupin that runs under Linux and initiates the Linux installer on the initial installation and simply runs the modified ramdisk on subsequent reboots. Communication between the front end and back-end during the initial installation is through 'preseed.cfg' containing the data gathered by the front-end program. With this pre-seed data the installation is allowed to be virtually unattended. As is, lupin is capable of running completely unattended. There is also provision for the program to take a custom style install by passing command line parameters to lupin.
Compiling Wubi At this point, the programming environment on my Windows XP isn't fully set up. I have decided to go with Microsoft's C++ compiler and the GNU compiler. These now appear to be needed only for the earlier versions of the code which does use C++ as it might be necessary to use the earlier code while adapting the new program code to Fedora. The code to be developed for Fedora will be python.
The new code is pure python: here is an extract from the Makefile of the new python code:
rm -rf build mkdir -p build/wubi tools/wine c:/cx_freeze/FreezePython.exe -OO --include-path src --install-dir build/wubi --base-binary Win32GUI src/wubi/wubi.py cp -a bin build/wubi cp -a data build/wubi
The code for wubi is expected to work 'out of the box' on the XP side with only some changes made to match what the Fedora installer will be looking for. I could attempt to build it now but with the specific experience with python that process and errors wouldn't make any sense. So first a little practice with python and cx_Freeze which turns the python code into a binary executable. Next steps include coming up to speed with python and exploring the Fedora community to get an understanding of the Fedora startup in relation to loop mounting an ISO file. Expect to try to compile later this weekend.