|
|
Subscribe / Log in / New account

Recently posted comments

GMP and assert()

Posted Feb 28, 2019 15:28 UTC (Thu) by NAR (subscriber, #1313)
In reply to: GMP and assert() by pizza
Parent article: GMP and assert()

Then it's clearly the application's fault. I also feel like calling assert() in a library is just cop-out from a proper error handling (which, I admit, might be difficult due to the deficiencies of the C language or backward compatibility).


Revisiting PEP 394

Posted Feb 28, 2019 15:24 UTC (Thu) by lkundrak (subscriber, #43452)
In reply to: Revisiting PEP 394 by Kalenx
Parent article: Revisiting PEP 394

> you change it to a modern (and maintained) implementation

...of something else


Patent exhaustion and open source

Posted Feb 28, 2019 15:07 UTC (Thu) by Wol (subscriber, #4433)
In reply to: Patent exhaustion and open source by anselm
Parent article: Patent exhaustion and open source

> This means that farmers often prefer buying new hybrid seeds with desirable traits (like, high yield or resistance to pesticides) to keeping back part of their previous harvest for re-sowing, which would lead to a worse outcome. IOW, farmers tend to not want to infringe on patents on the seeds because it wouldn't help them commercially.

Those that have bought the agri-business kool-aid. I remember someone on Groklaw (that dates it) saying that his seed, that his family had kept and re-sown for generations, yielded maybe 20% more than his neighbours buying in high-yield seed. Thing is, the commercial seed does well in the conditions it's bred. It doesn't necessarily do well in different conditions elsewhere, while seed that's been kept and re-sown adapts to the local conditions.

Cheers,
Wol


GMP and assert()

Posted Feb 28, 2019 14:59 UTC (Thu) by pizza (subscriber, #46)
In reply to: GMP and assert() by devkev
Parent article: GMP and assert()

> The caller can bubble the error up to a level that is best placed to handle it appropriately.

We both know that "can" actually means "will ignore completely" 99.7% of the time.


New

Posted Feb 28, 2019 14:26 UTC (Thu) by remi.chateauneu (subscriber, #51826)
In reply to: New by eythian
Parent article: Approaching the kernel year-2038 end game

Cartagena in Spain: "Possessing one of the best harbors in the Western Mediterranean, it was re-founded by the Carthaginian general Hasdrubal in 228 BC as Qart Hadasht ("New City"), a name identical to Carthage, for the purpose of serving as a stepping-off point for the conquest of Spain. The Roman general Scipio Africanus conquered it in 209 BC and renamed it as Carthago Nova (literally "New New City") to distinguish it from the mother city."


GMP and assert()

Posted Feb 28, 2019 14:00 UTC (Thu) by devkev (subscriber, #74096)
Parent article: GMP and assert()

I'm pretty amazed at all the people who think this is about leaking info, and that it's acceptable behaviour for a library. As others have pointed out, there are ways to guard against the info leaks, and more ways to leak info than just crashing. But the real issue here is whether it's appropriate for a library to end the process.

The whole point of a library is to be embedded inside some larger process. When you create a process, it's not by running a library, it's by running a program. So it should be the program that decides when that process ends. The lifecycle of that process is none of the library's business, and the library should not do anything to interfere with it. It is entirely inappropriate for a library to unilaterally pull the rug out from under the entire process by early terminating it.

If the library has entered a state where it can no longer perform useful work, then it can just tell the application that. It can return a special "fatal" error response, and if it's completely hosed, then it could set a flag so that all other library calls immediately return the same fatal error. This flag would only be cleared when the problematic state has been fixed (eg. by a special function call which re-inits the entire library, clearing out all its internal state).

For example, the program might be using the library for some optional functionality. In this case, the program could be happy to continue on without the library, using some fallback/alternate instead. Only the program can make that decision, and the library should not even try to second-guess it.

It is completely reasonable for developers to expect that libraries won't go and call exit(), or kill(getpid(), SIGKILL), or similar. Just like I expect random root daemons won't go and reboot my whole system just because they've encountered some problem that they consider severe.

Whatever happened to the "catch low, handle high" error handling philosophy? Libraries have no knowledge of the surrounding context in which they are running - ie, the rest of the program. But this is precisely why they should not be handling such errors, only reporting them. The caller can bubble the error up to a level that is best placed to handle it appropriately.


Revisiting PEP 394

Posted Feb 28, 2019 13:51 UTC (Thu) by NRArnot (subscriber, #3033)
Parent article: Revisiting PEP 394

Why not replace the un-versioned python command with a file-analyzer that tries to do the right thing?

1. Output a warning message to stderr that the un-versioned python command is strongly deprecated.
2. Scan the script to identify any hints as to which python version is required. For example, a print statement without brackets requires python 2, an f-string requires python 3, any type hint strongly implies python 3, ...
3. Output another warning saying what it's going to try next
4. Dispatch the script to python3, unless python2 was clearly required, in which case...
5. Dispatch to python2 if it exists on the system or explain the problem if it does not.

This will work most of the time, and the warning messages (whether or not it does work) ought to nag the script maintainers to fix their shebangs.

If invoked without a script (interactive), tell the user to choose between python2 and python3 and quit.
This isn't something that has to be perfect. A 90% solution is better than a 0% non-solution.


Revisiting PEP 394

Posted Feb 28, 2019 10:31 UTC (Thu) by moltonel (subscriber, #45207)
In reply to: Revisiting PEP 394 by karkhaz
Parent article: Revisiting PEP 394

A few distros that have either switched "python" or made it configurable for many years now, so any script that uses an unversioned bangline but isn't compatible with both py2 and py3 is buggy, in that it's not going to work on different distros. The unversioned python should point to the latest installed version, as would be expected of any other program.

Fixing banglines is trivial, only the diagnostic-to-bugreport-to-new-package bureaucracy takes a bit of time. After so many years, I'd expect that most packaged python2-only scripts have been fixed, and only in-house packages remain. It shouldn't be that hard to write a script to find and report/fix such scripts.

I'm unsympathetic to the "it'll break my setup" argument when the fix is so simple and has been needed for so many years. The python community has been doing extra work to support a legacy version, waiting for people to switch for surprisingly many years. It's time to give them a rest.


Revisiting PEP 394

Posted Feb 28, 2019 9:57 UTC (Thu) by mcharsley (subscriber, #112617)
Parent article: Revisiting PEP 394

Didn't we have an almost identical problem way back when python 2 came out? I have vague memories of some distribution, probably RedHat, having /usr/bin/python pointing to python 1.5 because they'd got a bunch of admin scripts that weren't yet compatible with python 2


GMP and assert()

Posted Feb 28, 2019 9:51 UTC (Thu) by smurf (subscriber, #17840)
Parent article: GMP and assert()

There probably should be an option whether to abort(), or return a NaN (or an object that behaves like one but can encapsulate the error code+message) instead.


Revisiting PEP 394

Posted Feb 28, 2019 9:43 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
In reply to: Revisiting PEP 394 by mjthayer
Parent article: Revisiting PEP 394

No. A careless script writer will just put "/usr/bin/python" and it will work. Then somebody installs Py2 and a completely unrelated package might break. Bonus points if it breaks in a rarely-used code path.

This is pretty much THE worst possible solution.


Containers as kernel objects — again

Posted Feb 28, 2019 9:23 UTC (Thu) by mezcalero (subscriber, #45103)
Parent article: Containers as kernel objects — again

Urks. Upcalls. Can we please stop adding those to the Linux kernel? Upcalls are awful, they just mean that there suddenly exists a userspace process that is entirely independent from the rest of the system, untracked, unmanaged by userspace, with different runtime attributes, security settings and everything else (in which cgroup does it even live, in a world where inner cgroups are not supposed to have processes anymore?). This just sucks, as generally it's highly desirable to apply resource mgmt, security settings and so on to all kernel upcall processes the same way as for every other process in the system, but there's simply no way to do that. Yes, the kernel added some very splintered ways to set some process properties for upcalls (caps mostly), but this is very incomplete and pretty awful.

Besides that upcalls are also slow, and hence had to be replaced in many cases with something more performant anyway (think: hotplug upcalls, cgroup agent upcalls, and that stuff). Or think of core_pattern handling: let's say you make firefox crash, now the kernel does an upcall for processing that coredump, which is quite often very CPU and IO sensitive, to the point of slowing down the system drastically. But of course, since the thing runs as upcall it will be outside of the resource mgmt of the rest of the system and unrestricted in lifecycle and resoruce usage, unless it decides to manage itself. In systemd we thus had to replace the core_pattern by a binary that takes the stdin pipe and sends it to a properly managed daemon via AF_UNIX fd passing, and exits quickly, to minimize the unmanaged codepaths. This way the bulk of the core dump processing can be nicely sandboxed, lifecycled and resource managed. But yuck! Why is that even necessary? Why can the kernel just notify userspace in a friendly way without forking of nutty stub processes?

Please, let's just forget about upcalls: provide proper APIs right from the beginning that userspace can subscribe to and then handle without a process being spawned.

(or at least add a generic upcall logic that allows userspace to handle the upcalls instead of the kernel doing the fork()+execve() on its own)

Seriously, fuck upcalls!

Lennart


Revisiting PEP 394

Posted Feb 28, 2019 9:18 UTC (Thu) by lobachevsky (subscriber, #121871)
Parent article: Revisiting PEP 394

Arch Linux changed their python to be python3 years ago and is basically the reason for this PEP to exist. Arch is known for not patching upstream packages if possible. A lot of shebang fixeshave found their way upstream and even before that the world didn't burn down with that change and it's been a few years now.

I agree that it's a disservice to have no unversioned python available and think that the stance to never point the symlink away from python2 quite backwards.


Revisiting PEP 394

Posted Feb 28, 2019 9:11 UTC (Thu) by karkhaz (subscriber, #99844)
Parent article: Revisiting PEP 394

> With the uptake of Python 3 (and the imminent end of life for Python 2.7), there is a question of which version of Python a user should get when they type "python" at the command line or have it as part of a shebang ("#!") line in a script

IMO these are two separate questions, and I don't see that acknowledged in the PEP. This is because the implications of the default behaviour are different in each case. When typing 'python' at the command line, you're immediately greeted with the version number that's running, and you can just <Ctrl-D> if it's not the one you expected. Scripts, on the other hand, can be executed non-interactively in the background and might thus break people's setups in non-obvious ways if they fail.

So it seems to me that the sensible behavior is to make python point to the latest version of python when invoked on the command line, but python in shebang lines should continue to point to python2 forever. And I say this as an Arch Linux user, whose python has pointed to python3 since the beginning, and I'm perfectly happy with this---but acknowledge that it's untenable for the more mainstream distros.


Development statistics for the 5.0 kernel

Posted Feb 28, 2019 8:22 UTC (Thu) by arnd (subscriber, #8866)
In reply to: Development statistics for the 5.0 kernel by GustavoARSilva
Parent article: Development statistics for the 5.0 kernel

Everyone with 11 fixes or more
$ git rev-list --grep="Fixes:\s\+[0-9a-f]\{6,\}" v4.20..v5.0-rc8 | xargs git show --format=%an -s | sort | uniq -c | sort -rn | head -n 23
46 Dan Carpenter
38 Geert Uytterhoeven
30 Colin Ian King
25 Arnd Bergmann
19 Chris Wilson
18 Florian Westphal
17 Jens Axboe
15 Ville Syrjälä
15 Martin Blumenstingl
15 Linus Walleij
15 Gustavo A. R. Silva
15 Christoph Hellwig
14 Wei Yongjun
14 Sinan Kaya
14 Paolo Abeni
14 Eric Biggers
13 Arnaldo Carvalho de Melo
12 Willem de Bruijn
11 Yonghong Song
11 Nicholas Mc Guire
11 Lorenzo Bianconi
11 Ido Schimmel
11 Andrew Lunn


Revisiting PEP 394

Posted Feb 28, 2019 8:10 UTC (Thu) by mjthayer (guest, #39183)
In reply to: Revisiting PEP 394 by Cyberax
Parent article: Revisiting PEP 394

A script for python3 which does not support python2 should explicitly request /usr/bin/python3. If it does not it will not work today in most set-ups.


'python' should be for interactive use

Posted Feb 28, 2019 7:55 UTC (Thu) by marcel.oliver (subscriber, #5441)
Parent article: Revisiting PEP 394

I can't wait until my distro (Fedora) points python to python3. It's a constant annoyance to get the wrong Python, or wrong ipython via tab completion in the shell (if only they had named it 3python), then it would be half a problem. Scripts can be fixed, and presumably one should use explicit versioning anyway.

Yes, I could define my own alias, but I am also teaching various Scientific Computing classes, so changing defaults would seriously confuse students.

Unfortunately, for students on Linux, I must still check which version of Python they are actually running, which is erratic in practice, and if it's 2.7, debug their scripts for floored-division errors. Just happened two days ago, again.

I will probably have 2.7 around for as long as that's just a dnf install away, due to long-forgotten legacy scripts, but having the default invocation point to a dying version is a very poor user interface. I notice that Matplotlib in its latest version is Python 3 only, which tells me that it's really time to get off Python 2 in my domain.


Revisiting PEP 394

Posted Feb 28, 2019 7:34 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
In reply to: Revisiting PEP 394 by mjthayer
Parent article: Revisiting PEP 394

It's even worse. A script for Py3 can suddenly break if Py2 is simply installed.


GMP and assert()

Posted Feb 28, 2019 7:33 UTC (Thu) by mjthayer (guest, #39183)
In reply to: GMP and assert() by gdt
Parent article: GMP and assert()

> We saw the same thing recently with password databases, where graphics libraries retained the contents of previously-displayed text and so passwords were still in RAM even if the password database had erased its own storage. In turn those graphics libraries may feel that free()ing data means it has passed from their responsibility.

That is an interesting new twist in the display-password-or-display-dots question. Accessing graphics memory is probably more of a threat than shoulder surfing these days. (I would be interested to know if it really is a realistic threat, as in worth the effort for an attacker.) A flag marking a graphics surface as sensitive or something on those lines might help.


Avoiding the coming IoT dystopia

Posted Feb 28, 2019 7:24 UTC (Thu) by omgold (guest, #109541)
In reply to: Avoiding the coming IoT dystopia by nybble41
Parent article: Avoiding the coming IoT dystopia

How would "should not have the ability to impersonate the owner of an already-configured device without the owner's consent" be implemented at all? Is that possible at all (with realistic effort)? Don't see how you could really protect yourself from someone having full control over the hardware and firmware before handing the device over to the "owner".

About printing the default key on separate paper, sure it has both advantages and drawbacks.

Advantage: visitors with temporary physical access cannot reflash the device unnoticed
Disadvantage: the paper may be lost

In case that default password is just used for flashing firmware, with a separate password for management of the device (the latter would be set to empty on factory reset), it seems it would be okay. The former use case is rare enough for not causing the vendor much extra work, or customers losing much for being unable to to that (Anyone wanting to mess with the firmware should make sure to obtain and not lose the password). The latter case would just be protected against by making the device lose the wifi pw on factory reset, so it won't go unnoticed.

Also I believe that obtaining a PK certificate from the vendor on request would not protect from the "visitor attack" scenario, as the visitor might just do that for his own pubkey. How would the vendor determine whether the request comes from the rightful owner, when the only proof is physical access?


Revisiting PEP 394

Posted Feb 28, 2019 7:23 UTC (Thu) by mjthayer (guest, #39183)
Parent article: Revisiting PEP 394

What is so terrible about /usr/bin/python pointing to python2 if it is installed and python3 if it is not? I would expect a python3-only script to explicitly specify /usr/bin/python3 for very practical reasons, and any script which specified /usr/bin/python to work with python2. So someone who needs to run scripts which are not python3-compatible installs python2 and everything works. And someone who does not does not and everything works.


Revisiting PEP 394

Posted Feb 28, 2019 7:06 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
In reply to: Revisiting PEP 394 by johnramsden
Parent article: Revisiting PEP 394

> RHEL isn't every distro.
All major distros are going to HAVE to support Py2 way past 2020. Ubuntu Server will support it until 2023 at least, so will SuSE and others.

> The problem is what happens when python2 it's no more and python no longer points anywher
Once this happens (maybe around 2034) then these scripts can just fail.


GMP and assert()

Posted Feb 28, 2019 6:14 UTC (Thu) by NYKevin (subscriber, #129325)
In reply to: GMP and assert() by gdt
Parent article: GMP and assert()

I think it's worse than that. You don't know that your OS is running on the bare metal. It might be in a container or hypervisor, either of which might reasonably fail to know (or care) about prctl() and mlock() calls inside the guest. As an extreme case, if you're running a VM in a managed cloud-like environment, and the host decides to live-migrate you to a new machine, then it's going to take a complete memory dump, and that complete memory dump is going to go over the (local) network, like it or not. At least it'll be encrypted (probably).


Revisiting PEP 394

Posted Feb 28, 2019 4:41 UTC (Thu) by johnramsden (guest, #113890)
In reply to: Revisiting PEP 394 by Cyberax
Parent article: Revisiting PEP 394

RHEL isn't every distro. The end of life is officially over in 2020 for legacy python, and for lots of Linux distributions that means it will no longer be supported. The problem is what happens when python2 it's no more and python no longer points anywhere. They're trying to come to an agreement as to what makes the most sense for the future.


GMP and assert()

Posted Feb 28, 2019 3:59 UTC (Thu) by mm7323 (subscriber, #87386)
Parent article: GMP and assert()

abort() is pretty handy for asserts in libraries. Unlike return codes it's hard to ignore, and the resulting core file makes tracking down any error really easy. This must increase the quality of software using such libraries.

As already said, applications can use prctl() if too sensitive to core-dump, and that covers all cases not just abort () triggers


Revisiting PEP 394

Posted Feb 28, 2019 2:52 UTC (Thu) by JdGordy (subscriber, #70103)
In reply to: Revisiting PEP 394 by Cyberax
Parent article: Revisiting PEP 394

Isnt the whole point though all those legacy script which just use "#!/usr/bin/python". If you've already fixed your internal scripts to call the right one then you don't need to worry.


Revisiting PEP 394

Posted Feb 28, 2019 2:01 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
In reply to: Revisiting PEP 394 by NYKevin
Parent article: Revisiting PEP 394

The problem is, a script that runs perfectly on RHEL7 won't run on RHEL8 or Ubuntu Server. Yeah, it can be fixed.

But why? There's no reason whatsoever for this change other than vanity. Just stick with python2 and python3 - easy and unambiguous.


Revisiting PEP 394

Posted Feb 28, 2019 1:23 UTC (Thu) by NYKevin (subscriber, #129325)
In reply to: Revisiting PEP 394 by Cyberax
Parent article: Revisiting PEP 394

If your only concern is in-house applications, you do not need to care about PEP 394 at all and can just configure the /usr/bin/python symlink to point at whatever you like.


Revisiting PEP 394

Posted Feb 28, 2019 1:20 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
In reply to: Revisiting PEP 394 by NYKevin
Parent article: Revisiting PEP 394

> Not if all the libraries jump ship. A ton have already pledged to do so in 2020: https://python3statement.org/
Don't care about them. There are many in-house applications that are written in Py2 and that are not migrating any time soon.


Revisiting PEP 394

Posted Feb 28, 2019 1:15 UTC (Thu) by NYKevin (subscriber, #129325)
In reply to: Revisiting PEP 394 by Cyberax
Parent article: Revisiting PEP 394

> and realistically it'll be around for longer (see: Perl5).

Not if all the libraries jump ship. A ton have already pledged to do so in 2020: https://python3statement.org/

(Moreover, if a given library has *not* published plans to transition to Python 3 in the very near future, I would tend to wonder whether it is actually receiving upstream support in the first place. I'm sure some are, but there's a lot of bit rot out there.)


Revisiting PEP 394

Posted Feb 27, 2019 23:55 UTC (Wed) by Kalenx (subscriber, #120295)
In reply to: Revisiting PEP 394 by Cyberax
Parent article: Revisiting PEP 394

Are you sure you are okay? I mean, we're still talking about a computer language, right? A free to use, free to fork, computer language...


GMP and assert()

Posted Feb 27, 2019 23:44 UTC (Wed) by gdt (subscriber, #6284)
In reply to: GMP and assert() by roc
Parent article: GMP and assert()

The problem is a lack of more general support for secrets-keeping in CPUs and operating systems.

Even if the secret is protected with both MADV_DONTDUMP and mlock() the library may copy that memory. That copying might not be unreasonable -- to access data in modern CPUs is to copy it, at the very least into CPU caches and registers.

We saw the same thing recently with password databases, where graphics libraries retained the contents of previously-displayed text and so passwords were still in RAM even if the password database had erased its own storage. In turn those graphics libraries may feel that free()ing data means it has passed from their responsibility.


Revisiting PEP 394

Posted Feb 27, 2019 22:55 UTC (Wed) by Cyberax (✭ supporter ✭, #52523)
In reply to: Revisiting PEP 394 by Kalenx
Parent article: Revisiting PEP 394

> Because you have to do something about the fact that Python 2 will soon get unsupported.
Py2 will be supported at least until 2027 (the EOL for RHEL7) and realistically it'll be around for longer (see: Perl5).

So fuck you Python developers. You're creating needless work for everybody to reassure your sense of self-importance ("See! We did it! Py3 is now mandatory!").


Revisiting PEP 394

Posted Feb 27, 2019 22:52 UTC (Wed) by Kalenx (subscriber, #120295)
In reply to: Revisiting PEP 394 by Cyberax
Parent article: Revisiting PEP 394

Because you have to do something about the fact that Python 2 will soon get unsupported. The current upstream suggestion (PEP 394) is to link python to python2. This obviously cannot be held in the future. So either you just remove "python" altogether (like Guido suggested, by the way), either you change it to a modern (and maintained) implementation.


Avoiding the coming IoT dystopia

Posted Feb 27, 2019 22:33 UTC (Wed) by andresfreund (subscriber, #69562)
In reply to: Avoiding the coming IoT dystopia by excors
Parent article: Avoiding the coming IoT dystopia

> If there is a separate "sheet with the preconfigured pw", some fraction of customers will inevitably lose that sheet, then will phone customer support and (quite justifiably) demand to be allowed to use the product they bought.

For a lot of devices having the default PW printed onto the device itself is viable...


Reimplementing printk()

Posted Feb 27, 2019 22:15 UTC (Wed) by Cyberax (✭ supporter ✭, #52523)
In reply to: Reimplementing printk() by vadim
Parent article: Reimplementing printk()

I'm dreaming about the moment I can do this :( For now there's still RHEL6 and Amazon Linux 1 that I need to support.


GMP and assert()

Posted Feb 27, 2019 22:14 UTC (Wed) by roc (subscriber, #30627)
In reply to: GMP and assert() by BenHutchings
Parent article: GMP and assert()

Applications can also use MADV_DONTDUMP to mark specific regions of memory as non-dumpable. Probably secrets in memory should be protected with both MADV_DONTDUMP and mlock().


GMP and assert()

Posted Feb 27, 2019 22:04 UTC (Wed) by BenHutchings (subscriber, #37955)
Parent article: GMP and assert()

Applications that shouldn't ever core-dump should call prctl(PR_SET_DUMPABLE, 0, 0, 0, 0). It doesn't make any sense to say that library writers should avoid triggering a core-dump; that's like saying libraries shouldn't have bugs.


Revisiting PEP 394

Posted Feb 27, 2019 21:40 UTC (Wed) by moltonel (subscriber, #45207)
Parent article: Revisiting PEP 394

My "python" has been python3 for many years now (it's configurable on my distro), and I'm looking forward to getting rid of python2 entirely (samba, perf, usbutils, I'm looking at ye). Not having a "python", or having it point at python2 would feel very strange at this stage.


Reimplementing printk()

Posted Feb 27, 2019 21:00 UTC (Wed) by claytonc (guest, #98599)
In reply to: Reimplementing printk() by vadim
Parent article: Reimplementing printk()

Maybe they are on a distro without systemd?


Reimplementing printk()

Posted Feb 27, 2019 20:54 UTC (Wed) by rweikusat2 (subscriber, #117920)
In reply to: Reimplementing printk() by NAR
Parent article: Reimplementing printk()

Diagnostic output isn't supposed to be "parsed by software", that's usually just a crude attempt at getting around lack of an interfacen supposed to provided what said software really wants to have. Hence, optimizing the output format to make the crude workaround easier to implement at the expense of making the intended purpose (debugging) more complicated are a bad idea.

There's nothing "controversial" here, just lack of understanding.


Revisiting PEP 394

Posted Feb 27, 2019 20:44 UTC (Wed) by Cyberax (✭ supporter ✭, #52523)
Parent article: Revisiting PEP 394

Why can't they just leave it as python3? Do they need an affirmation after their Py3 fiasco?


Avoiding the coming IoT dystopia

Posted Feb 27, 2019 18:19 UTC (Wed) by nybble41 (subscriber, #55106)
In reply to: Avoiding the coming IoT dystopia by excors
Parent article: Avoiding the coming IoT dystopia

It's not just a matter of support costs. The manufacturer (or ISP or whoever else provided the device) should not have the ability to impersonate the owner of an already-configured device without the owner's consent, as a matter of basic security. If the owner loses their credentials they *may* be able to reset the device to its factory-default state and start over—whether to provide that option depends on whether you're mainly trying to secure the data on the device or the device itself. If a physical factory reset option is provided then there is no need for default credentials beyond physical access, and the owner should be required to configure their own unique credentials before the device can be used. On the other hand, if the hardware is valuable in its own right and the goals include deterring theft then it may not make sense to allow the device to be reset at all without first authenticating the owner. In that case it must be accepted that if the owner's credentials are lost the device becomes nothing more than an expensive paperweight.


Reimplementing printk()

Posted Feb 27, 2019 16:44 UTC (Wed) by vadim (subscriber, #35271)
In reply to: Reimplementing printk() by Cyberax
Parent article: Reimplementing printk()

Why not take advantage of that journald already has the metadata needed to uniquely identify a line?


Avoiding the coming IoT dystopia

Posted Feb 27, 2019 13:07 UTC (Wed) by excors (subscriber, #95769)
In reply to: Avoiding the coming IoT dystopia by omgold
Parent article: Avoiding the coming IoT dystopia

If there is a separate "sheet with the preconfigured pw", some fraction of customers will inevitably lose that sheet, then will phone customer support and (quite justifiably) demand to be allowed to use the product they bought.

I guess that's okay for ISP-provided routers - the customer has a contract with the ISP, so customer support has enough information to verify the identity of the caller then tell them the original password. And the ISP already provides customer support in the user's language, and is being paid like $50/month, so it's relatively cheap to deal with the occasional lost password.

But that solution doesn't scale to many IoT devices. Maybe you're buying the device for $10 from a small Chinese manufacturer. They can't afford to provide that level of individual customer support. And you're definitely going to lose track of all these password sheets if you have one per lightbulb. The manufacturer might still care about security, so they'd like a cleverer technical solution that provides a decent level of security without those support costs.


Reimplementing printk()

Posted Feb 27, 2019 11:10 UTC (Wed) by jogness (subscriber, #49775)
In reply to: Reimplementing printk() by Cyberax
Parent article: Reimplementing printk()

Isn't dmesg just using /dev/kmsg? Or are you using "dmesg -S"?


Print less

Posted Feb 27, 2019 10:39 UTC (Wed) by LtWorf (subscriber, #124958)
In reply to: Print less by shemminger
Parent article: Reimplementing printk()

Ah, had this discussion with a coworker, who doesn't want to remove the "verbose" from tar in build logs… Which makes build logs 99% the same list of files over and over.


Reimplementing printk()

Posted Feb 27, 2019 9:45 UTC (Wed) by Cyberax (✭ supporter ✭, #52523)
In reply to: Reimplementing printk() by jogness
Parent article: Reimplementing printk()

I can't read /dev/kmsg, it might not be accessible. dmesg is all I can reliably get :(


Reimplementing printk()

Posted Feb 27, 2019 9:42 UTC (Wed) by jani (subscriber, #74547)
In reply to: Reimplementing printk() by NAR
Parent article: Reimplementing printk()

> I guess this idea could be as controversial as systemd :-)

That part would be https://lwn.net/Articles/464276/


Producing an application for both desktop and mobile

Posted Feb 27, 2019 9:37 UTC (Wed) by cagrazia (guest, #124754)
Parent article: Producing an application for both desktop and mobile

Why HTML5 was not considered for building an interface? I regret that the vision of Steve Jobs, for the first iPhone (HTML5 for everyone) failed so miserably.


Reimplementing printk()

Posted Feb 27, 2019 9:24 UTC (Wed) by NAR (subscriber, #1313)
In reply to: Reimplementing printk() by jogness
Parent article: Reimplementing printk()

If logs are parsed by software, what about using a more structured log format like logmft? I guess this idea could be as controversial as systemd :-)


Yaghmour: gitgeist: a git-based social network proof of concept

Posted Feb 27, 2019 9:15 UTC (Wed) by jezuch (subscriber, #52988)
In reply to: Yaghmour: gitgeist: a git-based social network proof of concept by anselm
Parent article: Yaghmour: gitgeist: a git-based social network proof of concept

What it needs is not to be better - it needs to be different in a meaningful way. Instagram and Snapchat are not direct competitors of Facebook and this is why they became wildly popular, IMO. You do *not* want to build a better Facebook; that niche is already occupied. But this is of course if you intend to build for the general public. There may still be a niche for people who would never associate themselves with a privacy disaster like fb. But it seems to be a small niche.

The real solution, of course, is federation. But good luck getting the big players to open their silos.


Reimplementing printk()

Posted Feb 27, 2019 8:49 UTC (Wed) by jogness (subscriber, #49775)
In reply to: Reimplementing printk() by gdt
Parent article: Reimplementing printk()

The point of making emergency messages stand out is exactly for easier automatic processing. From the cover letter:

"Right now the emergency messages are set apart from the non-emergency messages using '\n'. There have been requests that some special markers could be specifiable to make it easier for parsers."


Reimplementing printk()

Posted Feb 27, 2019 8:45 UTC (Wed) by jogness (subscriber, #49775)
In reply to: Reimplementing printk() by Cyberax
Parent article: Reimplementing printk()

You really should be using the sequence number. That is a reliable, monotonically increasing value. (For my proposal as well.) Also, it allows you to identify if messages are missing.


Avoiding the coming IoT dystopia

Posted Feb 27, 2019 7:28 UTC (Wed) by omgold (guest, #109541)
In reply to: Avoiding the coming IoT dystopia by nybble41
Parent article: Avoiding the coming IoT dystopia

Why would it not suffice that in factory-default state there is a random per-device password preconfigured, but the owner is able to change that?

My reasoning about having the first is that it protects dumb users (who never change the password) from fun guys coming to visit, who want to reflash the firmware unnoticed. It is simply prevented by the owner storing the sheet with the preconfigured pw somewhere unknown to the attacker (which is likely).

About pubkey, it should be enough for the new owner to change the password, no? Not pubkey needed:

- previous owner provides current password, or just the vendor preconfigured-one (the latter would need a factory reset)
- new owner types in current password, which allows him to set his own one


Reimplementing printk()

Posted Feb 27, 2019 7:06 UTC (Wed) by Cyberax (✭ supporter ✭, #52523)
In reply to: Reimplementing printk() by smurf
Parent article: Reimplementing printk()

The application itself is designed to be restartable and I'm using the timestamp to find out unsynchronized logs - I'm just checking the last uploaded log timestamp and then proceed to sync everything that is at or after that timestamp.

Multiple entries with the same timestamp are treated just fine (de-duped), the problem is timestamps going backwards.

I guess I'll have to add more complicated logic to detect unsynchronized messages.


Print less

Posted Feb 27, 2019 6:06 UTC (Wed) by shemminger (subscriber, #5739)
Parent article: Reimplementing printk()

What about silence?
99% of what is in the kernel log is leftovers that some developer was too timid or vain to remove.


Reimplementing printk()

Posted Feb 27, 2019 3:40 UTC (Wed) by smurf (subscriber, #17840)
In reply to: Reimplementing printk() by Cyberax
Parent article: Reimplementing printk()

What does your tool do with boot messages? Today, the first 20 lines or so always end up with a timestamp of zero.

In any case, if I were you I'd add my own timestamp (time when the message was read from the kernel).


Reimplementing printk()

Posted Feb 27, 2019 1:23 UTC (Wed) by Cyberax (✭ supporter ✭, #52523)
Parent article: Reimplementing printk()

I have a tool that depends on increasing message timestamps (it uses them as a position marker). Would it be possible to add an option to fall back to the previous behavior for timestamps?


Containers as kernel objects — again

Posted Feb 27, 2019 1:06 UTC (Wed) by andresfreund (subscriber, #69562)
In reply to: Containers as kernel objects — again by gdt
Parent article: Containers as kernel objects — again

I think part of the reason is that it can actually be bad to have the relevant object in a different state for a while. Consider e.g. the move to support CLOEXEC at creation time, where previously it wasn't fully supported for everything. Setting it at a later time meant that there was a small window where the fd might be leaked if a fork(), exec() where done, e.g. in a signal handler or other thread.


Containers as kernel objects — again

Posted Feb 27, 2019 1:02 UTC (Wed) by gdt (subscriber, #6284)
Parent article: Containers as kernel objects — again

A general question. Why is the function(…, flags) model so dominant when we know that flags often gets out of control? The socket design pattern for setting options — socket(), bind(), setsockopt()..., connect() — seems to age better. To save people referring to a manual: socket() creates an instance, bind() sets mandatory parameters, setsockopt() sets each optional parameter, connect() runs the instance. Of course there are cases when the number of system calls do matter greatly to performance, but I wouldn't have thought that this would be one of them. I'm seeking insight for the unpopularity of this design pattern, not making a comment on the patch.


Reimplementing printk()

Posted Feb 27, 2019 0:43 UTC (Wed) by gdt (subscriber, #6284)
Parent article: Reimplementing printk()

Options to make messages stand out more tend to be painful when automatically processing log messages. Kernel programmers are humans and want log output tuned for humans, but many more log readers are scripts using some sort of regular expression.


Patent exhaustion and open source

Posted Feb 26, 2019 22:37 UTC (Tue) by derobert (subscriber, #89569)
In reply to: Patent exhaustion and open source by nowster
Parent article: Patent exhaustion and open source

More importantly, how many open source exFAT implementations shipped by Android phone vendors who have Microsoft patent licenses; those are a much stronger argument.


Go 1.12 released

Posted Feb 26, 2019 19:49 UTC (Tue) by Cyberax (✭ supporter ✭, #52523)
In reply to: Go 1.12 released by brouhaha
Parent article: Go 1.12 released

It will be default in the next release. Gradually introducing features that have breakage potential is a good practice.


Go 1.12 released

Posted Feb 26, 2019 17:47 UTC (Tue) by brouhaha (subscriber, #1698)
Parent article: Go 1.12 released

Support for TLS 1.3 should be standard and default, and support for everything prior should be opt-in. Yes, that will fail with some peers, but that's because those peers are outdated and need to be fixed.


Memory-mapped I/O without mysterious macros

Posted Feb 26, 2019 17:42 UTC (Tue) by iabervon (subscriber, #722)
In reply to: Memory-mapped I/O without mysterious macros by corbet
Parent article: Memory-mapped I/O without mysterious macros

Oh, nevermind, I was thinking the test in mmiowb_spin_unlock() was for nesting_count dropping to 0, parallel to clearing it when nesting_count went above 0.

But now I'm unsure why we need to track nesting_count at all, and clear mmiowb_pending at the start of an unnested spinlock. Surely nesting_count could only be 0 if either the CPU has never had a spinlock or it released a spinlock since it last did mmio?


Memory-mapped I/O without mysterious macros

Posted Feb 26, 2019 17:12 UTC (Tue) by corbet (editor, #1)
In reply to: Memory-mapped I/O without mysterious macros by iabervon
Parent article: Memory-mapped I/O without mysterious macros

It might cause an extra mmiowb() if more MMIO is done after the inner spinlock is released, but the results should be correct in all cases if I understand things correctly.


Memory-mapped I/O without mysterious macros

Posted Feb 26, 2019 17:09 UTC (Tue) by iabervon (subscriber, #722)
Parent article: Memory-mapped I/O without mysterious macros

Wouldn't this misplace the mmiowb() if you have code that holds some other spinlock before and after it holds the spinlock that prevents other processors from accessing the device? I don't see why any nested spinlocks would necessarily be inside rather than outside the critical section for mmio. It seems like it would be more accurate to annotate spinlocks that protect mmio, and do a barrier when releasing these, and complain if mmio is done without holding any annotated spinlocks.


Avoiding the coming IoT dystopia

Posted Feb 26, 2019 15:56 UTC (Tue) by nybble41 (subscriber, #55106)
In reply to: Avoiding the coming IoT dystopia by omgold
Parent article: Avoiding the coming IoT dystopia

The problem with the WiFi router password model is that the per-device key doesn't change, so the original vender and all previous owners *also* have the key. The new owner needs their own unique secret.

If it's acceptable to reset the device back to a blank factory-default state prior to the sale (or after, assuming physical access is sufficient proof of ownership) then the new owner can program in their own secret when they receive the device. If not, the existing owner needs to transfer control to the new owner prior to the sale, and doing that without letting the existing owner know the new owner's secret requires a public-key authentication system. Reasons not to perform a factory reset include deterring theft or tampering while the device is in transit and/or wanting to preserve any data already on the device.


Avoiding the coming IoT dystopia

Posted Feb 26, 2019 14:06 UTC (Tue) by omgold (guest, #109541)
In reply to: Avoiding the coming IoT dystopia by nybble41
Parent article: Avoiding the coming IoT dystopia

Why so complicated?

They could just do the same as router vendors currently do with Wifi-Passwords.

- store a random (per-device) key/password in the device memory
- print the key/password on a sheet of paper which is delived to the customer together with the device.


Yaghmour: gitgeist: a git-based social network proof of concept

Posted Feb 26, 2019 13:30 UTC (Tue) by jani (subscriber, #74547)
In reply to: Yaghmour: gitgeist: a git-based social network proof of concept by intgr
Parent article: Yaghmour: gitgeist: a git-based social network proof of concept

https://en.wikipedia.org/wiki/Law_of_the_instrument

Which I like to paraphrase as, "If all you have is Excel, everything looks like a spreadsheet."


Producing an application for both desktop and mobile

Posted Feb 26, 2019 12:47 UTC (Tue) by lpechacek (subscriber, #41796)
Parent article: Producing an application for both desktop and mobile

> ... he could find no other project that supports all of those environments from a single code base ...

As far as I can tell, Subsurface build target set is very similar to OpenOrienteering Mapper one.

https://github.com/OpenOrienteering/mapper/releases
https://github.com/OpenOrienteering/mapper/wiki/Target-sy...


Yaghmour: gitgeist: a git-based social network proof of concept

Posted Feb 26, 2019 12:31 UTC (Tue) by intgr (subscriber, #39733)
In reply to: Yaghmour: gitgeist: a git-based social network proof of concept by h2
Parent article: Yaghmour: gitgeist: a git-based social network proof of concept

> I guess there will always be people out there who think tacking on more use cases a tool is not designed for is a positive.

Sounds terribly like web browsers of today. Not sure that replacing web apps with git apps would be such a bad thing. :)


Yaghmour: gitgeist: a git-based social network proof of concept

Posted Feb 26, 2019 9:34 UTC (Tue) by jani (subscriber, #74547)
In reply to: Yaghmour: gitgeist: a git-based social network proof of concept by karim
Parent article: Yaghmour: gitgeist: a git-based social network proof of concept

Also food for thought from a decade ago:

> 5. Better to make a few users love you than a lot ambivalent.
>
> Ideally you want to make large numbers of users love you, but you
> can't expect to hit that right away. Initially you have to choose
> between satisfying all the needs of a subset of potential users,
> or satisfying a subset of the needs of all potential users. Take
> the first. It's easier to expand userwise than
> satisfactionwise. And perhaps more importantly, it's harder to
> lie to yourself. If you think you're 85% of the way to a great
> product, how do you know it's not 70%? Or 10%? Whereas it's easy
> to know how many users you have.

http://www.paulgraham.com/13sentences.html


Distribution quotes of the week

Posted Feb 26, 2019 9:30 UTC (Tue) by jezuch (subscriber, #52988)
In reply to: Distribution quotes of the week by iabervon
Parent article: Distribution quotes of the week

Remeber Doom and the first Quake on old 320x200 displays? When hooked to a "3D accelerator" with higher resolution, Quake looks awful, it's *meant* to be seen blocky and grainy ;)


Yaghmour: gitgeist: a git-based social network proof of concept

Posted Feb 26, 2019 7:16 UTC (Tue) by karim (subscriber, #114)
In reply to: Yaghmour: gitgeist: a git-based social network proof of concept by rgmoore
Parent article: Yaghmour: gitgeist: a git-based social network proof of concept

Thanks for sharing this. I hadn't looked at it from this angle. Food for thought.


Memory-mapped I/O without mysterious macros

Posted Feb 26, 2019 5:16 UTC (Tue) by ejr (subscriber, #51652)
Parent article: Memory-mapped I/O without mysterious macros

We've come a long way from the days when mmap was inconsistent w.r.t. read/write (Ultrix). Thank you!


Yaghmour: gitgeist: a git-based social network proof of concept

Posted Feb 26, 2019 2:17 UTC (Tue) by rgmoore (✭ supporter ✭, #75)
In reply to: Yaghmour: gitgeist: a git-based social network proof of concept by anselm
Parent article: Yaghmour: gitgeist: a git-based social network proof of concept

ou could make available the greatest social network ever – free, stuffed with useful and convenient features, privacy-conscious to a fault, etc. – but require people to go out of their way just a little bit to get access to it (especially when it's not obvious they'll have anyone to network with once they're there) and they're not going to be interested.

I think you're wrong about this. Inconvenience lowers the number of people potentially interested, but it doesn't make the project completely untenable. What it needs is a core group of users who understand the advantages and are interested in socializing with each other. If you have those two things, you can have a social network that is capable of surviving. It may not thrive, but so long as the users can support the network by themselves, it doesn't need to be able to beat Facebook to survive.

It seems to me that what it really needs is a use case that can bring in enough user/developers to get it off the ground, and that the most likely use case is a replacement for email lists as a way for developers to communicate with each other. Developers who already use git will have a lower activation energy to get involved, since they already have key enabling technology handy. And as articles here on LWN keep pointing out, there are serious ongoing problems with email lists as a way of handling development. So what it really needs is a customizable back-end that lets it substitute for LKML as a development discussion platform, and it has both an application and a group of interested users together.


What about async metadata

Posted Feb 26, 2019 1:53 UTC (Tue) by josh (subscriber, #17465)
In reply to: What about async metadata by epa
Parent article: Ringing in a new asynchronous I/O API

> It would be convenient to have a system call that declares 'I plan to read this file in the near future'.

The readahead system call does that.


Shrinking the kernel with link-time optimization

Posted Feb 25, 2019 20:05 UTC (Mon) by praveenv98 (guest, #116175)
Parent article: Shrinking the kernel with link-time optimization

Hi Great Article!

In this passage :

"When CONFIG_HIGHMEM is not defined, is_highmem_idx() (and PageHighMem() derived from it) return zero unconditionally. Any code within functions that follows the "if (PageHighMem(page))" pattern will be automatically optimized away as dead code.

But this works only because is_highmem_idx() is marked static; ".

Why this works only for static functions ? Static keyword implies only about the internal linkage right?

Thanks


The Linux Foundation Launches ELISA Project Enabling Linux In Safety-Critical Systems

Posted Feb 25, 2019 19:47 UTC (Mon) by rahvin (guest, #16953)
In reply to: The Linux Foundation Launches ELISA Project Enabling Linux In Safety-Critical Systems by darwish
Parent article: The Linux Foundation Launches ELISA Project Enabling Linux In Safety-Critical Systems

I thought one of the points of these systems was to not run kernel components that can't be verified. In that the point of these standards and certifications was to make it possible to set a baseline and provide the tools and processes necessary to move beyond this core in a safety conscience way?


Avoiding the coming IoT dystopia

Posted Feb 25, 2019 16:23 UTC (Mon) by Wol (subscriber, #4433)
In reply to: Avoiding the coming IoT dystopia by mjthayer
Parent article: Avoiding the coming IoT dystopia

Which plays straight into the hands of the American "tick the checkboxes oh we must be safe" mentality, and which dodges blame by saying "oh look we carried the procedures mandated by law".

European legislation on the other hand, as someone else pointed out, is more interested in outcomes. So you should legislate that "businesses must be able to demonstrate robust, working procedures for dealing with the bugs in the code in their products". In other words, if your reaction to a bug report is to sweep it under the carpet, or if it's a serious bug to run around like a headless chicken, then you're in breach of the legislation and liable for the consequences.

If, on the other hand, you have a mechanism for creating, and rolling out, bugfixes to your products to deal with problems then it's much easier to show compliance with the legislation - you just point to your security team and say "watch them triage bugs, create fixes, and roll them out". The system is there, it can be watched in action, and while it may not (indeed, pretty definitely won't) fix all the problems it will result in far fewer of them.

Cheers,
Wol


Distribution quotes of the week

Posted Feb 25, 2019 14:18 UTC (Mon) by make (subscriber, #62794)
In reply to: Distribution quotes of the week by pizza
Parent article: Distribution quotes of the week

> how exactly is any of that (or choice of desktop environment) supposed to have an effect on "The clarity and playback of digital music" given the same hardware?

Most likely not at all. There's so much superstition among audiophiles; this used to entertain me, but it got boring after a while.

A low-latency kernel can help, but this is very very unlikely. It will only help if the audio chip's buffer drains empty ("xrun") before the player software can refill it, because the CPU is hogged by other processes. A properly configured real-time kernel will try harder to give the player software a share of the CPU before the buffer drains empty.

An xrun is a very audible thing. If you don't hear it, it doesn't happen, and if it doesn't happen, a real-time kernel has no effect at all. Same goes for any other choice made by this distribution.

Of course, it's a good thing to be "free of unnecessary daemons and services", but that has nothing to do with audio quality.

There are choice which can affect audio quality, for example if the player software (for some reason) decides to resample, or convert to a different sample format. There are ways to avoid it or at least reduce the degradation.

As MPD developer (the player software chosen by Audiophile Linux), I spent a lot of time trying to avoid lossy audio format conversions during playback whenever possible. Even though I'm confident that many such optimizations cannot be possibly distinguished by even the best human ears on earth.


Yaghmour: gitgeist: a git-based social network proof of concept

Posted Feb 25, 2019 12:29 UTC (Mon) by anselm (subscriber, #2796)
In reply to: Yaghmour: gitgeist: a git-based social network proof of concept by flussence
Parent article: Yaghmour: gitgeist: a git-based social network proof of concept

The problem is that in this area (as in many), the mediocre-but-easily-available is the enemy of the good-but-a-hassle-to-access. Right now everybody and their dog either has a Facebook account, or is two minutes of filling in a web form and checking some boxes away from one – and chances are that almost everyone they know is already on the service. What are a few pesky privacy scandals compared to that kind of convenience?

You could make available the greatest social network ever – free, stuffed with useful and convenient features, privacy-conscious to a fault, etc. – but require people to go out of their way just a little bit to get access to it (especially when it's not obvious they'll have anyone to network with once they're there) and they're not going to be interested.

Right now, if you want to be the next Facebook, or even a noticeable blip on the radar in the general area of Facebook, you have to be significantly and obviously better than Facebook for people to even take a second look – and since, privacy issues aside, Facebook is actually pretty good at what it does these days, that's not a trivial bar to clear.


Yaghmour: gitgeist: a git-based social network proof of concept

Posted Feb 25, 2019 10:46 UTC (Mon) by dunlapg (guest, #57764)
In reply to: Yaghmour: gitgeist: a git-based social network proof of concept by Wol
Parent article: Yaghmour: gitgeist: a git-based social network proof of concept

Something that the GDPR's detractors repeatedly "forget" - the GDPR does NOT NOT NOT apply to original material. It only applies to search engines and indexes.

This is absolutely false. Shortly after it was passed, a European court ruled that it applied to hand-written personal notes taken by Jehovah's Witnesses about their door-to-door visits -- notes that are not collected or shared anywhere, but only used by the person who wrote them to refresh their memory on follow-up visits.


Containers as kernel objects — again

Posted Feb 25, 2019 8:18 UTC (Mon) by smcv (subscriber, #53363)
In reply to: Containers as kernel objects — again by NYKevin
Parent article: Containers as kernel objects — again

bubblewrap is an example of a program that forks into a container, turns the forked child into pid 1/the reaper for the container, and forks again to run the useful content of the container. It's the container-runner for Flatpak, among others (analogous to the role of runc in Docker), and Flatpak apps all run as pid 2 inside the container, unless they fork again.

The actual reaper process is very simple: it just calls wait() in a loop. The complicated parts of something like systemd (or even sysvinit) are the parts that set up and run all the services, not the part that reaps processes.


Yaghmour: gitgeist: a git-based social network proof of concept

Posted Feb 25, 2019 7:56 UTC (Mon) by joncb (guest, #128491)
In reply to: Yaghmour: gitgeist: a git-based social network proof of concept by Wol
Parent article: Yaghmour: gitgeist: a git-based social network proof of concept

Article 17 of the GDPR is literally titled "right of erasure ('right to be forgotten')" so i don't agree that there is no "right to be forgotten".
It may have some difficulty applying generally but if a gitgeist poster :-
a) Doxxed someone
b) Posted pictures of them

Then almost certainly. There's a "journalistic, artistic, or literary exception" (Article 85) but it seems like that could be a legal nightmare of the "just cheaper to delete your account" kind.


Avoiding the coming IoT dystopia

Posted Feb 25, 2019 7:28 UTC (Mon) by smurf (subscriber, #17840)
In reply to: Avoiding the coming IoT dystopia by nybble41
Parent article: Avoiding the coming IoT dystopia

So what's the subtle harm in "forcing" people to not buy unsafe food or drugs?

I've got a more tangible harm of not doing that for you: the same people who are unlikely to buy safe food are also unlikely to voluntarily buy health insurance, therefore (when the unsafe food bites them or the unsafe drugs don't cure their disease) they end up as non-paying customers of the hospital's ER, thus forcing increased healthcare costs on the rest of us.

This is not hypothetical. In countries with mandatory insurance, going to a hospital costs an order of magnitude less than in the US.


Avoiding the coming IoT dystopia

Posted Feb 25, 2019 2:52 UTC (Mon) by nybble41 (subscriber, #55106)
In reply to: Avoiding the coming IoT dystopia by sfeam
Parent article: Avoiding the coming IoT dystopia

> Consumers want, and always wanted, safe food and safe medicine.

Not true. *All else being equal*, safe food and medicine are obviously preferable to unsafe food and medicine. However, that condition almost never holds. Safe food and medicine cost more—and given the choice, quite a few people would choose slightly more risky products over safe ones with higher prices. The FDA makes people safer (by some metrics) by forcing them to either pay the higher price or go without, thus trading one highly visible form of harm for another, more subtle kind.


Yaghmour: gitgeist: a git-based social network proof of concept

Posted Feb 25, 2019 1:50 UTC (Mon) by develop7 (guest, #75021)
Parent article: Yaghmour: gitgeist: a git-based social network proof of concept

To paraphrase, "everything is better with BluetoothGit"



Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds