Yes it was. In fact I thought the entire location bar was broken. You could type into it and hit return and it worked. But the pop-up menu was in the wrong place and you could not pick from it, and it refused to change to show the current page. I just thought it was broken and never thought I could fix it.
It still seems broken in the version I got with Mandrake 9.2. I figured out the problem because I first said "oh the location bar is fixed now!" and then tried to customize it the way I want, and then saw that the location bar was broken again, and I figured out the secret...
Damn. You are right, it probably isn't a GPL violation at all. I suppose I can make really contrived examples, such as a "paper" that describes exactly how to write a program and then says "include this block of GPL code here" and then claim the paper is copyrighted with no exceptions, and that you have somehow worked around the GPL. Then again maybe not, as it is obvious your "paper" is a "program" and that it is not in the "preferred format for working on the code".
Yes this was on Win2K. I need to try it again, I really suspect I did a typo. It seems hard to believe they could be this stupid. It is possible that their terminal emulator, being built into the system, is choking because the name somehow does not match something it expects, but even that excuse is stunning.
Unfortunatly I'm busy right now and don't have time to reboot to test it again. You are right it appears to work on XP.
You are wrong. In original Unix almost all programs passed the filenames given to them in argv literally to the system. It was up to the shell to "quote" characters. If you said 'cat "foo bar"' it really sent the 7-letter string "foo bar" to the program and it was easier to send this literally than to actually look at it, so almost all programs did the "right" thing. Also if you typed "\*" it sent "*" to the program so it had no trouble with names like this. This scheme actually works quite well, the main problem is that there is no way around it, so a DOS-like "rename *.a *.b" cannot be implemented.
You are correct that "-" was a problem. However all programs that choked on that did work if you used "./-". Again simplicity saved the day, they were just checking argv[i][0]=='-' and thus the easier-to-write program also was easy to get to do the right thing.
Modern programs do choke on unexpected filenames, unfortunately. This is because they accept input and use their own parsers.
Microsoft's POSIX is absolutely useless, because it cannot open all the files on the system, and non-Posix programs cannot open all the files created by the Posix system.
The idea is that this will make it easier to port programs *to* Microsoft's system. If the program is then modified to use some Microsoft-thing then you have managed to lock them into your platform.
Yes it's true that non-gui applications will probably be able to be ported back and forth more easily. In my opinion this will *help* Microsoft, as it will remove one of the objections to using their systems in server applications. I do not expect them to copy X11 so there is no problem with all the GUI applications.
More importantly, Microsoft has to do something to defuse the virilant hatred of them that is caused by their gratuitous ignorance and breaking of long-established standards. This is fueling the success of Linux far more than any technical or "freedom" benifits.
I used both Unix and VMS on 9600 baud video terminals (so no wasted paper, and very little wasted time, in fact I think the Unix machine printed slower because it went through a network and a VMS front end which did not like the character-based Unix interface much). I can tell you that the terseness of Unix was an incredible relief compared to VMS. I could see what I did, it was not buried in tons of boilerplate, and I could easily run other commands that would tell me that information (like "how many files") if I wanted to know it. This (and the simplified filenames where '/' and '\0' are the only reserved characters) was so amazingly liberating and stunning that I was sold.
In fact part of the reason there is Unix fanatics is that absolutley amazing relief we had when we first encountered it. Part of the livid hatred of Microsoft is that they did not copy Unix, instead reverting to filenames and a command style and CRLF pairs that we knew were obsoleted in 1970, and then having the unmitigated gall to claim they were "innovative". In fact if Microsoft had just made Windows Unix-compatable (and not even do a good job, Xenix would have been good enough) I really doubt anybody would have heard of Linux, and Microsoft would run every single programmable device in the world.
In fact Microsoft blew it totally, but they refuse to admit this and thus refuse to allow their programmers to do what is necessary (copy as much of Unix as possible, while keeping their own advantages). Instead they keep reinventing things, ignoring standards, and pissing people off endlessly.
Wake up, Microsoft. You could wipe Linux and everybody off the face of the planet in less than a year, if you would just make Windows Unix-compatable. This means put forward slashes in the filenames, get rid of CRLF (only read needs to use the binary flag), make readdir() work to show all the disks, and a few other really trivial things. And provide a modern shell and tools right now (the code is all available for free from GNU). The problem is you have to swallow your enormous ego and admit that there is nothing wrong with being compatable with the good ideas that came out before you.
Yes, the code that implements the API is often not very useful. But code that calls the API IS! Usually a huge amount more useful than pages and pages of documentation.
I have certainly looked up reams of Microsoft Developer Studio pages, and they are seriously lacking in real examples of how to actually use a function. In much less time I was able to write an Xlib interface (and Xlib is FAR worse of an API than Win32!) that did identical work because of the ability to cut & paste from actual working non-toy programs. I may also have been helped in that the source code had not been sanitized by marketing deleting all the "this sucks but you have to do it this way" comments.
The documentation on Linux sucks, except for the man pages (and RMS seems intent on killing those and turning them all into "info" thus removing the remaining readable documentation!). Yet the fact that programmers seem to be doing better on Linux despite this fact should say something!
PS: It would help if MSDN had a working "search" function. When I time in a Win32 API call name like PeekMessage I want to see the page that describes how to call that function! Not a hundred pages about Access or VB or developer notes that say "you should use PeekMessage to do this"
Huh? In Windows it works for other programs, I can delete the "shortcut to" and the shortcut still works. But, lo and behold, I tried just what the posters said, and renaming a link to a terminal program breaks!
This is unbelievable!
To be honest, I thought a lot of the insults of Windows were overblown, but that has got to be some of the worst software engineering I have ever seen! A bug like this is just stunning in it's idiocity.
Source for the original GridBag
on
Introduction To XAML
·
· Score: 2, Informative
I tried to post the code but the filter won't let me. Here is instead the "help" I wrote to go with GridBag for TNT: (somewhat mangled to get past the lameness filter). This is dated August 6, 1992
ClassGridBag
Frustration with making ClassPanel do what I wanted made me create this new tnt class. It is a subclass of ClassBag and I think very fundemental, for instance ClassBorderBag could be a subclass of this.
It's layout rules are not as powerful as/Calculated layout but they seem to be sufficient for almost any UI panel I have ever seen. It's response to being resized is much better and controllable.
Layout is done in a rectangular grid of "cells". But the size of the rows and columns is not fixed or equal! Instead they depend on the maximum of the dimensions of the clients that are in them. Cell 0,0 is in the upper left corner. The grid is dynamic, the lower right cell depends on the current clients.
[x] [y]/setgaps sets a space between each row and column of cells. The/insets (same as ClassBorderBag) sets a space around the outside of the grid.
Each client occupies a rectangular set of cells (not just one!). They should not overlap, although ClassGridBag does not enforce this. The client's size and postition is controlled by the outside border of the set of cells, the divisions inside do not affect it. A clever algorithim is used to choose the row and column sizes so they are all as small as possible whatever the arrangement (well, almost).
When the bag is resized, all the "delta" is divided equally between rows and columns identified by ResizeX and ResizeY. If these are empty the cell array is simply centered in the bag.
Arrays of row and column numbers to resize. Negative numbers mean gridsize-abs(x). The default ResizeX is [-1], ResizeY is []. Subclasses would want to override these variables.
x y/nameforcell name true | false
Return the name of the (first) client which occupies the given cell. This name can be used to get the actual client.
[x y w h/type] client/addclient -
The "layout parameters" of a client are an array of either length 4 or 5. x and y identify the top left cell and w and h are the size of the rectangle.
To allow access to the dynamic grid size, zero or negative w or h mean max(1,gridsize-abs(n)-x). This means that 0 w or h indicate "to the end of the row/column".
The/type is optional. If missing the client is resized to the size of it's rectangle. If given the client is left at it's/preferredsize and justified against one of the edges or corners./type is a compass direction such as/East or/North, or/Center to put it in the middle. Technically the/type is not necessary because the client could justify it's own display but this avoids a huge number of subclasses of controls and labels just to make different justifications.
The type may also be an integer, this helps C code a lot. The compass points are determined from the array:
7 8 9 (i.e. 8 is the same as/North). 4 5 6 1 2 3
name/removeclient => client true | false
Removes the client. The total grid size is recalculated.
[x...] [y...]/setgaps -
Sets the gaps between columns and rows of cells.
/gaps [x...] [y...]
The current gap settings.
ninset einset sinset winset/setinsets -
Sets the insets around the edge of the items, invalidates the panel.
Definately NOT a new idea, but it may establish a standard, which is just as important as having the idea at all. I don't know if Microsoft realizes that with this text base it is going to be very easy to clone on other platforms. Perhaps they don't care, or perhaps the developers were able to actually write what they wanted, rather than what management told them to write.
I must point out that I invented the "Grid" layout in 1992 at Sun Microsystems when I was working for the NeWS TNT group (TNT = The NeWS Toolkit). I called it "GridBag" because all collections in TNT were called "bags". I implemented it in NeWS and then copied it to OLIT (an Xt-based toolkit), it appears my OLIT implementation was copied to make the identically-named GridBag in the various Java toolkits (this is evident from the names of variables and methods). It appears Microsoft has copied the functionality for this (since they did not realize that it can do what their "dock" panel does and did not merge them). It does appear that GridBag has the most life of anything I every wrote and I have no complaint, but it would be nice to get some acknoledgement. (legally I cannot demand any acknoledgement, I wrote it while employed at Sun and it belongs to them).
Seems obvious now, but I did not figure that out... I was looking for something like "what does a middle click do". But I guess this will also handle those web pages that use frames to force new windows to open.
Sorry, I was only talking about "use the same program to look at your files as you use to look at web pages". Not the general integration of KDE. A seperate file browser and html viewer would certainly talk to each other using the mechanisms you mention.
After much frustration, I figured out how to reduce the bloat of Konq's toolbars.
The biggest secret: if you want a field that you can type a url into, you have to use the Location toolbar, and leave the "location" widget on it.
Here is what I do:
1. Pick "configure toolbars"
2. Select "Location toolbar"
3. Remove everything except the location field. Note that you can remove the "Location:" label, the "clear" button, and the "go" button, and it still all works.
4. Insert back, up, home, stop, and other buttons you want before the location in the toolbar. Apparently harmless to have these buttons be in more than one toolbar, only the location field has bugs.
5. Click ok to dismiss the configure toolbars dialog.
6. Using settings, hide all the toolbars except the location one. You may have to toggle a few on/off or drag the location bar around, so that it finally decides to be full-width.
7. Type Ctrl+M to remove the menubar.
Done! It now works really well. Except I can't get middle-click to open a background tab (it opens a new window). Otherwise as good or better than Safari.
I'm using KDE right now, and I have to say that, if I think about it, I really do NOT use the "integration" at all.
I like the fact that the file browser will show an html page when I double-click on an html file. However this could come up in it's own window like non-integrated file choosers do.
Otherwise, if I want to look at files, I click the "home" icon on the desktop and start looking at files. If I want to look at web pages, I click the "konq" gear-world icon and start looking at web pages. I typically never change the viewing from one system to another.
So even though the integration sounds very logical and makes technical sense, it does seem it may not correspond with how people think.
Microsoft (and maybe RMS, who is not helping much here) wants people to think the answer is yes. It has to be made clear, repeatedly, over and over, to everybody who will listen, that the answer is no.
You write a paper or book you want to copyright, perhaps some analysis of software design. And part of the paper uses a small example cut from a GPL program, maybe to contrast it with another piece of code that cannot be put under the GPL because it is copyrighted by the original author.
My opinion is that this is allowed under fair use.
The judge could force the infringer into giving their first-born child to the original author. That is as likely as them forcing the infringer into giving up proprietary information.
The truth is, this is a copyright violation. If you can locate any case where a copyright violation was punished with anything other than cease&desist and monetary payments, please tell me. Until you find such a case, any claim that the GPL will force you to do anything else is absolutely bogus.
Copyright law certainly allows for monetary claims far in excess of any amount the original author expected to make from the work. Otherwise small authors would be helpless to protect their works.
Yes, the copyrighted code can be removed if a convincing case can be made that it was accidentally put in and was not to be GPL'd.
However the original author cannot use any of the modifications donated to the module, as the writers of those donations assummed they were modifying a piece of GPL code, and thus they copyrighted them that way. If the original author wanted to use those modifications they would have to contact all the authors and ask for their permission.
Do you know if any system other than OS/X had this vulnerability? From my (rather quick) reading of this, it seems this is a natural and seemingly benificial result of DHCP design and that plenty of Unix systems would have had this written into them as well. But nobody has mentioned any. Is this bug really unique to Apple?
For a long time Linux had *lots* of services enabled by default. Often every possible thing was turned on, such as ftp. Linux users should not be too smug, they were as stupid as Microsoft at one time.
Fortunatly at about the moment people started using Linux in home situations but with always-on connections (1996 or so) this was realized to be very stupid, and it seems modern ones have everything turned off. But I'll bet there are a lot of completely open old Linux boxes out there still!
Modern Windows seems to have turned everything off except for the services needed to connect to and obey the mothership, so they are improving as much as their business model allows.
That only works for *new* software rewritten to take advantage of it.
Also a malicious installer can still clobber an existing DLL in order to install spyware (though I suspect an Apple installer would be able to do this too if the user types in their password).
Actually Windows has had a way to avoid DLL hell for a long time. Programs look in the same directory as the executable to find dll's first. So the programs should just ship with the dll's they want in the same directory, and install as a new directory. Power users who want to use newer dll's can try deleting/renaming the ones with the app and seeing if they still work. This scheme works so well that large Linux apps are supporting it even though Linux does not have this feature (it is typically done by a small wrapper program that sets LD_LIBRARY_PATH).
Unfortunately for whatever reason Windows apps don't work this way, in many ways combining the worst features of Unix layout (where files must be stored in directories by function, ie librarys here, programs there, config files elsewhere...) with Window's own limitations (screwy pre-multiprocessing shared libraries with shared r/w segments, and the "registry" which is like a really bad file system). The cynic would say that Microsoft did this for evil intentions so they could break any software they wanted by changing a DLL, but in reality it is probably just stupidity.
Where I work the SGI Irix C compiler has been real useful at detecting programming mistakes, it produces warnings that none of the others do.
We also use GCC on Linux, the Intel compiler (on Windows) and VC++ 6. I try to get all of them to produce no warnings, and this has detected a huge number of bugs that would not have been found if only one compiler had been used.
Yes it was. In fact I thought the entire location bar was broken. You could type into it and hit return and it worked. But the pop-up menu was in the wrong place and you could not pick from it, and it refused to change to show the current page. I just thought it was broken and never thought I could fix it.
It still seems broken in the version I got with Mandrake 9.2. I figured out the problem because I first said "oh the location bar is fixed now!" and then tried to customize it the way I want, and then saw that the location bar was broken again, and I figured out the secret...
Damn. You are right, it probably isn't a GPL violation at all. I suppose I can make really contrived examples, such as a "paper" that describes exactly how to write a program and then says "include this block of GPL code here" and then claim the paper is copyrighted with no exceptions, and that you have somehow worked around the GPL. Then again maybe not, as it is obvious your "paper" is a "program" and that it is not in the "preferred format for working on the code".
Yes this was on Win2K. I need to try it again, I really suspect I did a typo. It seems hard to believe they could be this stupid. It is possible that their terminal emulator, being built into the system, is choking because the name somehow does not match something it expects, but even that excuse is stunning.
Unfortunatly I'm busy right now and don't have time to reboot to test it again. You are right it appears to work on XP.
You are wrong. In original Unix almost all programs passed the filenames given to them in argv literally to the system. It was up to the shell to "quote" characters. If you said 'cat "foo bar"' it really sent the 7-letter string "foo bar" to the program and it was easier to send this literally than to actually look at it, so almost all programs did the "right" thing. Also if you typed "\*" it sent "*" to the program so it had no trouble with names like this. This scheme actually works quite well, the main problem is that there is no way around it, so a DOS-like "rename *.a *.b" cannot be implemented.
You are correct that "-" was a problem. However all programs that choked on that did work if you used "./-". Again simplicity saved the day, they were just checking argv[i][0]=='-' and thus the easier-to-write program also was easy to get to do the right thing.
Modern programs do choke on unexpected filenames, unfortunately. This is because they accept input and use their own parsers.
Microsoft's POSIX is absolutely useless, because it cannot open all the files on the system, and non-Posix programs cannot open all the files created by the Posix system.
The idea is that this will make it easier to port programs *to* Microsoft's system. If the program is then modified to use some Microsoft-thing then you have managed to lock them into your platform.
Yes it's true that non-gui applications will probably be able to be ported back and forth more easily. In my opinion this will *help* Microsoft, as it will remove one of the objections to using their systems in server applications. I do not expect them to copy X11 so there is no problem with all the GUI applications.
More importantly, Microsoft has to do something to defuse the virilant hatred of them that is caused by their gratuitous ignorance and breaking of long-established standards. This is fueling the success of Linux far more than any technical or "freedom" benifits.
Boy you really don't get it, do you.
I used both Unix and VMS on 9600 baud video terminals (so no wasted paper, and very little wasted time, in fact I think the Unix machine printed slower because it went through a network and a VMS front end which did not like the character-based Unix interface much). I can tell you that the terseness of Unix was an incredible relief compared to VMS. I could see what I did, it was not buried in tons of boilerplate, and I could easily run other commands that would tell me that information (like "how many files") if I wanted to know it. This (and the simplified filenames where '/' and '\0' are the only reserved characters) was so amazingly liberating and stunning that I was sold.
In fact part of the reason there is Unix fanatics is that absolutley amazing relief we had when we first encountered it. Part of the livid hatred of Microsoft is that they did not copy Unix, instead reverting to filenames and a command style and CRLF pairs that we knew were obsoleted in 1970, and then having the unmitigated gall to claim they were "innovative". In fact if Microsoft had just made Windows Unix-compatable (and not even do a good job, Xenix would have been good enough) I really doubt anybody would have heard of Linux, and Microsoft would run every single programmable device in the world.
In fact Microsoft blew it totally, but they refuse to admit this and thus refuse to allow their programmers to do what is necessary (copy as much of Unix as possible, while keeping their own advantages). Instead they keep reinventing things, ignoring standards, and pissing people off endlessly.
Wake up, Microsoft. You could wipe Linux and everybody off the face of the planet in less than a year, if you would just make Windows Unix-compatable. This means put forward slashes in the filenames, get rid of CRLF (only read needs to use the binary flag), make readdir() work to show all the disks, and a few other really trivial things. And provide a modern shell and tools right now (the code is all available for free from GNU). The problem is you have to swallow your enormous ego and admit that there is nothing wrong with being compatable with the good ideas that came out before you.
Yes, the code that implements the API is often not very useful. But code that calls the API IS! Usually a huge amount more useful than pages and pages of documentation.
I have certainly looked up reams of Microsoft Developer Studio pages, and they are seriously lacking in real examples of how to actually use a function. In much less time I was able to write an Xlib interface (and Xlib is FAR worse of an API than Win32!) that did identical work because of the ability to cut & paste from actual working non-toy programs. I may also have been helped in that the source code had not been sanitized by marketing deleting all the "this sucks but you have to do it this way" comments.
The documentation on Linux sucks, except for the man pages (and RMS seems intent on killing those and turning them all into "info" thus removing the remaining readable documentation!). Yet the fact that programmers seem to be doing better on Linux despite this fact should say something!
PS: It would help if MSDN had a working "search" function. When I time in a Win32 API call name like PeekMessage I want to see the page that describes how to call that function! Not a hundred pages about Access or VB or developer notes that say "you should use PeekMessage to do this"
Huh? In Windows it works for other programs, I can delete the "shortcut to" and the shortcut still works. But, lo and behold, I tried just what the posters said, and renaming a link to a terminal program breaks!
This is unbelievable!
To be honest, I thought a lot of the insults of Windows were overblown, but that has got to be some of the worst software engineering I have ever seen! A bug like this is just stunning in it's idiocity.
I tried to post the code but the filter won't let me. Here is instead the "help" I wrote to go with GridBag for TNT: (somewhat mangled to get past the lameness filter). This is dated August 6, 1992
/Calculated layout but they seem to be sufficient for almost any UI panel I have ever seen. It's response to being resized is much better and controllable.
/setgaps sets a space between each row and column of cells. The /insets (same as ClassBorderBag) sets a space around the outside of the grid.
/nameforcell name true | false
/type] client /addclient -
/type is optional. If missing the client is resized to the size of it's rectangle. If given the client is left at it's /preferredsize and justified against one of the edges or corners. /type is a compass direction such as /East or /North, or /Center to put it in the middle. Technically the /type is not necessary because the client could justify it's own display but this avoids a huge number of subclasses of controls and labels just to make different justifications.
/North).
/removeclient => client true | false
/setgaps -
/setinsets -
/insets ninset einset sinset winset
ClassGridBag
Frustration with making ClassPanel do what I wanted made me create this new tnt class. It is a subclass of ClassBag and I think very fundemental, for instance ClassBorderBag could be a subclass of this.
It's layout rules are not as powerful as
Layout is done in a rectangular grid of "cells". But the size of the rows and columns is not fixed or equal! Instead they depend on the maximum of the dimensions of the clients that are in them. Cell 0,0 is in the upper left corner. The grid is dynamic, the lower right cell depends on the current clients.
[x] [y]
Each client occupies a rectangular set of cells (not just one!). They should not overlap, although ClassGridBag does not enforce this. The client's size and postition is controlled by the outside border of the set of cells, the divisions inside do not affect it. A clever algorithim is used to choose the row and column sizes so they are all as small as possible whatever the arrangement (well, almost).
When the bag is resized, all the "delta" is divided equally between rows and columns identified by ResizeX and ResizeY. If these are empty the cell array is simply centered in the bag.
Public stuff:
/ResizeX array (variable)
/ResizeY array (variable)
Arrays of row and column numbers to resize. Negative numbers mean gridsize-abs(x). The default ResizeX is [-1], ResizeY is []. Subclasses would want to override these variables.
x y
Return the name of the (first) client which occupies the given cell. This name can be used to get the actual client.
[x y w h
The "layout parameters" of a client are an array of either length 4 or 5. x and y identify the top left cell and w and h are the size of the rectangle.
To allow access to the dynamic grid size, zero or negative w or h mean max(1,gridsize-abs(n)-x). This means that 0 w or h indicate "to the end of the row/column".
The
The type may also be an integer, this helps C code a lot. The compass points are determined from the array:
7 8 9 (i.e. 8 is the same as
4 5 6
1 2 3
name
Removes the client. The total grid size is recalculated.
[x...] [y...]
Sets the gaps between columns and rows of cells.
/gaps [x...] [y...]
The current gap settings.
ninset einset sinset winset
Sets the insets around the edge of the items, invalidates the panel.
-
Returns the current insets.
Definately NOT a new idea, but it may establish a standard, which is just as important as having the idea at all. I don't know if Microsoft realizes that with this text base it is going to be very easy to clone on other platforms. Perhaps they don't care, or perhaps the developers were able to actually write what they wanted, rather than what management told them to write.
I must point out that I invented the "Grid" layout in 1992 at Sun Microsystems when I was working for the NeWS TNT group (TNT = The NeWS Toolkit). I called it "GridBag" because all collections in TNT were called "bags". I implemented it in NeWS and then copied it to OLIT (an Xt-based toolkit), it appears my OLIT implementation was copied to make the identically-named GridBag in the various Java toolkits (this is evident from the names of variables and methods). It appears Microsoft has copied the functionality for this (since they did not realize that it can do what their "dock" panel does and did not merge them). It does appear that GridBag has the most life of anything I every wrote and I have no complaint, but it would be nice to get some acknoledgement. (legally I cannot demand any acknoledgement, I wrote it while employed at Sun and it belongs to them).
Thanks!
Seems obvious now, but I did not figure that out... I was looking for something like "what does a middle click do". But I guess this will also handle those web pages that use frames to force new windows to open.
Sorry, I was only talking about "use the same program to look at your files as you use to look at web pages". Not the general integration of KDE. A seperate file browser and html viewer would certainly talk to each other using the mechanisms you mention.
After much frustration, I figured out how to reduce the bloat of Konq's toolbars.
The biggest secret: if you want a field that you can type a url into, you have to use the Location toolbar, and leave the "location" widget on it.
Here is what I do:
1. Pick "configure toolbars"
2. Select "Location toolbar"
3. Remove everything except the location field. Note that you can remove the "Location:" label, the "clear" button, and the "go" button, and it still all works.
4. Insert back, up, home, stop, and other buttons you want before the location in the toolbar. Apparently harmless to have these buttons be in more than one toolbar, only the location field has bugs.
5. Click ok to dismiss the configure toolbars dialog.
6. Using settings, hide all the toolbars except the location one. You may have to toggle a few on/off or drag the location bar around, so that it finally decides to be full-width.
7. Type Ctrl+M to remove the menubar.
Done! It now works really well. Except I can't get middle-click to open a background tab (it opens a new window). Otherwise as good or better than Safari.
I'm using KDE right now, and I have to say that, if I think about it, I really do NOT use the "integration" at all.
I like the fact that the file browser will show an html page when I double-click on an html file. However this could come up in it's own window like non-integrated file choosers do.
Otherwise, if I want to look at files, I click the "home" icon on the desktop and start looking at files. If I want to look at web pages, I click the "konq" gear-world icon and start looking at web pages. I typically never change the viewing from one system to another.
So even though the integration sounds very logical and makes technical sense, it does seem it may not correspond with how people think.
The answer is no.
Microsoft (and maybe RMS, who is not helping much here) wants people to think the answer is yes. It has to be made clear, repeatedly, over and over, to everybody who will listen, that the answer is no.
The answer is:
NO! Your program is not a derivative of gcc!
Got it?
Plausable situation:
You write a paper or book you want to copyright, perhaps some analysis of software design. And part of the paper uses a small example cut from a GPL program, maybe to contrast it with another piece of code that cannot be put under the GPL because it is copyrighted by the original author.
My opinion is that this is allowed under fair use.
I assumme this is a joke, but if not:
Imagine 50% of the code is your proprietary code, and 50% GPL. Which one is inserted? The "other way around" is actually exactly the same case.
The judge could force the infringer into giving their first-born child to the original author. That is as likely as them forcing the infringer into giving up proprietary information.
The truth is, this is a copyright violation. If you can locate any case where a copyright violation was punished with anything other than cease&desist and monetary payments, please tell me. Until you find such a case, any claim that the GPL will force you to do anything else is absolutely bogus.
Copyright law certainly allows for monetary claims far in excess of any amount the original author expected to make from the work. Otherwise small authors would be helpless to protect their works.
Please re-read this option again:
2) Stop selling the product until the GPLed code was replaced with proprietary code, and re-release it.
If you need the definitions of the word "until", use a dictionary. Hint: it is not "never".
Yes, the copyrighted code can be removed if a convincing case can be made that it was accidentally put in and was not to be GPL'd.
However the original author cannot use any of the modifications donated to the module, as the writers of those donations assummed they were modifying a piece of GPL code, and thus they copyrighted them that way. If the original author wanted to use those modifications they would have to contact all the authors and ask for their permission.
Do you know if any system other than OS/X had this vulnerability? From my (rather quick) reading of this, it seems this is a natural and seemingly benificial result of DHCP design and that plenty of Unix systems would have had this written into them as well. But nobody has mentioned any. Is this bug really unique to Apple?
For a long time Linux had *lots* of services enabled by default. Often every possible thing was turned on, such as ftp. Linux users should not be too smug, they were as stupid as Microsoft at one time.
Fortunatly at about the moment people started using Linux in home situations but with always-on connections (1996 or so) this was realized to be very stupid, and it seems modern ones have everything turned off. But I'll bet there are a lot of completely open old Linux boxes out there still!
Modern Windows seems to have turned everything off except for the services needed to connect to and obey the mothership, so they are improving as much as their business model allows.
That only works for *new* software rewritten to take advantage of it.
Also a malicious installer can still clobber an existing DLL in order to install spyware (though I suspect an Apple installer would be able to do this too if the user types in their password).
Actually Windows has had a way to avoid DLL hell for a long time. Programs look in the same directory as the executable to find dll's first. So the programs should just ship with the dll's they want in the same directory, and install as a new directory. Power users who want to use newer dll's can try deleting/renaming the ones with the app and seeing if they still work. This scheme works so well that large Linux apps are supporting it even though Linux does not have this feature (it is typically done by a small wrapper program that sets LD_LIBRARY_PATH).
Unfortunately for whatever reason Windows apps don't work this way, in many ways combining the worst features of Unix layout (where files must be stored in directories by function, ie librarys here, programs there, config files elsewhere...) with Window's own limitations (screwy pre-multiprocessing shared libraries with shared r/w segments, and the "registry" which is like a really bad file system). The cynic would say that Microsoft did this for evil intentions so they could break any software they wanted by changing a DLL, but in reality it is probably just stupidity.
Where I work the SGI Irix C compiler has been real useful at detecting programming mistakes, it produces warnings that none of the others do.
We also use GCC on Linux, the Intel compiler (on Windows) and VC++ 6. I try to get all of them to produce no warnings, and this has detected a huge number of bugs that would not have been found if only one compiler had been used.