Linux grabs its single biggest win
techrepublic.com
techrepublic.com
> the DOD’s use of open source code will alter the GPL for said code (they can’t, for obvious reasons, release any code they use and modify back into the wild)
Making changes to a GPLed program, and then keeping them to yourself, is completely within your rights under the license. It's only when you sell or give away the updated product that the GPL's rules start getting triggered.
That said, it would be nice if they decided that certain bug fixes and such could be sent back to developers, not at the expense of national security, but I can hardly see how a bug fix being pushed back out could hurt the military though.
Without economic power, there is no military power.
http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA389801&Locati...
claiming that their use of copyright protected material for national security purposes constitutes fair use.
It's not usually some E-4 sitting at a terminal writing the software that runs sophisticated modern weapons systems.
Instead it is a civilian contractor who is writing the code and then selling the software along with the system to the US military, i.e. the software is being distributed for money.
Besides, if you're distributing the application to anyone besides the DoD you're going to have bigger problems than GPL license compliance.
Bob is the Navy. Alice is the contractor.
Alternately, Bob is me and Alice is you.
Either way, the GPL allows it.
In fact, considering all possible outcomes, stopping business is the most desirable one.
The general public, given they are not customers, are not involved.
And those rights are automatically passed on -- if Alice sells the product to Bob and he resells it to Carol and she compiles it and gives the binary away to Doug, Doug can call Alice and demand the source.
(I'm mentioning Brazil because, if memory doesn't fail me, one of the requirements they asked of countries/companies bidding to provide them with 4+ generation planes was that they should be able to audit and modify all the software running the planes.)
And yes, being able to audit the complete code for all components was one of the initial conditions and, IIRC, the reason why the Grippen NG was originally selected by the military. But then politicians took over and nobody really knows what will come out of that.
How?
If you suddenly see a new project getting contributions from some particular source, you may be able to correlate that with a project they're working on.
As others have said, nothing requires them to do this.
And, as a practical matter, the fact they used Windows seems to indicate they can either maintain a kernel entirely in-house (as essentially no MS developers have security clearance) or that they aren't focused on what the kernel does in the first place and do all of their special software in userspace. My money's on the second of those possibilities.
Your right to keep your changes to yourself end when you distribute your derivative work to a third-third party. The question is: what constitutes distribution? Some have argued that some hosting and outsourced management operations may constitute distribution for the purposes of the GPL.
Your approximation of the implications of the GPL are probably sufficient for most startups, but your understanding is insufficient if you are so eager to insist that your approximation is still applicable for an organization of the scope and complexity of the DoD.
That said, the article doesn't really seem to get it either.
However, if the DoD is hiring outside help, I'm not sure the above case is even relevant. When a startup hires an individual to write code, the individual doesn't necessarily maintain the rights to the code he writes, because he's acting on behalf of an organization (so the rights are automatically assigned to the company instead). And a company is free to distribute GPL code internally without releasing its source externally.
A separate question is whether the fact that the DoD is a government agency makes this aspect of corporate law not apply. Most writings of the public government are automatically in the public domain (a law which was pivotal in the Pentagon Papers proceedings), and the fact that the government is comprised "of the people" may make this issue more complicated.
> And even though the DOD’s use of open source code will alter the GPL for said code (they can’t, for obvious reasons, release any code they use and modify back into the wild)
This is what I don't understand. What are they altering about the license? And what are these seemingly 'obvious' reasons? The NSA was fully capable of releasing SE Linux. As for software to control missiles, etc., the real issue is that individuals (and even nations, as we've seen) can't create the physical weapons easily - the software itself is not necessarily the biggest hurdle.
(And, depending on what type of use we're talking about - though we'll probably never know exactly - the GPL may not even need to take effect, just as GPL and proprietary software can both coexist on an underlying GPL operating system, for example).
If you're creating any kind of new computing gizmo now, Linux gives you so much existing value for free (allowing you to add your own stuff on top) that it's hard to see why you'd use anything else.
I think that things like Raspberry Pi and OLPC will also help move linux into the hands of regular consumers.
If we're still using Linux in 2112, we should just launch all the nukes and end ourselves.
It takes on a modern machine (in my case a laptop from last year) about 4-5 mins, full with modules. In comparison, some random java project I am working on, it takes maybe 7-8 mins.
And actually, if you ever compiled a kernel, which I highly doubt, the make system does not recompile everything, only your change. Besides that, modules you can compile individually.
The kernel I'm working on now, non-Linux, can build in about 5 seconds--and this kernel works on a pretty large segment of hardware, too.
There are other operating system platforms like the various flavors of BSD that might work just as well. Having more than one option is always a great benefit.
It mostly boils down to fundamental architecture, monolithic design, UI decisions, conflating data + code (e.g.: a "Word Document" or "Spreadsheet File" is really a general-purpose computer program, not merely static text), and ingrained user practices (see today's PHP rant for a somewhat parallel discussion of culture), as well as an inherent lack of transparency, a filesystem model which prevents being able to delete in-use files, etc., etc., etc.
It's a pile of small faults which, in total, create gross instabilities.
Worse: the reasons for this are deeply linked to Microsoft's need to maintain a deep monpolistic lock on the personal computing sector.
And as much as Microsoft continue to address small aspects, the big picture eludes them. Empirical data continue to show that Microsoft systems are far more vulnerable to exploits than alternatives, particularly Linux and Unix derivatives. OpenBSD being the most preemptively secure, in part by digging deep into infrastructure (classic example: string handling to avoid buffer overruns, and an entire huge class of security blunders). There's a humorous bit about various Linux, BSD, and Microsoft responses to security disclosures that's pretty close to truthful (sorry, can't dig it up right now).
Nick Petreley's "Security Report: Windows vs Linux: An independent assessment" remains largely valid http://www.theregister.co.uk/2004/10/22/security_report_wind...
Bugs affecting Windows frequently exploit features which are deep and broad, have profound systemic effects, or are easily exploitable on large classes of systems. The Sapphire/Slammer worm comes to mind -- you wouldn't think that the Microsoft SQL Server would be a widely installed desktop component, but as the Desktop Engine, it was. http://en.wikipedia.org/wiki/SQL_Slammer
Other factors affecting this:
With Linux, I have one-stop shopping for most of my security updates affecting virtually ALL software on my system. Updates are atomic, can generally be applied without rebooting, and (due to nearly two decades of process improvement and strong policy) nearly always work. There are differences even among distros -- I find Debian tends to have the most robust practices, so long as you stick with stable, RHEL is a lot more hit-or-miss. This is a direct consequence of Debian Policy. Read it and understand it.
Linux software components tend to do one thing and one thing well. Rather than ship kitchen-sink "Enterprise Solutions", most Linux software and subsystems focus on a single task, are principally controlled and configured via commandlines and textfiles (lending themselves to scripting, version control, and configuration management generally, hence, better and more consistent processes). Again, not uniformly true, with GNOME (not a server package) and Systemd being notable exceptions.
There's an unprecedented level of transparency. Even as a mostly shell-tools kind of sysadmin, I can directly monitor system state through shell tools, strace, and /proc. Even finding myself on Linux-like environments (e.g.: Mac OS X, Solaris) lacking all of these features, I feel their absence profoundly. There's little about a process or system I can't examine directly and/or log.
There's more out there. If you're not willing to be convinced, there's little I can say or show you that will change your mind. But you're more than free to do your own legwork.
What empirical data? Care to link to any?
If Linux is more secure than Windows, then why does Android have such a huge malware problem?
Just read through the latest articles at the below link. https://www.google.com/search?client=opera&rls=en&q=...
>Nick Petreley's "Security Report: Windows vs Linux: An independent assessment" remains largely valid
No, it doesn't.I skimmed through it and it's pretty outdated, especially with the changes in Windows Vista and Windows 7 and with regards to things like IIS.
Am I wrong?
Further, Linux doesn't seem to have a different design when it comes to monolithic design and tends to actually have worse permissions problems out of the box WRT granularity.
First, a given Linux system can be virtually entirely divorced from userland. Android would be a great example: it runs the Linux kernel and a very, very small set of standard features, on top of which the Android infrastructure itself is place. Android by itself is nowhere near POSIX compliant, though it can be made so by adding additional software (e.g.: busybux, terminal app, etc.).
More generally, any given utility for a Linux system can generally be provided from multiple independent sources, from system libraries to common utilities (e.g.: numerous awk and vi implementations) to services (webservers, databases, etc.). Any one component can generally be replaced or even removed without impacting other components (barring tight dependencies).
It's possible to build very minimial, or very complete, Linux systems. Lightweight bootable images based on little more than a kernel, shell, and busybox. Heavy server or desktop systems with thousands of packages.
The kernel itself is highly modular, both in terms of features (networking, filesystems) and devices (disk, ports, network devices...). Unless specifically added in, graphics are not included in the kernel (obviating large classes of b ugs), and systems can be run without a GUI or even a directly attached terminal. This is a level of flexibility you simply do not have with a Windows box.
Permissions granularity in my experience is largely a bogeyman -- you don't need a highly complex system, you need one that works. The important things are appropriate and usable permissions within an understandable framework. Linux supports user/group/world read/write/execute permissions, SUID, SGID, and sticky bits. It also supports ACLs, though these are very rarely implemented -- they're a maintenance nightmare. If you'll stick to Debian, you'll fidn that permissions matter and are generally set to be both safe and sane by default.
If you've got something specific in mind, I or someone else might be able to address it.
As for Vista: Microsoft have played the "we've fixed the security problem" record so many times over the past 15-20 years that the grooves are worn smooth. While things may have improved, I still see a landscape littered with exploits and attacks, as well as a security infrastructure (virus, spam, network intrusion, and other scanners) I in large part don't have to worry about on Linux systems. Yes, there's vigilance required. But it's at a whole different level of intensity. While I don't work with Vista (and apparently few will), I don't see any fundamental changes which would be required to change the Linux vs. Microsoft security picture.
GPL should also read:
"The software must not be used for the purposes of warfare or to inflict suffering on any individual."
EDIT: I can see America has woken judging by the number of downvotes being received.
If you wan't GPL to be non-violent then you also have to forbid GPL usage in embedded systems, because air planes, cars etc. also can kill people.
And don't forget that Linux users normally pay back to the community. Look at SE-Linux, or SE-Android, for example.
My point is that if it can be used to kill a person, then I am not fussed. The fact that it is intended to kill people, then I am fussed.
A car is not inherently designed to kill people. A drone is.
A military drone is either intended to:
1. Blow people up or shoot them.
2. Find out who to blow up or shoot.
People don't drive cars around like that other than the military (therefore point demonstrated) and mad max...
Some of them are used for war, but not all. I'm assuming the companies that make "good" drones also make military drones.
With that clause you clearly couldn't put the software into the guidance computer on a warhead or the missile launch system itself. But what about a system on the weapons launching platform that isn't a weapon. Is the computer running the engines on a navy cargo ship 'used for the purposes of warfare'? What if the system controlled by the software is completely incidental, or defensive in nature? The fire control system saves lives, is that 'for the purposes of warfare'?
And what about the computers used to design weapons? Is an engineer working on a weapon using the software 'for the purposes of warfare'?
And what about the accountant at the company that makes weapons, is he using the software for the purposes of warfare even if he doesn't know anything about the weapons?
Is the machine shop that gets 1% of its business from selling parts that end up in weapons using the software for the purposes of warfare?
It's impossible to make that distinction in any meaningful way.
If a device is intended to directly harm someone intentionally, then there should be a restrictive clause.
Computers that design weapons aren't specifically used to design weapons.
Weapons are specifically designed to kill people so therefore the clause should apply.
A scout drone is a weapon if it's used by the military. I made this point here: http://news.ycombinator.com/item?id=4177285
There is no grey area.
I agree about the GPL at the basic point, but there should be a no warfare version.
- Is it ok to license audrino code under this license? (yes)
- Is it ok to combine other components with audrino under this license? (yes, for non-weapons)
- Can audrinos be used to build a drone? (yes)
- Can this drone be purchased by the government and it's contractors (yes)
- Can the military use the drones? (yes as long as it doesn't "kill or cause harm")
- Can this drone be used for reconnaissance? (yes as long as it doesn't "kill or cause harm")
ok, so now the military is using these drones all over the place. Pictures are taken, stored in databases, and distributed throughout the military. Eventually, some of those pictures are used to strategically bomb an insurgent encampment. Who violated the license?
Even better, what it were Google who purchased the drones and Google maps was instead used for the bombing strategy. Who's at fault now?
You distinctly miss the point there. Military hardware is controlled heavily. No commercial entities use their data. That chain if events doesn't waist and never will.
There is a wall between the two sides that is rarely crossed.
Most of technology initially conceived for military purposes was at some point repurposed for civilian use (Think: That packet-based network nowadays called 'The Internet')
As others have said "warfare" and "suffering" are too hard to define anyway.
Even if it were practical and enforceable at keeping "evil" from co-opting code contributed by "good," it would also reduce opportunities for "good" to co-opt code contributed by "evil."
I'll point out that the technology we are using to have this discussion was underwritten by the military. The military dumped a lot of money into integrated circuits before commercial applications could fund Moore's Law, and the Internet was also the outcome of a military project. You can argue that there should be other means to fund such advancements, and I'd agree, but this is where we are now.
I think you issue some good counterpoints to my original point which I can't argue with.
No, but it's a lot easier to create a minimal / auditable Linux installation than it is with Windows.
It's been popular enough for that for at least a decade now. Just because you personally don't run it doesn't mean nobody does.
Another example: If everyone drove BMWs, they would be just as crappy as a Ford Fiesta, right?
However, this case is completely different. I don't think Linux share is greater than 10% on the desktop market and that's the target for most malware software.
Edit: BTW I do run Linux on both sides, Desktop(Home) and Server. :)
I think that's only the case to the extent the desktop world is tied to the insecure monoculture of the Windows world. You can't tell me there wouldn't be money to be made from being able to reliably infect Linux webservers, for example.
I wish more software licenses had a clause forbidding military use of the code.
We have to function to have any hope of improving the situation. That does mean supporting at some level the thing we hope to fix.
The question of social responsibility of programmers (and other professionals) is not an easy one, and I think every programmer should think hard and often about the politics of their work.
Many programmers often dismiss such questions by saying that code in itself isn't moral or amoral, but what is done with it. But when you think more about it, it's just an easy excuse so that they can get on with their lives with a clear conscience.
There's also a big difference between buying some gum and having the tax you paid on it go to the military vs. actively developing military drones. I'd say that contributing to Linux would fall somewhere in between these two.
Yes, you do. Thoreau certainly made the choice; but, then, he was a hated American.
I used to design guidance systems for which I'm totally fucking ashamed of myself for but at the end of the day unless you observe the process you can't change it.
The issue is not the technology, but how we choose to use it.
That's why I use flint knives and ride a bicycle made of bamboo.
If we were in the steel industry, the right thing to do would be to see that the military doesn't get steel. But we're not, we're mostly programmers here, so I'm saying we should exercise caution and be aware of how the stuff that we make gets used.
But thinking less of Linux because the military picked it up and said "Hey this is an awesome tool!" seems wrongheaded and counter-productive to me.
Linux's primary advantage still remains that it has a smaller install base and is therefore a smaller target.
I'm not sure that Linux would be much more secure than Windows if it was in as wide usage - the largest factor in computer security will always be humans.
Look how easily the recent Flashback virus spread on Mac's - people will continue to input their password when prompted.
Also, I don't think QNX is necessarily more obscure. It may not evolve on the desktop/server market, but it is an industry standard in its field.
It's called PEBCAK.
For the most part, Windows can be just as secured as Linux.
Problems manifest when incompetent fools to incompetent things.
I'm sorry, but that sounds a lot like saying "a car can be made as waterproof as a submarine, if you do it right."
Windows security is basically tacked-on afterwards.
Windows 95? Sure.
Windows Server 2008 R2? It's such an integral part of it, that I'm questioning your experience (or lack of it) from that statement.
The only thing they have to watch out for is code that is explicitly licensed such that the military can't use it, or the "don't be evil" licenses... and I wouldn't be surprised they've got some sort of immunity against that buried in the law somewhere. Even if they don't, this doesn't seem to be that much code.
I wouldn't expect to see a line of code from them come back to the community... not because they're unwilling individually, but because I would imagine the process of getting it legally safe to release publicly just won't be worth it.
http://www.h-online.com/security/news/item/NSA-releases-secu...
What people don't often realize is that GPL (both v2 and v3) has a "trigger" condition, where the GPL reciprocity applies only with physical distribution of the code.
As an end-user, it's perfectly fine to modify GPL code and keep the changes private.
That trickle down is going to have a serious, lasting effect in the world of Linux. Here’s how I see this working:
DOD begins Linux roll out US Government begins wide-spread roll out Civilian security companies world-wide begin roll out Universities fall in line Consumers begin clamoring for better security on their OS
erm... and then virus writers start writing viruses for Linux... Just like happened on OSX... If there is money to be made, virus writers will write for whatever OS has users... Mind you, wouldn't want to be a virus writer getting found out by the DOD...
If this was going to happen, it would have happened when there was a massive boom in servers running Linux, over a decade ago now. Imagine the money to be made by being able to compromise everything running the LAMP stack.
Don't confuse your personal desktop for the entire world.
The kind of server we're talking about is, by definition, on the Internet, accepting connections from arbitrary people. It's entirely possible for a connection or a family of connections to bring down the server software, which often provides a way to subvert the OS while the machine is in the unusual state of the userspace server software being down. This provides the avenue.
> if everyone was using it as a desktop OS, and was browsing, checking email, etc, there is more of a chance to attack it
I think this falls down, too: Linux has never been a single monoculture. Instead, there's been broad de fact standardization of some things but not others, making it more difficult to target malware to it, as malware is, very often, intimately dependent on not only specific software, but specific configurations of software and specific versions of software.
Also, Windows has never had a trusted source of software comparable to distro repositories. This is probably partially due to antitrust rulings, and the fact Windows caught on and had its first major flowering before Internet access was especially cheap or reliable (consolidating usage patterns around a non-Internet shrinkwrap software model). This means it's hard to get all the software you need from trusted sources unless you act like a distro maintainer and decide for yourself who in specific you trust. (You can do that in Linux, too, but you don't have to.)
Finally, Windows users complain about UAC. Linux users don't complain about sudo. Applications under Linux know they won't be run as root and behave accordingly.
The same (sorry to bite on stereotypes, but I've seen a few) clueless government contractors that did a poor job with windows will do as bad with Linux.
Then next year they will switch to openbsd (because all they trust is default settings) and repeat.
That said, yes having access to source is all fine to avoid vulnerabilities that a closed source product doesn't want to fix... but i doubt this is relevant when you add incompetence.