I think your misunderstanding - He wants to retain control over his work on LinuxPPC. What's wrong with that? He's not saying he wants to force other people to do anything, just that
a) he wants to do LinuxPPC for a living
and
b) he doesn't want greedy stockholders telling him what to do
Free Software is about both control and no control. You control everything, but you don't control anything of anyone else. So, I don't see the inconsistency.
Actually, there are many profitable Linux-based companies. Although the numbers aren't publicly available, I imagine RH was pofitable at some point before IPO. CheapBytes has been around quite some time. So has LinuxCentral. Walnut Creek is apparently making a profit off of Slackware, and my guess is Macmillian is making a profit off of Mandrake. There are more to Linux companies than just the overzealous corporations. To think that profits can only be made in corporations is short-sighted. There are many companies doing great things with Linux, and making money.
Actually, these are hackers. They are also crackers. The had an amazing grasp on the technology, and used that knowledge. In fact, it was kind of interesting, because this was a hacker/hacker war. There is a big difference between crackers who are hackers and crackers who are script k1dd13z. Not that cracking is okay if you are a genious, but that even if you don't agree with what's being done, you can at least appreciate the skill with which it was done. This seems like quite an amusing little war, and I'm sure the hackers working for DirecTV got a kick out of it (especially the "GAME OVER" part).
Actually, I found the kernel to be quite simple. I bought "Linux Core Kernel Commentary", and looking at the code, it was very simple. Other people have also mentioned that the kernel itself has no real impact on user-friendliness. Actually, good user-friendliness requires _much_ more complexity. Let me give you an example:
If you have a form that asks for a users country, then afterwards asks for their state/province, the user-unfriendly version would simply show the same form to everyone. The user-friendly version would look at the country, and then decide (a) whether the field is needed or not, and then (b) what that field is called in that location. So, the user-friendly version is actually much, much more complex. With simple code, the user does the work, with complex code, the user gets it easy. In Linux 2.4, auto PnP support was added. That increased user-friendliness, and also greatly increased the code complexity (they had to add a whole resource-management subsystem).
The problem with copy constructors/casting constructors is that you don't even know they are being called. If I use your library, and I make an assignment, I'd actually have to look at your code to see if a function call was made. If I pass something as an argument, again, I'd have to look at the code to see if a cast constructor was invoked. That is a big, big problem.
Actually, identical hardware benchmarks are very poor, because it assumes that each system exploits that hardware to its fullest. The best benchmarks is to have two camps, give them each X number of dollars, and build the best server, and then compare those. For example, if the system has a TULIP ethernet card, and OS A supports it well, and OS B doesn't, then the OS A will win, even if OS B is fater on an EEPro. So, for stuff like this, its better just to do it based on dollars.
You have to understand, I really loathe C++. They really messed up the OO stuff. It does _way_ too much stuff for you (copy constructors and casting constructors really suck. If I need to cast, either let me do it myself or give me an error). Overloaded operators also bite. Worst of all, the standard library make horribly gratuitous uses of operator overloading. They used the bit-shift operator for printing. AHHHHHHHHHHHH!!!!!!!!!! If you are going to overload operators, it should be at least within the same context as the original operator. That's like someone overloading the + operator with commands to format your hard drive - it just doesn't make sense! Memory management in C++ is next to impossible, especially with copy constructors and conversion constructors. C++ is a memory leak waiting to happen. I have never used QT, so I can't comment on it specifically, but I would rather eat trash than code in C++. However, as far as usability, GTK is wonderful. It is soooo simple and soooo flexible. It's absolutely amazing.
(1) Not all methods in C++ are virtual either
(2) GOB was built for this purpose
(3) Doing this makes code a _lot_ clearer
(4) It took me about 5 minutes to understand. Other people's times may differ, but I've never seen anyone have trouble with it. The you don't have to spend time debugging the macros if you use GOB.
(5) Different people like different langauges.
(6) I have read Havoc's book - it is very good. I'm not terribly up to speed on Gtk+ 2, except that they will finally have moved the OO stuff into glib - YAY!
This is very true. Where I work, we switched from a text-based system to a GUI system, and EVERYTHING SLOWED DOWN. Our customer service people HATED it. It took infinitely longer to point and click than to just type. These aren't computer specialist, these are regular customer service/order entry people. They are just trying to enter orders, and with point and click it took forever. I'm not trying to knock off GUIs altogether (they work well for many things), but it is true that not everything requires one, and they don't necessarily make things easier.
I think you're missing one problem - one of the goals of GNOME is to provide interoperability and consistency between and among programs. That means sharing as much code as possible. Which then means libraries. If you want printing functionality - don't write your own, use gnome-print. If you want to communicate with other programs, don't make up your own protocol, use CORBA (ORBit). If you want to allow your app to embed others, don't write the code yourself, use Bonobo. If you want to draw to the screen, don't make up your own toolkit, use Gtk. If you want to use audio and allow it to mix with everything else, don't make your own library, use gnome-audio.
You see, the problem is consistency. The fewer libraries, the less consistent everything is, and programmers have to code their own everything. Why not put it all in ONE BIG LIB? Because not everyone needs everything. If I'm not embedding other objects, I surely don't need Bonobo. If I don't print, why link with gnome-print? Anyway, if you like life on the bleeding edge, download all the libraries and play. I personally prefer to wait until it all comes in a nice package. And then you don't have to worry about any of that.
How quickly you forget - C++ originally compiled into - plain C!
I don't remember exactly, but it is something like this:
Each object is a pointer to data. The first data item is a pointer to the virtual method table. The virtual method table has the entries for the functions. So, when I do
gtk_object_show(myobject);
it is a macro for
(*myobject->methods->showMethod)();
Or something like that. This is basically the way C++ handles it internally, too. Anyway, you get full inheritance. However, it does not currently support multiple inheritance or interfaces. However, for GUI programming, those aren't terrible deficiencies.
It is _much_ easier to code it in C and then bind it to other languages, than to code it in an OO language first, and then try to do language bindings to other OO languages.
1) The HTML engine isn't in your file manager - it calls out to mozilla
2) Most of the components are separated
3) Yes, most developers went nuts a long time ago
4) Nautilus looks like it will do a great job of managing files. I especially like the "tag" concept - you can tag files with various markings, and then search by those markings - very nice.
Integration is good and bad. We'll see how well it works.
Actually, if you are a consultant, you generally own the rights to what you create, and thus can open-source it at will. The client won't care, because the client isn't selling software.
The BEST 1U Linux boxes are the VA Linux servers. They really rock (actually, we use the 2U version, but I'm pretty sure the 1U is almost the same, just a little pricier). Anyway, VA Linux has the _best_ intel Linux hardware around. VERY well-tested, and VERY solid.
Clustering is a much better way to scale than SMP. Also, with clusters, you are better off with central shared storage than with having it on each one. There's no reason for your web servers to have good storage capabilities - its just a waste of money. Leave that to the NFS server.
There are several reasons. The two main ones I can think of off the top of my head are:
1) You could have a mostly Linux shop, and want the price/performance of a Sun machine without having to learn brand-new stuff
2) You prefer the Linux tools (IPChains et al)
In addition, you should care about license philosophy (no matter which side of the fence you are on). The moral/philosophical choices we make today affect our future, so you should at least decide where you stand on the issue and act accordingly.
I think your misunderstanding - He wants to retain control over his work on LinuxPPC. What's wrong with that? He's not saying he wants to force other people to do anything, just that
a) he wants to do LinuxPPC for a living
and
b) he doesn't want greedy stockholders telling him what to do
Free Software is about both control and no control. You control everything, but you don't control anything of anyone else. So, I don't see the inconsistency.
Actually, there are many profitable Linux-based companies. Although the numbers aren't publicly available, I imagine RH was pofitable at some point before IPO. CheapBytes has been around quite some time. So has LinuxCentral. Walnut Creek is apparently making a profit off of Slackware, and my guess is Macmillian is making a profit off of Mandrake. There are more to Linux companies than just the overzealous corporations. To think that profits can only be made in corporations is short-sighted. There are many companies doing great things with Linux, and making money.
Actually, these are hackers. They are also crackers. The had an amazing grasp on the technology, and used that knowledge. In fact, it was kind of interesting, because this was a hacker/hacker war. There is a big difference between crackers who are hackers and crackers who are script k1dd13z. Not that cracking is okay if you are a genious, but that even if you don't agree with what's being done, you can at least appreciate the skill with which it was done. This seems like quite an amusing little war, and I'm sure the hackers working for DirecTV got a kick out of it (especially the "GAME OVER" part).
Actually, I found the kernel to be quite simple. I bought "Linux Core Kernel Commentary", and looking at the code, it was very simple. Other people have also mentioned that the kernel itself has no real impact on user-friendliness. Actually, good user-friendliness requires _much_ more complexity. Let me give you an example:
If you have a form that asks for a users country, then afterwards asks for their state/province, the user-unfriendly version would simply show the same form to everyone. The user-friendly version would look at the country, and then decide (a) whether the field is needed or not, and then (b) what that field is called in that location. So, the user-friendly version is actually much, much more complex. With simple code, the user does the work, with complex code, the user gets it easy. In Linux 2.4, auto PnP support was added. That increased user-friendliness, and also greatly increased the code complexity (they had to add a whole resource-management subsystem).
The problem with copy constructors/casting constructors is that you don't even know they are being called. If I use your library, and I make an assignment, I'd actually have to look at your code to see if a function call was made. If I pass something as an argument, again, I'd have to look at the code to see if a cast constructor was invoked. That is a big, big problem.
Actually, identical hardware benchmarks are very poor, because it assumes that each system exploits that hardware to its fullest. The best benchmarks is to have two camps, give them each X number of dollars, and build the best server, and then compare those. For example, if the system has a TULIP ethernet card, and OS A supports it well, and OS B doesn't, then the OS A will win, even if OS B is fater on an EEPro. So, for stuff like this, its better just to do it based on dollars.
You have to understand, I really loathe C++. They really messed up the OO stuff. It does _way_ too much stuff for you (copy constructors and casting constructors really suck. If I need to cast, either let me do it myself or give me an error). Overloaded operators also bite. Worst of all, the standard library make horribly gratuitous uses of operator overloading. They used the bit-shift operator for printing. AHHHHHHHHHHHH!!!!!!!!!! If you are going to overload operators, it should be at least within the same context as the original operator. That's like someone overloading the + operator with commands to format your hard drive - it just doesn't make sense! Memory management in C++ is next to impossible, especially with copy constructors and conversion constructors. C++ is a memory leak waiting to happen. I have never used QT, so I can't comment on it specifically, but I would rather eat trash than code in C++. However, as far as usability, GTK is wonderful. It is soooo simple and soooo flexible. It's absolutely amazing.
I would never sell an x86 box with five nines guaranteed uptime (not that I sell these anyhow..)
The Linux virtual server project has open-source HA clustering. Good stuff.
(1) Not all methods in C++ are virtual either
(2) GOB was built for this purpose
(3) Doing this makes code a _lot_ clearer
(4) It took me about 5 minutes to understand. Other people's times may differ, but I've never seen anyone have trouble with it. The you don't have to spend time debugging the macros if you use GOB.
(5) Different people like different langauges.
(6) I have read Havoc's book - it is very good. I'm not terribly up to speed on Gtk+ 2, except that they will finally have moved the OO stuff into glib - YAY!
This is very true. Where I work, we switched from a text-based system to a GUI system, and EVERYTHING SLOWED DOWN. Our customer service people HATED it. It took infinitely longer to point and click than to just type. These aren't computer specialist, these are regular customer service/order entry people. They are just trying to enter orders, and with point and click it took forever. I'm not trying to knock off GUIs altogether (they work well for many things), but it is true that not everything requires one, and they don't necessarily make things easier.
I think you're missing one problem - one of the goals of GNOME is to provide interoperability and consistency between and among programs. That means sharing as much code as possible. Which then means libraries. If you want printing functionality - don't write your own, use gnome-print. If you want to communicate with other programs, don't make up your own protocol, use CORBA (ORBit). If you want to allow your app to embed others, don't write the code yourself, use Bonobo. If you want to draw to the screen, don't make up your own toolkit, use Gtk. If you want to use audio and allow it to mix with everything else, don't make your own library, use gnome-audio.
You see, the problem is consistency. The fewer libraries, the less consistent everything is, and programmers have to code their own everything. Why not put it all in ONE BIG LIB? Because not everyone needs everything. If I'm not embedding other objects, I surely don't need Bonobo. If I don't print, why link with gnome-print? Anyway, if you like life on the bleeding edge, download all the libraries and play. I personally prefer to wait until it all comes in a nice package. And then you don't have to worry about any of that.
No, actually you have to write wrappers for specific programs to enable this functionality. You can embed either way _if_ you have a wrapper program.
How quickly you forget - C++ originally compiled into - plain C!
I don't remember exactly, but it is something like this:
Each object is a pointer to data. The first data item is a pointer to the virtual method table. The virtual method table has the entries for the functions. So, when I do
gtk_object_show(myobject);
it is a macro for
(*myobject->methods->showMethod)();
Or something like that. This is basically the way C++ handles it internally, too. Anyway, you get full inheritance. However, it does not currently support multiple inheritance or interfaces. However, for GUI programming, those aren't terrible deficiencies.
It is _much_ easier to code it in C and then bind it to other languages, than to code it in an OO language first, and then try to do language bindings to other OO languages.
Two things:
1) The HTML engine isn't in your file manager - it calls out to mozilla
2) Most of the components are separated
3) Yes, most developers went nuts a long time ago
4) Nautilus looks like it will do a great job of managing files. I especially like the "tag" concept - you can tag files with various markings, and then search by those markings - very nice.
Integration is good and bad. We'll see how well it works.
Actually, if you are a consultant, you generally own the rights to what you create, and thus can open-source it at will. The client won't care, because the client isn't selling software.
Actually, I think Linus and friends have hacked Linux so that it can create a wormhole to Pluto, but that's just a rumor :)
This is a wonderful feature, especially if you want consistent backups. And yes, Linux has it (its with the LVM stuff).
For accessing a single disk, IDE is usually just as fast as SCSI.
I don't know if Solaris has this, but with Linux you can just do a network install. You don't even need a floppy, you can just tftp the kernel image.
Its great for a cluster server or a single-service server (DNS/SQUID/firewall/load-balancer)
Cobolt isn't competing with this. This doesn't just "work" out of the box. You still need a Sysadmin to configure it and stuff.
The BEST 1U Linux boxes are the VA Linux servers. They really rock (actually, we use the 2U version, but I'm pretty sure the 1U is almost the same, just a little pricier). Anyway, VA Linux has the _best_ intel Linux hardware around. VERY well-tested, and VERY solid.
Clustering is a much better way to scale than SMP. Also, with clusters, you are better off with central shared storage than with having it on each one. There's no reason for your web servers to have good storage capabilities - its just a waste of money. Leave that to the NFS server.
There are several reasons. The two main ones I can think of off the top of my head are:
1) You could have a mostly Linux shop, and want the price/performance of a Sun machine without having to learn brand-new stuff
2) You prefer the Linux tools (IPChains et al)
In addition, you should care about license philosophy (no matter which side of the fence you are on). The moral/philosophical choices we make today affect our future, so you should at least decide where you stand on the issue and act accordingly.