Yeah but the biggest strength of the GPL is that it is not a contract; 'you are not required to accept this License, since you have not signed it'. That's what gives it its enforceability. If you tried to make it a contract then you'd have a hard time showing in court that it fulfils the requirements for a legally binding contract.
IMHO a restriction on serverization would make the software non-free; for example I didn't consider GPLtrans to be free software because the author attempted (despite using the GPL) to forbid making it into a web service without publishing source. (The current web page doesn't seem to mention that, so maybe the usage restriction has been dropped.) But as we are discussing, the definition of free software might change slightly so that people can't bypass copyleft by making everything into a CORBA service.
The licence cannot define what creates a derivative work. That is given by the copyright law and court decisions. Your arguments about where copyright's boundary should lie make sense, but they don't belong in the GPL's text.
Of course the GPL could waive rights: 'even if for some weird reason it turns out that mentioning the name of Richard Stallman makes all future programs you write a derived work of GNU Emacs, we choose not to restrict distributions of such derived works'. But you are talking about strengthening, attempting to claim control over things which the law might not consider to be derived works, and that isn't possible. (Without some unpleasant UCITA/click-through which I'm sure RMS wants to avoid, and probably not even then.)
Programs are not stored in 'flat text files', at least not unless 'flat text' also includes XML. Programs follow a particular structure and syntax which can be automatically checked and parsed, just like any particular XML format.
Think about it. You could have a programming language with a... construct. Or you could have exactly the same logical structure using { and } instead. XML or non-XML is mostly a red herring.
Some very weird languages like Unlambda or Forth might qualify as 'flat text', but almost all languages used today have a hierarchical tree structure in each file.
Re:If gcc were written by Turbo Pascal/C authors..
on
Pentium 4 2.8GHz
·
· Score: 1
Isn't Borland C available for Linux now? Have you tried that?
Yes, choosing better colour matching is on the todo list. There are long FAQs about how to judge the distance between colours and how to do dithering. At present the implementation only works correctly for greyscale images anyway:-).
This is a good place to mention a project I am working on. I wasn't going to announce it quite yet because it's unfinished, but this JPEG news could change things.
I have modified zlib to support a simple form of lossy compression for images. The Lempel-Ziv compression stage works by looking for repeated strings in the data, and when a string is found just output a reference back to the previous occurrence. But what if this string matching allowed some deviation? More strings would be matched and the output file would be smaller, but there would be some loss of quality.
My implementation tries to do a kind of 'dithering string match' where it finds the longest possibel match where the total pixel difference (sum of squared differences of pixel values) is less than some given threshold. But the error in one pixel is taken into account when matching the next, so that one pattern of dithered pixels has a reasonable chance of matching another.
At present I just have the modified zlib and I am using it to compress 8-bit and 24-bit PNM images lossily. That is, with some reduction in quality I can compress a PNM image down to say 20 kilobytes, while gzip would compress it to 50 kilobytes. By adjusting the threshold you can trade off quality against file size (with threshold=0 you have plain gzip compression). The space saving and quality loss depend on the type of image being compressed. But the results so far are encouraging; with a bit more ingenuity in the matching algorithm it should be possible to do better.
To recap, so far I just have a modified zlib compressing 8-bit and 24-bit PNM images. I am trying to extend libpng to use this lossy zlib, but the trouble is that PNG headers should not be compressed lossily, just the pixel data. Also I need to deal with images that have more than one pixel per byte. (Although the results are still fairly good if you take a paletted image and convert it to 8-bit greyscale before lossy compression.)
I have quickly put together a web page Lossy PNG to demonstrate what has been done so far. I'm going away on holiday soon so I won't be able to make a working release for a while, but perhaps this proof of concept will encourage others to work on the idea.
Most free software developers are quite short of time because the project they work on is in their spare time and not their day job. Or if it is their day job, the time they have for 'cool features' is limited because the more boring and lucrative parts need doing first.
If you have to work on only a few features, wouldn't you do those which scratch your own itch rather than those you were paid for? If you wanted to change the developer's mind about what to implement, you'd probably have to bid a lot more than just a thousand dollars. I wonder what the hourly rate of pay was for the projects on SourceXchange or CoSource, and how that compared with what the developers could earn in the 'outside world'.
There are lots of small improvements to free software projects for which I'd be prepared to pay a $100 bounty, but that amount seems insultingly small for the work involved. If I work as a software developer myself, the time spent to earn $100 is probably about the same as the time that the $100 would buy for another developer. Okay, maybe I take three times as long to implement a feature for project X because I've never before seen the code for that project, but if you take into account tax (so I see only $70 of the money earned, and the other developer sees only $50 of that) and other overheads, it doesn't seem like a particularly good deal. Sites like CoSource might be useful for _users_ to find development, but it's the first rule of software that users don't know what they want. Unless they are really big users (like the Weather Channel funding Radeon 8500 drivers), and then they probably don't need someone else's website.
What about if product X were sold as proprietary software, with 10% of the purchase price set aside for a 'freeness fund'. When the fund reaches a certain amount, the software is freed. I don't suggest this as a way of maximizing profits but as a way for programmers to make money but still have a useful free package after a few years. (A little bit like Ghostscript.)
As a user, this would be very attractive. Not necessarily for altruistic reasons, because I want to make a 10% 'donation', but because if the package is popular enough, it's certain to become free eventually. This is a big incentive to start using it even while it is proprietary.
I wouldn't want to spend my time learning package X if I thought the company would disappear in two years' time, or version 2.0 would come out with a completely sucky new interface and the old version would no longer be available, or even if it might get difficult to purchase extra copies for more computers. But if package X is almost certain to become free software during the next few years, I might be happy to pay for it now.
Cygwin is not secure in a multi-user environment. For
example if you have a long running daemon such as "inetd"
running as admin while ordinary users are logged in, or if
you have a user logged in remotely while another user is logged
into the console, one cygwin client can trick another into
running code for it. In this way one user may gain the
priveledge of another cygwin program running on the machine.
This is because cygwin has shared state that is accessible by
all processes.
This means that Cygwin is not suitable for running an ssh daemon unless you're sure that only one person will use the machine, or you're happy for all the users to have the same privileges.
I've always found that Java is more effort-intensive and slower than Perl. But that's just my experience as a lone developer, Java might be better for large projects because it's easier to formally define interfaces and abstractions. (I doubt it though;-))
Damn right. How many of the people (suits perhaps) worrying about the lack of strong encryption on wireless LANs are quite happy to use regular Ethernet? Which is ridiculously easy to sniff.
I guess there is some point to hardware-layer encryption because many widespread protocols like DNS and NFS don't have usable secure equivalents. But even there, couldn't you use IPsec?
I think that your criticisms are criticisms of *string processing*. Indeed, if you are spending most of your time munging strings, you might consider whether a better interface is needed. For machine languages like HTML or C code, you should normally use a parser rather than ad hoc string processing.
But a lot of stuff does inherently require messing with strings, and for that, the regular expression is a great general-purpose tool. It certainly beats the raw C library:-P.
IIRC the gcc 2.95 release couldn't compile glibc on Alpha platforms. Shipping a compiler which can't even compile the C library is a Bad Thing. Hence the need for Red Hat's 2.96 patch release.
What is it with caffeine? Why does everyone want it? Okay, it stops you falling asleep late at night, but are you really at work then? If you're so sleepy that you need coffee to stay awake, then you probably wouldn't be productive even after the cup of coffee.
I find that I can't think straight after drinking more than a small amount of caffeine; it's okay for a quick boost before writing essays (or postings to Slashdot) where you just need to churn out drivel, but not for anything requiring real thought and concentration (like programming). Apparently, studies show that caffeine improves performance for repetitive tasks but makes you worse at doing anything new or difficult. (Also it really spoils your aim when shooting, probably due to small hand jitters.)
If you are currently dependent on caffeine, then you get a day or two of headache on giving it up, which is a reason to keep taking it in the short term. (Some painkiller manufacturers must know this, because they put caffeine in their tablets, which I think is sneaky.) But avoiding headaches is not much of a reason to deliberately seek out Jolt, penguin mints and all the other 'geek' consumables which seem to maximize caffeine for its own sake.
Anyone have different experiences? Does it really help to take a large cup of strong coffee (without sugar) at times when you're not sleepy? And have you tried the same after doing without caffeine for a week or so?
I have two of the old-style IBM keyboards, I think they are from an IBM PC or maybe an XT. The difference between these and the buckling spring Model M is like the difference between the Model M and a clone keyboard. They're so heavy it's not true:-).
But alas, they don't work with any modern system. The big DIN keyboard plug is the same shape as on the PC-AT but the interface is completely different. I'm surprised that you got your XT keyboards working, perhaps there is a difference between the IBM PC keyboard and the PC-XT keyboard. I know there was some change between the PC and the PC-AT, hence the incompatibility. (But between AT and PS/2 there is no big change in keyboard interface, despite the new smaller plug.)
They say that MS always has the prettiest booth babes - and probably the largest stand to put them on. So they just aim to sabotage the show by distracting everybody.
The only possible response is to dress up in penguin suits and form a 'ring of herring' around the Microsoft booth.
Yeah, it's strange the way the 'press release' has mutated into something no self-respecting journalist would ever use. It used to be that the art in writing press releases was to make them sound like an interesing story, not mentioning your own company too obviously, so that lazy journalists would more or less copy the whole thing.
Even with Internet standards of journalism, I don't think any news site would take much notice of press releases like this one. So what is the intended audience?
Hmm... if the final binary has to be byte-for-byte identical with that generated by the development tools, so that the signature keeps working, then it could get tricky. But still I think it is possible to 'bleep out' all portions of MS-copyright code in the binary - replace them with zeroes - and then the user at the other end can combine this censored version with a real Xbox binary to get back the original. A real PITA though.
Hang on, can you explain this stuff with the signing keys again? Wasn't the MAME port that Microsoft objected to itself a signed binary? If you have access to the development kit, which can generate signed binaries, then you already have Microsoft's encryption keys. Or am I missing something?
You could take an XDK-built binary and rip out all the Microsoft-copyright code: by diffing it against some other program. For example you could write a 'Hello, world' program and see all the boilerplate that gets added.
Then distribute just the 'extra' bits - to reconstruct a working program, combine the downloaded version with code from some other Xbox title.
Don't know whether this would count as contributory copyright infringement.
You're right - having compressed pages or a compressed swapfile is trading a lot of extra CPU time for a small reduction in disk activity. And on a busy server, that extra CPU usage might be just what you don't want. However, it's always been the case that disks are extremely slow compared to the processor, and as far as I know the gap is still growing, so this kind of tradeoff is often worthwhile. Compare the increase in complexity of filesystems, again adding a lot of code and a lot of complexity just to save a few disk accesses.
Also the disk caching isn't as clear-cut as you might think: OSes such as Linux will sometimes swap out processes' pages in order to use more memory for filesystem buffer cache, so there are some subtle tradeoffs there too.
But a slowdown in CPU _usually_ isn't as bad a deal as thrashing by running out of RAM. If your CPU gets bogged down then everything runs more slowly, but more slowly in a predictable kind of way. Whereas thrashing can reduce the whole system to a crawl, not just three times slower but a thousand times slower. Still this is all just speculation and we'd have to see some benchmarks. Most likely if your server ever needs to swap so much that it's worthwhile to compress pages, you have inadequate hardware anyway. (The exception being login servers for X terminals, perhaps.)
Re:That's what round SHOULD do
on
Pet Bugs?
·
· Score: 2, Insightful
I guess it depends on the documented behaviour of VB's round function. Anyone brave enough to wade through MSDN for it?
Yeah, and the -O flag to gcc is a gimmicky fix for 'too cheap to buy a faster CPU', and disk caching is a nasty kludge for those who won't buy a faster disk, and...
Since when did a 'semantic change' mean a change with no effect on the meaning?
Yeah but the biggest strength of the GPL is that it is not a contract; 'you are not required to accept this License, since you have not signed it'. That's what gives it its enforceability. If you tried to make it a contract then you'd have a hard time showing in court that it fulfils the requirements for a legally binding contract.
IMHO a restriction on serverization would make the software non-free; for example I didn't consider GPLtrans to be free software because the author attempted (despite using the GPL) to forbid making it into a web service without publishing source. (The current web page doesn't seem to mention that, so maybe the usage restriction has been dropped.) But as we are discussing, the definition of free software might change slightly so that people can't bypass copyleft by making everything into a CORBA service.
The licence cannot define what creates a derivative work. That is given by the copyright law and court decisions. Your arguments about where copyright's boundary should lie make sense, but they don't belong in the GPL's text.
Of course the GPL could waive rights: 'even if for some weird reason it turns out that mentioning the name of Richard Stallman makes all future programs you write a derived work of GNU Emacs, we choose not to restrict distributions of such derived works'. But you are talking about strengthening, attempting to claim control over things which the law might not consider to be derived works, and that isn't possible. (Without some unpleasant UCITA/click-through which I'm sure RMS wants to avoid, and probably not even then.)
('IANAL' considered redundant.)
Programs are not stored in 'flat text files', at least not unless 'flat text' also includes XML. Programs follow a particular structure and syntax which can be automatically checked and parsed, just like any particular XML format.
... construct. Or you could have exactly the same logical structure using { and } instead. XML or non-XML is mostly a red herring.
Think about it. You could have a programming language with a
Some very weird languages like Unlambda or Forth might qualify as 'flat text', but almost all languages used today have a hierarchical tree structure in each file.
Isn't Borland C available for Linux now? Have you tried that?
Yes, choosing better colour matching is on the todo list. There are long FAQs about how to judge the distance between colours and how to do dithering. At present the implementation only works correctly for greyscale images anyway :-).
This is a good place to mention a project I am working on. I wasn't going to announce it quite yet because it's unfinished, but this JPEG news could change things.
I have modified zlib to support a simple form of lossy compression for images. The Lempel-Ziv compression stage works by looking for repeated strings in the data, and when a string is found just output a reference back to the previous occurrence. But what if this string matching allowed some deviation? More strings would be matched and the output file would be smaller, but there would be some loss of quality.
My implementation tries to do a kind of 'dithering string match' where it finds the longest possibel match where the total pixel difference (sum of squared differences of pixel values) is less than some given threshold. But the error in one pixel is taken into account when matching the next, so that one pattern of dithered pixels has a reasonable chance of matching another.
At present I just have the modified zlib and I am using it to compress 8-bit and 24-bit PNM images lossily. That is, with some reduction in quality I can compress a PNM image down to say 20 kilobytes, while gzip would compress it to 50 kilobytes. By adjusting the threshold you can trade off quality against file size (with threshold=0 you have plain gzip compression). The space saving and quality loss depend on the type of image being compressed. But the results so far are encouraging; with a bit more ingenuity in the matching algorithm it should be possible to do better.
To recap, so far I just have a modified zlib compressing 8-bit and 24-bit PNM images. I am trying to extend libpng to use this lossy zlib, but the trouble is that PNG headers should not be compressed lossily, just the pixel data. Also I need to deal with images that have more than one pixel per byte. (Although the results are still fairly good if you take a paletted image and convert it to 8-bit greyscale before lossy compression.)
I have quickly put together a web page Lossy PNG to demonstrate what has been done so far. I'm going away on holiday soon so I won't be able to make a working release for a while, but perhaps this proof of concept will encourage others to work on the idea.
Most free software developers are quite short of time because the project they work on is in their spare time and not their day job. Or if it is their day job, the time they have for 'cool features' is limited because the more boring and lucrative parts need doing first.
If you have to work on only a few features, wouldn't you do those which scratch your own itch rather than those you were paid for? If you wanted to change the developer's mind about what to implement, you'd probably have to bid a lot more than just a thousand dollars. I wonder what the hourly rate of pay was for the projects on SourceXchange or CoSource, and how that compared with what the developers could earn in the 'outside world'.
There are lots of small improvements to free software projects for which I'd be prepared to pay a $100 bounty, but that amount seems insultingly small for the work involved. If I work as a software developer myself, the time spent to earn $100 is probably about the same as the time that the $100 would buy for another developer. Okay, maybe I take three times as long to implement a feature for project X because I've never before seen the code for that project, but if you take into account tax (so I see only $70 of the money earned, and the other developer sees only $50 of that) and other overheads, it doesn't seem like a particularly good deal. Sites like CoSource might be useful for _users_ to find development, but it's the first rule of software that users don't know what they want. Unless they are really big users (like the Weather Channel funding Radeon 8500 drivers), and then they probably don't need someone else's website.
How long before IBM starts creating crop Tuxen?
What about if product X were sold as proprietary software, with 10% of the purchase price set aside for a 'freeness fund'. When the fund reaches a certain amount, the software is freed. I don't suggest this as a way of maximizing profits but as a way for programmers to make money but still have a useful free package after a few years. (A little bit like Ghostscript.)
As a user, this would be very attractive. Not necessarily for altruistic reasons, because I want to make a 10% 'donation', but because if the package is popular enough, it's certain to become free eventually. This is a big incentive to start using it even while it is proprietary.
I wouldn't want to spend my time learning package X if I thought the company would disappear in two years' time, or version 2.0 would come out with a completely sucky new interface and the old version would no longer be available, or even if it might get difficult to purchase extra copies for more computers. But if package X is almost certain to become free software during the next few years, I might be happy to pay for it now.
I've always found that Java is more effort-intensive and slower than Perl. But that's just my experience as a lone developer, Java might be better for large projects because it's easier to formally define interfaces and abstractions. (I doubt it though ;-))
Damn right. How many of the people (suits perhaps) worrying about the lack of strong encryption on wireless LANs are quite happy to use regular Ethernet? Which is ridiculously easy to sniff.
I guess there is some point to hardware-layer encryption because many widespread protocols like DNS and NFS don't have usable secure equivalents. But even there, couldn't you use IPsec?
I think that your criticisms are criticisms of *string processing*. Indeed, if you are spending most of your time munging strings, you might consider whether a better interface is needed. For machine languages like HTML or C code, you should normally use a parser rather than ad hoc string processing.
:-P.
But a lot of stuff does inherently require messing with strings, and for that, the regular expression is a great general-purpose tool. It certainly beats the raw C library
IIRC the gcc 2.95 release couldn't compile glibc on Alpha platforms. Shipping a compiler which can't even compile the C library is a Bad Thing. Hence the need for Red Hat's 2.96 patch release.
What is it with caffeine? Why does everyone want it? Okay, it stops you falling asleep late at night, but are you really at work then? If you're so sleepy that you need coffee to stay awake, then you probably wouldn't be productive even after the cup of coffee.
I find that I can't think straight after drinking more than a small amount of caffeine; it's okay for a quick boost before writing essays (or postings to Slashdot) where you just need to churn out drivel, but not for anything requiring real thought and concentration (like programming). Apparently, studies show that caffeine improves performance for repetitive tasks but makes you worse at doing anything new or difficult. (Also it really spoils your aim when shooting, probably due to small hand jitters.)
If you are currently dependent on caffeine, then you get a day or two of headache on giving it up, which is a reason to keep taking it in the short term. (Some painkiller manufacturers must know this, because they put caffeine in their tablets, which I think is sneaky.) But avoiding headaches is not much of a reason to deliberately seek out Jolt, penguin mints and all the other 'geek' consumables which seem to maximize caffeine for its own sake.
Anyone have different experiences? Does it really help to take a large cup of strong coffee (without sugar) at times when you're not sleepy? And have you tried the same after doing without caffeine for a week or so?
Damn, I was going to post something like that myself!
It's all about the slash. Just get the distinction right between PS2 and PS/2.
I have two of the old-style IBM keyboards, I think they are from an IBM PC or maybe an XT. The difference between these and the buckling spring Model M is like the difference between the Model M and a clone keyboard. They're so heavy it's not true :-).
But alas, they don't work with any modern system. The big DIN keyboard plug is the same shape as on the PC-AT but the interface is completely different. I'm surprised that you got your XT keyboards working, perhaps there is a difference between the IBM PC keyboard and the PC-XT keyboard. I know there was some change between the PC and the PC-AT, hence the incompatibility. (But between AT and PS/2 there is no big change in keyboard interface, despite the new smaller plug.)
They say that MS always has the prettiest booth babes - and probably the largest stand to put them on. So they just aim to sabotage the show by distracting everybody.
The only possible response is to dress up in penguin suits and form a 'ring of herring' around the Microsoft booth.
Yeah, it's strange the way the 'press release' has mutated into something no self-respecting journalist would ever use. It used to be that the art in writing press releases was to make them sound like an interesing story, not mentioning your own company too obviously, so that lazy journalists would more or less copy the whole thing.
Even with Internet standards of journalism, I don't think any news site would take much notice of press releases like this one. So what is the intended audience?
Hmm... if the final binary has to be byte-for-byte identical with that generated by the development tools, so that the signature keeps working, then it could get tricky. But still I think it is possible to 'bleep out' all portions of MS-copyright code in the binary - replace them with zeroes - and then the user at the other end can combine this censored version with a real Xbox binary to get back the original. A real PITA though.
Hang on, can you explain this stuff with the signing keys again? Wasn't the MAME port that Microsoft objected to itself a signed binary? If you have access to the development kit, which can generate signed binaries, then you already have Microsoft's encryption keys. Or am I missing something?
You could take an XDK-built binary and rip out all the Microsoft-copyright code: by diffing it against some other program. For example you could write a 'Hello, world' program and see all the boilerplate that gets added.
Then distribute just the 'extra' bits - to reconstruct a working program, combine the downloaded version with code from some other Xbox title.
Don't know whether this would count as contributory copyright infringement.
You're right - having compressed pages or a compressed swapfile is trading a lot of extra CPU time for a small reduction in disk activity. And on a busy server, that extra CPU usage might be just what you don't want. However, it's always been the case that disks are extremely slow compared to the processor, and as far as I know the gap is still growing, so this kind of tradeoff is often worthwhile. Compare the increase in complexity of filesystems, again adding a lot of code and a lot of complexity just to save a few disk accesses.
Also the disk caching isn't as clear-cut as you might think: OSes such as Linux will sometimes swap out processes' pages in order to use more memory for filesystem buffer cache, so there are some subtle tradeoffs there too.
But a slowdown in CPU _usually_ isn't as bad a deal as thrashing by running out of RAM. If your CPU gets bogged down then everything runs more slowly, but more slowly in a predictable kind of way. Whereas thrashing can reduce the whole system to a crawl, not just three times slower but a thousand times slower. Still this is all just speculation and we'd have to see some benchmarks. Most likely if your server ever needs to swap so much that it's worthwhile to compress pages, you have inadequate hardware anyway. (The exception being login servers for X terminals, perhaps.)
I guess it depends on the documented behaviour of VB's round function. Anyone brave enough to wade through MSDN for it?
Yeah, and the -O flag to gcc is a gimmicky fix for 'too cheap to buy a faster CPU', and disk caching is a nasty kludge for those who won't buy a faster disk, and...