Launchpad entry: https://blueprints.launchpad.net/ubuntu/+spec/customize-download-cd
Original project proposal: http://osalcproject.sourceforge.net/doc/gsoc-proposal.pdf
This project aims to customize an Operating System Install CD/DVD from a website or a downloadable cross-platform GUI.
Why this project ?
I have installed many Ubuntu Linux OS on different kind of computers, and each time, it took me a lot of time to install, download necessary files and configure. I find this idea very interesting because the "base" configuration doesn't fit with users' expectations. Indeed, he has to install many third part and non-free applications, and he has to configure them.
So the basic idea is to build a customized Install CD/DVD (based on the "alternate" version). In order to choose which option or package have to be added, I'll make a poll within the community using the forum or the mailing list.
The main goal is to grab OS market share, from Windows of course (see bug #1 ) and even other Linux distributions.
This project is called "OS A La Carte", "A La Carte" is a french expression used in the restaurant context, where people choose elements (food) that makes their lunch.
How I plan to do it
The Os customization will occur at 3 levels :
Core OS : At this level, I'll modify the core of the Operating System, such as user account, password. These modifications are made with the preseed file, which controls the install process (debian-installer) ;
Third part software : I'll customize some programs such as Firefox (add extra add-ons) or Metacity (configure shortcut, configure viewport,...) ;
Extra applications : This level deals with a group of applications that are necessary to reach specific objectives (programming, video edition, ...), I'll also use the expression "Application profiles".
Programming Language and Tools
In order to make this project, I'll use Ubuntu Linux Feisty Fawn 7.04 "alternate" version. To code the web interface, I'll use PHP scripts, Mysql database and Apache webserver. To remasterize the ISO image of Ubuntu Install CD/DVD, I'll use Python. I'll look at debian-installer program, in order to find information towards preseed files, I'll use dpkg-deb tools to rebuild existing packages, lintian to test them and mkisofs to generate new ISO image file.
All along this project, I'll use eXtreme Programming methodology which is non-regression tests oriented. So each time I'll add new functionnalities, I will test all the code from the very beginning to the very end. This project is quite ambitious, indeed GSoc time frame is only 3 months. In order to succeed, I 'll use a Extreme Programming methodology. Indeed, this software engineering methodology allows ongoing changes, so I can adapt my code to Ubuntu mentor's expectations.
I've decided to divide the application into the 6 following modules:
Feed will take care of Ubuntu updates available from Ubuntu repositories (security, backport, proposed) ;
Watch and Notify is a secondary tool which main goal is to display last updates available on a web page ;
Package wrapper will custom Ubuntu packages (such as Firefox or Metacity), it will open, edit and regenerate debian packages ;
Preseed will build a preseed file that will control install process ;
Remaster will regroup all gathered information and generate the new ISO image ;
Select will be the selection interface where the user will made his choice.
Things that are already done
This project was created during my Master's degree in Project Management. I'have done a good part of analysis, building tests, and even coding core modules. My final report, unfortunately written in French, is available at http://osalcproject.sourceforge.net/doc/final-report.pdf and sourcecode available at http://osalcproject.sourceforge.net/sourcecode/ .
I think, this project is ambitious, but I already have started to work on it, made some analysis, defined some tests and begun to code. In my opinion, this project is responding to a real need and can help Ubuntu grabing some OS market share parts that's why I hope that this project will be accepted by Google and Ubuntu Team.
The original proposal is available here: http://osalcproject.sourceforge.net/doc/gsoc-proposal.pdf