• 2 Posts
  • 32 Comments
Joined 1 year ago
cake
Cake day: July 9th, 2023

help-circle
  • This ignores the first part of my response - if I, as a legitimate user, might get caught up in one of these trees, either by mistakenly approving a bot, or approving a user who approves a bot, and I risk losing my account if this happens, what is my incentive to approve anyone?

    Additionally, let’s assume I’m a really dumb bot creator, and I keep all of my bots in the same tree. I don’t bother to maintain a few legitimate accounts, and I don’t bother to have random users approve some of the bots. If my entire tree gets nuked, it’s still only a few weeks until I’m back at full force.

    With a very slightly smarter bot creator, you also won’t have a nice tree:

    As a new user looking for an approver, how do I know I’m not requesting (or otherwise getting) approved by a bot? To appear legitimate, they would be incentivized to approve legitimate users, in addition to bots.

    A reasonably intelligent bot creator would have several accounts they directly control and use legitimately (this keeps their foot in the door), would mix reaching out to random users for approval with having bots approve bots, and would approve legitimate users in addition to bots. The tree ends up as much more of a tangled graph.


  • This ignores the first part of my response - if I, as a legitimate user, might get caught up in one of these trees, either by mistakenly approving a bot, or approving a user who approves a bot, and I risk losing my account if this happens, what is my incentive to approve anyone?

    Additionally, let’s assume I’m a really dumb bot creator, and I keep all of my bots in the same tree. I don’t bother to maintain a few legitimate accounts, and I don’t bother to have random users approve some of the bots. If my entire tree gets nuked, it’s still only a few weeks until I’m back at full force.

    With a very slightly smarter bot creator, you also won’t have a nice tree:

    As a new user looking for an approver, how do I know I’m not requesting (or otherwise getting) approved by a bot? To appear legitimate, they would be incentivized to approve legitimate users, in addition to bots.

    A reasonably intelligent bot creator would have several accounts they directly control and use legitimately (this keeps their foot in the door), would mix reaching out to random users for approval with having bots approve bots, and would approve legitimate users in addition to bots. The tree ends up as much more of a tangled graph.


  • I think this would be too limiting for humans, and not effective for bots.

    As a human, unless you know the person in real life, what’s the incentive to approve them, if there’s a chance you could be banned for their bad behavior?

    As a bot creator, you can still achieve exponential growth - every time you create a new bot, you have a new approver, so you go from 1 -> 2 -> 4 -> 8. Even if, on average, you had to wait a week between approvals, in 25 weeks (less that half a year), you could have over 33 million accounts. Even if you play it safe, and don’t generate/approve the maximal accounts every week, you’d still have hundreds of thousands to millions in a matter of weeks.


  • If your computer is compromised to the point someone can read the key, read words 2-5 again.

    This is FUD. Even if Signal encrypted the local data, at the point someone can run a process on your system, there’s nothing to stop the attacker from adding a modified version of the Signal app, updating your path, shortcuts, etc to point to the malicious version, and waiting for you to supply the pin/password. They can siphon the data off then.

    Anyone with actual need for concern should probably only be using their phone anyway, because it cuts your attack surface by half (more than half if you have multiple computers), and you can expect to be in possession/control of your phone at all times, vs a computer that is often left unattended.




  • This kind of reminds me of Crispin Glover, from Back to the Future. He tried to negotiate a higher pay for the second movie, so the producers hired a different actor to play the role, but deliberately made the actor up to look like Glover. In response, Glover sued the producers and won. It set a critical precedent for Hollywood, about using someone’s likeness without consent.

    The article mentions they reached out to her two days before the launch - if she had said ‘OK,’ there’s no way they could have even recorded what they needed from her, let alone trained the model in time for the presentation. So they must have had a Scarlett Johansson voice ready to go. Other than training the model on movies (really not ideal for a high quality voice model), how would they have gotten the recordings they needed?

    If they hired a “random” voice actress, they might not run into issues. But if at any point they had a job listing, a discussion with a talent manager, or anything else where they mentioned wanting a “Scarlett Johansson sound-alike,” they might have dug themselves a nice hole here.

    Specifically regarding your question about hiring a voice actor that sounds like someone else - this is commonly done to replace people for cartoons. I don’t think it’s an issue if you are playing a character. But if you deliberately impersonate a person, there might be some trouble.



  • For what it’s worth, I just bought a TCL 55S450F (55 inch 4K HDR FireTV) specifically because it does not ever need an internet connection to function (expressly stated in the manual). It is currently on Amazon for $268 (they have other sizes at other prices). It’s a great TV, considering the price. The only real drawback for me is the remote is Bluetooth, rather than infrared (less compatible with universal remotes).

    Note that for full dumb TV effect, you’ll want to go into the settings and tell it to resume the last input, rather than going to the home screen when you turn it on (without connecting it to the Internet, the home screen is basically just a big banner telling you it’s not connected, and when you dismiss that, it just allows you to access inputs and manage settings).






  • grep -r string .

    The flag should go before the pattern.

    -r to search recursively, . refers to the current directory.

    Why use . instead of *? Because on it’s own, * will (typically) not match hidden files. See the last paragraph of the ‘Origin’ section of: https://en.m.wikipedia.org/wiki/Glob_(programming). Technically your ls command (lacking the -a) flag would also skip hidden files, but since your comment mentions finding the string in ‘any files,’ I figured hidden files should also be covered (the find commands listed would also find the hidden files).

    EDIT: Should have mentioned that -R is also recursive, but will follow symlinks, where -r will ignore them.



  • This is not true. The GPL does not force anyone to give up their code, unless they distribute it. From the “Definitions” section:

    A “covered work” means either the unmodified Program or a work based on the Program.

    And

    To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

    And from the “Basic Permissions” section:

    You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.

    Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.

    Under the terms of the GPL, the owner can revoke your access for any violation of the license, and at their discretion, they can make that revocation permanent. The GPL does not guarantee equal treatment - an author can punish one person harshly, and another not at all. It still comes down to the author. Yes, there is a small barrier in that you have to find a violation, but if you look hard enough, you can probably find a violation - especially in large projects using libraries distributed under multiple different licenses.

    the FUTO license can revoke the license just because Rossmann says so. It is a mechanism to keep Rossmann the owner of everything that spawns from the code of the app and being the only one who can make money from it. If Rossmann doesn’t like someone who wants to redistributes the app, he can immediately revoke their license.

    Quoting from my comment here:

    They’re just trying to prevent a company from making money off the free labor of the authors. It’s the same issue that has plagued other projects, such as Elastic Search, which ultimately led it to change licenses. And it’s why MariaDB created the BSL, which they and other companies have adopted (very similar terms here - source free to use for non-commercial purposes).

    If the hangup is specifically that they can change the terms, or revoke rights altogether, the other licenses also allow for that - that’s how these projects are changing licenses at all, and it happens quite a bit. I have personally contributed to projects that were GPL, and then went Apache.

    only one who can make money from it

    This is not true. You can make and sell plugins, you could offer support, you could sell your services as a code auditor/security expert… anything other than selling the code you didn’t write. On top of that, in practice, this isn’t different from anything else - most contributors to open source projects don’t profit from them, unless they work for the organization that owns the project. When the non-owners do profit, it’s usually big companies and results in the license changes I’ve described above.


  • A user that doesn’t care about licensing is typically called a pirate.

    The license literally does not govern the usage of the app. Here’s the first line:

    This license grants you the rights, and only the rights, set out below in respect of the source code provided.

    Read the entire license (it’s only 32 lines), and you won’t find anything related to using the product, only the code.

    This license should only be scary to developers, who might build on the project, and then have it taken away. As a user, your concerns are different, and this license vs the GPL, or any other FOSS, or even source available license, are more-or-less the same. As a user, your primary concerns are probably going to be related to the security and privacy related aspects, and as long as you have access to the source, you can audit it and ensure it meets your standards. If they choose to revoke access to the code, as a user, you’re in the same boat you described - don’t take new versions because you can’t audit them, but you can stay on the old version. They can’t revoke that access with this license, because again, this license literally does not govern usage of the product.


  • repackaging is a fundamental software freedom

    Re-packaging is fine. You just can’t sell it.

    They’re just trying to prevent a company from making money off the free labor of the authors. It’s the same issue that has plagued other projects, such as Elastic Search, which ultimately led it to change licenses. And it’s why MariaDB created the BSL, which they and other companies have adopted (very similar terms here - source free to use for non-commercial purposes).

    If the hangup is specifically that they can change the terms, or revoke rights altogether, the other licenses also allow for that - that’s how these projects are changing licenses at all, and it happens quite a bit. I have personally contributed to projects that were GPL, and then went Apache.

    As a developer, I could certainly see not wanting to build on the project while the license is what it is, but as a user, I don’t think this license is bad. I also think this is likely temporary (hence the name - “FUTO Temporary License”), and the tight grip on the rights are probably just so they can re-license later (hopefully to something a little more permissive). I could definitely be wrong, but given Louis’s track record of fighting for things like right-to-repair, I’d give him the benefit of the doubt here. He could certainly prove me wrong though, if they do anything shady. Feel free to rub it in my face if he ever does.

    Edit:

    Just for proof, here’s the specific line that says you can re-package and redistribute, from section 2, line 2:

    1. You may provide the code to anyone else and publish excerpts of it for the purposes of review, compilation and non-commercial distribution, provided that when you do so you make any recipient of the code aware of the terms of this license, they must agree to be bound by the terms of this license and you must attribute the code to the provider.

  • As a user, or a developer? As a user, I don’t think it matters. As a developer, I think other licenses have similar carve outs, e.g. the GPLv3 section 8 is a whole section on “termination” - the copyright holder can revoke your rights for any ticky-tack violation of the license, and at their discretion, the revocation can be permanent.

    Additionally, even with other FOSS licenses, the copyright holder can re-license the project. If I had to guess, this ability to re-license is probably why it is written as it is - the license is called the “FUTO Temporary License.” I would assume it’s written as is so they can re-license later, and they just want to cover their bases now. It’s entirely possible that’s incorrect, and they’ll clamp down. I’m personally willing to give them the benefit of the doubt (though having said that, I have no intention of buying, using, or contributing to this project).



  • I noted in another comment that SearXNG can’t do anything about the trackers that your browser can’t do, and solving this at the browser level is a much better solution, because it protects you everywhere, rather than just on the search engine.

    Routing over Tor is similar. Yes, you can route the search from your SearXNG instance to Google (or whatever upstream engine) over Tor, and hide your identity from Google. But then you click a link, and your IP connects to the IP of whatever site the results link to, and your ISP sees that. Knowing where you land can tell your ISP a lot about what you searched for. And the site you connected to knows your IP, so they get even more information - they know every action you took on the site, and everything you viewed. If you want to protect all of that, you should just use Tor on your computer, and protect every connection.

    This is the same argument for using Signal vs WhatsApp - yes, in WhatsApp the conversation may be E2E encrypted, but the metadata about who you’re chatting with, for how long, etc is all still very valuable to Meta.

    To reiterate/clarify what I’ve said elsewhere, I’m not making the case that people shouldn’t use SearXNG at all, only that their privacy claims are overstated, and if your goal is privacy, all the levels of security you would apply to SearXNG should be applied at your device level: Use a browser/extension to block trackers, use Tor to protect all your traffic, etc.


  • Can you describe your use case more?

    I don’t think format matters - if you’ve got multiple processes writing simultaneously, you’ll have a potential for corruption. What you want is a lock file. Basically, you just create a separate file called something like my process.lock. When a process wants to write to the other file, you check if the lock file exists - if yes, wait until it doesn’t; if no, create it. In the lock file, store just the process id of the file that has the lock, so you can also add logic to check if the process exists (if it doesn’t, it probably died - you may have to check the file you’re writing to for corruption/recover). When done writing, delete the file to release the lock.

    See https://en.wikipedia.org/wiki/File_locking, and specifically the section on lock files.

    This is a common enough pattern there are probably libraries to handle a lot of the logic for you, though it’s also simple enough to handle yourself.