Sunday, May 27, 2001
The only exception to the rule that I have encountered is the KDE group. If you would like to be in the KDE distribution then you have to move your code onto the KDE CVS server. To even get to that point it has to be good and it has to have comments. From there you have everyone who uses KDE pointing at your application and telling you where you are not the same as everyone else and not conforming to the rules. I never appreciated it for what it was worth until just now. For this small fact that I probably fell in love with KDE without even knowing it. How in KDE everything works together and everything looks the same and behaves the same way. How could that be bad? I have often thought of starting a group of developers who would simply go around and work on projects. We would descend upon one project and clean it up, doing all the dirty work so to say and adding icons, comments in the code, correctly laid out dialog boxes etc. but as I write this I realized what I was doing. I was doing just what the KDE group does. For a developer who is making a KDE application there is nothing like thinking that your application will get put in with the KDE distribution. And what is wrong with that? You get your work put in just about every Linux distribution CD out there. Because of this you polish your application and add all the extra little pieces to maybe get it into KDE. This creates a better application all around. Once the application is in the main distribution it takes on a life of its own. Its user base skyrockets and people who would have never known or used the application are getting involved. Pretty soon that application is better and better as more people are getting involved. General users find that they already have program kfoo and that it is doing a pretty good job and so they don't try to make another clone of foo, but work on something else or even help make kfoo even better. This has to be the strongest thing going for the KDE team. So I salute the KDE group for what they have done. They have done what no other open source (non - commercial) group has done*.
*That I can think of, and yes you can probably think of some other one, but lets face it the number of groups who are doing it substantially outnumber the groups who aren't so credit goes where credit is due.
Thursday, May 24, 2001
I started small by putting Linux on the worst machine I had and only playing with it every once in a while to do such things as to show it off to my friends. Then I made that little machine into a router for the rest of my house so I could have the internet on more then one machine. Before I had been using several Windows proxy tools. Linux far surpassed the proxy tools. No more configuring each application to get them on the net, everything just worked. Another bonus of having Linux as my server I was forced to interact with it every once in a while. I set it up as a web server, FTP server and so forth. Over time I learned how to move around Linux and do some small things. I ended up putting Linux on a more powerful machine. A tri boot machine it had Linux, NT and Windows98 for me to play with. It was then that I was able to use Linux as a desktop machine for the first time and even to do some programming in Linux. Trolltech's Qt Toolkit caught my eye and I began to go through the tutorials. Soon I had a little silly game running. Over the next six months I began to use Linux more and more. Before long I was able to use Linux as my desktop box. Like a lot of people I have ended up with several computers sitting around me. The reason it took so very long for me to move over everything was that I used many little programs in Windows and I needed to find comparable Linux applications. From e-mail, web browsing, FTP client, and of course an AIM client.
I recently bought a new palm after my trusty old one past away from being smashed. I figure I should probably start keeping a backup of the palm on my computer. A quick hope over to Freshmeat to find applications I see that there are a number of palm applications. A light goes on in my head saying well if there are so many one must be good... right? Two frustrating hours later I learn the bitter truth that there isn't a suitable setup for the palm under Linux (that I could find) And yet there were so many half done applications all with a TODO list. Booting into Windows I transferred over my data to my new palm. Later that week I got the urge to backup my system after almost setting it on fire. (Only the floppy caught fire.) I have a nice old SCSI CD-R and knowing how Linux loves old hardware figured that I wouldn't have any problems. Just like the palm I found the software to be lacking. But why am I using Linux when it currently has inferior software?
I recently read an article about the Dreamcast, and in one of the comments someone talked about how he owns both a Dreamcast and a Playstation2. Gasp, horror, isn't that forbidden? Wait, it really isn't. Consoles generally don't run for more then $300. That is about the cost of several video games. I do not know of a single console that has had all of the killer games. So is it a bad thing to have more then one console? I would have to conclude that it is not, but why does someone like to have only one console? For a lot of people they don't have enough time for all the games on one system let alone two. But for those that play games all the time and use it as there way of cooling off it would be a great way. Can this be brought over to the Computer world? Can you have both a Windows box and a Linux box? Gasp! My first reaction is to recoil in disgust and laugh it walk walking backwards as fast as I could. But I stood there and examined that option very carefully. Could I do that? For the past few years I have moved over to Linux to the extent that I try to have a really good reason to not be using Linux. I use KDE for the common desktop, made an aim client when I couldn't find one good enough, joined a DVD development group to watch DVD's. All in the name of simply getting up to where I was in Windows. Why did I have to stay away from Windows (besides being evil and all that)? I started to look at it from another point of view.
From an effort/reward scale. Taking the palm program as an example. If I were to try to use the Linux palm application I would be limited in my capabilities, I wouldn't be able to edit my data on the desktop and who knows what else wouldn't work. But there isn't very much that I would like to do either. Simply keep a backup and do some quick editing from the computer keyboard where I can type faster. For that little bit of work is it worth attempting to get the palm set up on Windows. By itself it is not much, but when I add the number of other things that I need Windows for a list begins to grow.
A quick flip in the other direction is even more surprising. What is the work/reword for having a spare Windows box around? Not a box that is used day in and day out, but a box that has 98, IE and my Windows hardware on it. I don't have to pay for Windows sense I already own it. Not only do all of the above hardware completely work, but then I also get the ability to watch QuickTime videos again. There are probably a half dozen other Windows goodies that aren't on Linux yet that I will gain. I am not saying that I would have it up and running 24x7 and use it as my desktop, but it would be properly set up so when I did need it I could use it.
So why do I have and hardware that only works in Windows in the first place? Mostly by chance. Research would be the key thing here. If you are looking to have a Linux only box you had better make sure that all of your hardware is fully supported under Linux. That the monitor and video card work together, the USB camera will even work, and many more. They will definitely have Windows drivers and setup, but it isn't so in Linux. I have found that having a spare Windows box around isn't a bad thing for me. I have paid the Microsoft tax a dozen times over buying new machines so licensing isn't the problem. As for stability, the box isn't going to be used much and everyone knows the stable Windows boxes are the ones that don't change and aren't used much.
Over the next year I am sure that I will try many Linux applications once again. Maybe by then they will be further along in development and I can move over a little more, but for now I am ok with having to use Windows. And even when I have moved everything over or given away all the Window only hardware I will probably keep a Windows box around just in case I ever need it. I have realized that I do not need to make it my goal in life to rid myself of everything Microsoft. The amount of effort isn't worth it when I know that given a few more years I will have moved over to hardware that is supported in Linux. It is more beneficial for me to keep Windows around at this point then not.
Friday, May 04, 2001
I recently had the opportunity to install Debian on my system. I had long heard about this distribution, but never had the chance to use and install it personally. My roommate Gad had
been plugging Debian for a year and so when the time came to install a new Linux distribution I gave Debian a shot. Eight hours later and two re-installs I had successfully installed Debian onto my machine. If it wasn't for apt-get though I would have another Red Hat machine and not Debian. The Debian installer was inconsistent and in a number of places needed drastic improvement. Over the next few weeks I began to think of how an installer works and how so many components are similar between distributions, which resulted in my hunt for the Linux Installer.
Research - What is really going on here...
There is much debate in the Linux world for what should be the correct application installer. Whether you prefer to have rpm's or debs or just tars I will not try to answer that question, but you don't hear much debate around the Linux OS installer. One of the things that you always hear from someone is that Linux is hard to install. It may because people generally need to dual boot, but work needs to be done on the system installers non-less.
I made a quick trip over to Red Hat and Mandrake's websites. Mandrake had some information on their installer, but it seemed to be for there installer only. I couldn't find any information on Red Hat's installer (or the website is just so confusing). Spending an hour I couldn't find an open source Linux OS installer project, anywhere. It seemed like every distribution was coming up with there own Linux installer, making it GPL and that is all. Maybe they copied parts from another installer, but I couldn't tell or find any docs to that.
Reasoning - Why we need a common Linux installer
When I use my Red Hat 6.2 boot floppy it can't see my cdrom, but Mandrake's boot floppy does. This is just one small bug of many that I have had over the years. The bug list for an installer should be as near to zero as it can reach. Especially for an operating system that is trying to sell itself to a new market. As more and more people try Linux for the first time they shouldn't be frustrated even before they get the OS installed. Why should there be twenty different Linux installers with their own quirks and bugs? If more people used one particular installer it would have many more eyes reviewing it. As the quote goes, with many eyes, all bugs are shallow.
I remember way back all the way to 1997 (seems like so long ago...) when I installed Red Hat 5.2. It was my very first Linux installation on my own. I spent quite a bit of time reading over every word and figuring out what it all meant before hitting the ok button. Over the past few years I have edged more to using Red Hat and Mandrake based distributions. I found the installers to be similar from one release to the next. Even when they added GUI installers I was able to figure it out with little trouble. I think of myself as a pretty good Linux developer. I thought I knew the system quite well that is until I installed Debian. The installer was so confusing that I felt like I was back with Red Hat 5.2 learning every little thing over again. The troubling thing was that it was doing the exact same thing that my other installer had been. Asking for my root password, repartioning the hard drive etc. For something that it so fundamental to Linux the installer should be more consistent across distributions.
But why stop there? Just about every installer has there own little "perk", but for the most part they all do the same thing. Set up some hard drive, copy files, and set up the base config. Why can't these things be the same from distribution to distribution? Why must developers reinvent it over and over?
In the dot com crazy I often thought about bisiness opportunities I could look into. One such crazy idea was to start a distribution. But if I wanted to create a good distribution I had to make a good installer to go with it. Everyone knows that this is not where the money is and creating an installer for Linux is not something that you want to spend resources on. If there was a common installer that was advertised as such I could simply pick it up, write the plugin for the "Speedy backup connection 2005" that I was bundling with my distribution and be good to go. I would get the consistency of a common installer, the stability of an installer used by many, and it would allow me to spend my resources on other better areas. But best of all, the users who used my distribution would not have to worry about learning the install process all over again.
Proposal - The Common Linux Installer
I propose that a Common Linux Installer Group (referred to as CLIG from now on) be created. It will consist of people who are working on Linux installers. It will not have a distribution itself, but be used in every distribution out there that wants to use it. This does not mean that a distribution has to use this, but the option will be there. I presume that there will be a sample "distribution" that will come with the package, but hardly what I would call a distribution.
Upon start of the install a data selection method will be chosen. This will be ftp, nfs, cdrom, floppy, hard drive or anything else that is wanted. The data retriever will be a separate library so that anyone can write a new library to allow the installer to use the new fangled file retriever. For example you could write a module that would use apt-get to get files for the install application if you so desired or pull the files off of a tape.
Each step in the install process would be a module. Each module will have three components. A text front-end and a graphical front-end and an action backend. The two front-ends would call upon the action backend to execute the requested action such as adding a newUser. This also allows for the installs that have a script that don't pull up the text or graphical, but simply the action with no user input. (i.e. plop in a disk for you install and come back 30 minutes later when it is done.) Internationalization will of course be tightly bound to this step so that the components can be used all over the world in different languages. Finally for the developer there will be a test function to simply simulate that action, but not to actually do it.
The final step is the install. This will also be a module. There can be an rpm installer, apt-get, tar source or anything that the distribution wishes to use. This component will be modular of course to allow for the latest and greatest packaging system to be used.
More important then anything else the installer will be clean. It will follow proper user interface design rules and not include pointless extra features such as themes or Tetris. Each page will be thought about and the interface will be consistent across the installer. There will be documentation and the entire project will be clean so that any distribution can grab the components they need and toss them together with minimal effort.
Conclusion - The Common Linux Installer Group.
The current state of Linux installers is not what it could be. There are many different variations and many different problems that they each have. A common Linux installer could be able to create a base for anyone that desired to use it. It would provide not only a standard install interface, but also one that is tested and working. Using a common installer the distributions could spend more time on the more important issues and not on such things as getting nfs working on and alpha boot dist. If someone wanted to make a distribution for their own personal setup they could do that with this package.
I am already involved with a part time project (Kaim), going to school, and working so I can not head up this project, but I wanted to get this off my chest for it has been going around me head for a long time. If some company is interested in sponsoring me to work on this project I might talk with them about it.
This document is just preliminary findings from the past few weeks. There may be a secrete developer group that shares all of the work already and I just totally missed it. Perhaps every installer is already modularized like this. But I don't think that is true. Even if the code was being shared in the background it wasn't showing up in the user interface, which is the only thing that the user sees.
Git hooks are scripts that are run by Git before or after certain commands. Because the hooks are run locally and not on the server it allo...
A little over a year ago on reddit I saw a picture of a guy sitting on the edge of a rock . Not just any rock, but a clip of a rock that je...
For the 2011 Google Ants AI Challenge rather than doing the typical solution of choosing direction for each ant based upon the shortest pa...
I recently put up a new tool on GitHub called git-hooks . This is a tool to manage project, user and global Git hooks for multiple git repo...
Depending on the definition "code review" can mean a wide variety of things such as formal code review or automated code analysis....
SSD's provide significant improvement in disk IO. How well does that translate over when using Git? A lot. After watching prices dro...
All through my programming career I have had a whiteboard, but beyond simply making sure I had one I have never thought much more about it. ...
Update: See my more recent blog post Git hooks for a more in depth look at Git hooks. The past few weeks I have started learning Git and ...
I have created a new application called KAudioCreator. It is a front-end tool for ripping and encoding CD's. I am happy to say that KAud...
This weekend I created a little application called git achievements . Similar to the XBox360 Achievements you can unlock all sorts of Achie...