1. 3

    Looks pretty neat. Seeing some oddities where it will pick out the word “ground” and ignore the rest of the ingredient. For example, if I tell it I have cheddar cheese and no sausage, it suggests a recipe involving ground sausage. Based on the highlighting, it thinks “Ground” is an ingredient and ignores the fact it’s sausage.

    1. 3

      Thanks!

      That’s puzzling, ground is explicitly called out as something that isn’t a stopword, but also shouldn’t be a valid product (ingredient) name.

      Now filed on GitHub as openculinary/knowledge-graph#64 if you’d like to follow resolution.

    1. 24

      Since it’s a medium post with a clickbait title here’s a TLDR:

      While attempting to hack PayPal with me during the summer of 2020, Justin Gardner (@Rhynorater) shared an interesting bit of Node.js source code found on GitHub.

      The code was meant for internal PayPal use, and, in its package.json file, appeared to contain a mix of public and private dependencies — public packages from npm, as well as non-public package names, most likely hosted internally by PayPal. These names did not exist on the public npm registry at the time.

      The idea was to upload my own “malicious” Node packages to the npm registry under all the unclaimed names, which would “phone home” from each computer they were installed on.

      Apparently, it is quite common for internal package.json files, which contain the names of a javascript project’s dependencies, to become embedded into public script files during their build process, exposing internal package names. Similarly, leaked internal paths or require() calls within these files may also contain dependency names. Apple, Yelp, and Tesla are just a few examples of companies who had internal names exposed in this way.

      This type of vulnerability, which I have started calling dependency confusion, was detected inside more than 35 organizations to date, across all three tested programming languages.

      Feels weird and scary that this had always been possible! Another incident to add to the “package management is solved” meme. Great article.

      1. 10

        public packages from npm, as well as non-public package names, most likely hosted internally by PayPal.

        Even if you’re not using npm’s organization feature to host your modules, you probably want to use names scoped to an npm account or organization you control, so others can’t publish packages with matching names to the public registry.

        That said, dependency managers probably shouldn’t be running arbitrary code on users machines during installation, as in the case with the preinstall used in this example. Unfortunately, this was reported back in 2016 (VU#319816) and nothing came of it.

        1. 8

          I don’t really know how anything about npm dependency fetching works, but shouldn’t the logic be, “Do we have an internal package called ‘foo’? If not, look for public packages called ‘foo’.”? Based on the article description it sounds like it must be doing, “Is there a public package called ‘foo’? If not, look for an internal one”. Is this really how it works?

          1. 7

            npm has a limited concept of different registries. It fetches all packages from the one set in the global configuration file, a environment variable, or a CLI flag. The exception is scoped modules (modules whose names look like @mycompany/foobar), where each scope (the @mycompany part) can be assigned a registry.

            If you pay npm, you can set scoped packages published on their registry to only be installable by users logged into your organization.

            Before scoped modules were added to npm, the best you could do is create unscoped packages that didn’t exist, and point npm at a proxy that decided what backend to fetch a package from based on the requested name. A common implementation checked an internal registry first, and if it didn’t exist, then it fetches from the public registry.

            The author of this post provides examples of internal modules being unscoped, so I’m assume these companies are relying on developers connecting to a proxy to fetch the correct dependencies. I could easy invision scenarios where new developers, CI systems, IDEs are improperly configured and fetch those names instead from the public registry, thus this vulnerability.

            1. 3

              If the package exists on both [the internal and public], it defaults to installing from the source with the higher version number.

              The kicker there being you can make an arbitrarily higher-versioned package e.g., 9000.0.1 to force the public (malicious, in this context) dependency. The article also describes that same behavior in Artifactory which is popular within companies to host various internal packages (including npm):

              Artifactory uses the exact same vulnerable algorithm described above to decide between serving an internal and an external package with the same name.

              I think for npm, using the save-exact feature would be a fix—and imho a sane default—but I’m not 100% certain.

              1. 2

                I’m not sure this is accurate, or at least it wasn’t the implementation of any proxies I worked on or with back when I was still working on npm.

                npm would ask the proxy for information about a package name. All the ones I used would query that metadata from an internal version, and only if it returned nothing, did it fetch information from the public proxy.

                This implementation choice was made in the proxies to allow teams to hold back or override open source modules they used (especially useful with deeply nested dependencies before lockfiles) and to avoid situations where someone else claimed the same name to try to get you to fetch it instead (this being before scoped modules).

                I haven’t been in the Node.js community for about 4 years now, and have never had access to Artifactory, so I can’t confirm or deny what implementation they’re using now. It would be a shame if they forged ahead without the security concerns open sourced alternatives had long considered.

                1. 1

                  I’ll be honest: not sure on the technical differences to how Artifactory works compared to the proxies you worked with. When I’ve previously used Artifactory (as a humble user) it’s effectively worked as a pull-through cache of sorts: serve a package that exists internally then fall back to the public if necessary. What comes to mind as of recent was the change by Docker Hub that rate-limited requests.

                  Anyways, your reply made me think more specifically about the Node.js/npm vector from the article:

                  Unless specified otherwise (via --registry or in a .npmrc) then the default (public) registry is used. Given that, I think it’s not out of question for a npm install acme-co-internal-package to be blindly ran which would hit the public (malicious) package if there’s no internal registry specified. Just my $0.02.

                  1. 2

                    Yeah, that’s the conclusion I wrote up thread.

                    I could easy invision scenarios where new developers, CI systems, IDEs are improperly configured and fetch those names instead from the public registry, thus this vulnerability.

                    1. 1

                      D’oh, I missed that. Just like the pesky step in a project’s README that tells (hypothetical) you to set the internal registry. ;^]

                      I’m sure it’s a curious sight internally at npm to see all the 404ing requests for packages—many of which exist in an internal registry.

          2. 3

            The article is (intentionally, I believe) vague about it, but I’m curious how they came across all the dependency declaration files in the first place.

            common for internal package.json files, which contain the names of a javascript project’s dependencies, to become embedded into public script files

            I don’t quite follow. Anyone have insights on the semantics of “leak” in this context?

            1. 1

              I think they might be concatenated into the production minified js file due to a misconfigured js build pipeline, but that’s just a guess.

          1. 20

            Python package maintainers rarely use semantic versioning and often break backwards compatibility in minor releases. One of several reasons that dependency management is a nightmare in Python world.

            1. 18

              I generally consider semantic versioning to be a well-intentioned falsehood. I don’t think that package vendors can have effective insight into which of their changes break compatibility when they can’t have a full bottom-up consumer graph for everyone who uses it.

              I don’t think that Python gets this any worse than any other language.

              1. 20

                I’ve heard this opinion expressed before… I find it to be either dangerously naive or outright dishonest. There’s a world of difference between a) the rare bug fix release or nominally-orthogonal-feature-add release that unintentionally breaks downstream code and b) intentionally changing and deprecating API’s in “minor” releases.

                In my view, adopting SemVer is a statement of values and intention. It communicates that you value backwards compatibility and intend to maintain it as much as is reasonably possible, and that you will only knowingly break backwards compatibility on major release increments.

                1. 18

                  In my view, adopting SemVer is a statement of values and intention. It communicates that you value backwards compatibility and intend to maintain it as much as is reasonably possible, and that you will only knowingly break backwards compatibility on major release increments.

                  A “statement of values and intention” carries no binding commitment. And the fact that you have to hedge with “as much as is reasonably possible” and “only knowingly break” kind of gives away what the real problem is: every change potentially alters the observable behavior of the software in a way that will break someone’s reliance on the previous behavior, and therefore the only way to truly follow SemVer is to increment major on every commit. Which is the same as declaring the version number to be meaningless, since if every change is a compatibility break, there’s no useful information to be gleaned from seeing the version number increment.

                  And that’s without getting into some of my own direct experience. For example, I’ve been on the Django security team for many years, and from time to time someone has found a security issue in Django that cannot be fixed in a backwards-compatible way. Thankfully fewer of those in recent years since many of them related to weird old functionality dating to Django’s days as a newspaper CMS, but they do happen. Anyway, SemVer’s answer to this is “then either don’t fix it, or do but no matter how you fix it you’ve broken SemVer and people on the internet will scream at you and tell you that you ought to be following SemVer”. Not being a fan of no-win situations, I am content that Django has never and likely never will commit to following SemVer.

                  1. 31

                    A “statement of values and intention” carries no binding commitment.

                    A label on a jar carries no binding commitment to the contents of the jar. I still appreciate that my salt and sugar are labelled differently.

                    1. 2

                      Selling the jar with that label on it in many countries is a binding commitment and puts you under the coverage of food safety laws, though.

                    2. 6

                      Anyway, SemVer’s answer to this is “then either don’t fix it, or do but no matter how you fix it you’ve broken SemVer and people on the internet will scream at you and tell you that you ought to be following SemVer”.

                      What do you mean? SemVer’s answer to “this bug can’t be fixed in a backwards-compatible way” is to increment the major version to indicate a breaking change. You probably also want to get the message across to your users by pushing a new release of the old major version which prints some noisy “this version of blah is deprecated and has security issues” messages to the logs.

                      It’s not perfect, I’m not saying SemVer is a silver bullet. I’m especially worried about the effects of basing automated tooling on the assumption that no package would ever push a minor or patch release with a breaking change; it seems to cause ecosystems like the NPM to be highly fragile. But when taken as a statement of intent rather than a guarantee, I think SemVer has value, and I don’t understand why you think your security issue anecdote requires breaking SemVer.

                      1. 7

                        What do you mean? SemVer’s answer to “this bug can’t be fixed in a backwards-compatible way” is to increment the major version to indicate a breaking change.

                        So, let’s consider Django, because I know that well (as mentioned above). Typically Django does a feature release (minor version bump) every 8 months or so, and every third one bumps the major version and completes a deprecation cycle. So right now Django 3.1 is the latest release; next will be 3.2 (every X.2 is an LTS), then 4.0.

                        And the support matrix consists of the most recent feature release (full bugfix and security support), the one before that (security support only), and usually one LTS (but there’s a period at the end of each where two of them overlap). The policy is that if you run on a given LTS with no deprecation warnings issued from your code, you’re good to upgrade to the next (which will be a major version bump; for example, if you’re on 2.2 LTS right now, your next LTS will be 3.2).

                        But… what happens when a bug is found in an LTS that can’t be fixed in a backwards-compatible way? Especially a security issue? “Support for that LTS is cut off effective immediately, everybody upgrade across a major version right now” is a non-starter, but is what you propose as the correct answer. The only option is to break SemVer and do the backwards-incompatible change as a bugfix release of the LTS. Which then leads to “why don’t you follow SemVer” complaints. Well, because following SemVer would actually be worse for users than this option is.

                        1. 3

                          But… what happens when a bug is found in an LTS that can’t be fixed in a backwards-compatible way?

                          Why do people run an LTS version, if not for being able to avoid worrying about it as a dependency? If you’re making incompatible changes: forget about semver, you’re breaking the LTS contract, and you may as well tell drop the LTS tag and people to run the latest.

                          1. 1

                            you may as well tell drop the LTS tag and people to run the latest

                            I can think of only a couple instances in the history of Django where it happened that a security issue couldn’t be fixed in a completely backwards-compatible way. Minimizing the breakage for people – by shipping the fix into supported releases – was the best available option. It’s also completely incompatible with SemVer, and is a great example of why SemVer is at best a “nice in theory, fails in practice” idea.

                            1. 3

                              Why not just tell them to upgrade? After all, your argument is essentially that stable APIs are impossible, so why bother with LTS? Every argument against semver also applies against LTS releases.

                              1. 3

                                After all, your argument is essentially that stable APIs are impossible

                                My argument is that absolute perfect 100% binding commitment to never causing a change to observable behavior ever under any circumstance, unless also incrementing the major version at the same time and immediately dropping support for all users of previous versions, is not practicable in the real world, but is what SemVer requires. Not committing to SemVer gives flexibility to do things like long-term support releases, and generally people have been quite happy with them and also accepting of the single-digit number of times something had to change to fix a security issue.

                          2. 2

                            “Support for that LTS is cut off effective immediately, everybody upgrade across a major version right now” is a non-starter

                            If it’s a non-starter then nobody should be getting the critical security patch. You’re upgrading from 2.2 to 3.0 and calling it 2.2.1 instead. That doesn’t change the fact that a breaking change happened and you didn’t bump the major version number.

                            You can’t issue promises like “2.2.X will have long term support” because that’s akin to knowing the future. Use a codename or something.

                            1. 7

                              It’s pretty clear you’re committed to perfect technical adherence to a rule, without really giving consideration to why the rule exists. Especially if you’re at the point of “don’t commit to supporting things, because supporting things leads to breaking SemVer”.

                              1. 4

                                They should probably use something like SemVer but with four parts, e.g. Feature.Major.Minor.Patch

                                • Feature version changes -> We’ve made significant changes / a new release (considered breaking)
                                • Major version change -> We’ve made breaking changes
                                • Minor version change -> Non breaking new features
                                • Patch version change -> Other non-breaking changes

                                That way 2.*.*.* could be an LTS release, which would only get bug fixes, but if there was an unavoidable breaking change to fix a bug, you’d signal this in the version by e.g. going from 2.0.5.12 to 2.1.0.0. Users will have to deal with the breaking changes required to fix the bug, but they don’t have to deal with all the other major changes which have gone into the next ‘Feature’ release, 3.*.*.*. The promise that 2.*.*.*, as an LTS, will get bug fixes is honored. The promise that the major version must change on a breaking change is also honored.

                                SemVer doesn’t work if you try to imbue the numbers with additional meanings that can contradict the SemVer meanings.

                                1. 3

                                  This scheme is very similar to Haskell’s Package Versioning Policy (PVP).

                                2. 1

                                  I’m saying supporting things and adhering to SemVer should be orthogonal.

                          3. 5

                            every change potentially alters the observable behavior of the software

                            This is trivially false. Adding a new helper function to a module, for example, will never break backwards compatibility.

                            In contrast, changing a function’s input or output type is always a breaking change.

                            By failing to even attempt to distinguish between non-breaking and breaking changes, you’re offloading work onto the package’s users.

                            Optimize for what should be the common case: non-breaking changes.

                            Edit: to expand on this, examples abound in the Python ecosystem of unnecessary and intentional breaking changes in “minor” releases. Take a look at the numpy release notes for plenty of examples.

                            1. 7

                              Python’s dynamic nature makes “adding a helper function” a potentially breaking change. What if someone was querying, say, all definitions of a module and relying on the length somehow? I know this is a bit of a stretch, but it is possible that such a change would break code. I still value semver though.

                              1. 3

                                The number of definitions in a module is not a public API. SemVer only applies to public APIs.

                                1. 4

                                  If you can access it at run-time, then someone will depend on it, and it’s a bit late to call it “not public”. Blame Python for exposing stuff like the call stack to introspection.

                                  1. 2

                                    Eh no? SemVer is very clear about this. Public API is whatever software declares it to be. Undeclared things can’t be public API, by definition.

                                    1. 7

                                      Python has no concept of public vs private. It’s all there all the time. As they say in python land, “We’re all consenting adults here”.

                                      I’m sure, by the way, when Hettinger coined that phrase he didn’t purposely leave out those under the age of 18. Language is hard. :P

                              2. 1

                                Adding a new helper function to a module, for example, will never break backwards compatibility.

                                Does this comic describe a violation of SemVer?

                                You seriously never know what kinds of things people might be relying on, and a mere definition of compatibility in terms of input and output types is woefully insufficient to capture the things people will expect in terms of backwards compatibility.

                                1. 6

                                  No, it does not descripbe a violation of SemVer, because spacebar heating is not a public API. SemVer is very clear about this. You are right people will still complain about backward compatibility even if you are keeping 100% correct SemVer.

                            2. 6

                              I would agree if violations were rare. Every time I’ve tried to solve dependency issues on Python, about 75% of the packages I look into have broken semver on some level. Granted, I probably have a biased sampling technique, but I find it extremely hard to believe that it’s a rare issue.

                              Backwards compatibility is hard to reason about, and the skill is by no means pervasive. Even having a lot of experience looking for compatibility breaks, I still let things slip, because it can be hard to detect. One of my gripes with semver is that it doesn’t scale. It assumes that tens of thousands of open source devs with no common training program or management structure all understand what a backwards breaking change is, and how to fix it.

                              Testing for compatibility breaks is rare. I can’t think of any Python frameworks that help here. Nor can I think of any other languages that address this (Erlang might, but I haven’t worked with it first-hand). The most likely projects to test for compatibility between releases are those that manage data on disk or network packets. Even among those, many rely on code & design review to spot issues.

                              It communicates that you value backwards compatibility and intend to maintain it as much as is reasonably possible, and that you will only knowingly break backwards compatibility on major release increments.

                              It’s more likely that current package managers force you into semver regardless if you understand how it’s supposed to be used. The “statement of values” angle is appealing, but without much evidence. Semver is merely popular.

                              1. 7

                                I guess this depends on a specific ecosystem? Rust projects use a lot of dependencies, all those deps use semver, and, in practice, issues rarely arise. This I think is a combination of:

                                • the fact that semver is the only option in Rust
                                • the combination of guideline to not commit Cargo.lock for libraries + cargo picking maximal versions by default. This way, accidental incompatibilities are quickly discovered & packages are yanked.
                                • the guideline to commit Cargo.lock for binaries and otherwise final artifacts: that way folks who use Rust and who have the most of deps are shielded from incompatible updates.
                                • the fact that “library” is a first-class language construct (crate) and not merely a package manager convention + associated visibility rules makes it easier to distinguish between public & private API.
                                • Built-in support for writing test from the outside, as-if you are consumer of the library, which also catches semver-incompatible changes.

                                This is not to say that semver issues do not happen, just that they are rare enough. I’ve worked with Rust projects with 200-500 different deps, and didn’t pensive semver breakage being a problem.

                                1. 5

                                  I would add that the Rust type system is expressive enough that many backwards incompatible changes require type signature changes which are much more obvious than violations of some implicit contract.

                              2. 6

                                I don’t think I have a naïve view of versioning; putting on my professional hat here, I have a decade of experience dealing with a dependency modeling system that handles the versions of hundreds of thousands of interrelated software artifacts that are versioned more or less independently of each other, across dozens of programming languages and runtimes. So… some experience here.

                                In all of this time, I’ve seen every single kind of breaking change I could imagine beforehand, and many I could not. They occurred independent of how the vendor of the code thought of it; a vendor of a versioned library might think that their change is minor, or even just a non-impacting patch, but outside of pure README changes, it turns out that they can definitely be wrong. They certainly had good intentions to communicate the nature of the change, but that intention can run hard into reality. In the end, the only way to be sure is to pin your dependencies, all the way down, and to test assiduously. And then upgrade them frequently, intentionally, and on a cadence that you can manage.

                                1. 1

                                  I don’t think I have a naïve view of versioning; putting on my professional hat here, I have a decade of experience dealing with …

                                  Here here. My experience isn’t exactly like @offby1’s but I can vouch for the rest.

                                2. 4

                                  to be either dangerously naive or outright dishonest

                                  This phrase gets bandied around the internet so much I’m surprised its not a meme.

                                  SemVer is … okay, but you make it sound like lives depend on it. There’s a lot of software running mission critical systems without using SemVer and people aren’t dying everyday because of it. I think we can calm down.

                              3. 3

                                Thats the problem of the package management being so old. Back then semantic versioning wasnt that common and it never really caught on. In my opinion the PyPA should make a push to make more packages use semantic versioning. I‘m seeing this trend already, but its too slow…

                              1. 2

                                While docker is probably the most commonly used container, it seems a little disingenuous to present this article as drawbacks of developing in “containers”, when most of the issues mentioned are specific to docker and some are even specific to the docker image which the author has chosen.

                                1. 36

                                  Hello, I am here to derail the Rust discussion before it gets started. The culprit behind sudo’s vast repertoire of vulnerabilities, and more broadly of bugs in general, is accountable almost entirely to one matter: its runaway complexity.

                                  We have another tool which does something very similar to sudo which we can compare with: doas. The portable version clocks in at about 500 lines of code, its man pages are a combined 157 lines long, and it has had two CVEs (only one of which Rust would have prevented), or approximately one every 30 months.

                                  sudo is about 120,000 lines of code (100x more), its had 140 CVEs, or about one every 2 months since the CVE database came into being 21 years ago. Its man pages are about 10,000 lines and include the following:

                                  $ man sudoers | grep -C1 despair
                                  The sudoers file grammar will be described below in Extended Backus-Naur
                                  Form (EBNF).  Don't despair if you are unfamiliar with EBNF; it is fairly
                                  simple, and the definitions below are annotated.
                                  

                                  If you want programs to be more secure, stable, and reliable, the key metric to address is complexity. Rewriting it in Rust is not the main concern.

                                  1. 45

                                    its had 140 CVEs

                                    Did you even look at that list? Most of those are not sudo vulnerabilities but issues in sudo configurations distros ship with. The actual list is more like 39, and a number of them are “disputed” and most are low-impact. I didn’t do a full detailed analysis of the issues, but the implication that it’s had “140 security problems” is simply false.

                                    sudo is about 120,000 lines of code

                                    More like 60k if you exclude the regress (tests) and lib directories, and 15k if you exclude the plugins (although the sudoers plugin is 40k lines, which most people use). Either way, it’s at least half of 120k.

                                    Its man pages are about 10,000 lines and include the following:

                                    12k, but this also includes various technical documentation (like the plugin API); the main documentation in sudoers(1) is 741 lines, and sudoers(5) is 3,255 lines. Well under half of 10,000.

                                    We have another tool which does something very similar to sudo which we can compare with: doas.

                                    Except that it only has 10% of the features, or less. This is good if you don’t use them, and bad if you do. But I already commented on this at HN so no need to repeat that here.

                                    1. 12

                                      You’re right about these numbers being a back-of-the-napkin analysis. But even your more detailed analysis shows that the situation is much graver with sudo. I am going to include plugins, becuase if they ship, they’re a liability. And their docs, because they felt the need to write them. You can’t just shove the complexity you don’t use and/or like under the rug. Heartbleed brought the internet to its knees because of a vulnerability in a feature no one uses.

                                      And yes, doas has 10% of the features by count - but it has 99% of the features by utility. If you need something in the 1%, what right do you have to shove it into my system? Go make your own tool! Your little feature which is incredibly useful to you is incredibly non-useful to everyone else, which means fewer eyes on it, and it’s a security liability to 99% of systems as such. Not every feature idea is meritous. Scope management is important.

                                      1. 9

                                        it has 99% of the features by utility

                                        Citation needed.

                                        what right do you have to shove it into my system?

                                        Nobody is shoving anything into your system. The sudo maintainers have the right to decide to include features, and they’ve been exercising that right. You have the right to skip sudo and write your own - and you’ve been exercising that right too.

                                        Go make your own tool!

                                        You’re asking people to undergo the burden of forking or re-writing all of the common functionality of an existing tool just so they can add their one feature. This imposes a great cost on them. Meanwhile, including that code or feature into an existing tool imposes only a small (or much smaller) cost, if done correctly - the incremental cost of adding a new feature to an existing system.

                                        The key phrase here is “if done correctly”. The consensus seems to be that sudo is suffering from poor engineering practices - few or no tests, including with the patch that (ostensibly) fixes this bug. If your software engineering practices are bad, then simpler programs will have fewer bugs only because there’s less code to have bugs in. This is not a virtue. Large, complex programs can be built to be (relatively) safe by employing tests, memory checkers, good design practices, good architecture (which also reduces accidental complexity) code reviews, and technologies that help mitigate errors (whether that be a memory-safe GC-less language like Rust or a memory-safe GC’ed language like Python). Most features can (and should) be partitioned off from the rest of the design, either through compile-time flags or runtime architecture, which prevents them from incurring security or performance penalties.

                                        Software is meant to serve the needs of users. Users have varied use-cases. Distinct use-cases require more code to implement, and thereby incur complexity (although, depending on how good of an engineer one is, additional accidental complexity above the base essential complexity may be added). If you want to serve the majority of your users, you must incur some complexity. If you want to still serve them, then start by removing the accidental complexity. If you want to remove the essential complexity, then you are no longer serving your users.

                                        The sudo project is probably designed to serve the needs of the vast majority of the Linux user-base, and it succeeds at that, for the most part. doas very intentionally does not serve the needs of the vast majority of the linux user-base. Don’t condemn a project for trying to serve more users than you are.

                                        Not every feature idea is meritous.

                                        Serving users is meritous - or do you disagree?

                                        1. 6

                                          Heartbleed brought the internet to its knees because of a vulnerability in a feature no one uses.

                                          Yes, but the difference is that these are features people actually use, which wasn’t the case with Heartleed. Like I mentioned, I think doas is great – I’ve been using it for years and never really used (or liked) sudo because I felt it was far too complex for my needs, before doas I just used su. But I can’t deny that for a lot of other people (mainly organisations, which is the biggest use-case for sudo in the first place) these features are actually useful.

                                          Go make your own tool! Your little feature which is incredibly useful to you is incredibly non-useful to everyone else

                                          A lot of these things aren’t “little” features, and many interact with other features. What if I want doas + 3 flags from sudo + LDAP + auditing? There are many combinations possible, and writing a separate tool for every one of them isn’t really realistic, and all of this also required maintenance and reliable consistent long-term maintainers are kind of rare.

                                          Scope management is important.

                                          Yes, I’m usually pretty explicit about which use cases I want to solve and which I don’t want to solve. But “solving all the use cases” is also a valid scope. Is this a trade-off? Sure. But everything here is.

                                          The real problem isn’t so much sudo; but rather that sudo is the de-facto default in almost all Linux distros (often installed by default, too). Ideally, the default should be the simplest tool which solves most of the common use cases (i.e. doas), and people with more complex use cases can install sudo if they need it. I don’t know why there aren’t more distros using doas by default (probably just inertia?)

                                          1. 0

                                            What if I want doas + 3 flags from sudo + LDAP + auditing?

                                            Tough shit? I want a pony, and a tuba, and barbie doll…

                                            But “solving all the use cases” is also a valid scope.

                                            My entire thesis is that it’s not a valid scope. This fallacy leads to severe and present problems like the one we’re discussing today. You’re begging the question here.

                                            1. 3

                                              Tough shit? I want a pony, and a tuba, and barbie doll…

                                              This is an extremely user-hostile attitude to have (and don’t try claiming that telling users with not-even-very-obscure use-cases to write their own tools isn’t user-hostile).

                                              I’ve noticed that some programmers are engineers that try to build tools to solve problems for users, and some are artists that build programs that are beautiful or clever, or just because they can. You appear to be one of the latter, with your goal being crafting simple, beautiful systems. This is fine. However, this is not the mindset that allows you to build either successful systems (in a marketshare sense) or ones that are useful for many people other than yourself, for previously-discussed reasons. The sudo maintainers are trying to build software for people to use. Sure, there’s more than one way to do that (integration vs composition), but there are ways to do both poorly, and claiming the moral high ground for choosing simplicity (composition) is not only poor form but also kind of bad optics when you haven’t even begun to demonstrate that it’s a better design strategy.

                                              My entire thesis is that it’s not a valid scope.

                                              A thesis which you have not adequately defended. Your statements have amounted to “This bug is due to sudo’s complexity which is driven by the target scope/number of features that it has”, while both failing to provide any substantial evidence that this is the case (e.g. showing that sudo’s bugs are due to feature-driven essential complexity alone, and not use of a memory-unsafe language, poor software engineering practices (which could lead to either accidental complexity or directly to bugs themselves), or simple chance/statistics) and not actually providing any defense for the thesis as stated. Assume that @arp242 didn’t mean “all” the usecases, but instead “the vast majority” of them - say, enough that it works for 99.9% of users. Why is this “invalid”, exactly? It’s easy for me to imagine the argument being “this is a bad idea”, but I can’t imagine why you would think that it’s logically incoherent.

                                              Finally, you have repeatedly conflated “complexity” and “features”. Your entire argument is, again, invalid if you can’t show that sudo’s complexity is purely (or even mostly) essential complexity, as opposed to accidental complexity coming from being careless etc.

                                        2. 9

                                          I dont’t think “users (distros) make a lot of configuration mistakes” is a good defence when arguing if complexity is the issue.

                                          But I do agree about feature set. And I feel like arguing against complexity for safety is wrong (like ddevault was doing), because systems inevitably grow complex. We should still be able to build safe, complex systems. (Hence why I’m a proponent of language innovation and ditching C.)

                                          1. 11

                                            I dont’t think “users (distros) make a lot of configuration mistakes” is a good defence when arguing if complexity is the issue.

                                            It’s silly stuff like (ALL : ALL) NOPASSWD: ALL. “Can run sudo without a password” seems like a common theme: some shell injection is found in the web UI and because the config is really naïve (which is definitely not the sudo default) it’s escalated to root.

                                            Others aren’t directly related to sudo configuration as such; for example this one has a Perl script which is run with sudo that can be exploited to run arbitrary shell commands. This is also a common theme: some script is run with sudo, but the script has some vulnerability and is now escalated to root as it’s run with sudo.

                                            I didn’t check all of the issues, but almost all that I checked are one of the above; I don’t really see any where the vulnerability is caused directly by the complexity of sudo or its configuration; it’s just that running anything as root is tricky: setuid returns 432 results, three times that of sudo, and I don’t think that anyone can argue that setuid is complex or that setuid implementations have been riddled with security bugs.

                                            Other just mention sudo in passing by the way; this one is really about an unrelated remote exec vulnerability, and just mentions “If QCMAP_CLI can be run via sudo or setuid, this also allows elevating privileges to root”. And this one isn’t even about sudo at all, but about a “sudo mode” plugin for TYPO3, presumably to allow TYPO3 users some admin capabilities without giving away the admin password. And who knows why this one is even returned in a search for “sudo” as it’s not mentioned anywhere.

                                            1. 3

                                              it’s just that running anything as root is tricky: setuid returns 432 results, three times that of sudo

                                              This is comparing apples to oranges. setuid affects many programs, so obviously it would have more results than a single program would. If you’re going to attack my numbers than at least run the same logic over your own.

                                              1. 2

                                                It is comparing apples to apples, because many of the CVEs are about other program’s improper sudo usage, similar to improper/insecure setuid usage.

                                                1. 2

                                                  Well, whatever we’re comparing, it’s not making much sense.

                                                  1. If sudo is hard to use and that leads to security problems through its misusage, that’s sudo’s fault. Or do you think that the footguns in C are not C’s fault, either? I thought you liked Rust for that very reason. For this reason the original CVE count stands.
                                                  2. But fine, let’s move on on the presumption that the original CVE count is not appropriate to use here, and instead reference your list of 39 Ubuntu vulnerabilities. 39 > 2, Q.E.D. At this point we are comparing programs to programs.
                                                  3. You now want to compare this with 432 setuid results. You are comparing programs with APIs. Apples to oranges.

                                                  But, if you’re trying to bring this back and compare it with my 140 CVE number, it’s still pretty damning for sudo. setuid is an essential and basic feature of Unix, which cannot be made any smaller than it already is without sacrificing its essential nature. It’s required for thousands of programs to carry out their basic premise, including both sudo and doas! sudo, on the other hand, can be made much simpler and still address its most common use-cases, as demonstrated by doas’s evident utility. It also has a much smaller exposure: one non-standard tool written in the 80’s and shunted along the timeline of Unix history every since, compared to a standardized Unix feature introduced by DMR himself in the early 70’s. And setuid somehow has only 4x the number of footgun incidents? sudo could do a hell of a lot better, and it can do so by trimming the fat - a lot of it.

                                                  1. 3

                                                    If sudo is hard to use and that leads to security problems through its misusage, that’s sudo’s fault.

                                                    It’s not because it’s hard to use, it’s just that its usage can escalate other more (relatively) benign security problems, just like setuid can. This is my point, as a reply to stephank’s comment. This is inherent to running anything as root, with setuid, sudo, or doas, and why we have capabilities on Linux now. I bet that if doas would be the default instead of sudo we’d have a bunch of CVEs about improper doas usage now, because people do stupid things like allowing anyone to run anything without password and then write a shitty web UI in front of that. That particular problem is not doas’s (or sudo’s) fault, just as cutting myself with the kitchen knife isn’t the knife’s fault.

                                                    reference your list of 39 Ubuntu vulnerabilities. 39 > 2, Q.E.D.

                                                    Yes, sudo has had more issues in total; I never said it doesn’t. It’s just a lot lower than what you said, and quite a number are very low-impact, so I just disputed the implication that sudo is a security nightmare waiting to happen: it’s track record isn’t all that bad. As always, more features come with more (security) bugs, but use cases do need solving somehow. As I mentioned, it’s a trade-off.

                                                    sudo, on the other hand, can be made much simpler and still address its most common use-cases, as demonstrated by doas’s evident utility

                                                    We already agreed on this yesterday on HN, which I repeated here as well; all I’m adding is “but sudo is still useful, as it solves many more use cases” and “sudo isn’t that bad”.

                                                    Interesting thing to note: sudo was removed from OpenBSD by millert@openbsd.org; who is also the sudo maintainer. I think he’ll agree that “sudo is too complex for it to the default”, which we already agree on, but not that sudo is “too complex to exist”, which is where we don’t agree.

                                                    Could sudo be simpler or better architectured to contain its complexity? Maybe. I haven’t looked at the source or use cases in-depth, and I’m not really qualified to make this judgement.

                                            2. 5

                                              I think arguing against complexity is one of the core principles of UNIX philosophy, and it’s gotten us quite far on the operating system front.

                                              If simplicity was used in sudo, this particular vulnerability would not have been possible to trigger it: why have sudoedit in the first place, which just implies the -e flag? This statement is a guarantee.

                                              If it would’ve ditched C, there is no guarantee that this issue wouldn’t have happened.

                                            3. 2

                                              Did you even look at that list? Most of those are not sudo vulnerabilities but issues in sudo configurations distros ship with.

                                              If even the distros can’t understand the configuration well enough to get it right, what hope do I have?

                                            4. 16

                                              OK maybe here’s a more specific discussion point:

                                              There can be logic bugs in basically any language, of course. However, the following classes of bugs tend to be steps in major exploits:

                                              • Bounds checking issues on arrays
                                              • Messing around with C strings at an extremely low level

                                              It is hard to deny that, in a universe where nobody ever messed up those two points, there are a lot less nasty exploits in the world in systems software in particular.

                                              Many other toolchains have decided to make the above two issues almost non-existent through various techniques. A bunch of old C code doesn’t handle this. Is there not something that can be done here to get the same productivity and safety advantages found in almost every other toolchain for tools that form the foundation of operating computers? Including a new C standard or something?

                                              I can have a bunch of spaghetti code in Python, but turning that spaghetti into “oh wow argv contents ran over some other variables and messed up the internal state machine” is a uniquely C problem, but if everyone else can find solutions, I feel like C could as well (including introducing new mechanisms to the language. We are not bound by what is printed in some 40-year-old books, and #ifdef is a thing).

                                              EDIT: forgot to mention this, I do think that sudo is a bit special given that its default job is to take argv contents and run them. I kinda agree that sudo is a bit special in terms of exploitability. But hey, the logic bugs by themselves weren’t enough to trigger the bug. When you have a multi-step exploit, anything on the path getting stopped is sufficient, right?

                                              1. 14

                                                +1. Lost in the noise of “but not all CVEs…” is the simple fact that this CVE comes from an embarrassing C string fuckup that would be impossible, or at least caught by static analysis, or at very least caught at runtime, in most other languages. If “RWIIR” is flame bait, then how about “RWIIP” or at least “RWIIC++”?

                                                1. 1

                                                  I be confused… what does the P in RWIIP mean?

                                                  1. 3

                                                    Pascal?

                                                    1. 1

                                                      Python? Perl? Prolog? PL/I?

                                                    2. 2

                                                      Probably Python, given the content of the comment by @rtpg. Python is also memory-safe, while it’s unclear to me whether Pascal is (a quick search reveals that at least FreePascal is not memory-safe).

                                                      Were it not for the relative (accidental, non-feature-providing) complexity of Python to C, I would support RWIIP. Perhaps Lua would be a better choice - it has a tiny memory and disk footprint while also being memory-safe.

                                                      1. 2

                                                        Probably Python, given the content of the comment by @rtpg. Python is also memory-safe, while it’s unclear to me whether Pascal is (a quick search reveals that at least FreePascal is not memory-safe).

                                                        That’s possibly it.

                                                        Perhaps Lua would be a better choice - it has a tiny memory and disk footprint while also being memory-safe.

                                                        Not to mention that Lua – even when used without LuaJIT – is simply blazingly fast compared to other scripting languages (Python, Perl, &c)!

                                                        For instance, see this benchmark I did sometime ago: https://0x0.st/--3s.txt. I had implemented Ackermann’s function in various languages (the “./ack” file is the one in C) to get a rough idea on their execution speed, and lo and behold Lua turned out to be second only to the C implementation.

                                                2. 15

                                                  I agree that rewriting things in Rust is not always the answer, and I also agree that simpler software makes for more secure software. However, I think it is disingenuous to compare the overall CVE count for the two programs. Would you agree that sudo is much more widely installed than doas (and therefore is a larger target for security researchers)? Additionally, most of the 140 CVEs linked were filed before October 2015, which is when doas was released. Finally, some of the linked CVEs aren’t even related to code vulnerabilities in sudo, such as the six Quest DR Series Disk Backup CVEs (example).

                                                  1. 4

                                                    I would agree that sudo has a bigger target painted on its back, but it’s also important to acknowledge that it has a much bigger back - 100× bigger. However, I think the comparison is fair. doas is the default in OpenBSD and very common in NetBSD and FreeBSD systems as well, which are at the heart of a lot of high-value operations. I think it’s over the threshold where we can consider it a high-value target for exploitation. We can also consider the kinds of vulnerabilities which have occured internally within each project, without comparing their quantity to one another, to characterize the sorts of vulnerabilities which are common to each project, and ascertain something interesting while still accounting for differences in prominence. Finally, there’s also a bias in the other direction: doas is a much simpler tool, shipped by a team famed for its security prowess. Might this not dissuade it as a target for security researchers just as much?

                                                    Bonus: if for some reason we believed that doas was likely to be vulnerable, we could conduct a thorough audit on its 500-some lines of code in an hour or two. What would the same process look like for sudo?

                                                    1. -1

                                                      but it’s also important to acknowledge that it has a much bigger back - 100× bigger.

                                                      Sorry but I miss the mass of users pretesting on the streets for tools that have 100x code compare to other tools providing similar functionality.

                                                      1. 10

                                                        What?

                                                  2. 10

                                                    So you’re saying that 50% of the CVEs in doas would have been prevented by writing it in Rust? Seems like a good reason to write it in Rust.

                                                    1. 11

                                                      Another missing point is that Rust is only one of many memory safe languages. Sudo doesn’t need to be particularly performant or free of garbage collection pauses. It could be written in your favorite GCed language like Go, Java, Scheme, Haskell, etc. Literally any memory safe language would be better than C for something security-critical like sudo, whether we are trying to build a featureful complex version like sudo or a simpler one like doas.

                                                      1. 2

                                                        Indeed. And you know, Unix in some ways have been doing this for years anyway with Perl, python and shell scripts.

                                                        1. 2

                                                          I’m not a security expert, so I’m be happy to be corrected, but if I remember correctly, using secrets safely in a garbage collected language is not trivial. Once you’ve finished working with some secret, you don’t necessarily know how long it will remain in memory before it’s garbage collected, or whether it will be securely deleted or just ‘deallocated’ and left in RAM for the next program to read. There are ways around this, such as falling back to manual memory control for sensitive data, but as I say, it’s not trivial.

                                                          1. 2

                                                            That is true, but you could also do the secrets handling in a small library written in C or Rust and FFI with that, while the rest of your bog-standard logic not beholden to the issues that habitually plague every non-trivial C codebase.

                                                            1. 2

                                                              Agreed.

                                                              Besides these capabilities, ideally a language would also have ways of expressing important security properties of code. For example, ways to specify that a certain piece of data is secret and ensure that it can’t escape and is properly overwritten when going out of scope instead of simply being dropped, and ways to specify a requirement for certain code to use constant time to prevent timing side channels. Some languages are starting to include things like these.

                                                              Meanwhile when you try to write code with these invariants in, say, C, the compiler might optimize these desired constraints away (overwriting secrets is a dead store that can be eliminated, the password checker can abort early when the Nth character of the hash is wrong, etc) because there is no way to actually express those invariants in the language. So I understand that some of these security-critical things are written in inline assembly to prevent these problems.

                                                              1. 1

                                                                overwriting secrets is a dead store that can be eliminated

                                                                I believe that explicit_bzero(3) largely solves this particular issue in C.

                                                                1. 1

                                                                  Ah, yes, thanks!

                                                                  It looks like it was added to glibc in 2017. I’m not sure if I haven’t looked at this since then, if the resources I was reading were just not up to date, or if I just forgot about this function.

                                                      2. 8

                                                        I do think high complexity is the source of many problems in sudo and that doas is a great alternative to avoid many of those issues.

                                                        I also think sudo will continue being used by many people regardless. If somebody is willing to write an implementation in Rust which might be just as complex but ensures some level of safety, I don’t see why that wouldn’t be an appropriate solution to reducing the attack surface. I certainly don’t see why we should avoid discussing Rust just because an alternative to sudo exists.

                                                        1. 2

                                                          Talking about Rust as an alternative is missing the forest for the memes. Rust is a viral language (in the sense of internet virality), and a brain worm that makes us all want to talk about it. But in actual fact, C is not the main reason why anything is broken - complexity is. We could get much more robust and reliable software if we focused on complexity, but instead everyone wants to talk about fucking Rust. Rust has its own share of problems, chief among them its astronomical complexity. Rust is not a moral imperative, and not even the best way of solving these problems, but it does have a viral meme status which means that anyone who sees through its bullshit has to proactively fend off the mob.

                                                          1. 32

                                                            But in actual fact, C is not the main reason why anything is broken - complexity is.

                                                            Offering opinions as facts. The irony of going on to talk about seeing through bullshit.

                                                            1. 21

                                                              I don’t understand why you hate Rust so much but it seems as irrational as people’s love for it. Rust’s main value proposition is that it allows you to write more complex software that has fewer bugs, and your point is that this is irrelevant because the software should just be less complex. Well I have news for you, software is not going to lose any of its complexity. That’s because we want software to do stuff, the less stuff it does the less useful it becomes, or you have to replace one tool with two tools. The ecosystem hasn’t actually become less complex when you do that, you’re just dividing the code base into two chunks that don’t really do what you want. I don’t know why you hate Rust so much to warrant posting anywhere the discussion might come up, but I would suggest if you truly cannot stand it that you use some of your non-complex software to filter out related keywords in your web browser.

                                                              1. 4

                                                                Agree with what you’ve wrote, but just to pick at a theme that’s bothering me on this thread…

                                                                I don’t understand why you hate Rust so much but it seems as irrational as people’s love for it.

                                                                This is obviously very subjective, and everything below is anecdotal, but I don’t agree with this equivalence.

                                                                In my own experience, everyone I’ve met who “loves” or is at least excited about rust seems to feel so for pretty rational reasons: they find the tech interesting (borrow checking, safety, ML-inspired type system), or they enjoy the community (excellent documentation, lots of development, lots of online community). Or maybe it’s their first foray into open source, and they find that gratifying for a number of reasons. I’ve learned from some of these people, and appreciate the passion for what they’re doing. Not to say they don’t exist, but I haven’t really seen anyone “irrationally” enjoy rust - what would that mean? I’ve seen floating around a certain spiteful narrative of the rust developer as some sort of zealous online persona that engages in magical thinking around the things rust can do for them, but I haven’t really seen this type of less-than-critical advocacy any more for rust than I have seen for other technologies.

                                                                On the other hand I’ve definitely seen solid critiques of rust in terms of certain algorithms being tricky to express within the constraints of the borrow checker, and I’ve also seen solid pushback against some of the guarantees that didn’t hold up in specific cases, and to me that all obviously falls well within the bounds of “rational”. But I do see a fair amount of emotionally charged language leveled against not just rust (i.e. “bullshit” above) but the rust community as well (“the mob”), and I don’t understand what that’s aiming to accomplish.

                                                                1. 3

                                                                  I agree with you, and I apologize if it came across that I think rust lovers are irrational - I for one am a huge rust proselytizer. I intended for the irrationality I mentioned to be the perceived irrationality DD attributes to the rust community

                                                                  1. 2

                                                                    Definitely no apology needed, and to be clear I think the rust bashing was coming from elsewhere, I just felt like calling it to light on a less charged comment.

                                                                  2. 1

                                                                    I think the criticism isn’t so much that people are irrational in their fondness of Rust, but rather that there are some people who are overly zealous in their proselytizing, as well as a certain disdain for everyone who is not yet using Rust.

                                                                    Here’s an example comment from the HN thread on this:

                                                                    Another question is who wants to maintain four decades old GNU C soup? It was written at a different time, with different best practices.

                                                                    In some point someone will rewrite all GNU/UNIX user land in modern Rust or similar and save the day. Until this happens these kind of incidents will happen yearly.

                                                                    There are a lot of things to say about this comment, and it’s entirely false IMO, but it’s not exactly a nice comment, and why Rust? Why not Go? Or Python? Or Zig? Or something else.

                                                                    Here’s another one:

                                                                    Rust is modernized C. You are looking for something that already exists. If C programmers would be looking for tools to help catch bugs like this and a better culture of testing and accountability they would be using Rust.

                                                                    The disdain is palatable in this one, and “Rust is modernized C” really misses the mark IMO; Rust has a vastly different approach. You can consider this a good or bad thing, but it’s really not the only approach towards memory-safe programming languages.


                                                                    Of course this is not representative for the entire community; there are plenty of Rust people that I like and have considerably more nuanced views – which are also expressed in that HN thread – but these comments certainly are frequent enough to give a somewhat unpleasant taste.

                                                                  3. 2

                                                                    Rust’s main value proposition is that it allows you to write more complex software that has fewer bugs

                                                                    I argue that it’s actually that it allows you to write fast software with fewer bugs. I’m not entirely convinced that Rust allows you to manage complexity better than, say, Common Lisp.

                                                                    That’s because we want software to do stuff, the less stuff it does the less useful it becomes

                                                                    Exactly. Software is written for people to use. (technically, only some software - other software (such as demoscenes) is written for the beauty of it, or the enjoyment of the programmer; but in this discussion we only care about the former)

                                                                    The ecosystem hasn’t actually become less complex when you do that

                                                                    Even worse - it becomes more complex. Now that you have two tools, you have two userbases, two websites, two source repositories, two APIs, two sets of file formats, two packages, and more. If the designs of the tools begin to differ substantially, you have significantly more ecosystem complexity.

                                                                    1. 2

                                                                      You’re right about Rust value proposition, I should have added performance to that sentence. Or, I should have just said managed language, because as another commenter pointed out Rust is almost irrelevant to this whole conversation when it comes to preventing these type of CVEs

                                                                    2. 2

                                                                      While I don’t approve of the deliberately inflammatory form of the comments, and don’t agree with the general statement that all complexity is eliminateable, I personally agree that, in this particular case, simplicity > Rust.

                                                                      As a thought experiment, world 1 uses sudo-rs as a default implementation of sudo, while world 2 uses 500 lines of C which is doas. I do think that world 2 would be generally more secure. Sure, it’ll have more segfaults, but fewer logical bugs.

                                                                      I also think that the vast majority of world 2 populace wouldn’t notice the absence of advanced sudo features. To be clear, the small fraction that needs those features would have to install sudo, and they’ll use the less tested implementation, so they will be less secure. But that would be more than offset by improved security of all the rest.

                                                                      Adding a feature to a program always has a cost for those who don’t use this feature. If the feature is obscure, it might be overall more beneficial to have a simple version which is used by the 90% of the people, and a complex for the rest 10%. The 10% would be significantly worse off in comparison to the unified program. The 90% would be slightly better off. But 90% >> 10%.

                                                                      1. 1

                                                                        The other issue is that it is a huge violation of principle of least privilege. Those other features are fine, but do they really need to be running as root?

                                                                  4. 7

                                                                    Just to add to that: In addition to having already far too much complexity, it seems the sudo developers have a tendency to add even more features: https://computingforgeeks.com/better-secure-new-sudo-release/

                                                                    Plugins, integrated log server, TLS support… none of that are things I’d want in a tool that should be simple and is installed as suid root.

                                                                    (Though I don’t think complexity vs. memory safety are necessarily opposed solutions. You could easily imagine a sudo-alike too that is written in rust and does not come with unnecessary complexity.)

                                                                    1. 4

                                                                      What’s wrong with EBNF and how is it related to security? I guess you think EBNF is something the user shouldn’t need to concern themselves with?

                                                                      1. 6

                                                                        There’s nothing wrong with EBNF, but there is something wrong with relying on it to explain an end-user-facing domain-specific configuration file format for a single application. It speaks to the greater underlying complexity, which is the point I’m making here. Also, if you ever have to warn your users not to despair when reading your docs, you should probably course correct instead.

                                                                        1. 2

                                                                          Rewrite: The point that you made in your original comment is that sudo has too many features (disguising it as a point about complexity). The manpage snippet that you’re referring to has nothing to do with features - it’s a mix between (1) the manpage being written poorly and (2) a bad choice of configuration file format resulting in accidental complexity increase (with no additional features added).

                                                                        2. 1

                                                                          EBNF as a concept aside; the sudoers manpage is terrible.

                                                                        3. 3

                                                                          Hello, I am here to derail the Rust discussion before it gets started.

                                                                          I am not sure what you are trying to say, let me guess with runaway complexity.

                                                                          • UNIX is inherently insecure and it cannot be made secure by any means
                                                                          • sudo is inherently insecure and it cannot be made secure by any means

                                                                          Something else maybe?

                                                                          1. 4

                                                                            Technically I agree with both, though my arguments for the former are most decidedly off-topic.

                                                                            1. 5

                                                                              Taking Drew’s statement at face value: There’s about to be another protracted, pointless argument about rewriting things in rust, and he’d prefer to talk about something more practically useful?

                                                                              1. 7

                                                                                I don’t understand why you would care about preventing a protracted, pointless argument on the internet. Seems to me like trying to nail jello to a tree.

                                                                            2. 3

                                                                              This is a great opportunity to promote doas. I use it everywhere these days, and though I don’t consider myself any sort of Unix philosophy purist, it’s a good example of “do one thing well”. I’ll call out Ted Unangst for making great software. Another example is signify. Compared to other signing solutions, there is much less complexity, much less attack surface, and a far shallower learning curve.

                                                                              I’m also a fan of tinyssh. It has almost no knobs to twiddle, making it hard to misconfigure. This is what I want in security-critical software.

                                                                              Relevant link: Features Are Faults.

                                                                              All of the above is orthogonal to choice of implementation language. You might have gotten a better response in the thread by praising doas and leaving iron oxide out of the discussion. ‘Tis better to draw flies with honey than with vinegar. Instead, you stirred up the hornets’ nest by preemptively attacking Rust.

                                                                              PS. I’m a fan of your work, especially Sourcehut. I’m not starting from a place of hostility.

                                                                              1. 3

                                                                                If you want programs to be more secure, stable, and reliable, the key metric to address is complexity. Rewriting it in Rust is not the main concern.

                                                                                Why can’t we have the best of both worlds? Essentially a program copying the simplicity of doas, but written in Rust.

                                                                                1. 2

                                                                                  Note that both sudo and doas originated in OpenBSD. :)

                                                                                  1. 9

                                                                                    Got a source for the former? I’m pretty sure sudo well pre-dates OpenBSD.

                                                                                    Sudo was first conceived and implemented by Bob Coggeshall and Cliff Spencer around 1980 at the Department of Computer Science at SUNY/Buffalo. It ran on a VAX-11/750 running 4.1BSD. An updated version, credited to Phil Betchel, Cliff Spencer, Gretchen Phillips, John LoVerso and Don Gworek, was posted to the net.sources Usenet newsgroup in December of 1985.

                                                                                    The current maintainer is also an OpenBSD contributor, but he started maintaining sudo in the early 90s, before OpenBSD forked from NetBSD. I don’t know when he started contributing to OpenBSD.

                                                                                    So I don’t think it’s fair to say that sudo originated in OpenBSD :)

                                                                                    1. 1

                                                                                      Ah, looks like I was incorrect. I misinterpreted OpenBSD’s innovations page. Thanks for the clarification!

                                                                                1. 3

                                                                                  I don’t even care about reproducible builds, but NixOS is hands-down the most pleasant user experience. The only reason that I wouldn’t want to use it is pretty hard to find some binaries. Recently I wanted to use the objdump, readelf, and strings binaries. Apparently, they are in the binutils-unwrapped package… Also, compiling stuff that uses OpenGL is a bit of a pain, and I had a hard time installing vmware horizon.

                                                                                  1. 2

                                                                                    nix-locate can be useful for this. It’s in the nix-index package. e.g.

                                                                                    ❯ nix-locate 'bin/objdump'
                                                                                    (xcodebuild6.out)                                     0 s /nix/store/1jd5kk0c36v6mnj8wpj2v70rzbk2g3zv-Toolchains/XcodeDefault.xctoolchain/bin/objdump
                                                                                    (xcbuild.out)                                         0 s /nix/store/hsrmw5ahmcca987wp4q27216c9nja7y9-Toolchains/XcodeDefault.xctoolchain/bin/objdump
                                                                                    llvmPackages.bintools.out                             0 s /nix/store/82fx3jrjb5721w3d4d1gm3xf1h2ah5lp-llvm-binutils-7.1.0/bin/objdump
                                                                                    goimports.out                                         0 s /nix/store/g0j5vygszxrv7xxzz5n3r4vfh28qsp0m-gotools-unstable-2019-11-14/bin/objdump
                                                                                    (glibc.debug)                                   312,040 x /nix/store/8zbl35kgg8v7gircl3pvy9027vslll1q-bootstrap-tools/bin/objdump
                                                                                    gcc-arm-embedded.out                          1,323,576 x /nix/store/g2gvj8c6axb1jn37w2kyyy7gznqb8vwl-gcc-arm-embedded-8-2019-q3-update/arm-none-eabi/bin/objdump
                                                                                    gcc-arm-embedded-6.out                        1,333,480 x /nix/store/qznwwp5jhi3bqn7jzmmi38rsj2754pcr-gcc-arm-embedded-6-2017-q2-update/arm-none-eabi/bin/objdump
                                                                                    gcc-arm-embedded-7.out                        1,388,088 x /nix/store/rqgzbpxia6xz33dknabc6dqcgpdlgyvk-gcc-arm-embedded-7-2018-q2-update/arm-none-eabi/bin/objdump
                                                                                    dev86.out                                        22,488 x /nix/store/r92yf0bfl45rbcvi3nlci17736z3v8pl-dev86-0.16.21/bin/objdump86
                                                                                    binutils-unwrapped.out                                0 s /nix/store/w2dbyz9m2dnk2x3hrf48y9hbmmn7hxg6-binutils-2.31.1/aarch64-unknown-linux-gnu/bin/objdump
                                                                                    binutils-unwrapped.out                          374,120 x /nix/store/w2dbyz9m2dnk2x3hrf48y9hbmmn7hxg6-binutils-2.31.1/bin/objdump
                                                                                    (binutils_nogold.out)                                 0 s /nix/store/szbm7zdz8x22r0d6z3y989f3flpqlbv6-binutils-2.31.1/aarch64-unknown-linux-gnu/bin/objdump
                                                                                    (binutils_nogold.out)                           374,120 x /nix/store/szbm7zdz8x22r0d6z3y989f3flpqlbv6-binutils-2.31.1/bin/objdump
                                                                                    

                                                                                    Usually it’ll give you one-line with the answer you want, but a ‘bin/objdump’ appears in many packages, so you have to pick out the most relevant-looking one here.

                                                                                    1. 1

                                                                                      I’ve started using nix-index to find binaries. After the first run nix-locate finds all binaries with the matching substring.

                                                                                    1. 5

                                                                                      I’m not sure the “white as identity in paint mixing” is particularly good as an analogy. If you mix white paint with blue paint, you’ll usually get a lighter shade of blue. A colourless thinner or water might be slightly closer to an identity, although it will still change the blue paint. Paint mixing looks more like a semigroup than a monoid.

                                                                                      1. 3

                                                                                        This is a good nuance. We do want to think of both additive and subtractive color models as having a monoidal operation, but we aren’t guaranteed to have a workable unit just because we have all of the rest of a monoidal relationship. White and black only work as monoidal units when we are mixing abstract colors on a computer screen, and that ultimately isn’t because white and black are absolute endpoints in color modelling, but because we have a maximum and minimum brightness value on our display hardware.

                                                                                        1. 2

                                                                                          Good nuance indeed. Added a little acknowledgement, but I think I wouldn’t go so far as to remove the part altogether - my example is not meant to depict real-world color mixing (the mixed colors are not really the ones that you would get if you mix the ingredients), just a schematic representation of it. Whether or not it is accurate depends on interpretation (as does any other “application” of a mathematical law).

                                                                                      1. 28

                                                                                        Any of y’all want me to throw my hat in the ring?

                                                                                        Another time. :)

                                                                                        Okay fisch. I’ll try. If enough folks are interested I’ll shoot an app in.

                                                                                        1. 41

                                                                                          friendlysock is pretty much the only user who I have mentally flagged as consistently antagonistic and obnoxious, generally to the detriment of friendly and civil discussion. Other users may have particular topics which they feel sufficiently strongly about that they occasionally get a little antagonistic responding to criticism. With friendlysock, I see unnecessarily inflammatory comments often enough that I now mentally think, “ugh, I won’t bother reading this comment chain, it looks like another friendlysock spat”. If you can’t moderate your own comments, I don’t think you’d be good at moderating other peoples.

                                                                                          So if you really want our opinions, no, I do not want you to throw your hat into the ring.

                                                                                          1. 24

                                                                                            Strong disagree. friendlysock consistently engages in civil and friendly discussion, even when finding himself on the other side of an argument with someone whose political convictions make them feel they shouldn’t even attempt to be civil and friendly. I’ve never seen him make a comment I think could fairly be called unnecessarily inflammatory (and I say this as someone who has disagreed with him in the past). I generally enjoy seeing his posts and think he’s a good contributor to the site.

                                                                                            1. 31

                                                                                              You’re painting a picture where angersock is the civil one who just so happens to be constantly surrounded by people mad at him.

                                                                                              That’s wrong: angersock frequently accuses others or entire communities of bad faith and assumes a position of authority he doesn’t have when saying content doesn’t belong here (do I even need to link that one?).

                                                                                              I’ve rarely seen anybody argue with angersock twice. That alone should be pretty damning: The only constant in arguments involving angersock is he himself.

                                                                                              One can be inflammatory, incite flamewars and toxic communication while saving face by “remaining civil”. I’m not sure how much of it was intended in /u/Thra11’s post, but to me the point is that angersock remains civil, but brings incivility.

                                                                                              That is not to say that he doesn’t try his best, and I don’t think he does any of this on purpose (though I am really not sure). But I really don’t think he is cut out for this job, and given the comment ratio on his top-post vs the rest of the thread, I think he would be quite a controversial mod to say the least.

                                                                                              1. 14

                                                                                                It’s also missing the point: One can be inflammatory, incite flamewars and toxic communication while saving face by “remaining civil”.

                                                                                                That form of trolling is called Sea-lioning. http://wondermark.com/1k62/

                                                                                                1. 12

                                                                                                  I strongly disagree that how friendlysock has been showing up here can be seen as a form of sealioning.

                                                                                                  1. 7

                                                                                                    It still blows my mind that not only do some people think the woman rather than the sea-lion was the sympathetic character in that comic, but that there are enough such people for “sea-lioning” to have become a meme.

                                                                                                    1. 7

                                                                                                      I suspect it’s because many people use public social media for private conversations with their friends (as they would speak while walking about town). A stranger injecting themselves into the conversation to demand your time and attention (regardless of how righteous they are) is unwanted and weird.

                                                                                                      1. 5

                                                                                                        I was puzzled by that as well. There were enough of us that the author wrote a three paragraph clarification on the errata page. It’s possibly worth reading the explanation there. I’d summarize it as “the sea lion is a stand-in for people who behave a certain way and the woman’s objection is based on that behavior”.

                                                                                                        1. 5

                                                                                                          It’s pretty fitting, I think. Most people who cry “sea lioning” are just upset that someone responded to their public statements.

                                                                                                        2. 6

                                                                                                          I only have this comic as reference for as to what sealioning means, but the situation I see with angersock is not one where he actively seeks out people to engage in stupid arguments with. Maybe the term has evolved beyond that specific example, but then, without a new real definition, it has lost its meaning.

                                                                                                          1. 3

                                                                                                            The term has not lost its meaning, it has always been used to refer to people who make unwelcomed responses to publicly made statements.

                                                                                                        3. 9

                                                                                                          My own interactions with ‘sock have actually been pretty good, even in cases where we disagreed (as in this thread), and I don’t off-hand recall seeing and recent(ish) comments where I was “sjeez ’sock, relax mate”.

                                                                                                          But I also skip most Rust stories, as I don’t have a lot of interest in Rust (not at the moment anyway), and that link is indeed very much a “sjeez ’sock, relax mate” type of conversation.

                                                                                                          Point being: I guess people have a limited/biased view of ’sock (or any other members, for that matter) based on which stories they read and comment on. I certainly do, because I never would have seen that comment if you had not linked it here.

                                                                                                          1. 2

                                                                                                            do I even need to link that one?

                                                                                                            Would be helpful for people like me who aren’t as deep in the day-to-day of lobste.rs.

                                                                                                            1. 4

                                                                                                              It appears lobste.rs has some sort of retention on the index of comments per user, but here’s the most recent examples (not the best ones):

                                                                                                              All of those assume a place of authority and tell others how to use the site.

                                                                                                          2. 4

                                                                                                            In all fairness, this was not always the case (see also why I’m friendlysock instead of angersock), and even as recently as that Rust thread a few days ago I can still be more inflammatory than is helpful (less charitably: I can be a shithead). I’m no saint.

                                                                                                            1. 4

                                                                                                              and yet, gestures frantically below

                                                                                                            2. 6

                                                                                                              I would have to concur with this

                                                                                                            3. 34

                                                                                                              I personally would prefer not to have a moderator who thinks having Nazis participating is a fine idea (https://lobste.rs/s/nulfct/problem_with_code_conduct#c_dwa6s5). “You could exclude neither [Nazis nor the target of Nazis], and let them sort it out themselves elsewhere. Indeed, seeing each other in a context that doesn’t constantly reinforce their ideology might serve to build bridges and mellow both sides.”

                                                                                                              Seeing as my grandmother was almost murdered by Nazis the “mellowing both sides” bit did not go over well with me.

                                                                                                              1. 23

                                                                                                                It’s taken me quite some time to form a response.

                                                                                                                Here in Bloomington, IN, last year and the year prior, we had to deal with a real Nazi problem in our city. It was BAD. https://www.nytimes.com/2019/08/18/us/indiana-farmers-market-white-supremacy.html

                                                                                                                We have had a city govt run farmers market near the city square. It was on the largest walking/biking/running trail the city has.. It really was an amazing market.

                                                                                                                Then, the Unicorn Riot discord hack happened. Normally, this would oust Nazies and similar ideology. Except this time, it ousted a lady by the name of Sarah Dye, a farmowner and a stall vendor at the farmers market. It only outed the first name in the general vicinity and owned a farm - I was the one who found her account on Youtube by the name of Volkmom, and got her banned from the other 2 farmers market boards she was on. I forwarded the videos to their boards. They compared her voice to her damning videos.

                                                                                                                However, Bloomington IN doubled down, claiming 1st amendment concerns. Peaceful protests to Dye and the city were done… And the cops arrested the peaceful protesters, up to and including the president of low barrier homeless shelters - dressed as a purple unicorn ( https://www.thedailybeast.com/unicorns-arrested-at-protest-of-white-supremacy-at-bloomington-indianas-farmers-market ).

                                                                                                                And since Dye was being defended by the city, we had other undesirables show up. Other neonazies did. So did the 3 percent’ers. But when the 3%ers showed up, they were armed to the teeth, with AR15’s strapped to them, handguns (plural), zipties, and more. There was no question - they were not peaceful. They wanted to make a show of force that they were present to support their kind. Having them all show up shat on the very idea of the farmer’s market of inclusivity and coming together over shared food.

                                                                                                                We (public) finally solved this by deprecating the city run market, and a new market was made by a non-profit org. All the vendors showed up here, with exception of Sarah Dye and her stall. And unlike the city market, visible weaponry wasn’t allowed. And being in Indiana, people will pack heat; but it can at least be diminished.

                                                                                                                When nobody knew she was a Nazi and she didn’t do anything suspicious publicly, it was uneventful and peaceful. People just bought their groceries and all was good. The moment it was known, all the dregs, white nationalists, neonazies, kkk, and similar moved in to support “their kind”. We all literally had to abandon and regroup to get them to stop.

                                                                                                                If you don’t strongly deal with white nationalist groups, they’ll eat you out of house and home, run everyone off, and leave you with a shell of a community. I’ve seen it happen locally how it progresses in real life… and damned if I’ll let it happen to communities I’m currently a moderator of.

                                                                                                                1. 21

                                                                                                                  Forgive me for being dense, but my reading of this is that everything was quiet and peaceful until you went out of your way to dox a Nazi and get her kicked out, and then people decided to protest a lawful application of the 1st Amendment, and then counter-protests happened, and a bunch of ugliness occurred, and then after all this you got the original market back less one Nazi.

                                                                                                                  If this is an accurate reading (and it may not be!), how could one not conclude that everything was fine until you got a bee in your bonnet about somebody being a Nazi in their free time? How is everything that followed not your fault? That being the case…how is all of the following ugliness not the result of the efforts to purge a secret Nazi?

                                                                                                                  My desire to follow rules of topicality and civility is very much due to a desire to avoid that sort of protest-counterprotest stuff that harms communities more than it helps.

                                                                                                                  1. 23

                                                                                                                    how could one not conclude that everything was fine until you got a bee in your bonnet about somebody being a Nazi in their free time? How is everything that followed not your fault?

                                                                                                                    Who escalated to violence? The white nationalists did. Arguing that the exposers of secret Nazis are at fault is the argument employed by domestic abusers. “Woman, why do you make me beat you? Why do you do this to me?”

                                                                                                                    I know you’re arguing in good faith. But please do not try to justify violence from this crowd. They proved that they weren’t standing on moral high ground when they showed up with firearms and zipties.

                                                                                                                    The violent response from white nationalists to nonviolent protests should prove just how much of a charade their pearl-clutching about “muh free speech” really is.

                                                                                                                    1. 13

                                                                                                                      Forgive me for being dense, but my reading of this is that everything was quiet and peaceful until you went out of your way to dox a Nazi and get her kicked out, and then people decided to protest a lawful application of the 1st Amendment, and then counter-protests happened, and a bunch of ugliness occurred, and then after all this you got the original market back less on Nazi.

                                                                                                                      More specifically, there was already an anti-nazi campaign locally going against her with what I considered shaky proof. Many of us were very hesitant to engage in protests in person or online, without solid proof. I used my OSINT skills and was able to positively identify that it was her. Had it not been, I would have also said so. I’m not going to engage in a protest against an individual unless I’m damned sure I can prove it… And I proved it beyond a reasonable doubt.

                                                                                                                      Speaking to “and then people decided to protest a lawful application of the 1st Amendment, and then counter-protests happened”…

                                                                                                                      The problem was that the city was supporting the nazi speech AND show of force, while arresting peaceful (non-weapon-possessing) protestors. If the city had applied equal force to both sides, there would have been less of an issue with respect to 1FA.

                                                                                                                      If this is an accurate reading (and it may not be!), how could one not conclude that everything was fine until you got a bee in your bonnet about somebody being a Nazi in their free time? How is everything that followed not your fault? That being the case…how is all of the following ugliness not the result of the efforts to purge a secret Nazi?

                                                                                                                      You’re extrapolating and assuming when you don’t have the information.

                                                                                                                      My desire to follow rules of topicality and civility is very much due to a desire to avoid that sort of protest-counterprotest stuff that harms communities more than it helps.

                                                                                                                      This sort of civility is similar to Sea-lioning ( http://wondermark.com/1k62/ ).

                                                                                                                      Simply put, there is no civility when discussing people who want to murder people (and have done so) who differ only in race, skin color, or sexuality.

                                                                                                                      1. 20

                                                                                                                        Over and over and over again the same “both sides are at fault” message, Nazis and their victims. You simply cannot get yourself to say “let’s leave Nazis out”, huh.

                                                                                                                        1. 12

                                                                                                                          A few questions to make sure I understand your arguments:

                                                                                                                          • Assuming Lobste.rs vows to leave the Nazi out, who is going to decide which user is a Nazi? What is the definition of a Nazi?
                                                                                                                          • Since we’re bound to leave the Nazi out, how can we ensure that there won’t be a “leave the Y out”, where “Y” can be muslim from Saudi Arabia, Palantir developers (are they morally superior to Nazis?), Steven Pinker, Noam Chomsky and everyone else group X doesn’t like ?

                                                                                                                          ps. This discussion is not new by any means. It is a hard discussion, Karl Popper wrote extensively about this exact issue.

                                                                                                                          1. 8

                                                                                                                            Thank you for your observation.

                                                                                                                            For me, I can’t help but notice that even if we say “Okay let’s get rid of the Nazis”, we still have the question of who is a Nazi?

                                                                                                                            Form a practical standpoint: half of my country (US) voted for Trump, for whatever reason. That makes them some flavor of Republican–or worse. It is not a stretch (and is pretty common in various circles) to see any affiliation with Republicans as basically being a Nazi.

                                                                                                                            If half of Lobsters is from the US, this means that like a quarter of the users–based on back-of-the-envelope calculations–are Nazis and should be banned, for being Nazis.

                                                                                                                            If we just ban based on civility and topicality, we get to sidestep this issue.

                                                                                                                              1. 7

                                                                                                                                Any of the comments that article references are clearly outside decorum and, if posted here, would warrant administrative action.

                                                                                                                                1. 8

                                                                                                                                  Weev is a public figure. Weev was banned from gab. Weev could participate anonymously on lobsters. If weev wants to post here as weev, is that OK?

                                                                                                                                  1. 8

                                                                                                                                    Why wouldn’t it be, if he follows the rules and isn’t an asshole and contributes to on-topic discussion?

                                                                                                                                    It being weev, I imagine it would be less than an hour before he gets banned for saying stupid Nazi shit, but might as well give the fellow a chance.

                                                                                                                                    Our purpose here isn’t to punish people for actions in other communities; our purpose is to discuss technology.

                                                                                                                                    1. 5

                                                                                                                                      Weev is a public figure known for being a Nazi. For weev to be named as weev, it’s the same as https://lobste.rs/u/neonazi .

                                                                                                                                      Weev could go by a different name to participate in lobsters.

                                                                                                                                      1. 0

                                                                                                                                        Pretty sure there are many internet users with that nickname - most probably are unaware of some rando from US. To be honest I never heard about that guy until today. If he would have an account here I would judge him by what he writes here without crosschecking him across other sites. Who does that?!

                                                                                                                          2. 7

                                                                                                                            I won’t say it because I don’t believe it.

                                                                                                                            I would rather have a polite Nazi talking to me about technology than either a rude not-Nazi talking about technology or a polite not-Nazi talking about not-technology. As somebody mentioned above re: the Nazi variant of the Turing test…a sufficiently polite and topical Nazi is indistinguishable from a normal user, because they’re presumably not talking about Nazi shit and picking on Nazi victims.

                                                                                                                            If they are, the rules of civility and topicality give a handy way–and a more uniform way–of dealing with them. Even better, it gives a way of dealing with them that doesn’t give them the recourse of saying “Well you’re just doing this because you hate Nazis”, or “You’re just doing this because you support SJWs”, etc. I can point at the rules and say “You were off-topic and being uncivil. I don’t need to believe anything about Nazis or your relationship with that ideology to get rid of you.”

                                                                                                                            1. 22

                                                                                                                              Apparently you definition of civility includes telling me and other Jews to “mellow out” about people wanting to murder us. No thanks.

                                                                                                                              1. -9

                                                                                                                                Do you want to murder them, given that you (by my reading here) believe they are a clear and present danger to you and yours?

                                                                                                                                1. 17

                                                                                                                                  This is too far. There are diminishing returns now on this conversation and also both of you seem to have lost perspective that this post is about finding new moderators because pushcx might be under huge moderator load - you’re not helping. At the least, take this to a different venue or to personal chat to hash it out and bring back here any positive results.

                                                                                                                                  @itamarst You are talking about a subject which is understandably extremely sensitive and important to you. I think everyone can and would acknowledge the pain that you and your family must have gone through, and it is a failing of people in this conversation that that is not the first and most obvious point to be reiterated and repeated without fail. We all must acknowledge that terrible things have happened and that we want to take positive actions to prevent them happening again. That being said you are grossly not applying good faith in a situation where one person’s actions seem to have been offensive to you, and you are bringing a subject that is most definitely off topic for lobste.rs into this space. In relation to the former, you could have chosen a much more amicable way of bringing your point forward such as: Quoting friendlysock, explaining how you reacted to and felt when you read his comment and asking friendlysock to confirm if that was his intention and to clarify his meaning if it was. You definitely could have done that constructively inside the context which was friendlysock applying to be a moderator, so you could have phrased your question in a way relevant to this topic. No one would ever question your pain or your discomfort at seeing discussions of a group of people that brought great harm to your family and by extension pain to you; you do not have to not be angry, or not be in pain; but having the expectation that you can bring this up in this way in this space and the outcome be constructive is poor judgement: whether or not this was a motivation, you are not going to get personal resolution to political issues that cause you pain on lobste.rs.

                                                                                                                                  @friendlysock Whatever your position you are grossly failing to take a step back and acknowledge itamarst’s point where he is now, not where you think he should be or how you think his point relates to lobste.rs. If you keep doubling down on your position, itamarst has to double down on his. This does not seem like rocket science. Whether this is on topic or not, when someone has gone to the effort and made themselves vulnerable by presenting something they are angry or in pain about, particualrly if it’s such a HUGE subject as this with so much emotion attached, step 1 is acknowledge that and consider your position in relation to what they said. You have no idea how they feel and you can not begin to understand their position so if they are offering you this level of confrontation the most you can do is acknowledge and listen. You don’t have to take responsibility for having caused their pain - no one is calling you a nazi or accusing you of murdering people, but you do have to acknowledge that they felt a particular way after reading what you wrote, and if you want to, you can explore that, but with about 1000 times more sensitivity. Acknowledgement and reiteration of your fundamental positions as they relate to lobste.rs, or moderation on lobste.rs would perhaps be a way to frame your position, if you’re interested in doing that.

                                                                                                                                  1. 16

                                                                                                                                    “Good faith” only goes far when some spends so much effort explaining how important it is we include Nazis in our discussions. Especially when they want to be a mod.

                                                                                                                                    And really the whole point of the exercise is mod policy. As I’ve said before, in other discussions, you gotta pick a side. And the clearer friendlysock’s opinions, the clearer the choice pushcx has to make.

                                                                                                                                  2. 13

                                                                                                                                    Enough is enough. You are bullying itamarst with repeated emotional manipulation by way of a topic that has violently effected them, apparently so that you can get them to call for killings on a thread in which you nominated yourself to moderate the community in pursuit of civility. Are you done trolling yet?

                                                                                                                                    1. 6

                                                                                                                                      Do you want to murder them

                                                                                                                                      Come on, this is too much.

                                                                                                                                      1. 6

                                                                                                                                        No, of course not.

                                                                                                                            2. 32

                                                                                                                              no offence, but I find that “mellowing both sides” is a very legit goal. seeing as I’ve spent most of my life in a warzone, this goes very well with me. I’m not jewish, but I’ve had multiple run-ins with Neo-Nazis due to the way I look and where I escaped the war to. I used to hang out in this bar that was split in half, one of it was extreme leftists, and the other were staunch Nazis, some not even Neo. we were all fucked, so we just drank together in a weird peace of sorts. one of the Neo-Nazis never liked the fact that I started hanging out there, and was constantly hostile, and due to past experiences I had to often stay alert and make sure to be ready for whatever may come, but the beer was cheap mind you and the weed was good.

                                                                                                                              one of the Neo-Nazis in particular was this big guy who had it so clear in his eyes that he’d like to beat the shit out of me to prove his worth or whatever. I didn’t care as this was the least of my worries (at that time). one of the old men I used to hang out with was a programmer as well, so we’d get high and discuss all sorts of computer things. one day the convo came to Blender and 3D modelling, and all of a sudden this big guy who never wanted to exchange a word with me and rather punches came and started talking about Blender with love in his eyes instead of hate, after a couple of hours of that he threw the shittiest but unfortunately the most fitting line of all:

                                                                                                                              “your people aren’t too bad after all.”

                                                                                                                              we actually continued conversing after that and went through a couple of his traumas and why he ended up on the path he ended up on. I by no means expect everyone suffering from oppression to engage in such antics with their oppressors, but I’d rather the ones who can’t, let the one who can, do what they gotta do.

                                                                                                                              at the very least, you can try to not monopolize suffering under your own school of thought, and within only your own context.

                                                                                                                              this is probably my last comment here for a while, so feel free to PM if you wanna discuss this further. I am also very sad to hear about your grandma, it sucks to be almost murdered, it sucks to see people you love get murdered, and it sucks to see people you love commit murder, but that shit happens on all sides of aisle.

                                                                                                                              dehumanize one, and you dehumanize all, I find.

                                                                                                                              fucking hell, I need a beer.

                                                                                                                              1. 26

                                                                                                                                Thank you for sharing! I think that’s slightly missing the point, though:

                                                                                                                                1. The issue was with “both sides”. Why do I need to “mellow” if someone wants to murder me?
                                                                                                                                2. You are describing a truce backed by violence. And that might work for some, but the more common case is people not going into the bar at all, because they don’t feel safe.

                                                                                                                                I’m sure many Nazis have reasons for how they ended up where they are (though in the US a lot of them aren’t suffering at all, they’re upper middle class or rich). Maybe hanging out with Nazis will make them change their mind. I doubt it, but it’s possible.

                                                                                                                                But given the choice between making a safe environment for everyone, and letting some Nazis in in the vague hope they will learn something and lots of other people choosing not to participate, I’d rather choose the latter former.

                                                                                                                              2. 10

                                                                                                                                You know, I can sympathise with your viewpoint here, especially as a Muslim in the current global climate, but the problem I see is that this seems to be leading to such extreme echo chambers, that it makes people say things like what one user in the thread you linked said:

                                                                                                                                Feminists believe that women are as human and as entitled to agency and dignity as men are; MRAs believe that women are inferior to men and should be enslaved.

                                                                                                                                This is such an absurd statement to make without backing up and so patently false; the only way someone can believe this is by being fed a constant diet of lies people who really hate MRAs instead of just speaking to MRAs directly.

                                                                                                                                Suddenly, we’re not just banning Nazis who want to kill you and me and our entire family trees, we’re banning practicing religious people who aren’t willing to rewrite their holy scripture or reinterpret it to suit people’s desires, we’re banning critics of said religious folks who believe baby penises should remain intact — hey, they’re MRAs, right?; whatever, they must be islamophobes or antisemites either way — we’re banning critics of affirmative action, we’re banning all manner of people with valid and not so valid positions or arguments.

                                                                                                                                We don’t discriminate on truth, we discriminate on whether it’s comfortable or not to a select group of people. People who can’t discriminate between a belief like, “men and women have roughly equal average IQ, but the distribution is wider for men, so the ratio of men to women at Google is roughly what we’d expect if Google were selecting for such and such IQ” — responding with such inanity as “do the women at Google not belong there, then?” — and a belief like, “women are inferior to men and so should be enslaved to them”.

                                                                                                                                1. 20

                                                                                                                                  I think that if I were on a rocketry forum I’d be interested in hearing what Wernher von Braun had to say (not merely a Nazi, but an officer in the SS). If I were on a forum about filesystems, I’d be happy to talk to Hans Reiser. If I were given the opportunity, I think that Konrad Zuse (not a Nazi, but certainly a collaborator) would have interesting things to say about electromechanical computer design.

                                                                                                                                  I’d be more than happy to throw any of them out if they start going into politics or murder, but if they have useful expertise and follow the rules of decorum, they should have a place.

                                                                                                                                  1. 15

                                                                                                                                    Let me put it like this: if Hans Reiser would join a forum where Nina Reiser’s brother (or sister, close friend, etc.) would also participate, would you think it’s reasonable if they would object to this?

                                                                                                                                    It’s not hard to see how this would also extend to neo-Nazis (as in, literal neo-Nazis, who looked at the Holocaust and thought that all of that was just a spiffing good idea); would you enjoy interacting with someone who literally wants to kill you and everyone like you and worships an attempt to do exactly that? Are many people not a victim of these people’s actions just as much as Nina’s Reiser’s brother is? Would you happily discus webdesign best practices with the person running StormFront or some other neo-Nazi website?

                                                                                                                                    I’m not so sure if “it’s limited to just technical conversation” is really all that important, never mind that this is too limited of a view of Lobsters IMHO, as it’s a community centred around technical topics.

                                                                                                                                    For all we know Reiser or the StormFront maintainer are already participating on Lobsters anonymously. We can’t really prevent that because the only alternative would be to actively vet members. But if you know you’re talking to the StormFront webmaster then … yeah, I’d rather not.

                                                                                                                                    I’m not suggesting that we implement some sort of wrongthink policy or anything of the sort; you put forth the extreme scenarios so I’m replying to those, and in more realistic scenarios things tend to be some shade of grey. If someone on Twitter said “I don’t like people of religion/ethnicity/identity X” then that would probably be okay; as in, I won’t like them more for it, but I see no reason to ban them here for just that. But I do think all of this is a bit more complicated than you put forth.

                                                                                                                                    1. 18

                                                                                                                                      Would you happily discus webdesign best practices with the person running StormFront or some other neo-Nazi website?

                                                                                                                                      Let’s apply a variant of the Turing Test to this: if people from the interactions alone cannot tell whether they are made by a regular person or a Nazi, then the poster/commenter can be regarded as worthwhile talking to as any other normal person.

                                                                                                                                      1. 5

                                                                                                                                        Yes. Nobodies forced to use real names on lobsters. If someone posts anonymously, respect it. Don’t dox.

                                                                                                                                        It’s not the same if he/she uses their neo-Nazi name. Lobsters has no moral obligation to be known as the place where neo-Nazis hang out.

                                                                                                                                        1. 10

                                                                                                                                          Yeah I think there’s a bit of a straw man being thrown around in some of these discussions about being randomly chosen as the target of doxxing. It’s pretty easy to be anonymous on this website.

                                                                                                                                          To even be perceived as a member of a hate group on a site like this would require affirmative signaling to one’s peers that they hold hateful views towards other members of the community for their birth-given human characteristics, which seems like a good enough reason to remove such a user in the first place.

                                                                                                                                          1. 3

                                                                                                                                            Yes. Nobodies forced to use real names on lobsters. If someone posts anonymously, respect it. Don’t dox.

                                                                                                                                            Yes, I pretty much said as much later on: “We can’t really prevent that because the only alternative would be to actively vet members” (that this isn’t feasible isn’t stated explicitly, but it’s pretty clear to everyone that it’s not).

                                                                                                                                            I think both you and @ewintr have missed the point of my reply; this entire discussion is fairly hypothetical because of course no neo-Nazi is going to link to their StormFront account on their Lobsters profile (or Gab, or wherever these people hang out these days). I just wanted to point out why having known neo-Nazis on Lobsters is something that people would object to, and why some people would choose not to visit Lobsters if this were the case.

                                                                                                                                            1. 3

                                                                                                                                              No. You’re wrong. It won’t remain hypothetical. Look at how many people got caught from the 6th based on social media.

                                                                                                                                        2. 6

                                                                                                                                          would you think it’s reasonable if they would object to this

                                                                                                                                          I totally would understand why they might object to this. Then again, dude was put into prison and served his time. According to the law, he has received his punishment. Anything further is just extrajudicial retribution–understandable but not lawful.

                                                                                                                                          would you enjoy interacting with someone who literally wants to kill you and everyone like you and worships an attempt to do exactly that?

                                                                                                                                          If they were polite and solved my problem, sure. It’d be weird, but I’d rather have the help than not. The second they started going on about that other stuff, I’d report them cheerfully.

                                                                                                                                          For all we know Reiser or the StormFront maintainer are already participating on Lobsters anonymously.

                                                                                                                                          Exactly. For the dedicated opposition, this kneejerk intolerance serves no real obstacle–and can even be really useful as a leveraging point to disrupt a community. It’s like people have never played Among Us.

                                                                                                                                          but I see no reason to ban them here for just that.

                                                                                                                                          The problem is, several Lobsters I believe would be more than happy to do that, and would want it in a CoC. Further, where do you draw the line? How much Nazi is too Nazi? How little pedophilia is acceptable? I don’t want to make those calls–I’d rather focus on the (much simpler) tests of a) has this user treated other users respectfully in this space and b) has this user stayed on-topic. If followed, I believe those two rules are sufficient to guarantee a good time for everybody.

                                                                                                                                          But if you know you’re talking to the StormFront webmaster then … yeah, I’d rather not.

                                                                                                                                          As an aside, the world-wide experts in decentralization are about to all be, or keep company with, some really distasteful people. Ignoring their experience because they’re icky strikes me as a waste.

                                                                                                                                          1. 4

                                                                                                                                            The Reiser case is a bit more complicated, as I agree criminals should be given a second chance. However, it’s not unreasonable for victims of the crime to still harbour (strong) feelings of animosity; I don’t think that’s “extrajudicial retribution”. I don’t think that many people would happily chat with their sister’s murderer about filesystems after they served their time.

                                                                                                                                            At any rate, I only mentioned Reiser to illustrate the perpetrator/victim relationship, as it’s so clear in this case. I was tempted to leave that out entirely as it’s quite a different case from neo-Nazis.

                                                                                                                                            would you enjoy interacting with someone who literally wants to kill you and everyone like you and worships an attempt to do exactly that?

                                                                                                                                            If they were polite and solved my problem, sure. It’d be weird, but I’d rather have the help than not. The second they started going on about that other stuff, I’d report them cheerfully.

                                                                                                                                            Alright, fair enough. But it’s not hard to see how other people would make a different choice here.

                                                                                                                                            where do you draw the line? How much Nazi is too Nazi? How little pedophilia is acceptable?

                                                                                                                                            I don’t have clear answers to that; but this is a kind of reasoning I don’t really like. Maybe there’s a better name for this, but I like to call the “it’s hard fallacy”, which goes like: “it is hard to draw a line, therefore, we should not draw a line at all”.

                                                                                                                                            I’ve seen the same type of reasoning in conversations about civility. It can be really hard to draw a clear line about what is or isn’t acceptable, but that doesn’t mean we shouldn’t try at all. Clearly there should a line somewhere otherwise people replying with just “you’re a cunt” would be “acceptable”, and I think we can agree that it’s not. You can also see this fallacy in some other (political) topics.

                                                                                                                                            I’m not actually in favour of banning people for off-site behaviour unless it’s particularly egregious, such as active neo-Nazis, and even then I’d have to carefully look at the specific case at hand. In general I think the bar should be pretty high for this, but I do think there is a bar … somewhere.

                                                                                                                                            I mean, do you really expect black people or Jewish members to happily interact with people we happen to know are neo-Nazis or KKK members? If someone in your local soccer club is a great bloke and fun to hang out with, and then you discover he’s a Grand Hobbit Ghoul in the KKK (or whatever ridiculous ranks they have) then you would continue that relationship as-if nothing happened (and before you answer “yes I would”, would you expect everyone to do so, including your black teammates?)

                                                                                                                                        3. 16

                                                                                                                                          The problem, of course, is that then you lose all the people who don’t want to hang out with Nazis, or with people (like Hans Reiser) who murdered their wife.

                                                                                                                                          1. 25

                                                                                                                                            In an online forum for talking about X, I’d much rather have a room full of people who may be assholes elsewhere talking politely about X than I would a room full of people who might be lovely elsewhere being assholes in my forum because of something completely unrelated to X.

                                                                                                                                            1. 7

                                                                                                                                              Thank you for this succinct explanation.

                                                                                                                                            2. 12

                                                                                                                                              On the internet, no one knows you’re a dog.

                                                                                                                                              Who’s to say what someone’s intentions are? If people start causing problems, by all means remove them. The alternative is doxxing everyone who joins lobsters or digging up dirt, is that somehow a better alternative?

                                                                                                                                              I get it, no one wants to share a board with Nazis or murderers. I don’t either. But this social equivalent of a preemptive strike has the potential to be way worse.

                                                                                                                                              1. 11

                                                                                                                                                A good rule of thumb, in programming and elsewhere, is to always consider at least three solutions to any problem. There are in fact other solutions beyond the false dichotomy “doxxing everyone” and “accepting everyone”, one common one being a Code of Conduct. Personally I would go with “you must pass this very bar to participate”.

                                                                                                                                                1. 7

                                                                                                                                                  Just because a comparison of two solutions are presented doesn’t mean you have to jump to “this is a false dichotomy.” Also, I thought we already had that with the lobsters rules? How does a code of conduct actually differ?

                                                                                                                                                  1. 15

                                                                                                                                                    Well, friendlysock apparently can compare Nazis as somehow equivalent to their victims (both sides apparently need to “mellow”). Most CoC would involve kicking him out for that.

                                                                                                                                                    1. 6

                                                                                                                                                      I don’t agree with the comparison and I don’t think friendlysock would be a good mod based on the fact that he could draw it. I just want to put this out there though - if there was a felon, Nazi or other unsavory person who could provide some insight into problems I’m trying to solve then I would still have an open ear so long as they stay on topic and don’t bring up their unrelated interests. Not doing so seems short sighted.

                                                                                                                                                      Most Codes of Conduct are pretty crappy btw. Ruby has a good one, nearly all of the others are too suffocating.

                                                                                                                                                      1. 3

                                                                                                                                                        I think both you and @itamarst may be missing something in how I wrote that–and that’s on me for articulating incorrectly.

                                                                                                                                                        My point was not to draw equivalence between those groups. My point was that everybody has some outgroup that they would prefer to see kicked out.

                                                                                                                                                      2. 4

                                                                                                                                                        Maybe you should resolve that with friendlysock, then. Not going to fan these flames anymore.

                                                                                                                                                  2. 9

                                                                                                                                                    How is it “pre-emptive strike” to just not want to hang out with people you don’t like?

                                                                                                                                                    This isn’t like…. the seat of government. This is a place to talk with people. Absolutely nobody is under any obligation to listen to people (short of mods basically “kicking people out”). There is zero moral requirement to listen to “varied viewpoints” or have an open mind.

                                                                                                                                                    EDIT: And pointing to a previous declaration of moderation wishes as “digging up dirt” in a conversation about mod applications is rich. Are we supposed to just treat every conversation in some weird vacuum even when it comes to something so obviously relevant? I know you’re saying this in good faith but how is that not fair game?

                                                                                                                                                    And like… you know what? These people that get doxxed or whatever? They are the ones that are vocal about their opinions. That’s how you even know that they are these kinds of people. If they kept their mouth shut we wouldn’t even be able to know!

                                                                                                                                                    I’m tired of being lectured about how I’m the bad person for not wanting to deal with people who not only are (IMO) morally bad people, but also don’t have the social IQ to keep it to themselves.

                                                                                                                                                    1. 10

                                                                                                                                                      These people that get doxxed or whatever? They are the ones that are vocal about their opinions.

                                                                                                                                                      Alright, where does the dirt digging stop, then? Everyone that’s somehow associated as commenting in this thread, supportive or otherwise? Because they may somehow have an agenda too?

                                                                                                                                                      Dude, you’re not the bad person. No one’s saying you are. I’m just done with communities that engage in shit slinging, doxxing, and public shaming rather than actual discussion in good faith.

                                                                                                                                                      Anyway, peace out, lobsters. N-gate was right about you.

                                                                                                                                                      1. 4

                                                                                                                                                        I had someone PM me with personal details about myself while using a randomized username on reddit a few years back because I said that I didn’t think Ohio State was very good that year. People dox and dig up dirt for varied reasons. The nazi thing is an extreme example of that, but it happens for all sorts of other strange reasons as well.

                                                                                                                                                        I no longer use Reddit because of that event, and now I try to stick to a minimal set of social sites (like this one) where it’s obvious who I am if you search my username or look at my profile.

                                                                                                                                                        I don’t think you should feel obligated to listen to someone’s viewpoint if it’s non-technical (or even if it is technical really), but in this forum, the less I know about people, the better. I like hearing opinions or thoughts on tech without knowing who they are. I can’t control how they think or feel otherwise.

                                                                                                                                                    2. 5

                                                                                                                                                      Are you asking for Lobsters (and its mods, etc.) to:

                                                                                                                                                      • Explicitly condemn Nazism, white supremacy, and murder
                                                                                                                                                      • Ban anyone who publicly espouses these ideas, on or off our site
                                                                                                                                                      1. 23

                                                                                                                                                        You write as if that would be some kind of absurd idea, when it seems quite sensible to me..?

                                                                                                                                                        1. 9

                                                                                                                                                          thank you for objecting to that.

                                                                                                                                                          reductio ad absurdem requires absurdity, and I’m not used to seeing “explicitly condemn Nazism” held forth as obviously absurd.

                                                                                                                                                          1. 5

                                                                                                                                                            It seems absurd to me because it’s kind of a given. Not every site needs to say “hey don’t murder people” for me to feel good about using it. It’s a general human sentiment that murder is bad. Explicitly stating it and only targeting those viewpoints makes me wonder why we aren’t explicitly denouncing every type of supremacy, nativism, genocide, rape, etc.

                                                                                                                                                            But I do think banning people who espouse any of those views (spoken or unspoken) on the site is not only warranted, but should also lead to a probationary period for the person who invited them.

                                                                                                                                                            1. 6

                                                                                                                                                              I don’t think we need to make a list of things we don’t agree with. But I do think that we should be clear that people who are known for their malicious activities (e.g. support for murder or racism) are not welcome here.

                                                                                                                                                            2. -1

                                                                                                                                                              Putting this bluntly, the second one is stupid and anyone who argues for it is stupid. On or off our site? What the hell. Maybe in person I could logic my way into thinking that it’s ok but online? Thousands of miles away with no immediate threat to my wellbeing?

                                                                                                                                                              Online there’s always going to be that one jerk who doxes someone else for wrong-think and it’ll start with this.

                                                                                                                                                              1. 12

                                                                                                                                                                Thank you for proving your commitment to the cause of rational discussion by calling me stupid.

                                                                                                                                                                The thing is, we want Lobsters to be a place where all people are welcome. If we allow known neo-nazis to hang out with us, then people that feel threatened by those neo-nazis won’t come here. Sure, it’s not a threat to them per se, but why would you want to spend your free time talking to people that literally want you dead?

                                                                                                                                                                Being a neo-nazi is a choice. Belonging to a minority group isn’t. We should give the neo-nazis the boot and welcome the members of minority groups.

                                                                                                                                                                1. 5

                                                                                                                                                                  why would you want to spend your free time talking to people that literally want you dead?

                                                                                                                                                                  Because they have information I want and are capable of staying on topic for the site I’m on. I do not care what they do anywhere else. It is incredibly vexing that people are making me defend the scum of humanity.

                                                                                                                                                                  I believe all people are welcome on lobste.rs if they’re not talking about tons of off-topic stuff and spewing out hate while they’re here.

                                                                                                                                                                  1. 13

                                                                                                                                                                    Do you also want information from people who, for example, would feel uncomfortable sharing a discussion forum with neo-nazis?

                                                                                                                                                                    This isn’t value-neutral, we have a choice to make: either we welcome the neo-nazis, or we welcome the people-who-don’t-want-to-talk-to-neo-nazis. I know who’s getting my vote.

                                                                                                                                                                    1. 5

                                                                                                                                                                      This isn’t value-neutral

                                                                                                                                                                      I reject that premise.

                                                                                                                                                                      The nazi stuff should not enter the flow of conversation for nearly any thread on lobste.rs. The only reason we’re discussing it now because this is a meta thread and it was brought up by itamarst. If he hadn’t then we’d not know and not care.

                                                                                                                                                                      So I think that if we actually talk about the things that we thought we were going to talk about when we were invited in the first place there won’t be any issues with your first sentence.

                                                                                                                                                                2. 7

                                                                                                                                                                  Please don’t call other users or standpoints stupid. It’s okay to disagree, it’s even better to providing reasoning, but name-calling never helps.

                                                                                                                                                            3. 6

                                                                                                                                                              You only lose the people who care more about Nazi status more than technology–and they’d doubtless be happier elsewhere, in a community that puts ideology and identity above knowledge and civility. I’ve made my peace with that.

                                                                                                                                                              I don’t think that you can fundamentally ensure that people always feel welcome, and there is no surer road to ruin than to cater to everybody’s exclusionary preferences. Everybody has a reason to hate Nazis, or furries, or Republicans, or women, or whatever–the only way a community grows and flourishes is by providing people the space and protocols to interact without requiring alignment on those things.

                                                                                                                                                              Don’t want to take up more space here on it, but am happy to continue discussing in DMs with whoever would like to.

                                                                                                                                                              1. 33

                                                                                                                                                                The fact that you seem to define “civility” as - roughly speaking - some sort of shallow politeness enabling us all to chum it up with nazis so long as we’re speaking about computers, rather than as good citizenship and strong community built on respect for one’s peers suggests to me that you’d be a terrible moderator.

                                                                                                                                                                1. 19

                                                                                                                                                                  Agreed, that kind of response seems like it comes from a place of privilege. As in, “this doesn’t concern me too much, what’s the big idea?”

                                                                                                                                                                  It’s been interesting to see convos here and elsewhere around accepting views that are rooted in hate but somehow we should all just suck it up because that’s “fair.” I’m often the only Black person in cis-White male dominated spaces so this is nothing new to me. Just…interesting to see this play out in the open for the first time.

                                                                                                                                                                  Confronted with the knowledge of one’s privilege blinding oneself to what the disenfranchised has known to be true for eons is fascinating to watch/read.

                                                                                                                                                                  1. 5

                                                                                                                                                                    I’ll politely point out that my view would extend, were the conversations civil and on-topic, to folks like Malcolm X or Newton or Seale–not just stuffy old white dudes.

                                                                                                                                                                    I think that, as John Perry Barlow observed, we here in cyberspace have the opportunity to transcend the strife we were all born into. Part of that means evaluating people based on their behaviour and not on what we think about their beliefs.

                                                                                                                                                                    Edit: fixed rather embarrassing misattribution.

                                                                                                                                                                    1. 11

                                                                                                                                                                      (Davos is a place in Switzerland. That piece was authored by John Perry Barlow. I recommend the movie Hypernormalisation, there’s a very interesting part featuring Barlow and the other technolibertarians, discussing the connections to the counter-culture movement in the 60s)

                                                                                                                                                                      I cannot help but find this sort of cyber-utopianism incredibly naïve. Things that happen on the internet can and do have effects on people in the real world. It’s been a long, long time since “just walk away from the screen, just close your eyes” was a genuine take to have.

                                                                                                                                                                      1. 4

                                                                                                                                                                        Thanks for catching that, still waking up.

                                                                                                                                                                        It’s a naive approach, but that’s kinda the point right? Like, should we not strive to live in that more ideal, simpler, better world?

                                                                                                                                                                  2. 2

                                                                                                                                                                    good citizenship

                                                                                                                                                                    What do you mean by this?

                                                                                                                                                                    I agree btw.

                                                                                                                                                                  3. 18

                                                                                                                                                                    Everybody has a reason to hate Nazis, or furries, or Republicans, or women, or whatever

                                                                                                                                                                    I think you may be lumping together several dissimilar attitudes here.

                                                                                                                                                                    I do not think lobste.rs is suffering from including “the wrong people” or anything like that. We probably do have some people with terrible opinions, but it doesn’t leak into our usual discussions.

                                                                                                                                                                    However, I do think it would be bad to have a mod to express the attitude that “some people hate Nazis, some people hate women. A pox on both their houses!”

                                                                                                                                                                    I say “express” because I am not saying what you really think is “hating women is equivalent to hating Nazis”. But a mod has to be careful.

                                                                                                                                                              2. 6

                                                                                                                                                                Why stop with Nazis? If anyone shows any Nazi propaganda, they should be out. But let’s extend it to all other groups that cause harm to others. Any member of US army should be gone, heck, they didn’t try to kill my grandma, they killed my relatives, which were civilians (and they are still killing others in my country due to depleted uranium that was used in bombings). Also all the members of tech companies that help these strikes (looking at you, Microsoft et al).

                                                                                                                                                                Obviously, I’m exaggerating here to show a point that if we only look at membership of a group to exclude someone, we might also start extending the groups, as various people can/are affected. Personally, I don’t care which group people belong to, as long as they are not a threat to my family and are trying to help (or are just plain neutral) — which I think plenty of people here are, and that’s the main reason I come to this site.

                                                                                                                                                                1. 8

                                                                                                                                                                  We did exactly this when a Palantir showed up to show a neat thing. It was one of the most shameful things I’ve seen in my time here.

                                                                                                                                                                  1. 5

                                                                                                                                                                    You are not exaggerating at all.

                                                                                                                                                                    1. 2

                                                                                                                                                                      This reads like the opposite-day version of “First they came…” by Martin Niemöller.

                                                                                                                                                                      1. 1

                                                                                                                                                                        That is a great poem that I have only heard so far paraphrased. Thanks for sharing! However, it has been a rough week for me, so I don’t get the “opposite-day version” part, could you elaborate?

                                                                                                                                                                    2. 4

                                                                                                                                                                      Circumstances under which I would be OK with an Actual Nazi participating (both conditions must hold):

                                                                                                                                                                      1. User does not reveal themselves to be a Nazi on the site, either by explicit statement or in the way they act, and
                                                                                                                                                                      2. User is not notoriously a Nazi externally to the site, either for having done something terrible or by making themselves a “public figure” wrt their viewpoints.

                                                                                                                                                                      If someone behaves themselves on the site, and their behavior on the site does not create distress for others, I don’t see why people should be encourage in shitstirring. (If it is inevitable that someone’s presence will create distress, regardless of the behavior of anyone on the site, I would strongly suggest they use a pseudonym.)

                                                                                                                                                                      “Nazi” is an unlikely and hyperbolic example, but I’ve seen people go and seek out damning information of one sort or another about a member of a community (including doxxing them), and then make it a thing. It wouldn’t have been a thing, and wouldn’t have caused stress to members of oppressed populations, if they didn’t do that! By digging, they’ve actually caused harm. So my rule would be that the notoriety has to originate externally or via direct actions on the site, or you just incentivize this ugly community antipattern.

                                                                                                                                                                      (Some of my ancestors were murdered by Actual Nazis or had to emigrate to avoid them, in case you need that for my opinion to be valid.)

                                                                                                                                                                      ((EDIT: I don’t want to be a mod, though.))

                                                                                                                                                                    3. 8

                                                                                                                                                                      Maybe don’t apply if you’re seeking to do if because you think it’s what people want you to do… Someone with that personality might be inclined to lose interest before their term is up if they think popular opinion is drifting away from them…

                                                                                                                                                                      1. 22

                                                                                                                                                                        My reasoning–and I’ve always held this position–is that anybody seeking such a position is either a lunatic, a tyrant, or both, and not to be trusted. Myself included.

                                                                                                                                                                        That said…

                                                                                                                                                                        Look, if we’re down to just one moderator, that’s a rough gig. That, plus the current state of the world, makes me worry for the site focus and discussion culture of Lobsters, and if I can help I’m happy to do so–and pushcx is welcome to shitcan and ban me (and will likely do so with great relish) at will should I fail in my duties.

                                                                                                                                                                        Asking for sufficient votes before appliying is me, in effect, getting a gauge of if the community would agree to abide. As we’ve seen in my country this year, the legitimacy of government ultimately stems from the consent of the governed.

                                                                                                                                                                        1. 11

                                                                                                                                                                          And as I’ve seen in my country (US) this year, it’s wise not to give power to folks who are in it for the attention :P

                                                                                                                                                                          1. 5

                                                                                                                                                                            I personally (and I have a decidedly average number of internet points) like the way your postings changed when your nick changed to friendly. That change shows an appreciation of your past and new styles that I would like to see in moderators.

                                                                                                                                                                          2. 2

                                                                                                                                                                            TBH asking to be upvoted seems like a bit of a conflict of interest with wanting to be a mod… as friendlysock said

                                                                                                                                                                          3. 7

                                                                                                                                                                            :(

                                                                                                                                                                          1. 38

                                                                                                                                                                            I’m of the opinion that Signal becoming mainstream is a success worth celebrating and a huge step forward for mainstream WhatsApp users.

                                                                                                                                                                            Now it’s up to is techies to fight for and normalize the next frontier. Is it going to be decentralization? No metadata? Less dependent on phone numbers? I don’t know. Only time will tell.

                                                                                                                                                                            1. 7

                                                                                                                                                                              Third party clients.

                                                                                                                                                                              1. 2

                                                                                                                                                                                And what exactly would you win with that?

                                                                                                                                                                                1. 6

                                                                                                                                                                                  You would be able to run Signal on platforms that aren’t either android, iOS or capable of running an electron application well.

                                                                                                                                                                                  1. 4

                                                                                                                                                                                    Independence of their software implementation and the supply chain (app stores). Presumably getting rid of electron on the desktop? :-)

                                                                                                                                                                                    1. 2

                                                                                                                                                                                      Sure, this is a nice idea. Very rarely works in practice.

                                                                                                                                                                                    2. 2

                                                                                                                                                                                      it would make Signal useful and provide inertia for protocol changes

                                                                                                                                                                                    3. 2

                                                                                                                                                                                      I typed “signal cli” into a search bar and found several.

                                                                                                                                                                                      1. 1

                                                                                                                                                                                        Great to know but they all use Signal’s library, so it is somewhat weaker than truly independent clients written based on a protocol spec. I don’t know if Signal takes any measures to prevent third party clients, beyond Moxie saying he “hopes that they will stop.”

                                                                                                                                                                                  1. 15

                                                                                                                                                                                    But remember: the people eating your food still won’t care which knife you used.

                                                                                                                                                                                    Oh they absolutely will care if there’s blood on it because you tried to use a dull knife.

                                                                                                                                                                                    1. 2

                                                                                                                                                                                      Or if they have to wait hours for their food because you chose to chop everything with a tiny paring knife.

                                                                                                                                                                                    1. 5

                                                                                                                                                                                      GPLv3 GUI toolkit from people who built Qt. They have a demo compiled to WebAssembly here.

                                                                                                                                                                                      1. 2

                                                                                                                                                                                        It will all be fun and games until they have market share, then the dual license becomes an issue because they don’t make any money…

                                                                                                                                                                                        1. 3

                                                                                                                                                                                          I assume you’re mostly referring to Qt’s problems pushing their licenses. Only time will tell how SixtyFPS fares, but there are some differences. There’s no LGPL offering, only GPL. This presumably means that commercial users who don’t want to share their code will have to buy a commercial licence. This may avoid the Qt situation where they amass a large number of non-paying corporate LGPL users then go round threatening them in the hope they’ll buy a licence which they don’t need because they’re already LGPL compliant. I also believe that in many ways Qt themselves are responsible for their failure to sell licenses, rather than the dual-licence model itself.

                                                                                                                                                                                          When I first saw the headline about a new GUI toolkit, I thought, “Another one!?”. I think it’s clear that the current state of GUI toolkits is not ideal, so we have recently been seeing a number of attempts to do it better. However, it’s equally clear that Qt is a massive beast, almost unassailable if you want to compete on most of its features rather than offering a limited subset of platforms or use cases.

                                                                                                                                                                                          However, now that I’ve read a little bit about this one and seen who’s behind it, I’m cautiously optimistic about it. It looks like they are trying to keep some of Qt’s strengths, such as the declarative language for describing GUIs, while avoiding some of its downsides, such as the use of dynamically-typed, interpreted, javascript in the frontend code and the garbage collector.

                                                                                                                                                                                          The choice of Rust as the main implementation language, with the option to use Rust, C++, or javascript to write applications seems good. Qt has had a long and not always easy relationship with C++. Early versions of Qt tried to fills in some of the gaps in C++, but at times got carried away, with all manner of qThis, qThat and qTheOther types implementing Qt’s take on C++. While this was eventually reigned in and current Qt is largely compatible with std C++ containers and algorithms, the Qt API still uses raw pointers and implicitly-shared containers extensively, meaning that despite C++ ostensibly being Qt’s ‘native’ language, an existing user of ‘modern C++’ may not find Qt to their taste.

                                                                                                                                                                                          I’ll definitely be giving this one a try later…

                                                                                                                                                                                          1. 2

                                                                                                                                                                                            the declarative language for describing GUIs, while avoiding some of its downsides, such as the use of dynamically-typed, interpreted, javascript in the frontend code and the garbage collector.

                                                                                                                                                                                            Fantastic observation. I didn’t think of this similarity or this difference.

                                                                                                                                                                                      1. 0

                                                                                                                                                                                        Sidenote: if your story spans more than 5 tweets, throw it in a paste or a blog.

                                                                                                                                                                                        1. 1

                                                                                                                                                                                          I dunno. Dave Winer, the “grandfather of blogging” has permalinks to each (short) paragraph on his entries, and you can retweet them directly. Using Twitter just bypasses all that and you don’t need to use Userland ;)

                                                                                                                                                                                          1. 2

                                                                                                                                                                                            That thing you linked doesn’t appear to be an article or an attempt to tell a story, though. It’s just a collection of apparently unrelated thoughts that happen to be formatted as though they were paragraphs in an article.

                                                                                                                                                                                            1. 1

                                                                                                                                                                                              Or, you know, tweets…

                                                                                                                                                                                              Anyway, it’s consistent in posts that have a general theme: http://scripting.com/2020/12/09/181925.html?title=appleZealotsSuck

                                                                                                                                                                                              I’m old enough to remember when permalinks to each paragraph was the hot new thing (maybe 15 years ago?). They were called “purple hashes” or something ? The “Golden Age” of blogging was weird.

                                                                                                                                                                                        1. 33

                                                                                                                                                                                          Great story, but why do so many people think it’s a good idea to write entire articles on Twitter? It’s even worse than publishing them on Medium, and that says a lot!

                                                                                                                                                                                            1. 15

                                                                                                                                                                                              Because that’s where the readers are. (Same reason Willie Sutton robbed banks.)

                                                                                                                                                                                              I hate Twitter so, so much, and that’s one of the reasons. Even with the new supersize 280-char limit, it’s still such a choked, impoverished writing medium. Constraints can be good, but when they’re a choice, not when you’re forced into the constraint because it’s baked into the only platform that meets your needs.

                                                                                                                                                                                              1. 12

                                                                                                                                                                                                Writing is also pretty easy too for them. Each thought can be composed piecemeal and worked into a larger thread. It’s compatible with shorter attention spans for /writing/.

                                                                                                                                                                                                Maintaining a blog is ceremony/effort if you’re not actively committed to it. The next lowest effort/easiest distribution is Medium, and we all know what we think of that.

                                                                                                                                                                                                Constraints can be good, but when they’re a choice, not when you’re forced into the constraint because it’s baked into the only platform that meets your needs.

                                                                                                                                                                                                Many constraints were because of forced limitations. That was the post of many of them.

                                                                                                                                                                                                1. 3

                                                                                                                                                                                                  Yeah, you’re right about forced constraints. I guess it’s that any one constraint is good for some things but bad for others. Twitter has been a great boon to standup comedians and haiku poets, I’m sure.

                                                                                                                                                                                                  WordPress.com is pretty low-effort; it has issues but not so much as Medium. If it or something like it were more popular, people could write their tweet-threads there. Unless, as you say, they’re ADD enough that they’d get blank-page fright and never write anything.

                                                                                                                                                                                                  (I’m trying hard not to start bemoaning the demise of LiveJournal again. It coulda been a contendah…)

                                                                                                                                                                                                  1. 12

                                                                                                                                                                                                    Another thing that might be interesting is that people can reply to the indivual atomic units of thought easily too. It’s really more like structured/permament IRC than it is a blog.

                                                                                                                                                                                                    And yes, from the people who DO write mega tweet storms tell me, blank page fright is huge.

                                                                                                                                                                                                    1. 9

                                                                                                                                                                                                      WordPress.com is pretty low-effort; it has issues but not so much as Medium. If it or something like it were more popular, people could write their tweet-threads there. Unless, as you say, they’re ADD enough that they’d get blank-page fright and never write anything.

                                                                                                                                                                                                      I don’t know; I suspect it’s more of a barrier-of-entry thing. Twitter is kind of ephemeral and “write and forget”, whereas writing on your personal WordPress site takes more effort, as it’s less ephemeral.

                                                                                                                                                                                                      The same with comments on e.g. Lobsters: I usually just write them, read over them a little bit, and post. Whereas on my website I tend to take a lot longer to write more or less the same stuff. If something’s on my website, I want to make sure it’s reasonably accurate, comprehensive, and written as well as I can. Usually this entire process takes up quite a lot of time for me. For some Lobster comment or Twitter remark, it’s a bit different.

                                                                                                                                                                                                      It’s really difficult to put my feelings on this in words; so I hope this makes sense 😅 But publishing something on my (or any) website just comes with a lot higher barrier of entry for me, and I’m probably not so special that I’m the only one.

                                                                                                                                                                                                      @calvin mentioned “blank page fright”; which is more or less the same thing in a way, just expressed different, I think(?)


                                                                                                                                                                                                      At any rate, Twitter is hardly my favourite platform for these kind of things, but if the choice is between “it would never be published at all” and “it’s published on a platform I don’t like”, then the second option is clearly the better one.

                                                                                                                                                                                                  2. 4

                                                                                                                                                                                                    Because that’s where the readers are.

                                                                                                                                                                                                    Then Tweet a link.

                                                                                                                                                                                                    Might be a great story, but I’m not reading it in 20 parts on Twitter.

                                                                                                                                                                                                    1. 4

                                                                                                                                                                                                      And many people will not click a link.

                                                                                                                                                                                                      1. 2

                                                                                                                                                                                                        Plus clearly many, many people are. Writers go where readers are, and though you may not like reading things in this way on Twitter, there are enough people who do to make a market for this sort of material.

                                                                                                                                                                                                      2. 1

                                                                                                                                                                                                        The choked, impoverished writing medium is what makes it so much fun!

                                                                                                                                                                                                      3. 10

                                                                                                                                                                                                        For some people this is the answer.

                                                                                                                                                                                                        It’s easier to just write a set of tweets. When you publish a wall of text you gotta format it, you feel like proof-reading, etc.

                                                                                                                                                                                                        A tweetstorm is like…. whatever, just get it out there. Hell, type it in drafts and it’ll post the tweetstorm for you.

                                                                                                                                                                                                        This is like instagram stories: A way to reduce the barrier to sharing content. And some stuff is low effort, but some stuff is just high quality. It’s also, like other said, a way to share to people who are following you.

                                                                                                                                                                                                        1. 2

                                                                                                                                                                                                          you gotta format it, you feel like proof-reading, etc.

                                                                                                                                                                                                          I think there might be a reason why people do this.

                                                                                                                                                                                                          Ironically, this ‘article’ is more of a ‘wall of text’ than most blog posts, in that it’s just a collection of ‘text bricks’ stacked on top of each other, with no real structure. As a result, it’s practically unreadable.

                                                                                                                                                                                                          1. -1

                                                                                                                                                                                                            Thanks for pointing this tweet out, but I don’t buy that for a minute. If you have so much ADHD that you can’t do it any other way, you could still tweet your story and then copy-paste the sentences into a blog post. No one could be that debilitated by ADHD that he wouldn’t be able to do this basic thing.

                                                                                                                                                                                                            Also, a blog post is written once and read many times (ideally). It’s disrespectful to your readers to force this horrible format on them. If I were in this situation, I’d ask a friend to help me format a “tweetstorm” into a nice blog article. Even long texts wouldn’t take that much time.

                                                                                                                                                                                                            1. 10

                                                                                                                                                                                                              Uh, hey maybe don’t make comments that people with ADHD could do something when the evidence and statements of actual people with ADHD say they can’t. One of the key experiences of ADHD is executive dysfunction, meaning mental challenges around planning, problem-solving, organization, and time management. People with executive dysfunction (which isn’t solely experienced by people with ADHD) describe it in a number of ways that can be illuminating:

                                                                                                                                                                                                              Mental differences like this aren’t something you push through. Maybe sometimes you can (people with disabilities often describe experiencing fluidity in the severity of their challenges), but maybe sometimes you can’t. The experience of others demanding that they push through, or judging them for failing to push through, is one of the main challenges faced by disabled people. If you spend time listening to disability advocates, you’ll hear them talk about how they’re not disabled because something is wrong with them, they’re disabled because of limitations in the systems we all operate within, and the expectations and demands of our collective culture.

                                                                                                                                                                                                              So please, don’t toss out comments about how disabled people ought to function. They’re doing their best, and the expectations you’re putting out there are a core part of the challenges they face.

                                                                                                                                                                                                              1. 1

                                                                                                                                                                                                                Did you even read my comment before pasting your pasta here? Even disabled people ought to be able to ask for help, and in this case, I see no reason why someone with ADHD and executive dysfunction shouldn’t be able to ask someone for help in this regard.

                                                                                                                                                                                                                1. 6

                                                                                                                                                                                                                  I did read your comment.

                                                                                                                                                                                                                  I’m also flattered you think my post is a copypasta.

                                                                                                                                                                                                                  Seems unlikely you’ll be convinced, but to hammer it home: saying “disabled people ought to be able” or even “disabled people ought,” is the problem. If you do not have executive dysfunction, you do not know what it’s like to live with, and should defer to people who do live with it when they talk about what is reasonably doable for them.

                                                                                                                                                                                                                  1. 3

                                                                                                                                                                                                                    I’m also flattered you think my post is a copypasta.

                                                                                                                                                                                                                    Not taking sides here, but just wanna say, that is the best kind of rhetoric.

                                                                                                                                                                                                                  2. 6

                                                                                                                                                                                                                    Let me describe how I post on Lobsters. First, I think about what I want to post. Then, usually I don’t post it.

                                                                                                                                                                                                                    If I do decide to post, then I commit myself to keeping a browser tab open for about half an hour while I write my post. I try to get my evidence lined up, opening additional tabs with each consideratum so that I won’t forget what I’m writing about.

                                                                                                                                                                                                                    Paragraphs are usually written out of order. Entire sentences are written, rewritten, discarded, and written again. Phrases become semantically satiated and read wrong in my mind. I worry that I have used too many words. I worry that I haven’t used enough.

                                                                                                                                                                                                                    I constantly feel disconnected from myself and also from my audience. I don’t understand how to relate to people, or how to ensure that my meanings are preserved. In fact, I am used to being horribly and hilariously misinterpreted.

                                                                                                                                                                                                                    The help that I would ask from you is for you to reread the parent post and reconsider your stance. There is no universal way in which humans are supposed to interact with computers.

                                                                                                                                                                                                                    Alternatively, take a programmer’s point of view: A module is not merely a collection of code snippets, and it is disingenuous to suggest that folks can simply collate code snippets into meaningful modules.

                                                                                                                                                                                                                2. 7

                                                                                                                                                                                                                  Also, a blog post is written once and read many times (ideally). It’s disrespectful to your readers to force this horrible format on them. If I were in this situation, I’d ask a friend to help me format a “tweetstorm” into a nice blog article. Even long texts wouldn’t take that much time.

                                                                                                                                                                                                                  But you’re not in this situation.

                                                                                                                                                                                                                  1. 4

                                                                                                                                                                                                                    You may not realise it, but this is what your post looks like from the outside:

                                                                                                                                                                                                                    • You’re mistaking your personal dislike for a universal dislike.
                                                                                                                                                                                                                    • You’re laying your personal preferences on other people as responsibilities.
                                                                                                                                                                                                                    • You’re presuming you know what other people can or can’t do, or how they should or shouldn’t spend their energy and friend-favours.

                                                                                                                                                                                                                    That is not how you reason your way to correct conclusions, and it is not how you win friends and influence people.

                                                                                                                                                                                                                3. 8

                                                                                                                                                                                                                  No constraints, no glory!

                                                                                                                                                                                                                  But really the real reason is that I put weeks of research and editing into my blog posts, in some case months… while I can hammer a tweetstorm out in five minutes.

                                                                                                                                                                                                                  1. 4

                                                                                                                                                                                                                    As much as I hate Twitter ‘articles’, I think they’re actually better than Medium articles, which is… impressive.

                                                                                                                                                                                                                    1. 1

                                                                                                                                                                                                                      Agreed. This would be a pretty lengthy blog post, and this format is just awful. Really good war story though.

                                                                                                                                                                                                                    1. 6

                                                                                                                                                                                                                      I’ll be trying it out, I always liked the idea, but the package quality was often lacking. Would be interested to see if that has improved.

                                                                                                                                                                                                                      Speaking of which, our Debian ambassador told us that you will soon be able to apt install guix if you’re on Debian or a derivative distro!

                                                                                                                                                                                                                      That’s great to hear, hope other distros will follow too! I wonder if installing something like Guix on multi-user systems (a corp, uni, etc.) would make administration easier or harder?

                                                                                                                                                                                                                      1. 0

                                                                                                                                                                                                                        hope other distros will follow too

                                                                                                                                                                                                                        I don’t really think that makes sense; guix was designed from the ground up as a userspace package manager that can work in isolation from the rest of the system; apt and yum don’t have that property. They assume they own the entire system.

                                                                                                                                                                                                                        1. 6

                                                                                                                                                                                                                          hope other distros will follow too

                                                                                                                                                                                                                          I don’t really think that makes sense; guix was designed from the ground up as a userspace package manager that can work in isolation from the rest of the system; apt and yum don’t have that property. They assume they own the entire system.

                                                                                                                                                                                                                          Are you reading “hope other distros will follow too” as, “I hope other distros will package their native package managers so they can be installed on debian”, rather than, “I hope other distros will also have guix installable via their native package managers”?

                                                                                                                                                                                                                          1. 3

                                                                                                                                                                                                                            Oh haha, yes. That’s probably not what was intended, huh? Makes a lot more sense now!

                                                                                                                                                                                                                          2. 2

                                                                                                                                                                                                                            I don’t get what the problem is? I’ve installed Guix on a Debian system for packages that aren’t listed in the repositories, and it worked just fine, even if apt (nor guix for that matter) had to know about the other.

                                                                                                                                                                                                                        1. 2

                                                                                                                                                                                                                          The previews on this site are so blurry as to be unusable (Windows 10, Chrome, 1920x1200 resolution).

                                                                                                                                                                                                                          1. 2

                                                                                                                                                                                                                            Bizarrely… if I right click an image and choose “view image”, I see a blurry image which is 1200 × 900 pixels with this weird address: https://res.cloudinary.com/css-tricks/image/fetch/w_1200,q_auto,f_auto/https://coding-fonts.css-tricks.com/screenshots/hasklig/js-dark.png

                                                                                                                                                                                                                            If I remove the first half of the url to get https://coding-fonts.css-tricks.com/screenshots/hasklig/js-dark.png, I see a larger, 1600 × 1200 pixel image which isn’t blurry.

                                                                                                                                                                                                                            Also, whatever program was used to render the text as images doesn’t appear to support ligatures, which is unhelpful for the fonts which use ligatures.

                                                                                                                                                                                                                            Not a very good showcase for fonts if it doesn’t show their features properly and gives the impression that they’re blurry.

                                                                                                                                                                                                                            1. 2

                                                                                                                                                                                                                              blurry in Safari as well, not Firefox though

                                                                                                                                                                                                                          1. 1

                                                                                                                                                                                                                            This clearly frames all people reporting bugs as clients who consume resources by requesting support. In actual fact, some (if not most) people reporting bugs are an extension of your test/QA team, who are generously donating their time for free to help the project. Sorting one from the other isn’t free, but pushing the latter away just because the former exist hurts the project, and I’d be less likely to pay money to a project that appears to be hurting itself.

                                                                                                                                                                                                                            I also provide the source code, so you can fix things yourself, should my solution turn out to be unsuitable.

                                                                                                                                                                                                                            Yeah, but you’ve made it much harder for the community to fix your bugs for you by hiding the bug tracker. If you provide a place for the community to report bugs, you allow contributors to pool their knowledge. The combination of someone who observed something interesting + someone else who had a few minutes to diagnose the issue + someone else who has the skills to fix it = bug fixed, whereas on their own and isolated they don’t help anyone.

                                                                                                                                                                                                                            Of course, the author is free to do whatever they like with their project, but I can’t see why people would want to pay for support when the author is determinedly stamping on any potential community and chasing away contributors. If I’m paying for support, I want the author to be focussed on new features and major issues, not trivial bugs which the community could have mopped up.

                                                                                                                                                                                                                            1. 7

                                                                                                                                                                                                                              Similarly: some commands are invoked like nix run, some are nix-shell. I don’t know why.

                                                                                                                                                                                                                              In case anyone is wondering, this is two generations of nix. nix-shell, nix-build and friends are the old commands, but they’re still around because the nix 2 commands, nix build, nix run, etc. are still experimental and incomplete. I believe that the nix build style are intended to replace the others, but only once all they cover all the functionality available in the older commands and people are happy with the interface they present. Judging by the length of time since the initial nix 2.0, it’s not super high priority and/or they want to make sure it’s right.

                                                                                                                                                                                                                              1. 3

                                                                                                                                                                                                                                Language tutorials are extremely poor in OCaml compared to other languages; they’re mostly lecture notes from academic courses.

                                                                                                                                                                                                                                Given the language’s origins, there are a lot of resources written in French (As a quick example, https://ocaml.org/learn/books.html list 16 books in French, compared to 12 books in English). I haven’t read enough of them to come to a conclusion, but it’s possible that some of the good resources are in French.

                                                                                                                                                                                                                                1. 34

                                                                                                                                                                                                                                  There are no inline links (every link goes on its own line), no formatting, and no inline images

                                                                                                                                                                                                                                  So it’s borderline useless for all but the simplest use cases, and even there it does a very subpar job. I’d like to have an inline image every now and then, or organize things in some multi-column layouts or the like, or a table. 19th century newspapers could do this, and if your technology can’t emulate typography produced on a daily basis – often in a hurry – 150 years ago then your tech is rather limited.

                                                                                                                                                                                                                                  These protocols keep shooting themselves in the head with stuff like this, not even in the foot because this entire thing is dead on arrival for all but a few niche tech folk.

                                                                                                                                                                                                                                  1. 17

                                                                                                                                                                                                                                    I see this a lot, and I really, really wish that the people making this case would actually try to use Gemini for what it is before bringing their preconceptions into it. Easily a full third of the people I’ve spoken to about Gemini immediately start talking about some $FEATURE that they would add to it - and I’ve heard a lot of different features. Do you see the problem with this? This is just a recipe for re-inventing the bloat of the web.

                                                                                                                                                                                                                                    You must first use, then understand, then change the software. You can’t skip steps one and two. It is possible to express yourself within these constraints (you’re already expressing yourself within some fairly arbitrary constraints right now, for instance, imposed by Lobsters’ strict markdown rules), and you should first apply a little bit of creativity to the new medium before you try to bend the medium to your will. We don’t really want it bent, we’re doing something different for a reason.

                                                                                                                                                                                                                                    By the way, your comment can be losslessly represented in Gemtext.

                                                                                                                                                                                                                                    1. 7

                                                                                                                                                                                                                                      Easily a full third of the people I’ve spoken to about Gemini immediately start talking about some $FEATURE that they would add to it - and I’ve heard a lot of different features. Do you see the problem with this? This is just a recipe for re-inventing the bloat of the web.

                                                                                                                                                                                                                                      I’d argue that this is because the problems it solves are inherently complex, so any good solution to it will be complex as well. That doesn’t mean I don’t think the web can’t be improved or made simpler – it’s an organically grown mess of 25 years – but it will never be replaced by a dead-simple solution such as Gemini.

                                                                                                                                                                                                                                      And yeah, my Lobsters comments can be expressed in Gemini without much loss (except the inline links thing), but Lobsters isn’t my website though and I wouldn’t be able to express my fairly simple website on Gemini, or a fairly simple site as Wikipedia. And even the entire Lobsters website would be a worse UX in Gemini as it precludes any sort of design.

                                                                                                                                                                                                                                      1. 1

                                                                                                                                                                                                                                        Gemini does not preclude any sort of design, not at all - it just gives the responsibility for design to the client, not to the server.

                                                                                                                                                                                                                                        1. 2

                                                                                                                                                                                                                                          But isn’t this very limiting? Like, it would work for your blog, but in its current iteration adding a table would already be difficult, never mind something more advanced like the fivethirtyeight election forecast and results.

                                                                                                                                                                                                                                          I suppose it all depends what your vision for Gemini is; if you want it to replace large parts of the web then it’s got basically 0 chance in its current state; if you just want some alternative to use yourself and like-minded people, then sure, go for it.

                                                                                                                                                                                                                                          1. 1

                                                                                                                                                                                                                                            Of course Gemini doesn’t preclude design: It’s a networking protocol. You can use it to move HTML and JS and CSS and images and whatever else just fine.

                                                                                                                                                                                                                                            Attempting to conflate a protocol with a document format is wrong.

                                                                                                                                                                                                                                            1. 1

                                                                                                                                                                                                                                              The specification also includes a document format, as well as a networking protocol.

                                                                                                                                                                                                                                              Arguably, things would have been clearer if they were separated out more clearly, but this would kind of defeat the point of Gemini. The networking protocol and document format are intended to be used together.

                                                                                                                                                                                                                                        2. 6

                                                                                                                                                                                                                                          It seems interesting; to make it clear, I do hate tracking too, as well as inaccessibility & various Flash-equivalents of today. And dependency on the complexity tower of Chrome/Firefox/… So I’m certainly curious about alternatives to the current status quo.

                                                                                                                                                                                                                                          I do understand that the protocol seems to allow for a lot of expression, and more “slow-food” style, relaxed consumption. Yet, I cannot escape immediately having a feeling of loss. If I understand this correctly, with no mathematical equations support, I would not be able to write or consume an article trying to explain Shor’s algorithm. With no graphs support, I assume whenever I’d want to display graphs, I’d have to resort to ASCII-Art as a workaround, with necessarily limited precision (for example, no smooth curves or complex 3D surfaces). Finally, I assume I would not be able to write or consume an article about typography, or bysantine icons. Or am I wrong?

                                                                                                                                                                                                                                          Having the concerns mentioned above, I’m immediately starting to think about possible workarounds. I am assuming people would start resorting to “rich clients” - for example, with support for rendering of some kinds of mathematical equations. This, I am guessing, would quickly lead to on-site recommendations like: “This page requires support for LaTeX-Super-Renderer-3.7”. De-facto becoming in-band signaling of the kind Gemini apparently tries to dispell by “only allowing one field in response, the mimetype”. But wouldn’t people start doing that anyway, and start writing such plugins anyway, and start de-facto reinventing HTML anyway? With the likes of Flash plugins of yore raising from the dead in new clothes?

                                                                                                                                                                                                                                          With regards to just graphs and images, I believe it could be somewhat easier actually. I am now reminded of the days of my childhood, when books in my country were mostly in black and white, with a few pages in the center being in color, and being referenced to by the b&w pages (“See illustration 7.b.”). I imagine something like that could work with images being listed, or linked, or attached (?) at the end of a Gemini page. But even then, I don’t think that would be usable for math-heavy documents. And from glancing through the few links around here, it’s not fully clear to me if any images at all, even at the end of a document, are expected to be supported? (Though mimetypes support kinda seems to hint at allowing this?)

                                                                                                                                                                                                                                          So, with the ideal of simplicity sounding theoretically interesting and alluring, at the same time I’m concerned about losing access to, especially, maths-related content. (Assuming that some image-heavy, yet comparatively sparse in that regard, content could be possibly approximated with a list of image links at the end, referenced from the main article. Which kinda already sounds like a hack, that would probably soon lead to reintroducing inline images via specialized clients…) That feels like a pity to me.

                                                                                                                                                                                                                                          1. 2

                                                                                                                                                                                                                                            I do understand that the protocol seems to allow for a lot of expression, and more “slow-food” style, relaxed consumption. Yet, I cannot escape immediately having a feeling of loss. If I understand this correctly, with no mathematical equations support, I would not be able to write or consume an article trying to explain Shor’s algorithm. With no graphs support, I assume whenever I’d want to display graphs, I’d have to resort to ASCII-Art as a workaround, with necessarily limited precision (for example, no smooth curves or complex 3D surfaces). Finally, I assume I would not be able to write or consume an article about typography, or bysantine icons. Or am I wrong?

                                                                                                                                                                                                                                            I’ve brought this issue about math up in the past, but remember, nothing is stopping you from using HTML or PDF. Gemini uses Gemtext as a lowest-common-denominator form of markup, but if you are writing a client, you can always built in HTML support or shell out to something else that does.

                                                                                                                                                                                                                                          2. 5

                                                                                                                                                                                                                                            I think that the reason that people keep trying to suggest features is that Gemini is marketed as a replacement for “the web”, but designed (and only useful) as just a plain text delivery mechanism - there’s (rightly) some cognitive dissonance going on.

                                                                                                                                                                                                                                            That is, “the web” includes plain text, hypertext, rich documents, audio/video media, and interactive content. I don’t think that most people expect Gemini to implement the last two, but there’s some reasonable expectation that something trying to replace “the web” should at least be able to represent reasonably interesting documents - such as scientific papers, which Gemini clearly cannot.

                                                                                                                                                                                                                                            Perhaps if proponents of Gemini stopped trying to claim that it could actually replace anything but the tiniest slice of the web that is pure, plain text (not hypertext, as inline links are really important), you would stop getting people talking about adding features.

                                                                                                                                                                                                                                            Edit: that is, there’s no “preconception” going on here. GP post is responding to the argument that Gemini is a viable replacement for the web by pointing out that it is missing critical features for actually acting as a sane replacement, which has no “preconception” - it’s just a statement of fact. You cannot replace the web without inline links, formatting, or inline images, full stop.

                                                                                                                                                                                                                                            1. 1

                                                                                                                                                                                                                                              You cannot replace the web without inline links, formatting, or inline images, full stop.

                                                                                                                                                                                                                                              As a matter of fact, you can. Full stop.

                                                                                                                                                                                                                                              1. 7

                                                                                                                                                                                                                                                …that’s so obviously false that I shouldn’t need counterexamples, but here they are:

                                                                                                                                                                                                                                                https://graphicallinearalgebra.net/2015/04/26/adding-part-1-and-mr-fibonacci/

                                                                                                                                                                                                                                                http://foldr.org/mw/emacs/

                                                                                                                                                                                                                                                http://507movements.com/

                                                                                                                                                                                                                                                https://lobste.rs/

                                                                                                                                                                                                                                                https://www.av8n.com/physics/clifford-intro.htm

                                                                                                                                                                                                                                                None of these sites, or the majority of the thousands of other bookmarks that I have, can be replaced without inline links, formatting, or images.

                                                                                                                                                                                                                                                Linked files do. Not. Cut. It.

                                                                                                                                                                                                                                                Not only are linked (vs. inline) files objectively and meaningfully different (and, therefore, you cannot replace the web with them), but they are inferior from an information-processing standpoint. From both a practical and theoretical level, you cannot replace the web with Gemini as it currently stands. People will not use it, they are not equivalent, and I, personally, will discourage people from using it - it is a cognitive anti-tool, similar to a reverse printing press. Useful for implementors, terrible for anyone who actually wants to read documents and exchange information that will actually help them to learn and reason.

                                                                                                                                                                                                                                                1. 0

                                                                                                                                                                                                                                                  I can provide another counter-example: you had 5 links in your comment, none of which were inlined, despite having access to inline links on lobsters.

                                                                                                                                                                                                                                                  You can’t place identical content on Gemini as you can on the web. You can reformat your content for the new medium. Nothing transitions between mediums without change.

                                                                                                                                                                                                                                                  Gemini replaces a subset of the web, which I stated in the opening article and have re-iterated dozens of times.

                                                                                                                                                                                                                                                  1. 4

                                                                                                                                                                                                                                                    I can provide another counter-example: you had 5 links in your comment, none of which were inlined, despite having access to inline links on lobsters.

                                                                                                                                                                                                                                                    …that’s not a counter-example. I never claimed that you can’t replace any of the content on the internet, which is what that statement would be a counter-example to. Perhaps you should take a logic course. Edit: that was too aggressive, my apologies.

                                                                                                                                                                                                                                                    Edit: I claimed that you cannot replace “the web”, which implies replacing the majority of the content at least, and all of the content at most.

                                                                                                                                                                                                                                                    You can’t place identical content on Gemini as you can on the web. You can reformat your content for the new medium.

                                                                                                                                                                                                                                                    …and, as it should be very clear, that re-formatting process is (1) lossy and (2) causes a significant decrease in readability and information processing - meaning that it is not a replacement. The format of the web is part of the web, therefore you cannot replace the web with Gemini.

                                                                                                                                                                                                                                                    Gemini replaces a subset of the web, which I stated in the opening article and have re-iterated dozens of times.

                                                                                                                                                                                                                                                    You have tried to claim that Gemini can replace anything but the tiniest trivial slice of the web that is pure, un-hyperlinked plain-text - which, as shown above, is false. The format of the web is part of the web. The content and the medium are entwined.

                                                                                                                                                                                                                                                    1. 2

                                                                                                                                                                                                                                                      Anything with “less features” is lossy, but that’s not correlated with a “significant decrease in readability”. On the other hand, putting the presentation entirely into the client’s control is a significant win for readability, because the user can configure fonts, contrast, and layout to their preferences and usability needs. The screen reader experience, for instance, is WAY better. Inline links and inline formatting are less accessible to some.

                                                                                                                                                                                                                                                      1. 4

                                                                                                                                                                                                                                                        Anything with “less features” is lossy

                                                                                                                                                                                                                                                        Only true in the most needlessly pedantic sense. You can easily build systems with a small set of carefully-chosen features that still implement the vast majority of the functionality of larger systems that were poorly-built. This…does not describe Gemini. Gemini picked a basis of features that do not allow it to implement more complex functionality or richer documents.

                                                                                                                                                                                                                                                        that’s not correlated with a “significant decrease in readability”

                                                                                                                                                                                                                                                        Not in general, sure - but in the case of Gemini, it’s pretty clear that there is a significant decrease in readability (and, therefore, cognitive processing ability). Requiring users to click through to a separate document for each image, animation, or individual mathematical equation is extremely unreadable for anything with a reasonable density of those things - while “only” being merely slightly less readable for documents with only a few of those objects.

                                                                                                                                                                                                                                                        On the other hand, putting the presentation entirely into the client’s control is a significant win for readability the user can configure fonts, contrast, and layout to their preferences and usability needs

                                                                                                                                                                                                                                                        You can already almost entirely control presentation with major browsers for the current web, through userscripts and stylesheets.

                                                                                                                                                                                                                                                        Moreover, HTML is actually structured, unlike Gemtext, so I have anchor points and document metadata that I can use to exert more control over my content than with unstructured Gemtext - so your statement is actually untrue.

                                                                                                                                                                                                                                                        The screen reader experience, for instance, is WAY better.

                                                                                                                                                                                                                                                        Modern web gives you more options to make a good screen reader experience - such as image alt text. Is it really inconsistently used? Sure, but that’s not a technical problem, that’s a social one - a social one that manifests itself in an equally bad way with Gemini, because Gemtext doesn’t have any way to bind accessibility-related metadata to document structure, because there is no document structure.

                                                                                                                                                                                                                                                        Inline links and inline formatting are less accessible to some.

                                                                                                                                                                                                                                                        Expanding links and controlling inline formatting are very basic features for screen readers.

                                                                                                                                                                                                                                                        So, to summarize, modern web gives you a much richer interface for screen readers, as well as a better interface for people who don’t use screen readers (which is the majority).

                                                                                                                                                                                                                                                        Gemtext is straight-up less conducive to thought and information transfer.

                                                                                                                                                                                                                                                        1. 2

                                                                                                                                                                                                                                                          I think “significant decrease in readability” is interpreted a little too literally here.

                                                                                                                                                                                                                                                          Many of the documents linked by fouric would be way more inconvenient to read if they were adapted to fit in gemini’s limitations because of how heavily they rely on tables, anchor links to a specific part of the same document, and inline images (especially with how inconsistent most clients available today are at dealing with non-gemtext content types).

                                                                                                                                                                                                                                                          I personally am a big fan of how gemtext files only ever result in a single request due to the lack of stylesheets, scripting, and inline resources, and have pushed back on the adoption of HTML and Markdown as alternate document content types because I think that is a valuable part of the protocol. I’m also not delusional: the stance I hold also directly limits the mass appeal of gemini as a technology, because normal people who just want to read these kinds of documents are unlikely to accept what seems like massive inconvenience for technical reasons they don’t fully understand. They’ll just stick to the Web.

                                                                                                                                                                                                                                                          I am willing to put up with that inconvenience as a reader and writer of gemtext content because I think the other benefits of gemini are worth it, but I don’t expect anyone who isn’t another disillusioned Web developer to get on board quite as easily.

                                                                                                                                                                                                                                              2. 2

                                                                                                                                                                                                                                                How would metafilter-style writing look, with lots of inline links? Examples appreciated.

                                                                                                                                                                                                                                                1. 7

                                                                                                                                                                                                                                                  You just wouldn’t have lots of inline links. You’d have a separate list of references, perhaps. Here are some examples of Gemini posts I have written with lots of links:

                                                                                                                                                                                                                                                  https://portal.drewdevault.com/2020/11/01/What-is-Gemini-anyway.gmi

                                                                                                                                                                                                                                                  https://portal.drewdevault.com/2020/10/22/Firefox-the-embarassment-of-FOSS.gmi

                                                                                                                                                                                                                                                  https://portal.drewdevault.com/2020/10/01/Spamtoberfest.gmi

                                                                                                                                                                                                                                                  Let me put it this way: how would inline links work in a newspaper, book, or magazine? The answer is: they wouldn’t, and you just work within those limitations. That doesn’t mean the medium is bad.

                                                                                                                                                                                                                                              3. 6

                                                                                                                                                                                                                                                19th century newspapers could do this, and if your technology can’t emulate typography produced on a daily basis – often in a hurry – 150 years ago then your tech is rather limited.

                                                                                                                                                                                                                                                Not arguing against you, but when it comes to web browsers, then they still haven’t learnt to properly hyphenate text. Another thing we could do 150 years ago. One of the reasons (another being rather poor support for rendering maths, or, in the case of Chromium, complete lack of it) I’m relieved whenever I get to read a PDF generated from LaTeX instead of a webpage.

                                                                                                                                                                                                                                                1. 5

                                                                                                                                                                                                                                                  You can manually hyphenate with soft hyphens like you did 150 years ago just fine.

                                                                                                                                                                                                                                                  Automating hyphenation is nearly impossible. LaTeX certainly requires some manual help.

                                                                                                                                                                                                                                                  1. 2

                                                                                                                                                                                                                                                    If I use soft hyphens, then copying He­re are rhi­nos. to terminal results in He re are rhi nos. visually, because it copied the text with the soft hyphens even though everything was on a single line.

                                                                                                                                                                                                                                                    LaTeX certainly requires some manual help.

                                                                                                                                                                                                                                                    It never required it when I used it. When you enable correct language support, it should just work.

                                                                                                                                                                                                                                                    1. 3

                                                                                                                                                                                                                                                      That’s because your terminal is 1970s computer technology.

                                                                                                                                                                                                                                                      1. 1

                                                                                                                                                                                                                                                        No. That’s because I copied text, but received bytes instead.

                                                                                                                                                                                                                                                        FWIW it doesn’t happen with hyphenate: auto in CSS, but that’s only supported by Firefox, so it’s irrelevant.

                                                                                                                                                                                                                                                      2. 2

                                                                                                                                                                                                                                                        150 years ago you couldn’t copy manually-hyphenated text from your newspaper in to your terminal.

                                                                                                                                                                                                                                                        1. 2

                                                                                                                                                                                                                                                          I thought this analogy was cute for a little bit. But seriously, why is 150 years ago the standard? Are we really that painfully nostalgia-blind that we can’t recognize there’s a medium point between the old and the new?

                                                                                                                                                                                                                                                          1. 3

                                                                                                                                                                                                                                                            It isn’t my standard, and frankly I don’t really care what we could / couldn’t do 150 years ago because I don’t believe it matters in the context of what are we doing, trying to do, and can’t do today.

                                                                                                                                                                                                                                                    2. 4

                                                                                                                                                                                                                                                      Firefox does hyphenation with hyphens: auto; if you set the document language.

                                                                                                                                                                                                                                                      1. 1

                                                                                                                                                                                                                                                        Does Gemini support setting the document language?

                                                                                                                                                                                                                                                        1. 2

                                                                                                                                                                                                                                                          A quick search on the specification shows it does. So hyphenation working on gemini or not would be a matter of the client implementing it.

                                                                                                                                                                                                                                                      2. 2

                                                                                                                                                                                                                                                        Well, 150 years ago it was a manual process, and not an automatic one :-) I regularly insert &shy for this on my website by the way. But yeah, I agree that the lack of a universally supported hyphenate: auto has been long overdue (only Firefox supports it, and it doesn’t even do a great job at it, although I don’t know if there are technical reasons that prevent it from doing a better job; I think I saw someone on HN detail some issues with automatic hyphenation on the web years ago, but I forgot what they were).

                                                                                                                                                                                                                                                        Math rendering has also been supported by Firefox for 15 years with MathML, but for some reason Chrome doesn’t (but Safari does). Actually, looks like they removed it in Chrome years ago, although it looks like there’s work to add it back soon-ish.

                                                                                                                                                                                                                                                        1. 1

                                                                                                                                                                                                                                                          Actually, along with Firefox, some versions of Chrome (Android & Mac) support auto hyphenation, and Safari has it hidden behind a prefix: https://caniuse.com/css-hyphens I feel that together these may cover enough of the market to make it worth adding to web pages.

                                                                                                                                                                                                                                                          If you want to see a quick and stupid demo, here’s my very unfinished Hugo theme I’m working on developing: https://www.maximumethics.dev/blog/2020/07/my-first-post/ If you shrink the viewport width until it’s skinny like a phone, you’ll see the longer 90 chars “alphabet” line break to hyphenate (on the aforementioned supported browsers), as well as random words in the text.

                                                                                                                                                                                                                                                          1. 2

                                                                                                                                                                                                                                                            Ah yeah, it’s just the desktop version that doesn’t support it for some weird reason; I forgot about that detail.

                                                                                                                                                                                                                                                            I suppose it depends what you use it for: most of the time I really wanted auto hyphenation is for comparatively narrow pieces of text and/or for text-align: justify (e.g. a sidebar or info box). In those cases the hyphenation (manual or automatic) is pretty much a must-have rather than a nice-to-have, because without it it just looks ugly. Your site, on the other hand, looks fairly decent without hyphenation even on smaller screens, but it won’t hurt to add it for browsers that support it.

                                                                                                                                                                                                                                                          2. 1

                                                                                                                                                                                                                                                            Math rendering has also been supported by Firefox for 15 years with MathML, but for some reason Chrome doesn’t (but Safari does). Actually, looks like they removed it in Chrome years ago, although it looks like there’s work to add it back soon-ish.

                                                                                                                                                                                                                                                            That’s what I was on about. If something isn’t available in Chrome, it’s irrelevant these days. I’ve been aware that “it looks like there’s work to add it back soon-ish” for quite some time now. I don’t have hope.

                                                                                                                                                                                                                                                        2. 5

                                                                                                                                                                                                                                                          I think the idea is that the publisher delivers only the information, not the presentation. This constraint allows for greater user control over presentation, for example one might configure Gemini to lay out news articles (maybe on a site by site basis) in a column style, to suit their preferences. I think it’s an interesting idea as a way of making better typesetting more widely available to content published on sites without the budget / know-how to tune their CSS for readability.

                                                                                                                                                                                                                                                          I agree that Gemini would be better off if it supported inline images. That’s pretty often part of the information layer.

                                                                                                                                                                                                                                                          1. 6

                                                                                                                                                                                                                                                            I think the idea is that the publisher delivers only the information, not the presentation.

                                                                                                                                                                                                                                                            Wait! That is HTML! (as compared to PDF)

                                                                                                                                                                                                                                                            1. 6

                                                                                                                                                                                                                                                              Not really, HTML still focuses a lot on presentation. Headers, side bars, footers, nagivation line, footnotes, etc. are all concepts foreign to the browser, that have to be manually re-implemented in the markup language, again and again. That’s actually what I think that protocols like Gemini misunderstand: HTTP/HTML is not too systamatically complicated (at most it’s “organically” complicated), it’s actually too simple. If for example the <head> section had made it possible to describe how a web-page is navigated, it would have been possible for the browser to render that part of the site, leaving the <body> to be actual content. It’s something you see with other simple languages too: Scheme has various implementations, that implement a common core, but diverge in their additional libraries, that are regarded as useful, but do not allow for code to be portable. So too, had HTTP/HTML has the foresight to recognize what people would want from websites (which is probably too much to ask), or at least the foresight to allow a certain degree of extensibility, a lot of implementation-specific complexity could have probably been avoided.

                                                                                                                                                                                                                                                              So the issue might not be “simplicity vs compexity”, but “what kind of complexity”.

                                                                                                                                                                                                                                                              1. 3

                                                                                                                                                                                                                                                                Years ago I came across a browser extension that would build a navigation bar if it found certain <link> tags in the header. I modified my blogging engine to automatically add said links. Sadly, the extension no longer runs (because of course the extension mechanism changed—at least twice—since then) but I still generate the data in the vain hope it’ll be useful again.

                                                                                                                                                                                                                                                            2. 5

                                                                                                                                                                                                                                                              A strict separation of information and presentation is something that sounds great in theory, but doesn’t really work all that well in practice once you move beyond the simple use cases, or use cases that are pre-defined and supported in some way.

                                                                                                                                                                                                                                                              1. 1

                                                                                                                                                                                                                                                                I don’t know if this was part of the design goal - from what I can see, Gemini doesn’t have any sort of mechanism to describe or annotate what content/information is being delivered, which would make any presentation strategy necessarily heuristic, as there would be no way to delineate e.g. where the “author” of the article is.

                                                                                                                                                                                                                                                                1. 1

                                                                                                                                                                                                                                                                  I guess you’d just put that information into the document itself.

                                                                                                                                                                                                                                                                  One underappreciated tag in HTML is the <address> tag, which is a nice place to put stuff like author, publication date, etc.

                                                                                                                                                                                                                                                                  1. 1

                                                                                                                                                                                                                                                                    I’m not quite sure what you mean - when you say “just put that information into the document itself” do you mean in a machine-readable format? Because if so, that’s not part of the Gemini text spec - which is the thing being discussed. Adding tags like <address> would be extending the Gemini spec to add features, which is what proponents of it are fiercely against.

                                                                                                                                                                                                                                                                    1. 1

                                                                                                                                                                                                                                                                      No, I just meant to add something like

                                                                                                                                                                                                                                                                      • Author: Gustaf Erikson
                                                                                                                                                                                                                                                                      • Date: 3 Nov 2020

                                                                                                                                                                                                                                                                      in the body of the text somewhere.

                                                                                                                                                                                                                                                              2. 4

                                                                                                                                                                                                                                                                As it has been stated on the mailing list, “you can always serve up text/html or text/markdown, you aren’t limited to text/gemini.” There are sites out there serving up images and even music.

                                                                                                                                                                                                                                                                1. 12

                                                                                                                                                                                                                                                                  Well, that’s not really what’s advocated for in this post (or on the Gemini website as far as I could see), and serving HTML over Gemini just sounds like a s/HTTP/Gemini/, and you can serve text or Markdown over HTTP as well. I don’t really see the point if you’re going to serve HTML over Gemini.

                                                                                                                                                                                                                                                                2. 4

                                                                                                                                                                                                                                                                  I’m just going to drop a link to the FAQ page, in the hopes that it’ll answer some questions here.

                                                                                                                                                                                                                                                                  1. 3

                                                                                                                                                                                                                                                                    I’m sick of how complex html+css+js gets, and how complicated extracting the actual content can be, in order to view it on “unusual” platforms (small screens. ereaders, etc.), where a good experience depends on the client controlling the presentation of the content. Something like gemini could be the solution to that, but I have to say, the lack of inline images is a deal-breaker for me.

                                                                                                                                                                                                                                                                    I view multi-column layouts as part of the presentation, not the content (I don’t want two columns of text on a phone screen: if I do want two columns of text on the desktop, I can write that into the client), but the images are part of the content.

                                                                                                                                                                                                                                                                    I did wonder whether technically a gemini-ish client could fetch urls which look like they point to images and display them inline, but this is explicitly banned by the specification:

                                                                                                                                                                                                                                                                    Clients can present links to users in whatever fashion the client author wishes, however clients MUST NOT automatically make any network connections as part of displaying links whose scheme corresponds to a network protocol (e.g. gemini://, gopher://, https://, ftp://, etc.).

                                                                                                                                                                                                                                                                    I can sort of see what they’re aiming for, presumably trying to avoid the sort of nonsense some websites have become, where the initial request just gets a jumble of html elements that require the client to fetch and execute tons of javascript before they can be assembled into something resembling content, but I think they should have made an exception for images (They could still leave it up to the client whether it displays inline images or not).

                                                                                                                                                                                                                                                                    Interestingly, gemini probably works really well with screen readers, until you get to an image link (or any link for that matter), at which point it depends entirely on whether the author bothered to provide a caption, or explain what the link is as part of the text (Although that’s arguably no worse than html, where the existence of alt text doesn’t mean that it is always used or used correctly).

                                                                                                                                                                                                                                                                    1. 5

                                                                                                                                                                                                                                                                      Another reason to not allow non-user-initiated network connections is that’s abused to track users (Facebook pixel etc).

                                                                                                                                                                                                                                                                      IMHO this could be sufficiently solved by allowing additional requests to the same domain as the document request.

                                                                                                                                                                                                                                                                      1. 4

                                                                                                                                                                                                                                                                        One big reason I’m excited about Gemini is the possibility of escaping the web’s bloat, which we need to do in order to reduce energy usage / emissions in the climate crisis. For this reason, I support Gemini’s decision to ban inline images. If you have inline images, next people will want inline video, and soon even if Gemini is “simpler” it’s using as much storage+bandwidth+processing as a web page.

                                                                                                                                                                                                                                                                        Inlining images, especially from other locations, is also a plausible method for sneaking user tracking back into the protocol, and I also approve of Gemini’s strong efforts towards privacy. I also hate ads even when they don’t track people, I’d love to live someplace where billboards are banned so I can escape the constant background hum of marketing. Eliminating inline images is also a great way to reduce the annoyance of advertising.

                                                                                                                                                                                                                                                                        I’m going to have to agree with everyone in this thread that refusing to implement inline links was a mistake, though. That was one of the biggest problems I had with Gopher, and I was hoping Gemini would do a better job with hypertext.

                                                                                                                                                                                                                                                                        1. 4

                                                                                                                                                                                                                                                                          Inlining images, especially from other locations, is also a plausible method for sneaking user tracking back into the protocol, and I also approve of Gemini’s strong efforts towards privacy.

                                                                                                                                                                                                                                                                          It’s a very difficult balance to strike between simplicity and functionality. You could probably avoid trackers by, as @m_eiman says, only allowing additional requests from the same domain as the original document.

                                                                                                                                                                                                                                                                          Alternatively, you could create/use a format which embeds the images directly in the original document (similar to how pdf or epub does). Some might argue that this is inefficient, as you need to serve multiple copies of the image data if it appears on multiple pages. However, in this context, it could be seen as a feature, as we don’t want the kind of images (such as ads) which aren’t actually “part of the document”.

                                                                                                                                                                                                                                                                          There will always be some people who abuse any protocol, but not having inline images is very limiting and means it isn’t any good for a significant portion of (what I consider) “good content that doesn’t need javascript/css”.

                                                                                                                                                                                                                                                                      2. 1

                                                                                                                                                                                                                                                                        I’d like to have an inline image every now and then

                                                                                                                                                                                                                                                                        Might I ask what’s wrong with merely providing a link to the image?

                                                                                                                                                                                                                                                                        or a table.

                                                                                                                                                                                                                                                                        This can be easily done with some ASCII art (which is what you do for Markdown, anyways) coupled with a preformatted block.

                                                                                                                                                                                                                                                                        1. 10

                                                                                                                                                                                                                                                                          This can be easily done with some ASCII art…

                                                                                                                                                                                                                                                                          But ASCII art is pretty much the quintessence of mixing presentation and content, which is very specifically what Gemini seeks to avoid. It can’t wrap or scroll differently on small devices, it can’t be extracted (easily and reliably) to a machine-readable data format, and it isn’t accessible because there’s no semantic information about the table structure.

                                                                                                                                                                                                                                                                          1. 3

                                                                                                                                                                                                                                                                            You’re right. I kinda hope some kind of table syntax does make it into the Gemini spec after all.

                                                                                                                                                                                                                                                                          2. 3

                                                                                                                                                                                                                                                                            I need to click a link to an image? It seems pretty obvious to me that this is worse UX than just displaying it.

                                                                                                                                                                                                                                                                            ASCII art relies on a monospaced font, which I don’t really like for reading text. I think Lobsters would be significantly worse if it was all monospaced text for example. It also relies on a certain screen size, which doesn’t work for smaller screens (or very big ones, for that matter). I mean, it kinda works but it’s a hack.

                                                                                                                                                                                                                                                                            1. 2

                                                                                                                                                                                                                                                                              I need to click a link to an image? It seems pretty obvious to me that this is worse UX than just displaying it.

                                                                                                                                                                                                                                                                              Yeah. You’re completely right, this is worse UX. I’m beginning to think of proposing an inline-image syntax for the gemini spec.

                                                                                                                                                                                                                                                                              ASCII art relies on a monospaced font, which I don’t really like for reading text.

                                                                                                                                                                                                                                                                              I admit I was wrong. ASCII tables are a hack, I suppose. Hopefully the simple table syntax I’m thinking of right now makes it into the spec!

                                                                                                                                                                                                                                                                              I think Lobsters would be significantly worse if it was all monospaced text for example. It also relies on a certain screen size, which doesn’t work for smaller screens (or very big ones, for that matter). I mean, it kinda works but it’s a hack.

                                                                                                                                                                                                                                                                              FYI there are gemini clients that support variable-width fonts.

                                                                                                                                                                                                                                                                              1. 4

                                                                                                                                                                                                                                                                                FYI there are gemini clients that support variable-width fonts.

                                                                                                                                                                                                                                                                                I tried to use it with Gopher years ago (I hacked up an existing client), and many sites don’t really work all that well because they assume stuff will be displayed as monospaced text (such as tables you mentioned, but also things like code examples, or other alignment things).

                                                                                                                                                                                                                                                                                Gemini is a bit of an improvement because the spec at least recognizes that proportional text exits and has “code blocks”, but it also leaves much to the clients. In other words: I wouldn’t be surprised if people would just keep using it as they used Gopher, and the weird (and IMO, broken) way line wrapping works in Gemini doesn’t help either. I suppose time will tell how it will be used in practice (but as mentioned, I don’t think it will be used much in practice beyond a few “Hacker blogs” like Drew’s).

                                                                                                                                                                                                                                                                                One of the big mistakes of HTML was, ironically, to “leave it up to the clients” which resulted in a big mess which had to be unified so that people could get a reasonably consistent experience irregardless of which browser they use, but that just unified the mess instead of clearing it up.

                                                                                                                                                                                                                                                                            2. 1

                                                                                                                                                                                                                                                                              I use HTML to add tables to my Markdown content.

                                                                                                                                                                                                                                                                              1. 1

                                                                                                                                                                                                                                                                                I personally find HTML’s table syntax difficult to read and use.

                                                                                                                                                                                                                                                                                1. 4

                                                                                                                                                                                                                                                                                  Yep, I usually whip up a quick Perl script with the (deprecated) CGI module to generate it from plain text ;)

                                                                                                                                                                                                                                                                            3. 1

                                                                                                                                                                                                                                                                              Gemini is only a protocol, but the specification also propose a basic text/gemini format as a de-facto document type. It however supports any mimetype, including text/html:

                                                                                                                                                                                                                                                                              5 The text/gemini media type
                                                                                                                                                                                                                                                                              5.1 Overview

                                                                                                                                                                                                                                                                              In the same sense that HTML is the “native” response format of HTTP and plain text is the native response format of gopher, Gemini defines its own native response format - though of course, thanks to the inclusion of a MIME type in the response header Gemini can be used to serve plain text, rich text, HTML, Markdown, LaTeX, etc.

                                                                                                                                                                                                                                                                              You could totally sent the following HTML document over gemini:// and enjoy inline images:

                                                                                                                                                                                                                                                                              <html>
                                                                                                                                                                                                                                                                                <body>
                                                                                                                                                                                                                                                                                <p>My favorite cat picture:</p>
                                                                                                                                                                                                                                                                                <img src="gemini://domain.tld/cat.png" />
                                                                                                                                                                                                                                                                                </body>
                                                                                                                                                                                                                                                                              </html>
                                                                                                                                                                                                                                                                              

                                                                                                                                                                                                                                                                              It would then be up to the gemini client to process this document, fetch required resources (the cat picture) and render it nicely for you. The advantage of the gemini protocol here is that it would put a limit on the HTML subset one could put in a document. For example, <form> tags won’t be any useful. There would also be no need for <script> tags, as they wouldn’t be able to “phone home” over gemini.

                                                                                                                                                                                                                                                                              One of the biggest problem of the web is that the HTTP protocol itself grew in an enormous monster that’s impossible to understand, where sometimes the headers of a requests can be 10 times bigger than the content itself.

                                                                                                                                                                                                                                                                            1. 5

                                                                                                                                                                                                                                                                              On my wishlist: A way to block all the bloody “Subscribe to my spiffy mailinglist”-popups that has infested the web.

                                                                                                                                                                                                                                                                              1. 2

                                                                                                                                                                                                                                                                                Big same. I was working on a browser plugin to turn position:fixed/etc elements into display:none, but it ran into a wall of

                                                                                                                                                                                                                                                                                1. literally the first wild website I tested it on hit an infinite loop
                                                                                                                                                                                                                                                                                2. javascript permission errors when trying to introspect style sheets

                                                                                                                                                                                                                                                                                I suspect dealing with it robustly would require hacking up the browser renderer itself.

                                                                                                                                                                                                                                                                                1. 2

                                                                                                                                                                                                                                                                                  The No, Thanks extension gets rid of some of them. Enough that I’m willing to pay its subscription fee because those stupid things make my blood boil, but it still misses a bunch.

                                                                                                                                                                                                                                                                                  1. 1

                                                                                                                                                                                                                                                                                    Thanks, I’ll give it a spin.

                                                                                                                                                                                                                                                                                  2. 1

                                                                                                                                                                                                                                                                                    The unfortunate reality is that they work. I remember reading, I think, Andrew Chen (A16Z) who mentioned that he feels sorry for these popups but he has to keep them on his blog since they work.

                                                                                                                                                                                                                                                                                    1. 3

                                                                                                                                                                                                                                                                                      Andrew Chen doesn’t have to have these annoying popups on his blog, he could perfectly well choose to have a button or a link. Truth is that he chose the annoying popups because he values the number of subscriptions more than the wellbeing of his audience.

                                                                                                                                                                                                                                                                                      1. 1

                                                                                                                                                                                                                                                                                        Do you have the source / data for the that? I’m not even sure how you’d measure how well they work. I assume you’d have to do some A/B testing, but while you can measure the number of people who sign up for your newsletter, and possibly even track whether the emails cause them to come back to your blog, you can’t measure the people who are unimpressed or get annoyed and don’t come back or recommend your blog to others.