BMW are complying with the GPL
shkspr.mobi
shkspr.mobi
It is after all an Internet-connected vehicle.
Despite the article author's recognition given for BMW's OSS compliance, I am dismayed to see yet another example of likely inconsideration given toward implementation of security in the engineering of an Internet-connected vehicle.
This sort of negligence is eventually going to result in some rather ugly outcome.
I mean, obviously some people at Volvo thought that actual emissions compliance was far too costly to bother with --and that didn't even result in a vehicle accident or personal injury. Certainly their bottom line has had a major impact as a result. The potential for PR disaster with Internet-connected vehicles is certainly much more concerning.
The inevitability of some such future tragedy and resulting media-fueled PR disaster for one or more vehicle manufactures is a certainty. It's only a matter of when and which vehicle manufacturer(s) will be liable. When that happens, I’m certain that such sizable companies can figure out how to streamline the approval process with whatever regulatory bodies might be involved, or they’ll just learn to live with the pain… for being for less than the much greater pain of a PR disaster.
Look at the graph. http://finance.yahoo.com/echarts?s=VOW.DE+Interactive#{"allo...
It's the infotainment system according to one of the original blog posts. And in fairness the previous post was all about the updates they were providing - albeit unencrypted.
All of this is just crying wolf so far.
But sure - best practices should be followed.
What do you mean by this? The car itself is a single unit so you can assume the electronics inside communicate at some level (CAN networks usually), but the electronics are separated. You have a control unit for the engine, another one for the ABS, another for the gearbox and many others for various body control functions. Some of them communicate with each other over the CAN, but only transmit/receive messages of particular interest. For example, the ABS unit in some cases tells the engine control unit the vehicle speed. The engine control unit transmits the engine RPM to the body control unit for obvious reasons. The same for the anti-theft mechanism.
To the subject: Having outdated drivers in production level software is common practice. During final validation of the SW, before start of production, if some drivers are found outdated (even declared invalid by the driver/package owner), people do not jump to upgrade immediately. It undergoes a process of analysis: is there any critical bug which the new version fixes? Does it impact the current project configuration? If not, why upgrade? You run the risk of introducing a regression => requires extra validations which can take weeks or months. Nobody will approve that just to fix some bug without functional impact in that particular system. So when you claim that a certain package has to be updated to the latest version, you have to come up with arguments. "Newest is always better" does not count. There are countless examples when newer versions of some piece of SW fixed some bug but broke something that was working. SW updates after the majority of the validation process is finished happens only on a NEED TO HAVE basis.
Michael Hastings, anyone?
[0] ftp://ftp.stlinux.com/pub/stlinux/2.4/
[1] http://www.nxp.com/products/microcontrollers-and-processors/...
Indeed, quite true.
Though none of this excuses any negligence, no matter if it is the vendor of the manufacturer.
We're doing this wrong.
The root of the problem is: you buy a part, and to use the part you need some software to talk to it. The vendor, along with the part, supplies you with some sample code, which uses some ancient kernel and ancient GPLv2 utilities. If you use their code, then you perpetuate the problem. If you choose not to, then they won't help you when you have issues.
Why do vendors use such ancient software? Vendors care deeply about their IP, and to some extent tivoization does happen with individual products, but more usually through obfuscation. Not a whole lot of open firmware for wireless chipsets, is there?
Customer demand can change things, but vendors are afraid of their customers stealing their technology, and taking it to a cheaper competitor, or building it themselves. This stuff happens all the time. So they give you some code that talks some foreign language to their part or give it a seemingly black box blob of code to run and suddenly it's a black box to you too.
Patents (for hardware), and China's lack of concern for IP theft are the root of all of this.
Vendors might at some time chose to say "freeze" and now we will just deliver this same binary blob, or at best generate new binary blobs from an ancient source stack we have under version control.
Making changes means, at best, going through an expensive testing procedure. At worst, there is no such procedure and all change is an anethema.
So they only make changes when they have to, and as the cost of staying obsolete increases, so does the cost of becoming up to date.
Many times I've spent late nights babysitting an employee from $VENDOR debugging/fixing/rewriting their driver to play nice with our stack.
It wouldn't surprise me if the software had a similarly long development and lock-in cycle.
I hear you, but isn't this one of the reasons for wanting compliance around the (L)GPL? It allows us, the owners of the vehicle and users of the software to make that inspection, and hopefully, patch the vulnerabilities in the software, right? (I believe one of the provisions of the LGPL is that it must be possible to replace the LGPL'd software with a different version — this is why most software dynamically links to LGPL libraries: it allows the .so/.dll to be "simply" swapped out for a different one.)
I've already got CoreCLR listed as a positive example of this process and I really hope that BMW is rewarded for compliance (with feedback and patches) - having more examples will only strengthen my point that more can be gained by working with open source, instead of merely consuming permissive open source.
Either way, it's great to see compliance from such a large corporate.
That is an interesting point in terms of roadworthy legislation, though.
Either way, you don't need a license or even much in the way of special tools to replace the brake pads, rotors, calipers, or hoses on any vehicles on the road today. The parts are casually sold at tens of thousands of auto stores across the country in enormous volumes every day, many of them to ordinary men and women working on their cars in their garages. Not all of them get it right, but there is no outcry against this maintenance - why should there be a problem with software?
To further assuage your fears, braking systems and other safety-critical components have layers of software and physical fail-safes. If the wheel sensors report unusual data, all-wheel-drive may be disabled. If the anti-lock code doesn't work, you still have regular brakes. If the vacuum assist doesn't work, you still have manual brakes. Similar layers are present in the steering and engine control. If a mechanic applies caliper grease to the brake pads, all of this is for naught - but there is little the software can do to completely disable the brakes.
Some cars sold today require connecting of specialised diagnostics tool which will allow to change brake pads. Without this tool your calipers will not open. What this tool does? It just sends some commands through vehicle CAN bus, but those commands are proprietary, so you need to pay them about $10k-$100k a year to have access to commands for their cars and licence to use them in your tool.
I guarantee you no benefit will come to BMW for this. The reason is that this is a mostly useless code dump for the purpose of fulfilling the license. It's just a bunch of old code from open source projects you can download off the web. If they made changes to any of those, they're probably minimal, and my experience with such code drops is that they're also unlikely to actually build.
If you release a product as free software, develop it in the open and encourage contributions, it can be a benefit for you.
If you use a GPL'd library in your big proprietary solution, some pesky random internet commenter demands the GPL'd sources and you send him a tarball of an old version of newlib and a linux 2.4 kernel tree with some seriously out of date ARM patches, you won't get anything back, and you probably don't expect to.
As the owner of a BMW, he's entitled to ask BMW for a copy of the LGPL source used. Job well done.
For example, perhaps they have no build scripts, and do it by hand every time.
If BMW developers do it this way, then that's fine by the wording of the GPL. It wouldn't be reasonable to require them to provide anything further than what they already do.
Do BMW have any obligation to provide it in any kind of
buildable state?
Yes. GPLv2, section 3: For an executable work, complete source
code means all the source code for all
modules it contains, plus any associated interface
definition files, plus the scripts used to control
compilation and installation of the executable.This is not true in any way - people who use and sell software, such as BMW, spend a lot of time, money, and lawyers on licensing issues.
Corporations care about anything that affects their bottom line, and a distinguished hacker who raises a small ruckus could ultimately build into disaster. It's simply responsible to have your front line know who to refer people to when they ask if you're in compliance with the law.
Most of the companies ship older pieces of software for one important reason: They need to avoid GPL/LGPL/AGPL version 3. Version 3 of GNU GPL gives users more freedom which companies hate.
For GPLv2 the companies had to just give away the source code. But they need not give away a way to change the software in the hardware. Which was then popularized as Tivoization. Version 3 of GNU GPL family of licenses fixed that. But companies didn't.
So you can see a pattern in any hardware (routers, Cars, etc.) and even in OS like Mac, *BSD etc. And the pattern is they always avoid GPL v3. So they always have old gcc, coreutils, bash, and everything else. They say its GPL, but there is a vendor lock-in, as always.
Hope, someday, we shall have GNU Hurd ready. Anyway, GNU guix is getting better.
[0] http://www.techrepublic.com/article/linux-creator-linus-torv...
P.S. Man, how I love downvotes without any arguments whatsoever.
Free software is chiefly concerned with user freedom, to ethically treat users of your software. The GPL is the standard example of a free software license, and its purpose is to in perpetuity make sure that all users of your original code will always be able to use it in freedom.
You may notice I didn't reference a "development model". In my opinion, development models are secondary to ethical issues such as user freedom. Yes, it turns out that the "bazaar" model of software development works pretty well, but that doesn't mean that you couldn't have a "cathedral" free software project.
The problem with the "open source" movement is that there is no question about morals and ethics. It's just "here are 10 criteria which will give you good code, but if you find a better way to get good code, more power to you". It's plainly obvious when it comes to issues like vendor lock-in why "open source" doesn't have enough of a moral backing to explain why vendor lock-in is unacceptable. If the code is good quality, why are you complaining about vendor lock-in?
I wish we had more people like Stallman who will bring attention to the important issue here, the issue of user freedom. Proprietary software hasn't been vanquished yet, and it's not going without a fight.
> Between the launching of Linux and today, we've waded through decades of free and open source holy wars, but Torvalds' first instinct was right: Software doesn't want to be free, necessarily. It just wants to be open enough that developers can get to work with a minimum of fuss.
sigh No, some of us do care about user freedom and are seriously worried about the recent attacks on user freedom done by companies like Amazon.
https://sfconservancy.org/linux-compliance/ https://sfconservancy.org/supporter/
Many times, it's just that the product development may have started a long time ago or that they're using some previous product or prototype to build on - which uses even older software versions. Development takes time..
Or they could be using some SDK or vendor supplied base for parts of your products. Then they won't have control over the software versions anyhow, in a way.
It's very complex and somewhat annoying to keep up with updating all software and libraries in proprietary products.
That in itself should probably say something about the security of a lot of shipped products I guess..
BMW is one of the core members of the GENIVI Aliance (http://www.genivi.org/) which tries to bring Open Source (not Free Software) to the industry, to make code reuse easier between the companies.
GENIVI has a demo platform (http://wiki.projects.genivi.org/index.php/GENIVI_Demo_Platfo...) which they build with help of Yocto (https://www.yoctoproject.org/). Most of the members of GENIVI use Yocto for internal development too.
GENIVI provides a layer of recipies for Yocto, which is called meta-ivi. In this layer there is a sample configuration file which many use as a starting point for their development. Most of the other layers which provide this local.conf sample file don't have this special line, but this In-Vehicle-Infotainment layer (you can even think of it like a linux distribution) which is used by the car manufacturers has it:
INCOMPATIBLE_LICENSE ?= "GPLv3"
http://git.yoctoproject.org/cgit/cgit.cgi/meta-ivi/tree/meta...
I don't see Apache 2 in that list of 1 incompatible license. Apache 2 has an almost identical patent provision (GPLv3 just made the requirement of "apply to all users" slightly stronger).
I can use Apache 2 code with my secret, proprietary patent-sauce -- no problem. I never have to release any of it, and I don't have to grant anyone any licenses.
It is only when I contribute to the Apache 2 code that I grant a patent license.
(IANAL)
Having worked with IP lawyers on multiple consumer electronic products across multiple companies, I believe you are over-simplifying the situation. Every IP lawyer I've talked to didn't care about tivoization -- if you want to go run your own code on our hardware, great, good luck. The main issue with GPLv3 was always the patent clause: http://www.gnu.org/licenses/gpl-3.0.en.html#section11
I've never met an IP lawyer working for a company with many (hundreds to thousands) of patents allow use of the GPLv3, out of fear that it could undermine their ability to enforce patent rights defensively. Hardware companies produce a ton of patents. The manufacturers of routers, cars, and even Apple care deeply about their patents. They're not willing to toy with some untested clause in a license of some free software, when there is a perfectly usable version of that software without such a clause.
IANAL so I don't know for sure if this is the case, but speaking from experience, this is what lawyers have always told me.
Second, companies generally don't make it easy for users to run custom software on their products for a few reasons. You generally put software on products one of two ways: physically, or over-the-air (wifi/ethernet/some other way). With both methods, "signed" payloads are usually used for one of two reasons: to make sure it is error free. It's difficult to have the device already know the checksum, but calculating a signature against a pre-installed signing certificate is easy and works pretty well. You also get the added benefit of decreasing the surface area for remote attackers, since only the trusted company can sign the payloads. Typically, also, physical writing is "disabled" during assembly (e.g. not populating components, sealing off access, etc.) which helps keep costs down and keep the design looking slick.
The second reason "signed" payloads are used is for "Tivoization". I've never heard anyone say "we don't want customers putting their own software on a device they purchased." No doubt it happens, but it is rare for sure.
Should companies spend more time and resources to make it easy for their customers to modify their devices, in a sane and secure manner? Possibly. But in today's cutthroat consumer-electronics world, you'd be hard pressed to find a company willing to spend that extra engineering effort on something so frivolous.
More freedom doesn't simply means that users can change the code. But, they can also use the code, modify, and redistribute without fear about patents, if they wish.
> The manufacturers of routers, cars, and even Apple care deeply about their patents.
So why do you think Apple chose Apache license for their new swift language? Apache license explicitly gives patent protection to its users.
Why would Apple care what you do with their language? You can't bring any harm to their business with it.
Why do you think Microsoft is giving patent promises for C#, .Net and others[0] (But not licensing their software to Apache/GPL)? Yes. Because they can bring harm to their business.
Why Do you think Apple ditched Objective C? For some reason they had to license it under GPL v2. But, as GNU re-licensed everything to GPLv3, they will have to stick with old versions of GCC, binutils, etc. So, they had legal reasons too for yet another language.
Hm... Wait. We shall see the struggle of apple someday, because they can't sue Samsung again, just because they are using patents of Apple which are derived from swift.
And last, why do you think language is not patented? Even some one-liners are patented in the software world![1]
[0] https://msdn.microsoft.com/en-us/openspecifications/dn750984 [1] https://graphics.stanford.edu/~seander/bithacks.html#Integer...
I think you continue to over simplify. This actually looks to me like Microsoft is doing their due-diligence in ensuring that the effects of their licensing are well-bounded with respect to patents. GPLv3 et al tend to hand-wave the actual patents covered, and leave it up to someone else to decide which patents actually apply, and how.
Also, it does appear that Microsoft is using the MIT, BSD and Apache licenses[0]
> Why Do you think Apple ditched Objective C?
They didn't. The way I see it is that Swift is to Objective C as C#/.Net is to COM -- which is to say the underlying tech isn't going away anytime soon. They've just made a nice, shiny high-level abstraction. Unless there is some announcement I've missed where Apple said they are throwing away Obj-C and Obj-C tooling and rewriting everything in Swift.
> So, they had legal reasons too for yet another language.
This is a stretch. There was and is nothing preventing Apple from continuing to develop and use and sell product made with Objective C. They don't even care about GCC -- they have Clang.
Also, there are plenty of suitable alternatives to GNU Coreutils, so please don't think that this means anything to Apple. The GPLv2 versions work well for what Apple needs, so they continue to use them. It is convenient for Apple. They could stop using GNU software entirely if they wanted and nothing would change.
> We shall see the struggle of apple someday, because they can't sue Samsung again, just because they are using patents of Apple which are derived from swift.
I have no idea what you mean by this. Companies sue other companies that infringe on their patents because NOT doing so is a tacit license. Why even file a patent then?
To be fair, I think Apple first sued Samsung because their phones looked like iPhones (or so Apple claimed) and were concerned about how that would impact public perception. I don't think has anything to do with software, which is the topic at hand.
> And last, why do you think language is not patented?
Because the language itself, at its core, is agnostic of anything patent-worthy. How the compiler works? Platform support? Potentially patentable. A programming language allows a user to textually express what they want a generic computer to do, and at it's core is not patentable (as far as I understand the US patent system). It gets fuzzy around the edges, but you can't patent a language. It is an abstract idea.
In any case, I get the impression you think these companies are evil. They're not. They're businesses looking out for the interests of their shareholders and their customers. There is no dark agenda against free software. It is just unfortunately complicated for big businesses.
"Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version."
"each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work"
They did add one major change (beside rewording and reordering), and that was to address the Microsoft-Novell patent agreement. A distributor can not chose to exclusively grant the patent rights to just a selected group, but must do so on a all-or-nothing deal. Once you provide a patent grant and complying with the license, the patent grant is given to everyone who might later receive a copy.
So for all those companies that are happy to distribute apache licensed software but not gplv3 software, and is objecting on the subject of patent clause, one must ask why they have a problem that the patent grant is extended to everyone.
The point you make covers contributors, which is great! It means if I contribute to an open-source project that uses the Apache license, there are no catches, not even if I contributed something I or my company has patented. So you, as an end user, or consumer of this software, are safe w.r.t. patents. Hurray!
(Again, IANAL!)
Software patents are an example of threatening user freedom, since users can be sued for using software that has patented "ideas" in it.
> I've never met an IP lawyer working for a company with many (hundreds to thousands) of patents allow use of the GPLv3, out of fear that it could undermine their ability to enforce patent rights defensively.
The GPLv3 uses an almost-exact copy of the patent clause in the Apache 2 license (which is used by companies). The only difference is that it requires that the patent rights be transferred in a GPL-like way.
> Second, companies generally don't make it easy for users to run custom software on their products for a few reasons. You generally put software on products one of two ways: physically, or over-the-air (wifi/ethernet/some other way). With both methods, "signed" payloads are usually used for one of two reasons: to make sure it is error free.
All that is necessary is to provide some advanced option to add your own certificate. That's literally it. Once you have the source, you can figure out how to actually push the bloody thing (it'd be nice if a company provided whatever script they use, but they're probably not required to do it). This isn't a very complicated procedure, UEFI did it and that standard is basically owned by Microsoft.
Dude. I wish.
I have seen things you wouldn't believe. Rube-Goldberg publishing mechanisms that couldn't be provided even if you tried. Not to mention getting QA resources to test it, someone to document it for the public, whatever engineering resources are necessary to allow it to be modified (what if it is in ROM?). You're talking millions of dollars of employee time, easy. And we were supposed to have shipped last month.
I want to live in this world of yours too, but it is just not possible today.
Companies are temporary entities, even though they don't like to think of themselves as such. Companies get bought or go bankrupt.
So when I buy a device which only loads signed code, there is no way to know who is going to be able to sign code for my device in the future. I'm also out of luck if I ever want to run my own or someone else's code on my device.
The attack surface is completely dependent on the actual code being signed, so the signature doesn't provide any security benefit to me. And in case there were 3rd party code which is more secure than the vendor code I cannot run it.
From the perspective of the company, the signature provides vendor lock-in and planned obsolescence in return for a relatively small effort of maintaining code signing infrastructure. So there's only an advantage but no disadvantage. The only possible disadvantage is that I am less likely to buy the product, but regular consumers won't know the difference so the company can ignore me.
Omitting hardware components which would help with repair efforts or debugging problems is just as unfriendly. But I understand there can be a huge cost benefits during mass production.
Most businesses just can't spend time thinking about this kind of problem. Some have tried, but it appeals to such a niche that it is hardly worth it. When you're a business focused on making money, you don't think about what happens when you're gone. You don't care. I wish that vendor lock-in and planned obsolescence were the reasons to explain this behaviour. At least then it makes sense in an obvious way, if it at least a little scummy. But it just isn't that simple, unfortunately.
Another possibility is that a "printing" metaphor is being used to communicate certain things between the various car computers. For example, if there's an engine fault, the engine's computer might "print" the fault report to the center console computer. On a modern BMW, the centre console computer shows a log of faults as well as a full service history and upcoming servicing requirements.
I know BMW stands for Bavarian Motorworks, a plural, but so does the US, and it is a singular entity today.
Are the people using BMW plural non-American? I've never heard that here in Texas.
That's the way I've had it explained to me.
Something about formal, notional and situational agreement[0].
The "they" explanation just helped bridge the gap in my mind.
[0] https://en.wikipedia.org/wiki/Comparison_of_American_and_Bri...
Consider "TeamA is a football club" and "TeamA are beating TeamB". In the first example, TeamA is considered a singular entity, and you aren't really concerned with its makeup (though "TeamA are a football club" would also be correct). In the second, TeamA is a group descriptor as it is a group of players that are winning the match, not the single legal/business entity.
AFAIK, the plural usage for business names is the most common usage in British English, though it also varies between British dialects (it always surprises me how much dialects vary in English - some areas of England still use an informal form of "you" occasionally, for example)
"BMW is a fantastic brand" "BMW are facing tough financial pressure"
edit: it looks like it was added specifically for IEEE 802.15.4 debugging
I guess this means that BMWs are basically just a Dreamcast with wheels?
The string 'open source' does not appear at all on either:
http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
or
http://www.gnu.org/licenses/gpl-3.0.en.html
Relevant as we're specifically referring here to the GNU Public Licence.