In the scenario I outlined, my system isn't the one receiving the mail from the mailing list's machines. The ISP's servers receive it first, my machine downloads it from the ISP's servers. If the ISP's servers don't have the whitelist entry, they'll demand the 10-second calculation from the mailing list's machine. Either the ISP has to set up per-user whitelists and the software to manage them on their servers, or you can't have a whitelist. How do you handle this situation?
The whitelist has to be on the receiver's end or the system doesn't work. So, again, how does someone who can't add anything to the whitelist allow a mailing list to send to them without incurring unacceptable penalties for the mailing list?
And people who are receiving through an ISP (the vast majority) and who can't add themselves to the whitelist because they don't have access to the incoming mail servers?
And no, setting up the whitelist isn't trivial. You're talking about per-user configuration of mailservers handling mail for hundreds of thousands of users, with all the support headaches that entails on top of the hardware and software requirements to implement the whitelist and the modification interface.
I think this is a bit too late. It would have worked when spammers were sending through their own machines or through spam-friendly ISPs. But, when spammers are sending via networks of tens of thousands of compromised Windows machines acting as relays, all that ten-second delay means is that they need to send out more worms to add more machines to the network. Do the math. At 10 seconds per e-mail, ten thousand machines means 1000 e-mails per second aggregate. A hundred thousand machines = 10,000 e-mails/second. All this does is give the spammers more incentive to crack machines, it won't appreciably slow them down until it either a) takes their own machines off the network or b) costs them money out-of-pocket per e-mail sent.
As a developer you'd like to know everything that they think about the application. However, I've been on the other end of it where some participants must absolutely be included in parts of the conversation but at the same time must absolutely, by order of management, not see other portions of the conversation. Having to split a conversation up into several unconnected conversations and then try to splice bits back together while keeping the correct other bits excluded is non-trivial and annoying compared to simply editing the reply-to list as needed.
The example I was thinking of makes it clear why the exclusion existed. Think of a Support manager requesting a feature from Engineering. Engineering has to include the Support manager and Support techs in the discussion to get details and clarification on exactly what they want and how they want it to work. At the same time, the Engineering manager absolutely doesn't want the Support people hearing the parts of the exchange where Engineering concludes that it wouldn't be hard, maybe a week's work at most, but it'd change some basic things that'd cause major slippage in delivering other stuff that was considered a higher priority. The Support manager had made it clear he thought those other higher-priority items were useless, and the Engineering manager wanted to control how the conclusion was presented to avoid a major political fight and the bad blood resulting from the Support manager publicly losing it.
Why wouldn't you get notification? All my e-mail programs offer two options: reply to sender only, and reply to all recipients. If Sandy elected to reply to me only, without including you, why should the mail system override her decision? Bear in mind that, depending on company policies and the law, either Sandy or you might end up in various amounts of trouble for receiving a message you're not supposed to receive.
KMail and Mozilla use an index pane and a message pane because using just a message pane causes unreadability. Putting multiple messages on the screen at the same time works OK if messages are just one or two lines, but e-mail typically isn't just one or two lines in any significant exchange. When e-mails start to get to be entire screenfulls, you can't fit multiple messages on the screen at one time and still have the text large enough to be readable (unless you had a scrollbar and scrolled through the entire message stream, which is annoying). Hence, the index pane (to show you an overview of the message tree) and the message pane (to show you the message you're currently looking at) combined with selective quotation within the message to provide context for the reply.
One has to wonder if his proposed interface is simply a response to the brokenness of today's no-quoting top-posting style where the reader has to do all the work of figuring out what the writer was responding to. If so, it falls short of simply expecting the writer to make that clear. I shudder to think of the complexity needed to do quotation extraction from free-form plain text, and I'm going to try not to think about doing it from HTML or other formatted text formats.
Every mail program out there. Pine, Mutt, Mozilla/Thunderbird, Evolution, they all use that same nested and grouped format for displaying messages in a thread view. Hells, CompuServe used that same view in it's message forums back before ArpaNet existed, but the MS guy probably wasn't born when CIS and Genie and Prodigy were the big names in on-line services.
That's not too useful, then, since I'll lose the threading in the noise of non-related threads. The whole point of a threaded view is to pull all the related messages together visually. That's the most useful organization for people. If you try to somehow tie messages together by highlighting or connecting lines while still leaving them scattered in amongst unrelated messages, you'll end up with a visually cluttered screen that's not readable. I note that the example screenshots in the article don't show an unthreaded, pure-chronological list with highlighting, they show a threaded view with additional connecting lines for things like authorship, and I see no reason to think the proposed UI isn't what's being shown.
Why would it need a central server? This is what Message-ID and In-Reply-To (the e-mail equivalent of References in newsgroups) allow you to do. This is the basis for the threaded view in every other e-mail client, supplemented by subject-line matching and chronological ordering to help pull in messages from e-mail clients that don't do In-Reply-To.
Problem: doing this requires first solving the natural-language parsing problem. We're on our third generation of linguistics PhDs who can't find a solution to that problem, I don't think one researcher at MS has managed it, and without that breakthrough we're left with a simple threaded view again.
Threaded sort is canonically sorted chronologically (as one part of the sort), and nested/layered in exactly the way the picture shows. The highlighting... isn't normally needed as all messages are grouped and nested so that subthreads are visually related already.
If you're talking about rethreading messages based on content, so you could detect and handle topic drift, that would be a neat feature. That would require coming up with an algorithm that can take two messages and determine how closely they're related, though, and nobody's managed to come up with a workable algorithm in 25+ years (and they've had a lot of motivation, that same algorithm would also be a reliable antispam and antivirus heuristic). From the article, I don't think they're planning anything like this, only a basic thread sort with possibly user-defined keywords contributing to the threading (ie. you manually classify messages as part of a thread or not part of it).
The connection lines, eg. letting you follow authorship connections in a thread view, look nifty but aren't IMHO too useful in reality except as an "Ooh, shiny!" for manglement.
This sounds a lot like sorting a folder by thread (in-reply-to/references, time, subject). Is there any non-MS e-mail program out there that doesn't allow for that? Pine does, Mutt does, Evolution does, Mozilla/Thunderbird does... does MS really need an R&D department to tell them that a 20-year-old standard feature would be useful?
One thing strikes me: it sounds a lot like you know what you want to do isn't allowed by the license and you're trying to find a contortion that'll let you do it anyway. If what you're doing isn't fairly plainly within the license, it'd probably be better to just go and pay the library author for a non-GPL license, trading dollars for the right to do what you want to do. I've found very few cases of people playing around the edges of a license where they weren't trying something shady. It's used-car-salesman behavior.
No. Your wrapper library is linked against the GPL'd library, making the combination a derivative work in the eyes of the GPL, and the GPL doesn't allow you to distribute derivative works of a GPL'd work except under the terms of the GPL.
That'll work. The part linked with the GPL'd library is GPL'd, and the proprietary part isn't linked against the GPL'd library.
A good rule of thumb for the GPL is that the boundary is at the linker and/or loader. For the LGPL it's physical inclusion in the executable (ie. static libraries are a problem, shared-object libraries aren't).
The Linux kernel is a special case. There's a specific provision that user-space programs are not considered by the kernel license to be derivative works when they use the kernel headers and documented system calls. gcc covers the issue by placing the startup code (the bits of gcc that actually get included in the executable) under a non-GPL license. Note that it has never ever been argued that the code generated by a GPL'd tool is under the GPL unless that code is a part of the GPL'd tool. Thus the gcc startup code needs an exception but the code gcc generates from your source code does not as it isn't part of gcc.
This is the technology. Geeks understand diff -r. The judge, OTOH, probably doesn't understand it or it's implications. It's a matter of laying out in terms he can understand that the mere act of correcting the infringement will cause the code to be revealed. In this case it wouldn't be an argument against SCO's claims to the code, merely against their request to avoid making public exactly what they claim to own. The less of the rest of their case you have to argue in pursuit of that, the better the judge likes it.
Right. When you distribute someone else's code, you have to abide by their license terms. The GPL's as viral as any other software license in that way. For example, you can't distribute software containing Microsoft's redistributable modules in any way you like, you have to distribute it in ways that don't break the license for MS's redistributables. And as with any other license, if you don't wish to pay the royalty fee you don't distribute the licensed code. The only difference with the GPL is that you're paying in code instead of dollars. The desire you describe was, in fact, why the LGPL was created: to provide a way for libraries to be created that would themselves be and remain under the GPL without requiring that all derivative works also be under the GPL.
As for the last, the GPL prevents that. One of the rights explicitly not granted you by the GPL is the right to change the license terms. To release it under the LGPL would be changing the terms. Do that, you lose your license to distribute the code.
Someone needs to explain to the judge that SCO's claim is ridiculous as a matter of law. Assuming SCO proves their claim, as a matter of law IBM must be allowed to remove the infringing code. The code for Linux containing SCO's code is already available to the public, and the now-clean code will be available to the public per the terms of the GPL (which IBM would still have to abide by). A simple diff of the two will reveal exactly the code SCO's trying to keep unrevealed. The only way to prevent this would be to either prohibit IBM from curing the infringement (not legal) or to pull in every other Linux contributor and take away their right to license their own intellectual property (the parts that don't belong to SCO) under terms they find agreeable (again not legal, remedy doesn't extend that far beyond the plaintiff's own IP).
If it's a GPL'd library, it's a violation. GPL prohibits you from distributing a GPL'd library linked to your program when your program is not GPL'd.
If it's an LGPL library, then as long as you link to the shared-object form of the library (not physically included in your executable) then you're in the clear.
Hard statistic: roughly 80% of the e-mail coming into my mailbox is spam. This harms me in three ways:
Increased charges by my ISP to cover the increased cost of the servers needed to process that spam. For every unit of capacity processing legitimate e-mail they need four additional units to process the spam, and that adds up fast.
The time I spend cleaning up the spam, either deleting messages or configuring filtering. If I assume my time is worth what my employer pays me per hour, that comes to a couple hundred dollars a week of my time that the spammers are getting for free.
The costs of e-mail that either gets lost in the noise of the spam or gets inadvertently discarded by my filters. And no, toning down my filters so they won't discard falsely isn't an option, I can't afford to triple or quadruple the time I spend dealing with spam.
You can always go to the author of the base product and get a non-GPL license for it. He can license it out under as many different sets of terms as he wants. It's his property, after all. The complicating part comes where there's more than one contributor (you need licenses from all the contributors) or when the base product is itself a derivative work of another product (you'd need licenses all the way up the tree).
As for commercial use of GPL'd code, that depends on what the code is worth. Yes, your competitors have access to your contributions. But you get access to all of their contributions in return. It boils down to a simple question: is what you're getting from everyone else more valuable than what you're giving them? There's also a question of what the code's used for. For example, if you've patented a new 802.11g chipset and release the source code for the drivers for it, how much use is that source code without the hardware it drives? Sure your competitors could reverse-engineer your hardware from the information in the driver. So what? You hold the patent, they're going to have to get a license from you to legally make the hardware and without the hardware drivers are useless.
What you suggest would violate the GPL so blatantly that it probably wouldn't even get to a trial. When you modify the "Hello, world." program to print "Hello, Fred.", you've at that point created a derivative work. You are allowed to use the original work as a base for derived works that you distribute if and only if you release the modifications in source form. If you distribute your derived work but only include the source for the original work, not your modifications, you're blatantly and clearly in violation of your license to distribute the original work.
It's a trade-off: you can pay in dollars to license the base product commercially, or you can pay in programmer costs to implement your own base product from scratch, or you can pay in source code to use a GPL'd base product. In no case can you use someone else's product while refusing to abide by their license terms.
Not for distribution, no, but when he distributes under the GPL he enters into an agreement with the person he distributes to. He doesn't need to enter into that agreement to distribute his own software, but if he does he has to live up to his side of it just as the person he distributes to has to live up to their side of it. The fact that I'm the copyright holder doesn't matter, this would be a straight matter of breech of contract/agreement.
Eg., just because I distributed my stuff to other people under the GPL doesn't mean I have to give it to you under the GPL (though I couldn't stop you from getting it from one of the other people), but if I do give it to you under the GPL I can't then refuse to give you the source code if you ask.
In the scenario I outlined, my system isn't the one receiving the mail from the mailing list's machines. The ISP's servers receive it first, my machine downloads it from the ISP's servers. If the ISP's servers don't have the whitelist entry, they'll demand the 10-second calculation from the mailing list's machine. Either the ISP has to set up per-user whitelists and the software to manage them on their servers, or you can't have a whitelist. How do you handle this situation?
The whitelist has to be on the receiver's end or the system doesn't work. So, again, how does someone who can't add anything to the whitelist allow a mailing list to send to them without incurring unacceptable penalties for the mailing list?
And people who are receiving through an ISP (the vast majority) and who can't add themselves to the whitelist because they don't have access to the incoming mail servers?
And no, setting up the whitelist isn't trivial. You're talking about per-user configuration of mailservers handling mail for hundreds of thousands of users, with all the support headaches that entails on top of the hardware and software requirements to implement the whitelist and the modification interface.
I think this is a bit too late. It would have worked when spammers were sending through their own machines or through spam-friendly ISPs. But, when spammers are sending via networks of tens of thousands of compromised Windows machines acting as relays, all that ten-second delay means is that they need to send out more worms to add more machines to the network. Do the math. At 10 seconds per e-mail, ten thousand machines means 1000 e-mails per second aggregate. A hundred thousand machines = 10,000 e-mails/second. All this does is give the spammers more incentive to crack machines, it won't appreciably slow them down until it either a) takes their own machines off the network or b) costs them money out-of-pocket per e-mail sent.
As a developer you'd like to know everything that they think about the application. However, I've been on the other end of it where some participants must absolutely be included in parts of the conversation but at the same time must absolutely, by order of management, not see other portions of the conversation. Having to split a conversation up into several unconnected conversations and then try to splice bits back together while keeping the correct other bits excluded is non-trivial and annoying compared to simply editing the reply-to list as needed.
The example I was thinking of makes it clear why the exclusion existed. Think of a Support manager requesting a feature from Engineering. Engineering has to include the Support manager and Support techs in the discussion to get details and clarification on exactly what they want and how they want it to work. At the same time, the Engineering manager absolutely doesn't want the Support people hearing the parts of the exchange where Engineering concludes that it wouldn't be hard, maybe a week's work at most, but it'd change some basic things that'd cause major slippage in delivering other stuff that was considered a higher priority. The Support manager had made it clear he thought those other higher-priority items were useless, and the Engineering manager wanted to control how the conclusion was presented to avoid a major political fight and the bad blood resulting from the Support manager publicly losing it.
Why wouldn't you get notification? All my e-mail programs offer two options: reply to sender only, and reply to all recipients. If Sandy elected to reply to me only, without including you, why should the mail system override her decision? Bear in mind that, depending on company policies and the law, either Sandy or you might end up in various amounts of trouble for receiving a message you're not supposed to receive.
KMail and Mozilla use an index pane and a message pane because using just a message pane causes unreadability. Putting multiple messages on the screen at the same time works OK if messages are just one or two lines, but e-mail typically isn't just one or two lines in any significant exchange. When e-mails start to get to be entire screenfulls, you can't fit multiple messages on the screen at one time and still have the text large enough to be readable (unless you had a scrollbar and scrolled through the entire message stream, which is annoying). Hence, the index pane (to show you an overview of the message tree) and the message pane (to show you the message you're currently looking at) combined with selective quotation within the message to provide context for the reply.
One has to wonder if his proposed interface is simply a response to the brokenness of today's no-quoting top-posting style where the reader has to do all the work of figuring out what the writer was responding to. If so, it falls short of simply expecting the writer to make that clear. I shudder to think of the complexity needed to do quotation extraction from free-form plain text, and I'm going to try not to think about doing it from HTML or other formatted text formats.
OK, correction: Pine doesn't indent in the index list when sorting by thread. Mutt, Mozilla and Evolution do.
Every mail program out there. Pine, Mutt, Mozilla/Thunderbird, Evolution, they all use that same nested and grouped format for displaying messages in a thread view. Hells, CompuServe used that same view in it's message forums back before ArpaNet existed, but the MS guy probably wasn't born when CIS and Genie and Prodigy were the big names in on-line services.
That's not too useful, then, since I'll lose the threading in the noise of non-related threads. The whole point of a threaded view is to pull all the related messages together visually. That's the most useful organization for people. If you try to somehow tie messages together by highlighting or connecting lines while still leaving them scattered in amongst unrelated messages, you'll end up with a visually cluttered screen that's not readable. I note that the example screenshots in the article don't show an unthreaded, pure-chronological list with highlighting, they show a threaded view with additional connecting lines for things like authorship, and I see no reason to think the proposed UI isn't what's being shown.
Why would it need a central server? This is what Message-ID and In-Reply-To (the e-mail equivalent of References in newsgroups) allow you to do. This is the basis for the threaded view in every other e-mail client, supplemented by subject-line matching and chronological ordering to help pull in messages from e-mail clients that don't do In-Reply-To.
Problem: doing this requires first solving the natural-language parsing problem. We're on our third generation of linguistics PhDs who can't find a solution to that problem, I don't think one researcher at MS has managed it, and without that breakthrough we're left with a simple threaded view again.
Threaded sort is canonically sorted chronologically (as one part of the sort), and nested/layered in exactly the way the picture shows. The highlighting... isn't normally needed as all messages are grouped and nested so that subthreads are visually related already.
If you're talking about rethreading messages based on content, so you could detect and handle topic drift, that would be a neat feature. That would require coming up with an algorithm that can take two messages and determine how closely they're related, though, and nobody's managed to come up with a workable algorithm in 25+ years (and they've had a lot of motivation, that same algorithm would also be a reliable antispam and antivirus heuristic). From the article, I don't think they're planning anything like this, only a basic thread sort with possibly user-defined keywords contributing to the threading (ie. you manually classify messages as part of a thread or not part of it).
The connection lines, eg. letting you follow authorship connections in a thread view, look nifty but aren't IMHO too useful in reality except as an "Ooh, shiny!" for manglement.
This sounds a lot like sorting a folder by thread (in-reply-to/references, time, subject). Is there any non-MS e-mail program out there that doesn't allow for that? Pine does, Mutt does, Evolution does, Mozilla/Thunderbird does... does MS really need an R&D department to tell them that a 20-year-old standard feature would be useful?
One thing strikes me: it sounds a lot like you know what you want to do isn't allowed by the license and you're trying to find a contortion that'll let you do it anyway. If what you're doing isn't fairly plainly within the license, it'd probably be better to just go and pay the library author for a non-GPL license, trading dollars for the right to do what you want to do. I've found very few cases of people playing around the edges of a license where they weren't trying something shady. It's used-car-salesman behavior.
The Linux kernel is a special case. There's a specific provision that user-space programs are not considered by the kernel license to be derivative works when they use the kernel headers and documented system calls. gcc covers the issue by placing the startup code (the bits of gcc that actually get included in the executable) under a non-GPL license. Note that it has never ever been argued that the code generated by a GPL'd tool is under the GPL unless that code is a part of the GPL'd tool. Thus the gcc startup code needs an exception but the code gcc generates from your source code does not as it isn't part of gcc.
This is the technology. Geeks understand diff -r. The judge, OTOH, probably doesn't understand it or it's implications. It's a matter of laying out in terms he can understand that the mere act of correcting the infringement will cause the code to be revealed. In this case it wouldn't be an argument against SCO's claims to the code, merely against their request to avoid making public exactly what they claim to own. The less of the rest of their case you have to argue in pursuit of that, the better the judge likes it.
Right. When you distribute someone else's code, you have to abide by their license terms. The GPL's as viral as any other software license in that way. For example, you can't distribute software containing Microsoft's redistributable modules in any way you like, you have to distribute it in ways that don't break the license for MS's redistributables. And as with any other license, if you don't wish to pay the royalty fee you don't distribute the licensed code. The only difference with the GPL is that you're paying in code instead of dollars. The desire you describe was, in fact, why the LGPL was created: to provide a way for libraries to be created that would themselves be and remain under the GPL without requiring that all derivative works also be under the GPL.
As for the last, the GPL prevents that. One of the rights explicitly not granted you by the GPL is the right to change the license terms. To release it under the LGPL would be changing the terms. Do that, you lose your license to distribute the code.
Someone needs to explain to the judge that SCO's claim is ridiculous as a matter of law. Assuming SCO proves their claim, as a matter of law IBM must be allowed to remove the infringing code. The code for Linux containing SCO's code is already available to the public, and the now-clean code will be available to the public per the terms of the GPL (which IBM would still have to abide by). A simple diff of the two will reveal exactly the code SCO's trying to keep unrevealed. The only way to prevent this would be to either prohibit IBM from curing the infringement (not legal) or to pull in every other Linux contributor and take away their right to license their own intellectual property (the parts that don't belong to SCO) under terms they find agreeable (again not legal, remedy doesn't extend that far beyond the plaintiff's own IP).
If it's an LGPL library, then as long as you link to the shared-object form of the library (not physically included in your executable) then you're in the clear.
Hard statistic: roughly 80% of the e-mail coming into my mailbox is spam. This harms me in three ways:
- Increased charges by my ISP to cover the increased cost of the servers needed to process that spam. For every unit of capacity processing legitimate e-mail they need four additional units to process the spam, and that adds up fast.
- The time I spend cleaning up the spam, either deleting messages or configuring filtering. If I assume my time is worth what my employer pays me per hour, that comes to a couple hundred dollars a week of my time that the spammers are getting for free.
- The costs of e-mail that either gets lost in the noise of the spam or gets inadvertently discarded by my filters. And no, toning down my filters so they won't discard falsely isn't an option, I can't afford to triple or quadruple the time I spend dealing with spam.
So, there you have it. Any more questions?You can always go to the author of the base product and get a non-GPL license for it. He can license it out under as many different sets of terms as he wants. It's his property, after all. The complicating part comes where there's more than one contributor (you need licenses from all the contributors) or when the base product is itself a derivative work of another product (you'd need licenses all the way up the tree).
As for commercial use of GPL'd code, that depends on what the code is worth. Yes, your competitors have access to your contributions. But you get access to all of their contributions in return. It boils down to a simple question: is what you're getting from everyone else more valuable than what you're giving them? There's also a question of what the code's used for. For example, if you've patented a new 802.11g chipset and release the source code for the drivers for it, how much use is that source code without the hardware it drives? Sure your competitors could reverse-engineer your hardware from the information in the driver. So what? You hold the patent, they're going to have to get a license from you to legally make the hardware and without the hardware drivers are useless.
What you suggest would violate the GPL so blatantly that it probably wouldn't even get to a trial. When you modify the "Hello, world." program to print "Hello, Fred.", you've at that point created a derivative work. You are allowed to use the original work as a base for derived works that you distribute if and only if you release the modifications in source form. If you distribute your derived work but only include the source for the original work, not your modifications, you're blatantly and clearly in violation of your license to distribute the original work.
It's a trade-off: you can pay in dollars to license the base product commercially, or you can pay in programmer costs to implement your own base product from scratch, or you can pay in source code to use a GPL'd base product. In no case can you use someone else's product while refusing to abide by their license terms.
Not for distribution, no, but when he distributes under the GPL he enters into an agreement with the person he distributes to. He doesn't need to enter into that agreement to distribute his own software, but if he does he has to live up to his side of it just as the person he distributes to has to live up to their side of it. The fact that I'm the copyright holder doesn't matter, this would be a straight matter of breech of contract/agreement.
Eg., just because I distributed my stuff to other people under the GPL doesn't mean I have to give it to you under the GPL (though I couldn't stop you from getting it from one of the other people), but if I do give it to you under the GPL I can't then refuse to give you the source code if you ask.