In all situations where IP is asserted, an effort to make it less valuable should be the least we do. We pirate mp3s, don't we? Who of us pays for software?
...
In summary- pirate everything and boycott patent holders.
Lovely. Now we have people advocating completely illegal activities. Just beautiful.
No, "we" do not steal things. "We" do not pirate others' music or movies. "We" do not steal software. Perhaps criminals do that, but a software professional does not.
Are you telling us that you have illegally acquired IP materials on your computer? What all have you stolen? How much is it worth? Are you willing to go to prison for your beliefs? What have you actually contributed? How are you any different than a shoplifter or burglar?
What is it about consumer systems that encourages such rampant and blatant piracy? I've never seen Unix people passing around illegal software, but the Prisoners of Bill do it as though it were expected. Who wants to lay odds that this is an MS-DOS user, not a Unix user?
Several of you have posted letters from Amazon confirming their irrepentance in claiming so profound an innovation as to merit a real patent. Given that incorrigible reaction out of them, it's unclear whether any simple letter-writing campaign or passive boycotting can hope to effect a change in their position. After all, they've invested money and image in their legal defence of this notion. Do you truly expect them to blithely throw out that investment?
Many others of you have expressed your own incredulity as to the obviousness of the technology. This suggests another and probably a better way to combat Amazon: get the patent struck down as invalid. Software professionals are in the best position to provide evidence that this idea is obvious to someone in the field, and that it is hardly a new idea due to prior art.
I've no idea whom you would send such supporting technical data, but if you can help provide tangible evidence of why the patent is invalid, this would appear to hold the potential for a more effective strategy than a passive boycott or mass-mailed letter-writing campaign could.
I call for a boycott of VA Linux, for changing their name to make a few billion dollars...
Gee, what's next? Boycotting Netscape for changing the name of "livescript" to "javascript" just to get a few million customers by riding on java's coattails?
But don't stop there. We should boycott Sun for changing the name of "oak" to "java" just to get a few million customers by riding on Starbucks's coattails, too.:-)
Yes, I'm kidding. It's a joke. Yes, I meant to do that. Please stop sending me all of your silly "humor boycott" flameletters.:-(
I'm so disappointed. I was sure we were going to be boycotting the patent office and the entire courts system instead. Now that could get interesting!:-)
Why is the government involved in regulating water, anyways?
That depends on whether you mean inspecting or providing. If you mean providing, then it's probably related to economies of scale and guaranteeing uniform and universal access to essential services. Could the private sector handle this? Oh, probably.
However, if you mean regulation in the sense of establishing standards and inspecting for compliance, which is to mean what "regulation" means, then that's simple to answer. It's for the same reason as why the government in clean foods, effective drugs, state-licensed physicians or electricians, and aircraft inspections. It's a matter of public safety. Safe food, safe drugs, safe wiring, safe surgery, safe airplanes. And so on and so forth.
And no, you really can't trust the industries to be responsible. Most will, but sometimes mistakes are made, corners are cut, or people are just too greedy. History has shown that you just can't trust all the people all the time. The cost in terms of human life is deemed too high to just let it all slide. And yes, it happens plenty anyway. But without public health and safety regulations, it would be incredibly worse.
And you don't really want the private sector responsible for creating and enforcing the public safety laws. That would be even worse that having the government do it. Much worse, I fear.
[When I read the headline, I was trying to figure out how water lilies could fail at Y2K compliance. Seriously. "Water plants" just invoked the wrong image for me.:-]
``Anyone who slaps a `this page is best viewed with Browser X' label on a Web page appears to be yearning for the bad old days, before the Web, when you had very little chance of reading a document written on another computer, another word processor, or another network.''
--Tim Berners-Lee in Technology Review, July 1996
The web has been co-opted by forces who want to commit all the same evils as we thought we were escaping. Reading over the responses to this article, it doesn't seem like we're making much headway. We've got people whose companies assume an "MSIE or die" mentality. We've got rampant use of unportable, closed-source viedo games posing as plug-ins. We have people requiring you to use 640x480 displays with few pixels and bad colors. And of course, we have incorrigibly non-portable vendor-specific character sets that completely ignore standards.
We shouldn't be surprised that once money makers got involved that the web became just another casualty in the war on our minds. Information is less important than image. Literacy is less important than economics. Critical reasoning is less important than feel-good emotive response. Welcome to our brave new world; we hope you like it, because you don't have any choice. Best to just lie back, close your eyes, and think of England--er--America.
Neil Postman's non-fiction book, Amusing Ourselves to the Death, is a disturbing report of this phenomenon that offers no real solution. Bruce Sterling's science fiction novel, Distraction, is not just a decent story; it's also filled with social commentary about a world in which media image is paramount. I heartily recommend both books. Huxley's Brave New World wasn't that great a read, but he was scarily on-target about a lot of this.
Here are two links to resources related to this disturbing trend. The first is to the Any Browser Campaign, a definite must-read for designers. The other is a far less ambitious work, my own short treatise on Diversity in Web Design. Both are replete with links to further resources.
There's also a subtle connection between the themes of bad keyboard strategies and bad webpage design. In both cases, we have people who think they're making things better for one portion of the populace at the cost of making things worse for another portion.
Why in the world would you expect to find the intricate details of, say, SQL, in a book that says it's going to teach you Perl? It's no different here. The Perl books also don't teach about various tricky TCP/IP issues, either, even though Perl allows you to create sockets.
This is part of being a glue language. We glue to everything. We can only teach you how to attach the glue. You need to understand what you're gluing to.
Actually, the web developers are about five feet away from me, so I know exactly what the forms look like. No, wait. Actually, most of my CGI scripts create the form themselves. I do control the form.
You are deeply self-deceived. I can hack on your form till the cows come home, and by the time you see its results, they'll be nothing like what you think they can possibly be. And you'll be screwed. I can't wait to see your real form code, one that does files and cookies and selects, etc. Strike that. I'm sure it's more of the same.
Pay attention. You are dangerous. This is the horribly stupid perl code that people trash the language about, and you're part of the cause!
This code is not all-purpose. It is about the simplest parsing I would put in the beginning of one program. If I know the form's going to hand me something funky, I'll handle it. Since I write the code for the form, I can do that.
and here:
You didn't guard against a denial-of-service attack through too much data...
Again, a simple parser for a form I know will be simple. I'd write something better if I had something bigger.
In both these cases, you have committed the same incredibly stupid blunder. The root cause is that you seem to think it reasonable to expect to get back from the form only that data which you yourself provided in it. Nothing could be further from the truth. Nothing! And this misunderstanding is the cause of innumerable bugs and security violations. You the programmer do not control the form. Not one darned bit of it. One is at the complete mercy of the user. You obviously are relying upon the user's good will. That's a fatal mistake!
As for the matters of strict, your disdain for robust coding should scare the hell out of any employer or co-worker. And symbolic reference are 99% of the time used because someone had no clue how to build a proper data structure.
You have a long ways to go yet in becoming a competent software engineer. And you don't seem to be on that path right now.
There's much more to CGI than you seem to realize. For example, do you even understand the critical semantic difference between GET and POST? They're hardly interchangeable.
If I should ever write a book on low-level CGI internals (which I hope to avoid), I shall be sure to include all this. Meanwhile, you should abandon your attempts at wheel re-implementation, because you're doing it in a dangerously cavalier and often completely wrong fashion. I stand by my work: the module is going to get things right that 98% of the script kiddies will never even understand. So use it.
Here's what you did that was dubious (nits) or wrong (bugs):
You have a bug in your read: you failed to check the return value of your system call. That's a supermajor bug, an automatic disqualification.
You have a bug in your split. You need to supply a third argument of 2, or else you fail on URLs such as http://somewhere/cgi-bin/dumpreq?this=good=stuff&t hat=bad=stuff
Are you aware that the new CGI spec from W3C deprecates the use of & and insists on semicolon? In fact, the W3C validator now insists on semicolons. Your split doesn't know better. This could easily be a bug soon enough.
You didn't test for whether you had a HEAD request and react accordingly. That means spiders will trigger your program's full effects. That's a bug.
Your code can only handle trivial forms. It not only screws up on file uploads, it has no contingency for a name that occurs more than once, as occurs in related groups of related widgets--thing likes checkbox groups, select widgets, or multipart hidden data. This comes up all time times, as in http://somewhere/cgi-bin/pickit?cheese=swiss&chees e=cheddar&bread=rye.
Without seeing the code for those important parts, I can't say for sure, but given the rest of the non-industrial strength code, one can easily imagine the worst.
You didn't test for whether you had a GET or a POST request. You just forge ahead.
You have duplicate code. That's a very bad. It means you might get an update problem.
You didn't guard against a denial-of-service attack through too much data for your memory to hold coming from a huge POST.
You never declared any of your variables. Is this code use strict and use warnings clean?
Your use a magic numbers, 0 and 1, is confusing. Sometimes you use them for a key versus a value; other times you use them for the form data from STDIN versus the form data from the environment.
You have duplicate code. That's a very bad. It means you might get an update problem. (Why yes, Virginia, this is a repeat. So is yours. See the problem?:-)
Because otherwise you have too much needlessly duplicated information.
Better yet, you should just split into my ($key, $value) and loop across those in the same way. The anonymous array just seems to hurt legibility.
That should be far more than enough nits and gnats to keep you thinking for a while.
As I said, I write CGI programs all day long. That's how I make a living. And I've never had a problem with this.
Absence of evidence does not imply evidence of absence.
Here's my suggestion: read the CGI.pm source very, very carefully. There's a lot to learn. Good luck. Hopefully, you'll repent of your hackish ways that help give Perl a bad name by spreading bad CGI code around the world.
And since you're advocating we not show people how to do something because it might be "complicated", do you suppose we ought just to close the source of Linux?
I shan't be tilting at any straw windmills.
I shall, however be patiently awaiting your public apology and contrition.
RMS makes sure that there's only one line of thought
Duly noted. "Look upon me, ye Mighty, and despair, for I am the GPV: the Way, the Truth, and the Light. No man cometh unto Free Software save through Me. All other thoughts are Evil and which, long ere the last trumpet sound, shall be cast down into the aeternal Abyss whence they originally came and whither they must inevitably return. Retro me, O BSDas!"
Gee, I simply can't imagine why people think they're a cult.:-)
Are all the core libraries (libc5, glibc2.x, gtk, gnomelibs, kdelibs, maybe even the kernel api) licensed such that you can link a non-GPL program to them?
You've uncovered a profoundly disturbing issue. You have two choices: you may either believe the FSF, who want you to think that a GPL'd library spreads its virus to the calling program, or you can believe those of us who say that that's pure poppycock. Whichever way you go, you'll have to make a leap of faith, willfully believing what you wish to believe. No court has pronounced judgment on this matter, so everything remains pure speculation.
Do any of those libraries contain the FSF's poison pill? You bet they do! Now, with E, it's not a big deal, but what happens if Netscape or Adobe Acrobat or Word Perfect or any other provider of commercial software links with one of those, not realizing that they've just screwed themselves beyond belief?
Very bad things.
We end up with a vendor who gets burnt by free software. Beautiful. Whether we have a court battle or a vendor withdrawing their product, or both, this will be the Kiss of Death.
What can be done? Here are three pro-active suggestions:
Have the FSF make a blanket statement that the GPL on a library does not infect the resulting executable through mere use of that library, as many of us already maintain.
Create condoms for all the currently virus-carrying libraries.
Change the build process and the libraries so that a loader error is produced if you accidentally generate an infected binary without having specified some option that says you don't mind that. For example, if the default were to tolerate it, you could create a gcc --free flag to blow up in case something viral were used. On the other hand, if the default were to complain (as I believe it should be), you could create a gcc --viral flag to not blow up if you accidentally created a viral library.
Good luck with any of them.
You have discovered a very, very important point, and that unless we want to see Linux die back to a niche system without any commercial software available for it, that this issue must be addressed, and as soon as possible.
I cannot help but feel that I have somehow insulted you with this post, and I assure you that this was not my intention.
Ok.
In this instance, I was poking fun of C-net's apparent bias towards install ease being an overall indication of distribution strength.
I'm not a regular C-net reader.
I do not feel that the Slashdot community needs their commentary in the form of pablum, but I do feel that the average person does not use the words orthogonal and speciation much in a sentence.
You are correct, but only because the average person speaks Chinese.:-)
If you mean in the same sentence, then yes, perhaps so. But the average person of my acquaintance certainly employs those words. But in any event, I make no apology for their use. Reread the Buckley excerpt for why.
I happen to use the "$_" variable quite often, but have seen it depreciated by you quite often.
I don't have any particular issue with $_. It's remarkably convenient. You just have to remember to localize it when used in most subroutines, since it's a global variable.
In closing, my post recieved one point for being interesting, and one for being funny. Perhaps this means that someone out there understood that this was intended in the spirit of humor. I hope that you understand as well, that it was the post's intention to be funny, and hardly deserving of what I took to be a curt and derogatory response.
Curt?
Curt \Curt\ (k[u^]rt), a. [L. curtus; cf. Skr. kart to cut. Cf. {Curtail}.] Characterized by excessive brevity; short; rudely concise; as, curt limits; a curt answer.
curt adj 1: marked by rude or peremptory shortness; "try to cultivate a less brusque manner"; "a curt reply"; "the salesgirl was very short with him" [syn: {brusque}, {brusk}, {short(p)}] 2: brief and to the point; effectively cut short; "a crisp retort"; "a response so curt as to be almost rude"; "the laconic reply; `yes'"; "short and terse and easy to understand" [syn: {crisp}, {laconic}, {terse}]
If that was your idea of a posting marked by ``excessive brevity'', than I'm really quite astonished.
One of my hot buttons is being derided for my pronounced inability to restrict myself to monosyllabic grunts, or any suggestion that one should do so.
As I said right at the start:
Well, that was moderately amusing, although I'm not quite sure what you're trying to say.
So I found it somewhat funny, but I didn't understand it. I guess you noticed that part.
If I write a program that links to getopt(3fsf), it is certainly my work.
If I write a shell script that calls out to getopt(1fsf), that shell script is still my work, and their virus has no hold upon me. The FSF will be quick to agree to this.
Now, if I write a program that links to readline(3fsf), it is certainly my work.
I know this. You know this. Even the FSF knows this. But then they realize that they're about to let the cat out of the bag, so they backpeddle. They try to pretend that the foofunc(1fsf) program doesn't infect the calling program or script, but that the equivalent foofunc(3fsf) does. That's where they screw up.
When I use foofunc(3fsf), they would really, really like all the world to believe that they've now infected me, that they get to tell me what I can and cannot do with the software I wrote.
Guess what? That's bunk. They haven't infected me. I'm merely using a library function in the way that library functions are meant to be used: they're an API, and you link to them. It is of no consequence whether it's statically linked at link/load-time, dynamically linked at start-up, or accessed at run-time during execution via any one of myriad forms of RPC. It's API only, not material inclusion. APIs aren't viral.
This is really no different than the situation with the Linux kernel: its GPLness doesn't infect privately-held commercial device drivers linked against the kernel. This is good. Sure, it pisses off the FSF (read: Stallman, as with nearly any reference to the FSF). But so what? Lots of things piss him off. Tough. Linking to drivers like this only makes Linux more useful to more people.
BSDI found this out a long, long time ago. They wanted to completely open source, but couldn't get the drivers they needed that way. Vendors refused, important vendors whom they really needed. So they made an exception. I think folks have forgotten that lesson.
The FSF pretend not to try to control an API. They pretend not to try to control fair use. Very well. These false pretenses are a two-edged sword. Nice people don't play with knives, but since they're waving theirs around, so be it. It can cut them, too.
Most Linux operating systems ship with all of these various functions, like strlen(), getopt(), or readline(). It is ludicrous to believe that some infect and some do not. It's complete hypocrisy with no basis in reason. Libraries are for using. You can't control use through copyright. No copyright will let you require someone who buys your book to shelve it only with other books you approve of, or to read the book only under a full moon, or to stop you from reselling the book at a used bookstore.
It was this that this hypocrisy that inspired me to expose the fact that libraries cannot be infectively GPL'd, because that's trying to use copyright to dictate use. Thinking of the issues of getopt(1fsf) and getopt(3fsf), I as a simple demonstration, liberated readline from its erstwhile nonfree state.
And there was much rejoicing.
No, really--there was. I've received a good bit of joyful mail for this blow against tyranny and for freedom. I don't think it was as heroic an act as the mail often phrased it, but it was something that definitely needed being done. I also learned that at least two (and I think three) other implementations exist, so it's all water under the bridge now. You've an API you can link to freely. Enjoy. That's what freedom's for.
People needed to see that you cannot control employ the GPL to dictate use of libraries. And you shouldn't want to. That's not free. That's coercive. Be charitable. Set your software free.
RMS is not out to stop companies making a buck on their software.
Yup, he'll sure tell you that. So what? It's up to you to decide whether to look to the words or to the deeds. In this case, they're hardly consistent with each other. The words are disigenuous, full of legalistic loopholes. Watch the hands.
Good point. As soon as you let someone elses GPL'd patch into your code you have effectively lost all control over it.
So much for artistic control, eh? There are plenty of very sound reasons why we're now seeing open source licences that don't surrender artistic control. (As in Sun, etc.) They have their purposes, and they can't let us see the source and still get their own goals accomplished with something like the GPL.
The other concern is the 'viral' nature of GPL code. Can anyone clarify for me, is it the case that if you use a library that is GPLed, your code must also be GPLed? If that is the case, that makes it impossible for a closed source project to use GTK for example (unless the library's originator licenses it to you under special license - does anyone know of a famous example of this?). I personally don't think that limiting the amount of software written with a library is a good thing.
I agree with you. The FSF thinks otherwise. They think it is infective. But a lot of people don't believe them.
Remember the Perens interview in which he essentially confessed that in an RPC-centered world, full of COM and CORBA and dynamic linking and client-server bits, that libraries aren't really going to propagate the GPL the way the FSF would like them to? I forget the words he used, but it seems to me it might have been "loophole". And of course, there's the freeline technique demonstrating this and removing the string from viral libraries, making them to their real work -- being callable code -- not conveying the homeopathic GPL curse.
Microsoft would never do this. Apple, on the other hand, has done just that. Mac OS X is based on the Mach kernel and FreeBSD. But they are realeasing the source as Darwin.
And thank goodness they did! At least one of the two consumerist O/S vendors will be using a real O/S at last.
Was it really FreeBSD they started with, or was it some other distribution?
Your argument is pure sophistry. I don't care about angels dancing on the head of a pin. The reality of the matter is that this is a royal pain in the posterior, and no weasel words are going to change that. It's unnecessary, and unbecoming in a free gift.
It forbids you from using GPL'd software in conjunction with commercial software like Oracle libraries. Your other points are arguable, but this is totally false. The GPL only covers redistribution; in fact, the license text says so explicitly. You can link it to as many non-free libraries as you want, although free (non-profit or commercial) ones are preferred.
Come now. You're smarter than that. Please explain to me how someone is going to sell this software now? The FSF won't let them. And that's why they want to link to it. They want to sell it. They've got 100,000 lines of C code, and they link it to the Oracle libraries and to GNU DBM, and zap, they're totally hosed. Can't sell it. What a waste. Now they have to reinvent the wheel. So much for being a boon to programmers.
Sure, there are ways around this. You can point out that the amount of derivedness is immaterial--the courts might well support you here, since they have in other forms of intellectual property. Or you could argue that a library was meant to be used. Or you could use the FSF's own mendacious "free" rhetoric back on them explaining why something that you can do anything you want with something that's free.
Or, of course, you can use the freedline mechanism, but the FSF will just complain bitterly that this mechanism violates the spirit of what they're trying to do. Whether it's immoral to disobey an immoral command is something you'll have to work out for yourself.
The 'infectous' nature of the GPL is one of it's strongest points, that it is guaranteed to stay free.
Its infectious nature is its most insidious and devisive points. It is strong in the sense that the stench of a spraying skunk is strong.
Once more: YOUR CODE IS GUARANTEED TO REMAIN ALWAYS FREE. The GPL is not the way to make that happen. The BSD licence does that, too, but the GPL does something else.
The GPL is a way to immorally coerce others into making the choices that you want them to make. The LGPL, being non-infective, is much less evil.
Remember that there are many ways to avoid GPL'd libraries, too, so the library might was well be LGPL'd. Notice how the bc program is handled on OpenBSD. It manages to use the GPL'd program without contamination.
If you give something away, it is free. If you tell them what to do with it, it is not. Free is better.
The GPL prevents me profiting (presumably financially) from my code.
Please explain.
What I meant is that GPL'd code cannot be effectively sold under the normal licensing scheme used in matters of intellectual property. The GPL seeks to destroy that as a viable source of income, replacing it with nothing commensurate.
While the original and sole author could sell his original code under a separate licence, he must make sure not to use any bug fixes people send him, because of course they only looked at the GPL version. This is impractical and counterproductive.
Exactly! So, in the future, please quit referring to RMS as a starry eyed zealot. As you just pointed out, he's actually far more pragmatic than the *BSD people.
Pragmatic the way Machiavelli was pragmatic -- utterly devoid of morality. Without freedom of to choose good or bad, there is no moral virtue. To deprive someone of that choice is immoral.
No, "we" do not steal things. "We" do not pirate others' music or movies. "We" do not steal software. Perhaps criminals do that, but a software professional does not.
Are you telling us that you have illegally acquired IP materials on your computer? What all have you stolen? How much is it worth? Are you willing to go to prison for your beliefs? What have you actually contributed? How are you any different than a shoplifter or burglar?
What is it about consumer systems that encourages such rampant and blatant piracy? I've never seen Unix people passing around illegal software, but the Prisoners of Bill do it as though it were expected. Who wants to lay odds that this is an MS-DOS user, not a Unix user?
Many others of you have expressed your own incredulity as to the obviousness of the technology. This suggests another and probably a better way to combat Amazon: get the patent struck down as invalid. Software professionals are in the best position to provide evidence that this idea is obvious to someone in the field, and that it is hardly a new idea due to prior art.
I've no idea whom you would send such supporting technical data, but if you can help provide tangible evidence of why the patent is invalid, this would appear to hold the potential for a more effective strategy than a passive boycott or mass-mailed letter-writing campaign could.
But don't stop there. We should boycott Sun for changing the name of "oak" to "java" just to get a few million customers by riding on Starbucks's coattails, too. :-)
Yes, I'm kidding. It's a joke. Yes, I meant to do that. Please stop sending me all of your silly "humor boycott" flameletters. :-(
I'm so disappointed. I was sure we were going to be boycotting the patent office and the entire courts system instead. Now that could get interesting! :-)
However, if you mean regulation in the sense of establishing standards and inspecting for compliance, which is to mean what "regulation" means, then that's simple to answer. It's for the same reason as why the government in clean foods, effective drugs, state-licensed physicians or electricians, and aircraft inspections. It's a matter of public safety. Safe food, safe drugs, safe wiring, safe surgery, safe airplanes. And so on and so forth.
And no, you really can't trust the industries to be responsible. Most will, but sometimes mistakes are made, corners are cut, or people are just too greedy. History has shown that you just can't trust all the people all the time. The cost in terms of human life is deemed too high to just let it all slide. And yes, it happens plenty anyway. But without public health and safety regulations, it would be incredibly worse.
And you don't really want the private sector responsible for creating and enforcing the public safety laws. That would be even worse that having the government do it. Much worse, I fear.
[When I read the headline, I was trying to figure out how water lilies could fail at Y2K compliance. Seriously. "Water plants" just invoked the wrong image for me. :-]
We shouldn't be surprised that once money makers got involved that the web became just another casualty in the war on our minds. Information is less important than image. Literacy is less important than economics. Critical reasoning is less important than feel-good emotive response. Welcome to our brave new world; we hope you like it, because you don't have any choice. Best to just lie back, close your eyes, and think of England--er--America.
Neil Postman's non-fiction book, Amusing Ourselves to the Death, is a disturbing report of this phenomenon that offers no real solution. Bruce Sterling's science fiction novel, Distraction, is not just a decent story; it's also filled with social commentary about a world in which media image is paramount. I heartily recommend both books. Huxley's Brave New World wasn't that great a read, but he was scarily on-target about a lot of this.
Here are two links to resources related to this disturbing trend. The first is to the Any Browser Campaign, a definite must-read for designers. The other is a far less ambitious work, my own short treatise on Diversity in Web Design. Both are replete with links to further resources.
There's also a subtle connection between the themes of bad keyboard strategies and bad webpage design. In both cases, we have people who think they're making things better for one portion of the populace at the cost of making things worse for another portion.
This is part of being a glue language. We glue to everything. We can only teach you how to attach the glue. You need to understand what you're gluing to.
The Perl books cover, surprisingly enough, Perl. Are you asking for a good book to learn about HTTP, CGI, and HTML from?
Pay attention. You are dangerous. This is the horribly stupid perl code that people trash the language about, and you're part of the cause!
As for the matters of strict, your disdain for robust coding should scare the hell out of any employer or co-worker. And symbolic reference are 99% of the time used because someone had no clue how to build a proper data structure.
You have a long ways to go yet in becoming a competent software engineer. And you don't seem to be on that path right now.
There's much more to CGI than you seem to realize. For example, do you even understand the critical semantic difference between GET and POST? They're hardly interchangeable.
If I should ever write a book on low-level CGI internals (which I hope to avoid), I shall be sure to include all this. Meanwhile, you should abandon your attempts at wheel re-implementation, because you're doing it in a dangerously cavalier and often completely wrong fashion. I stand by my work: the module is going to get things right that 98% of the script kiddies will never even understand. So use it.
Without seeing the code for those important parts, I can't say for sure, but given the rest of the non-industrial strength code, one can easily imagine the worst.
That would read better like this:
Because otherwise you have too much needlessly duplicated information.Better yet, you should just split into my ($key, $value) and loop across those in the same way. The anonymous array just seems to hurt legibility.
That should be far more than enough nits and gnats to keep you thinking for a while.
Absence of evidence does not imply evidence of absence.Here's my suggestion: read the CGI.pm source very, very carefully. There's a lot to learn. Good luck. Hopefully, you'll repent of your hackish ways that help give Perl a bad name by spreading bad CGI code around the world.
I shan't be tilting at any straw windmills.I shall, however be patiently awaiting your public apology and contrition.
Gee, I simply can't imagine why people think they're a cult. :-)
Take, for example, Enlightenment.
Do any of those libraries contain the FSF's poison pill? You bet they do! Now, with E, it's not a big deal, but what happens if Netscape or Adobe Acrobat or Word Perfect or any other provider of commercial software links with one of those, not realizing that they've just screwed themselves beyond belief?Very bad things.
We end up with a vendor who gets burnt by free software. Beautiful. Whether we have a court battle or a vendor withdrawing their product, or both, this will be the Kiss of Death.
What can be done? Here are three pro-active suggestions:
- Have the FSF make a blanket statement that the GPL on a library does not infect the resulting executable through mere use of that library, as many of us already maintain.
- Create condoms for all the currently virus-carrying libraries.
- Change the build process and the libraries so that a loader error is produced if you accidentally generate an infected binary without having specified some option that says you don't mind that. For example, if the default were to tolerate it, you could create a gcc --free flag to blow up in case something viral were used. On the other hand, if the default were to complain (as I believe it should be), you could create a gcc --viral flag to not blow up if you accidentally created a viral library.
Good luck with any of them.You have discovered a very, very important point, and that unless we want to see Linux die back to a niche system without any commercial software available for it, that this issue must be addressed, and as soon as possible.
If you mean in the same sentence, then yes, perhaps so. But the average person of my acquaintance certainly employs those words. But in any event, I make no apology for their use. Reread the Buckley excerpt for why.
I don't have any particular issue with $_. It's remarkably convenient. You just have to remember to localize it when used in most subroutines, since it's a global variable. Curt? If that was your idea of a posting marked by ``excessive brevity'', than I'm really quite astonished.One of my hot buttons is being derided for my pronounced inability to restrict myself to monosyllabic grunts, or any suggestion that one should do so.
As I said right at the start:
So I found it somewhat funny, but I didn't understand it. I guess you noticed that part.If I write a shell script that calls out to getopt(1fsf), that shell script is still my work, and their virus has no hold upon me. The FSF will be quick to agree to this.
Now, if I write a program that links to readline(3fsf), it is certainly my work.
I know this. You know this. Even the FSF knows this. But then they realize that they're about to let the cat out of the bag, so they backpeddle. They try to pretend that the foofunc(1fsf) program doesn't infect the calling program or script, but that the equivalent foofunc(3fsf) does. That's where they screw up.
When I use foofunc(3fsf), they would really, really like all the world to believe that they've now infected me, that they get to tell me what I can and cannot do with the software I wrote.
Guess what? That's bunk. They haven't infected me. I'm merely using a library function in the way that library functions are meant to be used: they're an API, and you link to them. It is of no consequence whether it's statically linked at link/load-time, dynamically linked at start-up, or accessed at run-time during execution via any one of myriad forms of RPC. It's API only, not material inclusion. APIs aren't viral.
This is really no different than the situation with the Linux kernel: its GPLness doesn't infect privately-held commercial device drivers linked against the kernel. This is good. Sure, it pisses off the FSF (read: Stallman, as with nearly any reference to the FSF). But so what? Lots of things piss him off. Tough. Linking to drivers like this only makes Linux more useful to more people.
BSDI found this out a long, long time ago. They wanted to completely open source, but couldn't get the drivers they needed that way. Vendors refused, important vendors whom they really needed. So they made an exception. I think folks have forgotten that lesson.
The FSF pretend not to try to control an API. They pretend not to try to control fair use. Very well. These false pretenses are a two-edged sword. Nice people don't play with knives, but since they're waving theirs around, so be it. It can cut them, too.
Most Linux operating systems ship with all of these various functions, like strlen(), getopt(), or readline(). It is ludicrous to believe that some infect and some do not. It's complete hypocrisy with no basis in reason. Libraries are for using. You can't control use through copyright. No copyright will let you require someone who buys your book to shelve it only with other books you approve of, or to read the book only under a full moon, or to stop you from reselling the book at a used bookstore.
It was this that this hypocrisy that inspired me to expose the fact that libraries cannot be infectively GPL'd, because that's trying to use copyright to dictate use. Thinking of the issues of getopt(1fsf) and getopt(3fsf), I as a simple demonstration, liberated readline from its erstwhile nonfree state.
And there was much rejoicing.
No, really--there was. I've received a good bit of joyful mail for this blow against tyranny and for freedom. I don't think it was as heroic an act as the mail often phrased it, but it was something that definitely needed being done. I also learned that at least two (and I think three) other implementations exist, so it's all water under the bridge now. You've an API you can link to freely. Enjoy. That's what freedom's for.
People needed to see that you cannot control employ the GPL to dictate use of libraries. And you shouldn't want to. That's not free. That's coercive. Be charitable. Set your software free.
Remember the Perens interview in which he essentially confessed that in an RPC-centered world, full of COM and CORBA and dynamic linking and client-server bits, that libraries aren't really going to propagate the GPL the way the FSF would like them to? I forget the words he used, but it seems to me it might have been "loophole". And of course, there's the freeline technique demonstrating this and removing the string from viral libraries, making them to their real work -- being callable code -- not conveying the homeopathic GPL curse.
Was it really FreeBSD they started with, or was it some other distribution?
Your argument is pure sophistry. I don't care about angels dancing on the head of a pin. The reality of the matter is that this is a royal pain in the posterior, and no weasel words are going to change that. It's unnecessary, and unbecoming in a free gift.
Sure, there are ways around this. You can point out that the amount of derivedness is immaterial--the courts might well support you here, since they have in other forms of intellectual property. Or you could argue that a library was meant to be used. Or you could use the FSF's own mendacious "free" rhetoric back on them explaining why something that you can do anything you want with something that's free.
Or, of course, you can use the freedline mechanism, but the FSF will just complain bitterly that this mechanism violates the spirit of what they're trying to do. Whether it's immoral to disobey an immoral command is something you'll have to work out for yourself.
Once more: YOUR CODE IS GUARANTEED TO REMAIN ALWAYS FREE. The GPL is not the way to make that happen. The BSD licence does that, too, but the GPL does something else.
The GPL is a way to immorally coerce others into making the choices that you want them to make. The LGPL, being non-infective, is much less evil.
Remember that there are many ways to avoid GPL'd libraries, too, so the library might was well be LGPL'd. Notice how the bc program is handled on OpenBSD. It manages to use the GPL'd program without contamination.
If you give something away, it is free. If you tell them what to do with it, it is not. Free is better.
While the original and sole author could sell his original code under a separate licence, he must make sure not to use any bug fixes people send him, because of course they only looked at the GPL version. This is impractical and counterproductive.