9 ms·
This development is great news for automotive, since modern coreutils can't be used there because of the anti-tivoisation clause conflicting with government reg
by andrewshadura 6y ago
This development is great news for automotive, since modern coreutils can't be used there because of the anti-tivoisation clause conflicting with government regulations, which forces vendors to use old unsupported versions.
- q3k 6y agoWhat is the conflict between GPL3's anti-tivoisation clause and government regulations?
- andrewshadura 6y agoOftentimes they require vendors to only allow certified software to be installed for safety or compliance reasons.
- bestouff 6y ago... and how is GPLv3 incompatible with certification ? I don't get it.
- andrewshadura 6y agoBecause it doesn't allow users to install software modified by them, which is a requirement in GPLv3.
- littlestymaar 6y agoAnd then the user loses the certification, as you said in another reply[1] the “user” you're talking about are other companies, so I don't see why they would decide to break the certification they got from their supplier just for fun. Edit since the parent was in fact speaking about the end-user, which I misunderstood: I don't see the problem either. The manufacturer has no obligation to prevent the end user from updating his car's software. There is no locks that prevents the car owner to just disable his airbag[2], or remove the safety belt. It's illegal to do so in most countries, and if the user do do and injure himself or somebody else because of that modification, they are on their own. I don't think it should be any different for software actually. [1]: https://news.ycombinator.com/item?id=26397176 https://news.ycombinator.com/item?id=26397176 [2] Edit: in fact, this is a bad example, because you need to be able to disable the airbag to put an infant car seat next to the driver.
- detaro 6y agoNo, the user that matters for GPL is the car owner. The point in the linked comment is that given how the market works, there is little incentive to work towards changing regulation (or even just interpretation of or belief about the regulation, I have clue if there are actually countries where this is impossible, but know for sure it's a widespread belief in the industry), because the company applying for certification is not the one getting annoyed by having to avoid GPLv3.
- andrewshadura 6y agoI obviously meant end users in this case. The chain of software delivery often looks like this: Small subcontractor delivers parts of system→ big company provides ready to use solution → hardware vendor uses the solution and gets their devices certified → end user uses the final product In this case, the hardware vendor is mostly interested in having their devices work as intended. Everyone up the delivery chain has to meet their requirements in some way to basically get paid. That's not a position where it's easy to make demands regarding certifications, since the hardware vendor may just go to someone else.
- froh 6y agoif your car kills your kid, eg the airbag misfired, or the lane assist went into oncoming traffic, then the car vendor will look for any opportunity to evade and refute responsibility. including claims of self tampering with the car. now in the burnt wreck, forensics need to show beyond doubt that it was, indeed, the car vendors shipment that killed the kid. how do you show as DA, that indeed the software was untampered with? drm. ps: airbags not working is less of a software problem than airbags misfiring.
- africanboy 6y agoNot a lawyer, but I don't think that's true. GPLv3 says that manufacturers have to release all the information needed to run modified software on the device, it doesn't mean that there is one (and one only) certified version that can legally run on the device for safety reasons. GPLv3 in this case would force manufacturers to release the information so that the owner of the car could run modified software, but legally if you do it, you, the user, not the manufacturer, are violating the law. It's the same thing that happens with electronic blueprints, you can modify the HW, it will void the warranty if you do it. -------------------------------------------- Protecting Your Right to Tinker Tivoization is a dangerous attempt to curtail users' freedom: the right to modify your software will become meaningless if none of your computers let you do it. GPLv3 stops tivoization by requiring the distributor to provide you with whatever information or data is necessary to install modified software on the device. This may be as simple as a set of instructions, or it may include special data such as cryptographic keys or information about how to bypass an integrity check in the hardware. It will depend on how the hardware was designed—but no matter what information you need, you must be able to get it. This requirement is limited in scope. Distributors are still allowed to use cryptographic keys for any purpose, and they'll only be required to disclose a key if you need it to modify GPLed software on the device they gave you. The GNU Project itself uses GnuPG to prove the integrity of all the software on its FTP site, and measures like that are beneficial to users. GPLv3 does not stop people from using cryptography; we wouldn't want it to. It only stops people from taking away the rights that the license provides you—whether through patent law, technology, or any other means. https://www.gnu.org/licenses/quick-guide-gplv3.html https://www.gnu.org/licenses/quick-guide-gplv3.html
- detaro 6y agoThe key point is if certification is possible for a device that allows arbitrary software to be run or not. If it is, we have your scenario. If it isn't, it's not possible. I don't know if the former case is true for all countries, I certainly know that the market overall believes it's not, or not worth the hassle of arguing it with other companies and regulators.
- africanboy 6y ago
- matkoniecz 6y agoWhy certifying specific version of software would conflict with GPLv3?
- henearkr 6y agoWhat kind of obstacles to the certification process do GPL3 softs typically encounter?
- andrewshadura 6y agoYou as a user can't get your modified software certified, hence you cannot install it, your GPLv3 rights are violated.
- henearkr 6y agoI think that's a problem of interpretation more than a hard obstacle. In many projects there is the requirement of a fixed release for 3rd party dependencies, versions for which all tests have been checked to pass (this is what is done in NodeJS with packages.json). There is even a requirement of reproducible build sometimes (like with the ongoing project to reach full reproducibility in Debian builds). Wouldn't these fit the same thinking pattern as the requirements of certification of software for the industry? I'd love to hear RMS on this subject, maybe he would, too, say that the solution exists inside of GPL3 rather than outside of it.
- andrewshadura 6y agoI'm sure there are ways to solve it, but they probably require both lawyering and developing technical solutions, which unfortunately the industry isn't much interested in doing, partly because there isn't enough pressure directed at them to change the course of things. Such pressure, in my understanding has to come from the regulators, but for that to happen they need to be convinced this is the right thing to do, and that isn't an easy task.
- gspr 6y agoI'm confused. Surely you can install the modified software? It's just that now the local jurisdiction may not allow you to use your car on public roads. That's a bummer, but a political problem that exists between the user and his government, not a software problem between the user and the car manufacturer?
- cue_the_strings 6y agoYou should finish that thought: and the manufacturers won't invest their money to certify something that's open source and can be used by everyone, including their competitors. If there was a will to do something about it, GPL3 wouldn't be in the way.
- andrewshadura 6y agoNo, manufacturers want to use free software, but they are forced to avoid GPLv3 for this reason alone. Unfortunately, challenging the status quo is difficult when your customers are not the final users, but other companies: if you don't deliver them a free software firmware without GPLv3 components, someone else will, or someone else will deliver something that's completely proprietary.
- bottled_poe 6y agoI think you are both wrong. The purpose of a certification is to mitigate risk. If the licensor of the software has no money, there is no one to sue, and the risk is not mitigated. I’m not advocating this mentality.
- africanboy 6y ago> No, manufacturers want to use free software, but they are forced to avoid GPLv3 for this reason alone. good. It means that GPLv3 works as intended. EDIT: as intended by the software authors, that chose freely GPLv3 as license, they were not forced to. I'm quite sure they knew what they were doing. If car manufacturers want to use GPLv3 software, they simply need to respect the license the author released their software under or rewrite the software.
- andrewshadura 6y agoIf by that you mean preventing free software from being more widely used, I agree it does. However, I disagree with that aim.
- 6y ago
- Blikkentrekker 6y agoSome governments require that one cannot install one's own software on automotives for safety reasons? That is quite interesting, but since one can modify one's car to begin with to make it unsafe, it is also rather futile. Rather, a sensible system would be that after such modifications, a car would have to pass inspection again to be deemed road-worthy. — one may change the software, but one must pay to have it certified again ere it be allowed on public roads, and if that not be an option, one can always simply drive it on private property only.
- andrewshadura 6y agoI agree with your view, but as I mentioned in another thread, bringing the change is very difficult, especially when you're not in a position with sufficient power.
- littlestymaar 6y ago> That is quite interesting, but since one can modify one's car to begin with to make it unsafe, it is also rather futile. In France, if you want to modify your car (in a significant way, not specified by the car manufacturer) you need to send your car to a specific administration were engineer will inspect your vehicle before you can get it a plate number. This is called [Passage aux Mines](«https://fr.wikipedia.org/wiki/Passage_aux_Mines» https://fr.wikipedia.org/wiki/Passage_aux_Mines»). You typically have to do it when you decide to repurpose a cargo van as a camping van. That would shock me if you had to do the same after updating the embedded software of your car.
- africanboy 6y agoSame in Italy, but that is government enforcing their rules, you can modify the software on your car if you want to, it' s simply illegal. You can disable airbags, ABS and every other electronic circuit in the car and it's all explained in the car manual. There might be a good reason to do it (for example the airbag is malfunctioning) It has nothing to do with the terms of GPLv3
- 6y ago
- abstractbeliefs 6y agoI understand your point of view, but it's important to remember the end outcome: Users will be forced to use outdated, buggy software, or vendors will write minimal closed implementations covering only what they need, without the benefit of the accumulated good work in foss (bugs, lack of features, etc)
- kungito 6y agoThese are edge cases. It's hard to tell how many people give in to the rules of the license while before they wouldn't
- enriquto 6y agoThis is a sad state of affairs. The world does not become a better place by rewriting working copylefted code into permissive licenses. Especially when the main goal of the rewrite is to ease corporate "theft" of these codes. We are walking several steps backwards with these rewrites (as much as I love the concept of rewriting common tools in a safer language). EDIT: I'm actually outraged by this. I want to love the rust rewrite of coreutils, but I don't understand why they had to taint this beautiful work with stupid license politics.
- flomo 6y agoCoreutils is mostly UNIX/POSIX standard utilities which have been implemented under many closed and open source licenses for decades now. This is not where you build the GNU/Moat.
- scaladev 6y agoBut GNU coreutils are ahead of all proprietary alternatives in both speed and features, are they not? I've personally not had the opportunity to work on AIX, or Solaris, or whatever (there are no machines like that where I live), but that's what I always read: "we got a new AIX/HP-UX/Solaris/whatever server and the first thing I did was to build GNU coreutils and replace the stock crap with it".
- stonemetal12 6y ago>...first thing I did... How do you know if the platform tools are faster\slower more featureful or less if the first thing you did is replace them? GNU coreutils won on portability of knowledge, no need to learn how the platform's tools work when I can just roll with GNU. Which is great when you are dealing with multiple different varieties of Unix that are all slightly different. In general the base os tools where like all software that competes in the same space, it did somethings better and somethings worse.
- Mediterraneo10 6y ago
- GuB-42 6y agoIs it a hard requirement or is it about vendors being overzealous because it also fit their interest? I know that the law requires some radio equipment to make it hard for users to modify so that they can't mess with some parts of the spectrum. But for cars, the responsibility is typically of the user, that is, if you modify your car in a way that is not what the manufacturer certified, you can but you have to do by the rules or face the consequences, the manufacturer is not responsible. But by locking down software hard, it is a way for manufacturers to make sure that they can't be held responsible and the side effect of locking down features is a nice bonus.
- ognarb 6y agoI find it a bit strange that the rewrite is licensed under MIT. Are they doing a clean room reimplement or are they rewriting the core utils by looking at the source code?
- arp242 6y agoIn my experience looking at the source code of programs written in a different language is rarely helpful. It's only useful to glean some general ideas or algorithms. But rewriting with one eye on some C code? Rarely helpful and usually counterproductive.
- justinclift 6y ago> It's only useful to glean some general ideas or algorithms. Sure, but they'll also have an easier time of ensuring they're "pretty close" to fully reproducing the original. At least, in comparison to having to reverse something black box. :)
- nindalf 6y agoThey're trying to be compliant to the interface of the original, not the implementation. Now whether the interface itself can be copyrighted ... the SCOTUS will weigh in on that soon (https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_Inc.#Supreme_Court https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_...)
- nojito 6y agoThat case has no bearing on this because they aren't deciding if "interfaces can be copyrighted"
- throwaway17_17 6y agoDo you view APIs as something other than an interface? A ruling from the Supreme Court may not reach the ultimate issue, but if it does, what assumptions would you make concerning the difference between an API and a program’s interface with the user?
- deknos 6y agowell, then i hope the new rust tools will do this too.
- jgilias 6y agoI have to deal with government regulated certification in a different industry. In our case there's a hard requirement to make it impossible for the end-user, which is some business, to run modified software on the devices. Reason being, the devices carry out financial transactions and the possibility of running modified software on them would potentially enable fraud. Basically, the whole point of certification in this case is to verify that the software doesn't have provisions for doing anything fraudulent and then making sure it stays that way. So GPLv3 anti-tivoization requirements and the certification requirements are mutually exclusive. I imagine it's similar in the automotive industry for safety reasons.
- mschuster91 6y ago> In our case there's a hard requirement to make it impossible for the end-user, which is some business, to run modified software on the devices. I guess you're working on credit card terminals? Anyway: why not have a secure hardware element / TPM that has a GPIO with a pull-up resistor that can be queried by the device? Then, have the bootloader check as part of the boot if the TPM attests with a digital signature that the GPIO is still high, and the application also regularly checking the TPM? Or an e-fuse similar to Samsung's Knox Guard? That way, a user can remove the pullup resistor (and thus, as it's a hardware modification, has to break the seal of the device) to "unlock" custom firmware loading to fulfill the GPL requirement, but at the same time your application can be reasonably certain at run-time the device hasn't been tampered with.
- jgilias 6y agoIn our case tampering with the sealed parts of the hardware by the user would be illegal. I'm not sure if providing an illegal method to load the firmware fulfills the GPLv3 requirements. EDIT: So, I don't think this is actually a technical question. It's a legal question that boils down to the fact that a premise and its inverse can not both be true at the same time.
- froh 6y agothe hard part when enabling self-tinkering is the forensics and the burden of proof for accidents, especially lethal accidents. how do you ensure beyond doubt that the vehicle was not "tampered with" by an "unauthorized unqualified third party"? would I want to own a car where the oem can turn around burden of proof and can easily claim I have modified the vehicle software, and thus broke vehicle behaviour? oem: you've patched coreutils, that's what killed your wife, your fault! me: no. that's technically impossible. the drm disables third party modifications. now if you provide means to do it anyhow, you'd need to make forensics crystal clear. so you as a customer want the physical modification to be dead obvious even on a burnt vehicle. especially on a burnt vehicle. so you as a customer can show that you did in fact not unlock software modification. and state regulations for that reason require drm from car makers, to make it impossible to evade responsibility with flakey claims of third party modifications.
- m45t3r 6y agoWouldn't busybox (GPLv2) or toybox (BSD) be a better choice than an very incomplete Rust rewrite? To start, both of them were write with embedded applications in mind, busybox is feature complete since distros like Alpine and OpenWRT use it (not sure about Toybox, but I know Android ships it). BTW, both of them cover way more tooling than coreutils too. Busybox for example have a primitive init system and a vi/vim clone. You can also of course disable them during build time.
- not2b 6y agoOne motivation for using Rust is to eliminate whole classes of bugs. Certainly busybox is great for embedded applications; one executable serves so many functions. But the more you add to it, the more attack surface you have.
- m45t3r 6y agoI am sure that a project that is 21 years old has much less bugs than a new project that had its first release one year ago, independently of the language.
- dexterlemmer 6y agoHuh? Plenty of CVEs found in C/C++ codebases were introduced decades before they were discovered. In fact, it seems to me that the older a C/C++ codebase is (especially C++), the more bugs is has, simply because improved coding practices and "modern C++" features have a far greater impact than amount of user feedback and experience. But best practices and modern C++ features are just a poor man's (semi-effective) borrow checker. ;-) More seriously. I agree that you can't call rust-coreutils mature yet. But over time maintenance on it will probably be considerably easier and if it ever gets popular enough to be thoroughly battle-tested, it almost certainly will be more reliable and secure. In addition, odds are that even if still immature, it already has fewer serious bugs. Especially memory safety, but also in things like string-handling since C++ -- and especially C -- string handling is notoriously difficult to get right. Then again, maybe not, since coreutils and presumably also rust-coreutils take the stupid approach that strings are just streams of bytes and there's relatively little the Rust std and compiler can do to fix that mess. Oh, wait! Actually it can help a bit by allowing you to be "flexible" in your interface but also parse and validate at the interface, then use better abstractions internally. Case in point: OpenSSH vs rustls: OpenSSH is a lot older than rustls, has been extensively battle-tested by a very expert community, has been audited, fuzzed, etc to a significant degree, and we're still now starting to see security experts advising using rustls in stead of openssh, or projects deciding to switch to rustls because rustls is likely (and according to a growing body of real-world experience and evidence) less buggy and more secure than openssh. (And as a bonus it's also faster.) Not all of openssh's issues are due to the language, and neither is rustls's choice of language the only reason for its reliability. But in both cases the implementation language does play a crucial role in their security and reliability.
- deleted 6y ago[deleted]