From: Clinton E. <men...@cr...> - 2001-01-10 23:28:34
|
I have really been thinking about this(and looking at code), and I think it is time to scrap the idea of a new distribution from scratch. It would be pointless to do that, when all of the groundwork has already been laid. Why do something over when it has already been done a few dozen times? I see no point. But, I do see a point in channeling your energy to make the existing better. So, I propose that we do a "fork" of debian -- repackage a few programs, use the majority of the existing ones, add a new installer, help to improve the debian software(if you take something, it is only fair that you give back), and add mpkg. Ok, the first thing to get to is what to do with mpkg? I see mpkg as not being a package manager with its own format, but rather be a manager that can install other pacakges, and help to maintain syncronized databases between pacakge formats. In essence, if I install a deb with mpkg, mpkg will generate a virtual rpm that provides certain files and install it into the rpm database. And, mpkg needs to become the best tool for distribution maintenence. Basically, make pacakging debs really easy(maybe a gtk/curses program to help get someone started / make maintence of the package even easier?), and to make building a distrinution easy. Take this fictional command: mpkg --rebuilt-tree --target=i586 --source-tree=/home/me/source -- output-tree=/home/me/bin/586/ What would that command do? It would take a tree of debian source packages, and maybe rpm/slp/slackware packages(later), and rebuild them for your target, and dump the compiled packages in the output tree directory. Now, one way to make these easier to code is to make all mentalunix/new_name packages use a common extension for source pacakges - .sdeb, instead of the one used in the debian archives(tar.gz). It would make it easier for the program to tag files as debs and tag files as autoconfigure packages(which eventually it should be able to configure and install with one command instead of 3, more on this later). Instead of unpacking them to see what it is, it could just check the extension(string.substr(".sdeb") using the STL strings). The whole thing would be a nice program sitting on top of libdpkg / librpm / zlib / mlib(mpkg library so other programs could use the functions, and make it so mpkg would have cleaner code). Being able to rebuild a distribution for any platform you want is a great power. The only large problem I see is getting the build depending to work -- either have the program un gzip / untar every file and check its build depends, have a nice build depends db(this can be done with the .dsc file I think) at the root of the source tree(and have mpkg apt-get all of the pacakges it needs pre build), or you can just hope the user has the files he/she needs. Making mpkg make packaging more approachable needs to be a large goal. It should be a lot easier for anyone to pacakge their software..so the upstream authors could do more packaging, and we could have more maintaners. A nice way to convert autoconf / automake packages to debs would be cool, but that would require looking into the shell scripts and parsing and stuff to get the build / runtime depends. The only way around this problem IMHO is to make it a lot easier to make pacakges from scratch. Have a Gtk+ GUI program that lets a user select packages that it relies on during build and runtime from a pop up list(actually an interface to apt-cache), and just give it an autoconf package, and an output sdeb(it would just strip all of the autoconf stuff and rewrite it with the Debian/rules and new autoconf stuff). I know this would help a lot of people become package maintainers. Why did I abandon the idea of writing mpkg from scratch? I discovered apt / dpkg, and I fell in love. Dpkg is a nice piece of packaging software, and apt makes it even nicer. So, why rewrite it, when you can build a tool that uses dpkg, and can take advantage of apt. The only trouble with apt is that it only modifies the deb database, and only install debs(or rpms, but you can't have both), so maybe it would need some code added to call mpkg --resync(resync the databases) after install stuff, or actually using mpkg instead of dpkg(mpkg's syntax will be dpkg syntax + extended options..but there needs to be a focus on adding the high level features, then filling in the gaps for the 1.0 release; basically keep dpkg around for a while)..using mpkg and not dpkg(once we get a nice 100% backwards compatable with dpkg release) would allow apt to install lots of formats. So, instead of rewriting all of the package code, we just have to write some of the stuff people haven't really done yet, and use the existing stuff people have already done. This saves us time, and allows us to get a lot more done, faster. Instead of writing an entirely new distribution, adding on to an existing one(debian would be a lot easier to add on to than mandrake would ever have been) allows us to focus on the little pieces missing from existing distributions instead of focusing on putting the pieces already there in. An example: the desktop. Sure, gnome and kde are nice, but are they truly Integrated Desktop Enviroments? Sure, if you use Gtk/QT programs, but what about older programs, and programs that don't use them? Do they change apperance when you change your theme? No! Do they behave with the desktop enviroment like the other programs? No! So, we could focus on bringing the "IDEnv"(Integreated Desktop ENViroment) to become a reality. And xfce is a key tool in this. Ok, if you have ever used xfce, you know it is cool. It is like gnome, but with a few less features, and a really different way of thinking. But, that doesn't matter. What does matter is it can modify xresources..so, if you change your theme in xfce, all of the non-Gtk programs will change colors(nothing like what gtk can do, just simple pallette modification). Now, since I know kde2 can use gtk themes(how?), I don't think it would be to hard to add support for controlling how QT apps look too. So, we use xfce. We make a nice looking desktop, and create panel menus with the programs users often use. We add desktop support to XFTree, and call it a day. Plus, with its XFGnome module...yay! It can do GNOME. The windowmanager may look a bit old, but it really isn't that bad. Users can use any wm they want with it anyway(some like to use E with it). Graphical login should be the default, but the installer should allow this to be changed. Using gdm would be good, and the Default session would be linked to the xfce session. Use the mentalunix gtk theme on the login manager, and have a nice mentalunix logo as the picture it uses. That wouldn't be too hard. Provide helix gnome. Use their packages, not debians. Yes, they have some dependeny issues, but they aren't really that bad, and if one does prove troublesome, default back to the debian one. Or, we can see how gnome in woody / sid progresses and move to that. Some people will want gnome, not xfce. Make linuxconf work nicely with Debian. Really hard to do, not really a great priority. Repackage certain pieces of software to make them more integrated with the distribution. Such as xfce. Also, making pacakges use debconf for any install time configuration is a must. The installer should be nice and graphical with a text based fallback. Basically, the choices for installer should be(the first stage installer should detect which one can run): Gtk-frame buffer installer Native X server install VGA16 X installer ncurses installer The installer should be like any other but with these addons: - Provide a bunch of different kernels and detect what kernel would be best for the user(SMP?/arch/SCSI or IDE?). - Advanced configuration of hardware in custom mode(as an option to the user). One of my friends had trouble configuring his burner. So, provide a kernel wil scsi emulation, and configure the kernel / config files to allow uage of the burner(either kill ATAPAI support 100%, or append="/dev/drive=ide-scsi" in the lilo config..if we don't use grub). Same goes for things like digital cameras(if one is detected if they can, offer to configure the gtk camera program to be able to use it) and scanners(if they can be detected, offer to configure SANE). For printers that can give an ID back to the computer(2 way parallell port..my ancient printer sends back BJC-250 when the parralell port code is initialized), have the installer autoconfigure the printfilter. If it can't be id'd, then let the user confiure. That is all I can type for now. My eyes hurt. Please post comments. --------------------- ASCII ART ********* * ********* "Ain't it l33t?" All views expressed are IMHO. Because MHO is better than yours. unknown_lamer |