Exposing Trojan Source exploits in Emacs
For those just tuning in, one of the Trojan Source vulnerabilities takes advantage of the control codes built into Unicode for the handling of bidirectional text. While this article is written in a left-to-right language, many languages read in the opposite direction, and Unicode-displaying applications must be prepared to deal with that. Sometimes, those applications need some help to know the direction to use when rendering a particular piece of text. Unicode provides control codes to reverse the current direction for this purpose; unfortunately, clever use of those codes can cause program text to appear differently in a editor (or browser or other viewing application) than it appears to the compiler. That can be used to sneak malicious code past even an attentive reviewer.
One part of the problem is applications that show code containing overrides in a way that is correct (from a Unicode-text point of view), but which is incorrect in terms of what will actually be compiled. So an obvious solution is to change how applications display such text. It is thus not surprising that a conversation sprung up on the Emacs development list to figure out what the Emacs editor should do.
Emacs maintainer Eli Zaretskii was quick to point out that this problem was not as new as some people seem to think. A variant of it had been discussed on that list back in 2014; at that time, the concern was malicious URLs but the basic technique was the same. Zaretskii explained that, in response, he had added some defenses to Emacs:
As result of these discussions, I implemented a special function, bidi-find-overridden-directionality, which is part of Emacs since version 25.1, released 5 years ago. (Don't rush to invoke that function with the code samples mentioned above: it won't catch them.) My expectation, and the reason why I bothered to write that function, was that given the interest and the long discussion, the function will immediately be used in some URL-related code in Emacs. That didn't happen, and the function is collecting dust in Emacs ever since.
He would be, he said, less than fully enthusiastic about launching into another defensive effort without some sort of assurance that this work would actually find some users.
Others, meanwhile, were thinking about ways to make it clear that there is funny business going on in code containing directional overrides. Daniel Brooks posted an approach using the existing Emacs whitespace-mode, with some extra configuration to mark directional overrides as special types of white space. Gregory Heytings posted a patch with a similar intent that worked by adding a new display table. Stefan Kangas suggested having the Emacs byte compiler raise errors whenever the problematic control codes appear in Emacs Lisp code unless a special flag is set.
Zaretskii was not particularly impressed with any of these approaches.
Simply marking the control characters, he said, is just creating
"visual noise
" that will make reading text harder, and is
addressing the wrong problem: "The mere presence of these characters
is NOT the root cause. These characters are legitimate and helpful when
used as intended
".
He referenced TUTORIAL.he, the Emacs tutorial translated
to Hebrew, which uses overrides for Emacs commands. This
version of the file in a GitHub copy of the Emacs repository now helpfully
marks the lines containing those overrides (as another Trojan Source
defense). Zaretskii's point is that
adding warnings to this kind of usage, which is not malicious, is a
distraction that trains users to ignore the warnings wherever they appear.
So what should Emacs do? Zaretskii continued:
The challenge, therefore, is not to make these characters stand out wherever they happen, because that would flag also their legitimate uses for no good reason. The challenge is to flag only those suspicious or malicious uses of these characters. And that cannot be done by just changing the visual appearance of those characters, because their legitimate uses are by far more frequent than their malicious uses. To flag only the suspicious cases, the code which does that needs to examine the details of the text whose directionality was overridden and detect those cases where such overriding is suspicious. For example, when a character with a strong left-to-right directionality has its directionality overridden to behave like right-to-left character, that is highly suspicious, because it makes no sense to do that in 99.99% of valid use cases.
Zaretskii quickly committed a patch to the Emacs repository implementing this heuristic. Your editor decided to give it a try, starting with this example of malicious code posted by Brooks:
(defun main () (let ((is_admin nil)) ; begin admins only(when is_admin (print "You are an admin.")) ; end admins only( )
This code contains overrides that cause the when test to be commented out; the effect of the overrides can be seen in the browser by slowly highlighting over the code with the mouse. This code, displayed in a normal Emacs buffer with font-lock turned on, looks like this:
It is worth noting that the suspicious nature of the code is already reasonably clear from the syntax coloring; the when test is colored as a comment. Zaretskii's patch is meant to make this problem stand out even more: when the new highlight-confusing-reorderings command is run on it, the code now looks like this:
That should certainly be enough to cause even a casual reader to wonder what is going on with that code. As intended, this new command does not highlight the overrides used in TUTORIAL.he — except that, amusingly, it found two places where the overrides were used incorrectly.
Heytings didn't
like this solution: "When security is at stake, I very
much prefer too many false positives to missing one danger
". He
also pointed out a case that Zaretskii's code failed to catch, citing it as
proof that only highlighting the malicious uses is not feasible. (That
case did not survive its encounter with the email archives; it can be seen
in this page). Zaretskii
responded that users
who don't care about false positives can highlight all of the
relevant control characters in Emacs now; he also applied a fix to detect
the case that Heytings found. At that point, Heytings made it clear
that he thought his point had been missed and gave up on the discussion.
So now the discussion would appear to be over; Emacs has a mechanism to make suspicious use of Unicode directional overrides easy to see. It may be a while before users benefit from that work, though. It is not at all clear that this change will be backported to current Emacs releases, so it may only be found in development builds for some time. There is also nothing that uses it by default; the highlighting will only happen if the user explicitly asks for it. To make this functionality more available, developers will need to incorporate it into the major modes used with various programming languages.
This fix, assuming it is shown to work over time, is only directly relevant
to the small subset of developers who live their lives within Emacs. The
approach taken, though, could prove to be useful beyond Emacs. Just waving
a red flag at something that might be suspicious is usually not the best
solution for security problems, especially if most of the instances that
are flagged are legitimate. After a while, we all grow weary of looking
past those flags and simply stop seeing them. If it is possible to just
shine a light on uses that truly merit a closer look, though, then we might
just gain a little security from it.
Index entries for this article | |
---|---|
Security | Unicode |
Posted Nov 11, 2021 18:36 UTC (Thu)
by NYKevin (subscriber, #129325)
[Link] (7 responses)
This is incorrect reasoning. Too many false positives will result in users ignoring the warning, either by turning it off or by simply not paying attention to it. If you value security, you must care about both false positives and false negatives.
(Sure, there may be situations where you need to allow a few false positives to prevent a specific false negative, but in this case, no such specific false negative has been presented. This is just the general "let's have lots of false positives because false positives are not a security risk" fallacy.)
Posted Nov 11, 2021 19:44 UTC (Thu)
by plugwash (subscriber, #29694)
[Link] (1 responses)
Many projects will never legitimately see a right to left character at all, let alone need an override. Other projects may see loads of it.
Posted Nov 12, 2021 11:32 UTC (Fri)
by wtarreau (subscriber, #51152)
[Link]
I'm wondering if the proposed solution combined with a detection of bidir text wouldn't suffice:
This would catch the example with the misplaced "? 0 : 1". The amount of false positives should be extremely low with this.
Posted Nov 11, 2021 21:43 UTC (Thu)
by maltekraus (subscriber, #129184)
[Link]
But… if there are two different exploits for a vulnerability and you only catch one, then the expected result is that you catch no actual exploit attempts - attackers just move on to the exploit that continues to work.
Posted Nov 11, 2021 23:49 UTC (Thu)
by tialaramex (subscriber, #21167)
[Link] (3 responses)
If your client is TLS 1.3 capable, and it connects to a TLS 1.3 capable server, either that works (good) or bad guys try to downgrade it from middle position and the downgrade protection fires, terminating the connection. Since the bad guys were in middle position they could have torn down your connection anyway, so this doesn't give them any new power it just prevents attacks.
If your client is TLS 1.3 capable but the server only speaks TLS 1.2 there is a (very tiny) chance the downgrade protection experiences a false positive, terminating the connection even though it was actually fine. It's actually more likely the client's hardware is faulty (1 in 2**63 chance per connection), but if you're worried about this problem, simply upgrade to TLS 1.3 and the risk goes away.
Posted Nov 12, 2021 3:14 UTC (Fri)
by KJ7RRV (subscriber, #153595)
[Link] (2 responses)
Posted Nov 12, 2021 4:11 UTC (Fri)
by NYKevin (subscriber, #129325)
[Link] (1 responses)
I found this blog post which describes the server putting a fixed value in part of the TLS 1.2 random nonce to indicate "I actually speak TLS 1.3, but I'm using TLS 1.2 because I think that you don't support TLS 1.3." There is a low but nonzero probability of a naive TLS 1.2 server happening to generate that exact value at random. A MitM cannot change this value because it would invalidate the key exchange. Since the portion of the nonce which is used for this purpose is 8 bytes, and there are only two specific values which can result in a false positive, the probability should be equivalent to the probability of generating a random 64-bit integer, and getting either of two specific, fixed values (i.e. 1 in 2^63 ≈ 1 in 9.2e18). While it is certainly possible that someone, somewhere has gotten this failure at some point in time, it is profoundly less likely than the network or the server experiencing an outage (nobody has that many nines), and so it can probably be neglected in practice.
Posted Nov 12, 2021 18:12 UTC (Fri)
by KJ7RRV (subscriber, #153595)
[Link]
Posted Nov 11, 2021 19:43 UTC (Thu)
by IanKelling (subscriber, #89418)
[Link] (59 responses)
The github link got me interested. I went to github page and saw no warning, because the warning is implemented in nonfree javascript. https://github.blog/changelog/2021-10-31-warning-about-bi... . They didn't commit any changes to the free software parts of vs code. They didn't submit any patches to firefox or chromium to properly solve this. They changed their proprietary software to emit a useless warning and congratulated themselves in a blog post and called it a day (please share on linkedin, twitter, or facebook). Meanwhile, Eli, the volunteer maintainer, is really consider a good solution and doing it in public in free software.
Posted Nov 11, 2021 19:43 UTC (Thu)
by IanKelling (subscriber, #89418)
[Link]
Posted Nov 11, 2021 19:47 UTC (Thu)
by IanKelling (subscriber, #89418)
[Link]
Posted Nov 11, 2021 21:35 UTC (Thu)
by ttuttle (subscriber, #51118)
[Link] (56 responses)
It would be nice for them to identify the erroneous characters in more detail instead of asking you to switch encodings in your editor, though.
And I'm not sure how you'd patch browsers to "properly solve this" -- how do they know when a chunk of text should be examined to identify suspicious bidi overrides? Identifying them everywhere would presumably create heaps of false positives in text that's *not* code being reviewed.
Posted Nov 12, 2021 19:16 UTC (Fri)
by IanKelling (subscriber, #89418)
[Link] (55 responses)
They developed a security feature in nonfree code. Nonfree code is wrong, but for a general problem like this it seems especially wrong, and certainly I blame them for that. If it was free software, I would run it. There are at least 4 ways they could have developed free software to handle this problem: as free javascript, as a free browser extension, as part of free software in browsers, as part of the mostly free editor they maintain. For an organization that claims to care about FOSS, I find it notable that they did none of those.
> And I'm not sure how you'd patch browsers to "properly solve this" -- how do they know when a chunk of text should be examined to identify suspicious bidi overrides?
Isn't that exactly what the emacs discussion proposes answers for? There are lots of ways a browser could identify suspicious bidi overrides. The first thing that comes to mind is to consider changing the style of text inside a <code> tag when the browser detects suspicious bidi overrides in it.
Posted Nov 12, 2021 22:00 UTC (Fri)
by NYKevin (subscriber, #129325)
[Link] (53 responses)
And you lost me.
It's their code. What right do you have to tell them what license to use? Should we blame Microsoft every time they fix a security bug in Windows?
Posted Nov 13, 2021 21:45 UTC (Sat)
by IanKelling (subscriber, #89418)
[Link] (52 responses)
Do they have a moral right to any and all license terms? Of course not. See gnu.org/philosophy to understand, and in this case, especially https://www.gnu.org/philosophy/freedom-or-power.html
Posted Nov 13, 2021 22:06 UTC (Sat)
by Wol (subscriber, #4433)
[Link] (51 responses)
And it's called "how will programmers eat?"
EVERYONE expects to be paid for their code. Not always cash, but the reality is that much "free" code is paid for in respect and reputation enabling the author to earn more elsewhere. A lot more is paid for in a freshman's CV. And a lot is paid for in personal satisfaction!
BUT IT'S ALL PAID FOR ONE WAY OR ANOTHER.
And who are you to say that asking for that payment in cash/food is wrong?
Cheers,
Posted Nov 14, 2021 3:13 UTC (Sun)
by NYKevin (subscriber, #129325)
[Link] (1 responses)
However, as someone who has (briefly) studied Kant, I find the linked essay's reasoning amazingly unconvincing in the broader context of Deontic ethics. There is no attempt to relate it back to universal ethical principles, no explanation of where this "thou shalt license thy software as FOSS" obligation comes from. We could have a lengthy discussion of the Categorical Imperative and how it applies here, but they don't even attempt to start that conversation. Instead, the linked essay weaves back and forth between deontology and consequentialism in an incoherent and messy sequence of word games, without even pausing to acknowledge the is-ought problem. There is no point in trying to refute it, because it does not proffer an argument to refute.
Posted Nov 14, 2021 23:48 UTC (Sun)
by IanKelling (subscriber, #89418)
[Link]
Posted Nov 14, 2021 14:13 UTC (Sun)
by madscientist (subscriber, #16861)
[Link] (48 responses)
You are fundamentally misunderstanding the statement "code should be free". Remember, "free" in "free software" refers to freedom, not price ("free speech, not free beer").
You will not find anyone in the GNU project, including RMS, who claims that programmers should not be paid for writing code. Of course they should be. It would be inane to suggest they should work for free. Similarly, no one suggests that you should be forced to give me code without expecting any payment.
The claim is that the concept of "intellectual property" applied to code is wrong. If I receive some code from you, then I own it and I don't need your permission to do things with it. You don't retain extra rights to that code by virtue of "copyright" that allows you to control what I do with that code after I've legally obtained it from you. That's what "free software" is about.
Of course, there are all kinds of issues with treating code as physical goods and again, I'm not arguing these positions. I'm just making sure that they aren't misstated.
Posted Nov 14, 2021 15:52 UTC (Sun)
by Wol (subscriber, #4433)
[Link] (1 responses)
The problem with your position is that code that is Free Libre rapidly becomes free gratis.
As the other respondent said, when pragmatism and idealism collide, neither can win ...
I don't know how to square the circle, but pretending there is no conflict certainly won't succeed.
(And yes, I couldn't agree more that modern copyright has nothing to do with "encouraging the creation of new works", or even its original pre-American role of censorship, but in modern times is almost solely a tool of the rent-seeking rich :-(
Cheers,
Posted Nov 14, 2021 19:51 UTC (Sun)
by madscientist (subscriber, #16861)
[Link]
Saying that the FSF's positions fall to the "extremely simple problem" of "how will programmers eat" certainly makes it SEEM like you misunderstood them. People will need code written, and if they can't or don't want to do it themselves then they will pay other people to write that code. There's nothing wrong with that, in the FSF's view. The FSF also doesn't say that all code must be immediately copied to a public repository for everyone in the world to use. Their position is that once I have a copy of the code no one has the right to tell me what I can or can't do with it, including modifying it or selling it (or giving it) to someone else.
Does that mean that all code that is written would end up published for free download on some site, soon after it was written? Probably in many cases. Maybe not in all cases. But, either way the person who wrote the code got paid for writing it, and the person who paid for it to be written got what they paid for.
I have no idea if this could work economically. But, it's certainly not as trivial as you suggested.
Posted Nov 14, 2021 17:42 UTC (Sun)
by khim (subscriber, #9252)
[Link] (45 responses)
> If I receive some code from you, then I own it and I don't need your permission to do things with it. True, but that's not what FSF tries to push. > That's what "free software" is about. Absolutely not. Go back to the initial complaint: Microsoft released some code, it's downloadable and you can run and study it. You can even adopt it for your needs (it's bunch of regexps, really, practically speaking it's hard to say they can be copyrighted at all). But according to free software zealots it's not enough: you have to do an additional work and make it possible to easily take that code and include it in your program. What gives you right to demand that? > The claim is that the concept of "intellectual property" applied to code is wrong. Maybe, but blindly demand that everyone who releases the code should follow the concept of “free software” 100% of time is similarly wrong. Most of software out there is not free and would always be nonfree.
Not because of someone's moral stance, but because it's wrong to try make it free. Think some simple app I may create for my friend who wouldn't even know how to run the compiler. What good would it do to him if I would send him sources for an app which I did in two weekends? But for me… this would definitely create a burden for me: instead of just making sure I can, somehow, build it once and forget about it I'm now forced to create a nice package, would need to ensure it's buildable without tons of my own private scripts, it doesn't have paths specific to my system embedded and so on. You may argue that this is nice thing to spend another weekend to do that but in reality if there would be law which forces me to do that… I would just say to my friend “sorry, but they just made it unfeasible for me to help you, find someone who may do that for a fee if you have enough money”. And once you accept the fact that most software out there would always be non-free, suddenly you are now in the open source camp and have to explain why it's wrong to release and use nonfree JS module which marks text with LRO and RLO marks without repeating “all software must be free” religious mantra.
Posted Nov 14, 2021 18:16 UTC (Sun)
by Wol (subscriber, #4433)
[Link] (27 responses)
Yes I'm being pragmatic, not idealistic, but this is the sort of software which would JUST NOT EXIST (in fact, to the best of my knowledge DOESN'T exist) in a Free form. And demanding that it must be Free would simply result in it not being written, because the writers would be unable to recoup the cost.
Cheers,
Posted Nov 14, 2021 20:02 UTC (Sun)
by madscientist (subscriber, #16861)
[Link] (26 responses)
If software must be updated every year, then someone must pay for it to be updated every year, else it won't get updated, and then won't be usable. So that's more work for programmers to do... more food on the table! If no one is willing to pay for it to be updated then it won't be updated and then won't exist anymore, it's true. But that's true of all software, everywhere, even today.
At least with free software if someone else won't pay for it to be updated, and you want it, you can pay for it (or even learn to do it yourself). Without free software if the "copyright holder" won't fix or enhance the software (maybe they went out of business, or it's not economically feasible for them) then you're SOL.
I mean, this is free software 101: this is exactly the foundational story of the GNU project.
Posted Nov 14, 2021 21:48 UTC (Sun)
by Wol (subscriber, #4433)
[Link] (1 responses)
Exactly. You've just said it yourself. THERE IS LEGAL LIABILITY. By disclaiming liability, you admit that it (may) exist.
And if the software supplier is not prepared to shoulder at least some of that liability, there is no market for that software.
Cheers,
Posted Nov 15, 2021 15:59 UTC (Mon)
by madscientist (subscriber, #16861)
[Link]
It appears you have some particular type of software in mind that you feel could never be created in a world where copyright/patent didn't apply to software, due to liability issues? I don't understand how these are related: many companies today create F/OSS and sell support and, yes, liability indemnification (or, at least as much as any other software company does). I don't see what liability has to do with whether software is released as F/OSS or not.
Maybe you are still confusing "free" with "libre". Certainly any company that requires liability indemnification can't expect to obtain that free of charge. But that doesn't mean they can't take advantage of free software.
Posted Nov 15, 2021 16:57 UTC (Mon)
by rgmoore (✭ supporter ✭, #75)
[Link] (23 responses)
I think there is safety-critical software (e.g. operating software for airplanes) where the authors can't disclaim liability. That kind of software also requires regulatory approval, so even if end users have the source code they legally can't use a modified version as they please.
There's also a fair amount of in-house software that probably shouldn't be free, or at least would require more work than is worthwhile to make it free. This is the kind that includes a lot of business logic the user wants to keep secret for competitive reasons. I suppose in cases like that it might be better if it were possible to separate the part that encodes the proprietary business logic from the more generic parts so the generic parts could be shared, but you still have a bunch of stuff that really shouldn't be shared. That kind of proprietary work makes up a much larger part of the software universe than people realize, largely because it is kept secret.
Posted Nov 15, 2021 21:04 UTC (Mon)
by madscientist (subscriber, #16861)
[Link] (22 responses)
Maybe that's true today, I don't know, but I'm sure that the FSF would not agree with this. It's not up to the author to assume liability for the ways in which the software is used. The author provides the software. It's up to the user to take responsibility for using the software. If there are regulatory approvals etc. it's up to the user to ensure they're obtained, not the author.
Of course it could be that the author and the entity responsible for obtaining these approvals are one and the same. That would be convenient for the user and of course they'd have to pay for that convenience and extra work to obtain those approvals. But if we have F/OSS it doesn't HAVE to be that way. Some other entity could be responsible for creating a version of the software that meets approval, then users would need to use that version (consider OpenSSL and FIPS for example). Or, maybe multiple entities could do so, then you'd get competition. And improvements would have to be distributed as usual.
I don't see any reason F/OSS couldn't be used for this type of software, other than perhaps short-sightedness on the part of the regulatory agencies.
> There's also a fair amount of in-house software that probably shouldn't be free, or at least would require more work than is worthwhile to make it free.
That's also fine. The FSF doesn't say that everyone has to publish all the software they write. In fact, many people use customized versions of GPL'd software internally and the FSF is fine with that: indeed that's the primary goal of the GPL, to give the USERS freedom. What they are saying is that if you distribute the software then you should provide the source code as well, not just the binaries. It's only on the act of distribution that you have a responsibility.
Of course as we all know, "X as a service" has turned this on its head and required some fancy footwork around the definition of "distribution", which was always unfortunately a bit vague.
Posted Nov 15, 2021 21:56 UTC (Mon)
by kleptog (subscriber, #1183)
[Link] (11 responses)
Regulatory approval for bits including software often not only covers *what* is made, but also *how* it was made. You can't just rock up with a piece of software to get it approved. You need to demonstrate the methodology used to get there and the processes used to ensure correctness. These are not things the user can do anything about, only the author. The author does not bear liability, but they are an integral part of the process. (Though they can be liable if it turns out they're lying.)
In theory it's possible for the user to do an audit on the source after the fact independent of the author, but that's more expensive than the alternatives. On the other side, the author might do the regulatory approval to make their software more valuable and more interesting to buyers, but then of course the buyers cannot change a single line of code without voiding the approval.
Posted Nov 15, 2021 23:51 UTC (Mon)
by madscientist (subscriber, #16861)
[Link] (10 responses)
I don't see how that is relevant to whether or not the software is released as F/OSS. Either you write it yourself in-house in which case no one is suggesting the code has to be be released. Or you pay someone else to write it for you in which case you, as the user, should get a copy of the code along with the results of the build. It sounds to me like this is ALREADY a requirement, or all but, based on all the things you need to do to get approvals.
So... what's the issue again?
Posted Nov 16, 2021 0:19 UTC (Tue)
by Wol (subscriber, #4433)
[Link]
Agreed.
> It sounds to me like this is ALREADY a requirement, or all but, based on all the things you need to do to get approvals.
We wish.
Unfortunately, "sense" and legislation rarely coincide ...
Cheers,
Posted Nov 16, 2021 0:50 UTC (Tue)
by khim (subscriber, #9252)
[Link] (8 responses)
Sigh. I wonder how people may miss the point by such a huge degree. > It sounds to me like this is ALREADY a requirement, or all but, based on all the things you need to do to get approvals. Of course not! The requirement is the exact opposite — to make sure author is the only one who may change that software and it may guarantee that said software matches what auditor saw! And for good reason, too. Do you really want to be held liable for the problems with car software if it would misbehave? In a funny “world without nonfree software” you would be. Because how can anyone prove you haven't tampered with said software if you quite literally got the license to do precisely that when you bought your car? This problem is quite real and tangible. Especially in case of industrial users where liability can be measured in hundreds of millions and, sometimes, in billions. It's acute enough that even FSF and RMS admitted that it's real and added special loophole to GPLv3 just for such a case! > So... what's the issue again? The issue is simple: you don't understand how liability law works. Consider very simple example: industrial transformer. If you touch it in the wrong place — you are dead. Who is liable for that death? Easy: if said transformer is put on the busy street without any protection — then the one who did such craziness is liable, but if it's in placed in well-protected cage with lock and key (so it's not easy to reach inside and impossible to do by accident) — then idiot who bypassed protections. Situation with software is precisely and exactly similar: if it's easy to tinker with software — then you couldn't disclaim liability. It would always be on your hands. Like with OpenSsl and FIPS certification. It's not enough to just take FIPS-certified version of OpenSSL and say “hey, that version is certified, I'm not liable now”. Nope. Someone have to take it, lock it down, make it part of non-free product, ensure that it can not be easily changed and give it to you — only then you are no longer liable! Why is that so hard to understand for some people? You have license to tinker == you are liable for the misbehavior of what you've got under such license. Software, hardware… doesn't matter, principle is the same.
Posted Nov 16, 2021 1:58 UTC (Tue)
by anselm (subscriber, #2796)
[Link] (7 responses)
If the car manufacturer claims in court that the car software was manipulated, then it is up to them to prove it. (This is how courts work: You make a claim, you get to prove it to the court's satisfaction. It's not the other party's job to prove that whatever you claim is not true.)
Generally, disclaiming liability is not the unique domain of free-software purveyors. Companies that sell proprietary software will also try to limit their liability as much as they possibly can (within statutory limits). For example, I haven't looked at the Microsoft Windows EULA recently but ISTR that at least in the past it used to say that Microsoft assumed liability for defects in Windows only up to the cost of the distribution media, and that Windows was not to be used in various fields of endeavour such as nuclear-reactor control.
Posted Nov 16, 2021 2:19 UTC (Tue)
by khim (subscriber, #9252)
[Link] (1 responses)
> If the car manufacturer claims in court that the car software was manipulated, then it is up to them to prove it. Indeed. But that's very easy if you supply it's firmware as FOSS with explicit instructions that allow tinkering. The mere fact that incident happened is such a proof. Because, on one hand, you have rigorous procedures (MISRA and others), audit, tests, lots of paperwork and so on — and all that must be circumvented, somehow, for the incident to happen. On the other hand you have explicit permission to tinker, source with documentation which makes it easy to tinker and cause an incident and the only thing which ensures that integrity of software are words of that same guy who have all the incentive to lie. They can even show, right there, in court, how the guy may open the source and easily, by changing two or three lines, cause an incident. Why do you think court have to believe that mistake, somehow, passed all the rounds of audit when the other explanation is just so much simpler and more plausible? Especially in the world where such tinkering is commonplace?
Posted Nov 16, 2021 4:48 UTC (Tue)
by pizza (subscriber, #46)
[Link]
Again, so what? Why is software so special here? There are many, many, many other aspects of a car that an owner can modify, including some things that have significant (and potentially _very_ detrimental) effects on the car's safety. The liability for accidents that result of using this unsafe equipment fall on the owner/operator, not the vehicle manufacturer.
> They can even show, right there, in court, how the guy may open the source and easily, by changing two or three lines, cause an incident.
Just like what can happen if just change out a suspension component. Or use shitty tires. Or neglect maintenance. There is _nothing_ special about software in this regard; negligently modify something, you're liable.
I can modify my car to my heart's content, be it purely mechanically or by replacing every bit of software running on its many processors, and use it to hoon around private property (with appropriate permission from the property owner) and that's perfectly legal. But operating it on public roads is another matter entirely; every jurisdiction has some defined standard as to what's required for a car to be "road legal".
All a manufacturer has to do in order to avoid liability for an incident is to demonstrate that a user's modification was responsible. Eg by demonstrating the part that failed was not manufacturer approved, or by showing that the user explicitly enabled "developer mode" and uploaded non-approved software.
Meanwhile, I also own some safety-critical [1] equipment that was _shipped_ with GPLv3 firmware that I can freely modify and replace. Indeed, its modifiability is an explicit feature that is considered critical for its target market
[1] In the sense that it could literally burn your house down (or permanently disable you) if improperly used. And yes, the documentation makes this _very_ explicit.
Posted Nov 16, 2021 5:06 UTC (Tue)
by pizza (subscriber, #46)
[Link] (4 responses)
I should point out that the accusing party has to first satisfactorily demonstrate that the failure was due to the car software to begin with (as opposed to, say, the operator mashing down the wrong pedal or taking steps to intentionally fool the software safety interlocks)
Meanwhile, from a technical perspective, proving software manipulation is pretty trivial -- checksums have been a thing since approximately forever, but safety-critical systems that are intended to be field-updatable nearly always have some sort of internal audit/event logging. Or perhaps to take a page from the Android ecosystem, in order to replace the car's software, you have to request a "bootloader unlock" key from the manufacturer, at which point all warranties are voided and due to the regulatory/legal regime, the car can no longer be legally driven on public roads (as opposed to private property such as race tracks) This approach is perfectly fine from the FSF's perspective, FWIW.
Posted Nov 16, 2021 8:54 UTC (Tue)
by anselm (subscriber, #2796)
[Link] (3 responses)
Exactly. One would expect that if enough is left of the car's computer to get at its storage, checking whether the firmware was official or not should be pretty straightforward.
(In any case, cars today do have “black box” functionality not unlike that of aircraft, where figuring out what pedal was used when etc. is quite possible for accident investigators. Presumably such a “black box” could also log version information, including cryptographic checksums, for the car's firmware whenever the car is started. For all I know that is already happening.)
Posted Nov 16, 2021 15:45 UTC (Tue)
by Wol (subscriber, #4433)
[Link] (2 responses)
Until modern "fault free" software engineering is applied (by law) to car black boxes, I don't think we'll be able to trust them.
Cheers,
Posted Nov 16, 2021 17:36 UTC (Tue)
by pizza (subscriber, #46)
[Link] (1 responses)
(1) The operator was indeed pressing the accelerator pedal (or at least not depressing the brake pedal)
Most of the reports were proven to be (1), some turned out to be (2), resuting in recalls/changes to make the floor mat retainers more robust and inspections (and replacement if necessary) of the pedal assembly. As far as I am aware there were no instances that were ultimately demonstrated to be a failure of the pedal sensors (yes, plural) or the ECU/software.
Relatedly, I'm not aware of any black box "failures" (as opposed to physical destruction or simply not being designed to track the data that investigator were wanting after the fact -- eg they recorded the state of the brake pedal but not the state of the accelerator) but I'll freely admit my memory is hazy.
Posted Nov 16, 2021 18:58 UTC (Tue)
by Wol (subscriber, #4433)
[Link]
It was tracked down to a glitch in the software.
Cheers,
Posted Nov 15, 2021 22:01 UTC (Mon)
by khim (subscriber, #9252)
[Link] (2 responses)
> What they are saying is that if you distribute the software then you should provide the source code as well, not just the binaries. Only if you make it possible to fix bugs. If you design your system in a way that any bug would mean device (or at least some part of device) would become an e-waste then it's fine. Or if you distribute industrial equipment, then it's fine, too (read about “User Product” in a GPLv3). And who knows how many other funny exceptions FSF would have added in a world which would have been willing to hear their preaches? And all that just to pretend that “world without nonfree software” is actually possible and feasible. Sure, if you give the ability of changing the rules (by virtue of the ability to change the definition of “free software”) to FSF then such world would be possible for sure… only now, suddenly, FSF and not congress decides what type of software is allowed to exist and what is forbidden. Frankly… that's not the world I want to live in. It's worse than when US tries to push it's law beyond it's border. Now we would have a world where certain private organization, not responsible to anyone, decided what I can or can not do in some remote part of the world. > I don't see any reason F/OSS couldn't be used for this type of software, other than perhaps short-sightedness on the part of the regulatory agencies. Short-sightedness? On the contrary, it's very far-sighted approach. Consider self-driving cars. Would you like to live in a world where each and every car on a street may include software with some random modifications done by some crazy guy on the Internet? Because that is what would happen if you would push that “world without nonfree software” idea to it's logical conclusion… oh, right, I forgot: that's solved problem. Instead of making it possible for anyone to tinker with self-driving car software we can, instead, make it impossible to upgrade such software. That's so much better, of course: now, instead we would have millions of cars with known bugs which can not be fixed! Such a joy to live in this world… maybe, but can we, please, leave this joy to someone else? “World without nonfree software” sounded nice half-century ago, when computers rarely were able to directly affect human lives. When there was always (or almost always) some human between computer and other humans. Today? It's just not feasible. Instead of trying to go in the direction of freeing software authors from liability we would be forced soon to declare that whole classes of software can not include these usual “there is no warranty” and “an absolute waiver of all civil liability” disclaimers. In fact it's already done in certain cases (which precludes use of free software there). This doesn't mean free software is useless and it doesn't mean that we need to ensure that no one may ever disclaim liability, even if they are writing code for some sumo bots in their spare time. That would be equally silly. Free software would always exist and open source is definitely an important part of today's software industry… we should just forget about that dream “world without nonfree software” and start talking about practical aspects of open source development instead of trying to shame people with names like “unjust software”, refusals to ever touch “nonfree software” and other such silly campaigns.
Posted Nov 16, 2021 0:29 UTC (Tue)
by pizza (subscriber, #46)
[Link] (1 responses)
We already have that today. Well, perhaps not each and every car, but there's no way to tell from the outside.
And the laws on the books today already cover "random modifications" -- the owner/operator of the car is liable.
(I'm assuming the owner/operator was the one who performed/installed or otherwise directed the modification to be made -- but keep in mind that some modifications can be illegal for use in some contexts but legal in others -- eg highway vs in-town driving, or in-town vs racetrack!)
But, no, there is no inherent reason why safety-critical software cannot be licensed under copyleft terms and even allow for user modifications. After all, all sorts of physical hardware safety-critical stuff can also be modified by its owner/operator too.
Posted Nov 16, 2021 1:16 UTC (Tue)
by khim (subscriber, #9252)
[Link]
> Well, perhaps not each and every car, but there's no way to tell from the outside. It's also not easy to to tell from outside if you have steering wheel connected to anything. But that's not important. As long as it's hard to change that software you can be quite sure then it would cause less issues than, e.g., loss of liquid in hydraulic system. Only few very persistent and very clever guys play with that software and they need to bypass lots of protections to do that. This, naturally, makes it easier to claim that if anything happened — it's manufacturer's fault, not users fault. Once it becomes easy and simple to change it… > After all, all sorts of physical hardware safety-critical stuff can also be modified by its owner/operator too. True but the change goes from the ability to easy tinker with safety-critical thingies to the more and more locked down design. Both in regulatory department and actual development department. Attempts to mandate free software go in the precisely opposite direction.
Posted Nov 15, 2021 22:52 UTC (Mon)
by rodgerd (guest, #58896)
[Link]
They can have whatever opinion they like, but this does not override the law of the land.
Posted Nov 16, 2021 18:23 UTC (Tue)
by rgmoore (✭ supporter ✭, #75)
[Link] (5 responses)
This approach makes sense in the case of software that's intended to be run on general-purpose computers, but not for software that's intended to be used for some highly specialized function, like flight control software for an airplane. The software that's designed to control the flight of a specific model of airplane is only going to be used on that airplane, not necessarily other airplanes from the same company, and certainly not on one from a competitor. As such, it makes far more sense for the manufacturer to take care of all the regulatory side of things so they can sell the airplane as a unit with all that stuff taken care of, rather than leaving it to each airline to customize the software and then ask for regulatory approval on the final product.
This makes economic sense, because the regulatory process can be a major cost in the final product, so avoiding duplication of effort results in a major cost saving. For something like an airplane, where there are only a few customers who are relatively sophisticated, it might work to let the user customize the software and seek approval on their own. It would still add to the cost, but it might be worth it if it made a real difference in the final result. For something that's intended to be sold to ordinary consumers, like a car or medical device, it just isn't practical. The only way to do this sensibly is to have the manufacturer get the approval.
Posted Nov 16, 2021 19:02 UTC (Tue)
by Wol (subscriber, #4433)
[Link] (4 responses)
Except it didn't behave like the old 737, or something like that, and iirc the crashes were down to the fact that (a) the module that would prevent this particular failure was a chargeable extra, and (b) the pilots didn't know how to get round the problem because they hadn't been trained/told about it because "it's just a 737".
Cheers,
Posted Nov 16, 2021 19:17 UTC (Tue)
by khim (subscriber, #9252)
[Link]
> To all intents and purposes it was a new design, but programmed to behave similarly to the old 737 to avoid needing new regulatory approval. They needed new regulatory approval, submitted all the papers and got it. What they wanted to avoid is the need to retrain the pilots. > Except it didn't behave like the old 737, or something like that. “Something like that”, yes. System was using information from just one sensor and when said sensor started misbehaving the plane was, essentially, doomed. > the pilots didn't know how to get round the problem because they hadn't been trained/told about it because "it's just a 737". Yet despite that first plane did at least one flight with misbehaving software and pilots just left the note that controls are flaky. Next flight ended up with disaster because instructions suitable for 737 could have prevented the disaster, but only if pilots followed them religiously: the system in question was written to stop doing anything in case of pilot's actions… but then it tried again after one minute. There was no way to turn it off for good, because, indeed, pilots weren't even told about it's existence.
Posted Nov 17, 2021 10:01 UTC (Wed)
by farnz (subscriber, #17727)
[Link] (2 responses)
The specific fault comes from management not wanting to require new type certification for the 737 MAX as opposed to other 737 variants. Type certification, which exists to ensure that pilots are familiar with the controls and behaviour of a specific plane, acts to provide a degree of lock-in for the manufacturers; if the airline flies a 737 variant, then the 737 MAX would be a straight addition to the fleet, while changing to the Airbus A220 or A320 series also requires training budget for the pilots.
As a result of budget cuts, the FAA has been trusting airline manufacturers to self-certify more and more of their design, rather than confirming that it meets the rules. With the 737 MAX, Boeing mis-certified the plane; the MCAS is always in play, using a stabilizer to correct the flight behaviour of the 737 MAX to be similar to the 737 NG despite the engine changes encouraging the 737 MAX to go nose-up in some conditions where the 737 NG would not. All components that are always in play are supposed to be failure-protected via redundancy; however, MCAS in the 737 MAX (but not other Boeings) depends on a single angle of attack sensor. Note that the requirement for redundancy does not apply to components that the pilot can disable, which MCAS on the first plane it was used on - it just made the plane easier to correctly handle in normal conditions.
As a result of MCAS not being new, Boeing were able to get away with not declaring it to the FAA for certification; nobody at the FAA noticed that MCAS had gone from being an optional assist to make the pilots' lives easier (as it was on the KC-46) to being an always-on system that the pilots could not override or disable.
Had Boeing been behaving correctly, they would have done one of three things:
Posted Nov 19, 2021 9:01 UTC (Fri)
by marcH (subscriber, #57642)
[Link] (1 responses)
Meanwhile, the FAA trusts manufacturers more and more to save... money. We wouldn't want the super rich to pay taxes and fund essential public services.
Business as usual.
Posted Nov 19, 2021 11:21 UTC (Fri)
by farnz (subscriber, #17727)
[Link]
Yep, and the underlying trigger for these culture issues was Boeing fouling up its plans. The Bombardier CSeries was a better fit to what US airlines wanted than anything in the Boeing or Airbus catalogues, including the planned 737 MAX; Boeing had successfully played politics to block Bombardier from being able to sell in volume to US airlines, but Airbus swooped in with both money and US-based facilities that Bombardier lacked, allowing them to rename the CSeries to the A220 and sell it despite Boeing's political successes.
This left Boeing in a tricky position - US airlines weren't going to stick to the existing 737 planes, because the A220 was significantly cheaper to run on the routes they have. The 737 MAX-7 would be just about cheap enough to compete with the A220, but only if you excluded retraining costs to certify on the new airframe - if it needed new type certs, then the A220 would be a better choice.
So, faced with the risk of being fired for incompetence by the shareholders, the Boeing management did the only thing they could do to save their jobs and money - they compromised on everyone else's safety to protect themselves.
Posted Nov 14, 2021 18:38 UTC (Sun)
by pizza (subscriber, #46)
[Link] (1 responses)
> Think some simple app I may create for my friend who wouldn't even know how to run the compiler. What good would it do to him if I would send him sources for an app which I did in two weekends?
Um, why wouldn't you? What if your friend needs changes a year or so down the line and you're not around to do it for him any more?
> But for me… this would definitely create a burden for me: instead of just making sure I can, somehow, build it once and forget about it I'm now forced to create a nice package, would need to ensure it's buildable without tons of my own private scripts, it doesn't have paths specific to my system embedded and so on.
Huh? What does "creating a nice package" have to do with Free Software?
I have a pile of misc crap published in a self-hosted git repo. All of it is Free Software, for folks to use, adapt, and modify to their heart's content. Some of it is relatively trivial, some of it is more complex, and precisely none of it is neatly packaged. That software served my needs at the time, and I published it as Free Software in case someone else might want to use it. If they do, or don't, it doesn't matter to me.
Posted Nov 14, 2021 18:56 UTC (Sun)
by khim (subscriber, #9252)
[Link]
> Um, why wouldn't you? Because he wouldn't know what to do with them anyway and I would just spend a lot of time discussing crazy (for 90% of human population) things and doing useless (for 90% of human population) work. > What if your friend needs changes a year or so down the line and you're not around to do it for him any more? Then this would be his problem, not mine. > Huh? What does "creating a nice package" have to do with Free Software? Everything. If someone would ask me to turn all that into nice-to-use package which I can deliver to someone… I would refuse. Not only because it would be hard to find and include all the pieces which are living outside of a given project, but I can just include certain passwords or other sensitive things with it accidentally. Heck, some bits and pieces can be created just by me typing certain command in a command line, and while I don't usually create top-secret commands, collecting and preparing all that would certainly take a lot of effort, if you never planned to send sources to anyone. Even worse: not all tools I use come with source and not all are free software. Putting these on GitHub may expose me to lawsuits. Providing source to someone is only easy if you planned to do that when you started the whole project. > All of it is Free Software, for folks to use, adapt, and modify to their heart's content. Nice for you. Most software developers (especially freelancers) work differently. Just visit any freelancing site and look there. If you want to pay and get some binary — the price would be smaller than if you would want to get sources, too. It's as simple as that. And a lot of folks are happy to just get binaries and save some money.
Posted Nov 14, 2021 20:18 UTC (Sun)
by madscientist (subscriber, #16861)
[Link] (14 responses)
I am responding to the specific comment from Wol: I have nothing to say about the JS code in question. I haven't looked at it and have no idea what the license on it is. I also am not interested in defending everyone on the internet who is upset about proprietary software. In particular, I don't have anything to say about anyone's "moral obligation" to do anything.
> Think some simple app I may create for my friend who wouldn't even know how to run the compiler. What good would it do to him if I would send him sources for an app which I did in two weekends?
I think maybe you're trying to get at something here that I'm not following because it seems glaringly obvious "what good it would do him": now he has the source. If it doesn't do what he wants and you can't or don't want to update it, then he can learn how to do it himself, or find someone else to do it for him.
> But for me… this would definitely create a burden for me: instead of just making sure I can, somehow, build it once and forget about it I'm now forced to create a nice package, would need to ensure it's buildable without tons of my own private scripts, it doesn't have paths specific to my system embedded and so on.
I certainly don't understand this. Why does releasing the software under a F/OSS license like the GPL require you to do all those things?
> if there would be law which forces me to do that
Whoa! Now I'm really sure I'm lost. Who's talking about laws that force you to create nice packages?!?! The FSF doesn't suggest a law that requires all software to be released as F/OSS, much less that people be required to package it nicely (whatever that means): that would really be nutty.
Posted Nov 14, 2021 20:54 UTC (Sun)
by khim (subscriber, #9252)
[Link] (13 responses)
> I certainly don't understand this. Why does releasing the software under a F/OSS license like the GPL require you to do all those things? Ask any company which tries to make FSF or SFC happy. It's not easy to provide “Corresponding Source” if you haven't planned to do that and haven't carefully built your workflow to make it deliverable. > Who's talking about laws that force you to create nice packages?!?! You have some other way to make sure there would be no non-free software produced? > The FSF doesn't suggest a law that requires all software to be released as F/OSS, much less that people be required to package it nicely (whatever that means): that would really be nutty. Nope. But it boldly proclaims that our ultimate goal is digital freedom for all, a world without nonfree software. I, for one, fail to see how that utopia can be ever implemented without enforcement by law. Most people (and most developers) refuse the crazy idea that all software must be free. But not FSF. And given the fact that in an effort to bring that utopia it's all too willing to make users pay more for less… I'm pretty sure that it would welcome the law which outlaws nonfree software with both hands. > I also am not interested in defending everyone on the internet who is upset about proprietary software. Noted. I just want to point out that if you accept the FSF's goal (elimination of non-free software) then the reasoning that you should castigate GitHub if they release proprietary script which detects LRO and RLO or that you should reject usage of Zoom even if you may be kicked out from college actually makes sense. Nonfree software is the enemy, it shouldn't exist, we want to bring the world where it's outlawed… but is it really something a lot of people think as a worthwhile goal? I seriously doubt it. But that is why FSF refuses to endorse Debian (even if Debian, unlike other Linux distribution, for years delivered images which are useless for most people), that is why it fought against adding sensible intermediate language to GCC and so on.
Posted Nov 14, 2021 22:12 UTC (Sun)
by pizza (subscriber, #46)
[Link] (12 responses)
In other words, "Waah, it's too much work to adhere to the license of the software we chose to use!"
Posted Nov 14, 2021 22:38 UTC (Sun)
by khim (subscriber, #9252)
[Link] (10 responses)
> In other words, "Waah, it's too much work to adhere to the license of the software we chose to use!" Indeed. But this nicely explains what kind of burden is placed on me if I want to release my software as free software, isn't it? Yes, in some cases you have to shoulder that burden and release the sources. If you have been using copylefted software and for some reason modified it. But in most cases much simpler practical solution is never change copylefted software (and use it like you would use proprietary software) and then you can avoid that burden completely. That's what most software developers do most of the time and that's why most software is nonfree and would always be nonfree. And, more importantly, there are nothing wrong with it: most software produced wouldn't ever benefit from source availability simply because there are not enough developers to look on it (heck, most of free software released on GitHub is never looked on by anyone except the author). But if it makes sense for some software to be nonfree then this immediately shifts the discussion from that religious “all software must be free and anyone who thinks otherwise is heretic Which is really strange for me because most people who follow certain real religion (Buddhism, Christianity, Islam, etc) over the years have learned to respect people who are not following these. This, somehow, haven't happened with free software followers.
Posted Nov 14, 2021 23:03 UTC (Sun)
by pizza (subscriber, #46)
[Link] (9 responses)
I don't follow. You, as the software author, can do whatever you want with your own software. Release it, or not, under whatever terms you want. The only inherent "burdens" you'll face are what your local legal regime requires or what you explicitly sign up for.
Now if you base your software on someone else's software (ie creating a "derived work" in the process) then that someone else gets a say in what you can do with it. In pretty much every jurisdiction out there, the baseline permission is "nothing whatsoever" -- and that holds if the software is copyleft (gpl), permissive (bsd), or highly proprietary.
So, again, if you don't want to have to comply with a third party's licensing terms, don't use their software.
> That's what most software developers do most of the time and that's why most software is nonfree and would always be nonfree.
Got a citation for that? I'd think that "most software" is nonfree because its authors consider it competitively advantageous to treat it as a trade secret. That, or sheer apathy (as evidenced by GitHub's stats before they forced folks to pick a license for new repositories)
> Which is really strange for me because most people who follow certain real religion (Buddhism, Christianity, Islam, etc) over the years have learned to respect people who are not following these. This, somehow, haven't happened with free software followers.
As far as I am aware, nobody has ever committed mass slaughter in the name of a software license. The same cannot be said about "real" religions.
Posted Nov 14, 2021 23:53 UTC (Sun)
by khim (subscriber, #9252)
[Link] (8 responses)
I think some context of the discussion was lost. Let me remind what we talking about:
> The claim is that the concept of "intellectual property" applied to code is wrong. If I receive some code from you, then I own it and I don't need your permission to do things with it. You don't retain extra rights to that code by virtue of "copyright" that allows you to control what I do with that code after I've legally obtained it from you. That's what "free software" is about. That's the initial claim. And here is my answer: > > That's what "free software" is about. And then: > this would definitely create a burden for me: instead of just making sure I can, somehow, build it once and forget about it I'm now forced to create a nice package, would need to ensure it's buildable without tons of my own private scripts, it doesn't have paths specific to my system embedded and so on. With the rebuttal: > I certainly don't understand this. Why does releasing the software under a F/OSS license like the GPL require you to do all those things?
And a simple example: > Ask any company which tries to make FSF or SFC happy. It's not easy to provide “Corresponding Source” if you haven't planned to do that and haven't carefully built your workflow to make it deliverable. And now you say > I don't follow. You, as the software author, can do whatever you want with your own software. Release it, or not, under whatever terms you want. The only inherent "burdens" you'll face are what your local legal regime requires or what you explicitly sign up for. Well, sure, but that's not what we were talking about! We were talking about the idea that free software is about changing the rules of “intellectual property”: they are no longer applicable and if you got the code then you may do whatever you want with it! But that's not true! Free software is different not because I allow you to do anything you want with binary I gave you (that would be freewere, not free software), free software is different because I spend additional effort and now give not just binary code to use but source code to study and modify, too! And that definitely adds burden on me! Yes, today I can avoid all that by releasing software as binary, nonfree, proprietary one, but are talking about FSF-suggested nirvana, a world without nonfree software! There I wouldn't have such an option! > I'd think that "most software" is nonfree because its authors consider it competitively advantageous to treat it as a trade secret. That, or sheer apathy (as evidenced by GitHub's stats before they forced folks to pick a license for new repositories) The last one. 64% of companies outsource development of apps they need. All these small apps which mon-and-pop shops order? They are closed source simply because it's cheaper for them that way. They may get sources from freelancers, but they definitely don't want to spend time and effort to give it to some Joe Average and then fight with modifications done to their shop client. Even if you abolish the copyright — it wouldn't change the situation. In fact it would make it worse, not better. Copyright is, practically, non-existent in China. In theory it exists, but in practice it's enforced. The end result? Almost noone supplies software with sources! And binaries are thoroughly obfuscated, because it's not abnormal for someone to just grab piece of nice software (yes, binary, not source) and reuse it and claim it's their own creation. The whole thing is as far from nirvana imagined by free software zealots as it gets. > As far as I am aware, nobody has ever committed mass slaughter in the name of a software license. The same cannot be said about "real" religions. Are you trying to say that without that phase we would never reach the point when free software zealots would respect the rights of others? Because at time it feels as if the only reason they are not starting mass slaughter is the fact that they realize they are outnumbered and are not sure they would win.
Posted Nov 15, 2021 1:46 UTC (Mon)
by anselm (subscriber, #2796)
[Link] (7 responses)
Not necessarily. Nobody (certainly not the GPL) prevents you from throwing a set of half-finished sources over the fence as long as they correspond to the binary that you're distributing. Presumably people would prefer that you added a configure script, extensive and helpful comments in the code, and a nicely typeset manual, but if you don't then you don't. You are under no obligation to bend over backwards on behalf of others; if they have an itch they can scratch themselves.
Posted Nov 15, 2021 2:34 UTC (Mon)
by khim (subscriber, #9252)
[Link] (2 responses)
> You are under no obligation to bend over backwards on behalf of others; if they have an itch they can scratch themselves. I'm under obligation to provide “Corresponding Source”, though. And that, by itself, is pretty significant requirement. It may be hard to imagine that but significant percentage of developers out there have no idea what acronyms VCS or CI/CD even mean! I'm not sure if the majority of developers don't know about these or not, but most newgrads definitely have no idea. Now, you may say that it's failure of colleges that they don't teach students these important things, but the truth is: it's hard enough to teach people to write simple loops or algorithms with arrays! And if you, somehow, make nonfree software illegal then you would raise the bar than much higher. And yes, sure, of course: most of these apps made by newgrads or old-school guys who are still using 30 years old compiler are not that interesting, but… they are more common that you think. Trying to make them free in an effort to reach that world without nonfree software would definitely do more harm than good. P.S. About that 30 years old compiler… Not joking: when I discovered that certain software on ISS is compiled with a compiler based on reverse-engineered PL/1-86 compiler I wasn't sure whether to laugh or to cry… but it's not a joke, it's real… and if you think that guys who turn Windows 7 into real-time OS with binary-patch of Windows kernel (and then launch rockets to space with that… uhm… “thing”) would know or care about providing proper sources… then think again.
Posted Nov 15, 2021 10:02 UTC (Mon)
by anselm (subscriber, #2796)
[Link]
“Corresponding source” is “whatever I compiled on my machine to generate the binary I'm distributing”. There is no legal requirement whatsoever that this source code lives in a VCS or that the binary in question is generated using CI/CD. Few would disagree that both of these are nice, useful, and usually very desirable properties, but they're in no way mandatory in order to release a piece of binary code as “free software”.
Posted Nov 15, 2021 13:50 UTC (Mon)
by pizza (subscriber, #46)
[Link]
By your definitition, the FSF itself is in gross violation of its own license.
I'm sorry, but I'm going to take the FSF's word of the meaning and interpretation of their own licenses over yours.
Posted Nov 19, 2021 9:08 UTC (Fri)
by marcH (subscriber, #57642)
[Link] (3 responses)
Not, the GPL requires the ability to actually build from the source and to release any script, config file needed for that. No source code just for the show. This is a challenge when you have hardcoded dependencies on your environment.
Posted Nov 19, 2021 12:37 UTC (Fri)
by anselm (subscriber, #2796)
[Link] (2 responses)
You need to release the specific scripts, sources for dependencies not already provided by the operating system, etc. required to produce the binaries you're distributing, on your computer (or, in general, any computers for which you distribute binaries).
You're not required to proactively make the source compile on any other computers that might be more or less vaguely similar to yours but for which you don't personally supply binaries, and which might be missing dependencies that on your computer happen to come with the operating system. Many people, because they're nice and friendly, attempt to do so, anyway (e.g., by including “configure” scripts and the like) but it's not mandatory as far as the GPL is concerned. It's certainly not mandatory to keep the sources, scripts, etc. in a VCS or to include CI/CD configuration.
Posted Nov 19, 2021 14:26 UTC (Fri)
by khim (subscriber, #9252)
[Link] (1 responses)
> You need to release the specific scripts, sources for dependencies not already provided by the operating system, etc. required to produce the binaries you're distributing, on your computer (or, in general, any computers for which you distribute binaries). Let's consider a practical example. Suppose I'm using the compiler that was once disassembled from the original PL / I-86 by Digital Research and then was developed from that base for 30 years and then you have to use it in conjunction with binary-patched runtime. Everything without sources, of course: Digital Research never offered them and you are too cheap to buy license for OS sources from Microsoft. What am I supposed to release in that case? > You're not required to proactively make the source compile on any other computers that might be more or less vaguely similar to yours but for which you don't personally supply binaries, and which might be missing dependencies that on your computer happen to come with the operating system. That's strawman and you know it. I'm not talking about ability to compile sources on someone's else system. I'm talking about ability to compile them at all. I still vividly remember story when we were supposed to build certain recognition system for the police. The company which created hardware which we were supposed to use leased (not sold!) us “an SDK” which was comprised of two computers and four HDDs. One computer had Windows preinstalled and other had Linux preinstalled and all that was supposed to work in tandem because Visual Studio based build system was doing certain steps on Linux system (custom rules are very flexible as it turned out). Second pair of HDDs was backup supposed to be used if we would screw the first pair! I wouldn't even know what can be considered a “source code” in all that mess but I certainly knew for sure that if I would just keep things that I, personally, created then I wouldn't be able to build a binary. > It's certainly not mandatory to keep the sources, scripts, etc. in a VCS or to include CI/CD configuration. Sigh. We are going around in circles. Yes, it's not mandatory to use VCS and CI/CD systems. But if you are not doing it and not keeping the sources you have created nicely separated from other things that you have installed on your system, then question of what are the sources quickly becomes not easily answerable. I gave your couple of extreme examples, but even if you have something as simple as Delphi (or Microsoft Office) with bunch of components or extensions added to it then it's very easy to create a project which you can only open on your system. It wouldn't be possible to rebuild it on someone's else system, you couldn't even open it there! And very often you wouldn't be able to recreate the structure which you use for development since it includes components which you no longer can buy (that's why aforementioned “SDK” was leased to us, not sold).
Even if it is possible to actually separate the sources from the other things on your system it's not an easy task in many cases. It takes certain discipline to keep sources deliverable and it's much easier to go from that point to the proper combo of VCS and CI/CD system than to reach that point from “ground zero” where developer just does whatever it takes to deliver binary to the customer.
Posted Nov 19, 2021 15:37 UTC (Fri)
by anselm (subscriber, #2796)
[Link]
I don't think anyone would disagree that dealing with a product that has had the attention of a team of competent and experienced software developers with an unlimited budget is generally nicer than dealing with somebody's spare-time project that is held together with string and baling wire. But the point is that the GPL doesn't require professional-level software engineering. Even somebody's primitive spare-time project can be useful to other people if it is released as free software, however lacking in social graces it may be.
Posted Nov 14, 2021 23:01 UTC (Sun)
by amacater (subscriber, #790)
[Link]
a) So you yourself know what you took from your CI/CD chain to build this (and what you need to retain for support) and to remind you in a year's time when you come back to it to bug trace / bug fix
and
b) To do due diligence on code use, licence compliance and so on for when the beancounters get angry/lawyers are on your back/you want to sell the business
and
c) for fixing things/providing support/ hand holding and to avoid the situation where your customers get frustrated when they don't know what to blame when your software doesn't work for them.
It's a nuisance, sure: if everyone took the view that all their code may one day have to be viewed by/maintained by/built by somebody else it would help. A BoM and build artefacts are what you need to keep the software going longterm with anyway.
Posted Nov 12, 2021 22:28 UTC (Fri)
by ttuttle (subscriber, #51118)
[Link]
About code tags: do we know what fraction of those are used properly for code, versus improperly for styling? I think building this as an extension and a script website owners can include would make more sense than automatically applying it to every code tag.
Posted Nov 11, 2021 23:42 UTC (Thu)
by klindsay (subscriber, #7459)
[Link] (3 responses)
Posted Nov 12, 2021 2:52 UTC (Fri)
by jkingweb (subscriber, #113039)
[Link] (2 responses)
Posted Nov 12, 2021 4:24 UTC (Fri)
by klindsay (subscriber, #7459)
[Link] (1 responses)
Posted Nov 12, 2021 8:37 UTC (Fri)
by corbet (editor, #1)
[Link]
Posted Nov 12, 2021 11:44 UTC (Fri)
by dottedmag (subscriber, #18590)
[Link] (2 responses)
I don't buy it. There are just a several files in the existence that use these characters legitimately, and these could just use a banner at the beginning: "review carefully, legitimate bidi characters inside".
Posted Nov 13, 2021 18:12 UTC (Sat)
by marcH (subscriber, #57642)
[Link] (1 responses)
I mean Emacs has many users that use bidi 0.0000001% of the time, only when opening some file in some language totally unknown to them. So for all these users there is simply no "too many false positives" risk at all. For all these users there should be a dead simple warning that highlights ALL direction changes. The default value for this setting could be based on the locale and of course easy to override and switch to one of the smarter approaches for those who need them.
Posted Nov 14, 2021 10:06 UTC (Sun)
by tzafrir (subscriber, #11501)
[Link]
Posted Nov 12, 2021 11:48 UTC (Fri)
by wtarreau (subscriber, #51152)
[Link] (2 responses)
Posted Nov 12, 2021 23:53 UTC (Fri)
by khim (subscriber, #9252)
[Link] (1 responses)
> It can be particularly important for numbers, that can become confusing for those who don't know RTL alphabets but recognize them and see numbers in the middle, not knowing in what direction they're supposed to be read). How exactly can that be confusing? If you recognize the digits then numbers would be written in usual direction (heck, even Arabic digits are written in the same direction thus 123 becomes ١٢٣ when written in Arabic, not ٣٢١). And if you can not even recognize individual digits then how would it help you to know if these scribbles should be read left-to-right or right-to-left?
Posted Nov 15, 2021 17:25 UTC (Mon)
by rgmoore (✭ supporter ✭, #75)
[Link]
Everything is easier if you know the answer already. The problem is that not everyone knows that numbers in Arabic are written LTR. Plenty of people, including me before I saw this topic discussed in the context of text direction, would assume the numerals would be read RTL because that's the way the rest of the text is written. That's the point. If you don't know the rule, you're left guessing, and some people will inevitably guess wrong. Some indication of the text direction would allow people to avoid guessing.
With some reasonable heuristics, this could avoid being too obtrusive. If the text is all in one direction, you could leave out the direction arrows completely. If the text is predominantly in one direction, you could have arrows showing text direction only for stuff that's going the other way. If it's more of a mix, you would include arrows for everything. If someone is trying to be sneaky by slipping a small amount of flipped text, having the direction arrows will make it really obvious.
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
- latin chars written right to left are highly suspicious
- direction reversal involving non-100% RTL chars is suspicious (i.e. digits, operators, language delimitors)
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Wol
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Wol
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Wol
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Wol
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Sorry, I didn't follow that. I'm not sure what you mean by "legal liabilities".
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Wol
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Do you really want to be held liable for the problems with car software if it would misbehave? In a funny “world without nonfree software” you would be. Because how can anyone prove you haven't tampered with said software if you quite literally got the license to do precisely that when you bought your car?
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Meanwhile, from a technical perspective, proving software manipulation is pretty trivial -- checksums have been a thing since approximately forever, but safety-critical systems that are intended to be field-updatable nearly always have some sort of internal audit/event logging.
Exposing Trojan Source exploits in Emacs
Wol
Exposing Trojan Source exploits in Emacs
(2) The pedal itself was physically impeded from returning to neutral (eg getting stuck under a floor mat, or wear on the pedal's pivot)
Exposing Trojan Source exploits in Emacs
Wol
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
It's not up to the author to assume liability for the ways in which the software is used. The author provides the software. It's up to the user to take responsibility for using the software. If there are regulatory approvals etc. it's up to the user to ensure they're obtained, not the author.
Exposing Trojan Source exploits in Emacs
Wol
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
737 MAX
737 MAX
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
and should be burned” to a much more practical stance of “why do you think this particular piece of software must be free”. Which is, somehow, very hard to answer for most followers of that religion.Exposing Trojan Source exploits in Emacs
> Indeed. But this nicely explains what kind of burden is placed on me if I want to release my software as free software, isn't it?
Exposing Trojan Source exploits in Emacs
> Absolutely not. Go back to the initial complaint: Microsoft released some code, it's downloadable and you can run and study it. You can even adopt it for your needs (it's bunch of regexps, really, practically speaking it's hard to say they can be copyrighted at all).
But according to free software zealots it's not enough: you have to do an additional work and make it possible to easily take that code and include it in your program. What gives you right to demand that?Exposing Trojan Source exploits in Emacs
free software is different because I spend additional effort and now give not just binary code to use but source code to study and modify, too!
And that definitely adds burden on me!
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
I'm under obligation to provide “Corresponding Source”, though. And that, by itself, is pretty significant requirement.
It may be hard to imagine that but significant percentage of developers out there have no idea what acronyms VCS or CI/CD even mean!
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
It takes certain discipline to keep sources deliverable and it's much easier to go from that point to the proper combo of VCS and CI/CD system than to reach that point from “ground zero” where developer just does whatever it takes to deliver binary to the customer.
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
colored text lost on the colorblind
colored text lost on the colorblind
colored text lost on the colorblind
It's also worth noting, of course, that this is Emacs, so the presentation of the warnings can be infinitely customized. If you want them bold, in a 30pt font, reverse video, you can have that...
colored text lost on the colorblind
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
Exposing Trojan Source exploits in Emacs
How exactly can that be confusing? If you recognize the digits then numbers would be written in usual direction (heck, even Arabic digits are written in the same direction thus 123 becomes ١٢٣ when written in Arabic, not ٣٢١).