1. 4

    I was about to rant about how painful the save dialog is, but then I read the last line:

    As other people noted in the comments, having a New menu is handy because it lets you create the file directly where you want it, saving you the trouble of having to navigate through the Save As dialog just to get back to where you started.

    I have to wonder why save dialogs have to be so painful. Saving something on Windows could open one of about 4 or 5 different save dialogs, most of which are just kept around for backwards compatibility, without even counting the custom ones (e.g. GIMP). I think there’s only one that lets you paste in the path to a directory so you don’t have to navigate all the way back to a folder you have open in another window.

    Only one of the file pickers supports thumbnails (on Linux only the KDE one does, unless something changed recently) and I think not a single one lets you drag and drop a file from another window into the picker to select it: some ignore it and some move it into the directory that’s currently open on the picker.

    1. 9

      The standard WPF dialog isn’t too bad. The trouble is Microsoft has started hiding even that - in the current version of Word, if you start a new document and hit Ctrl+S it shows a custom UWP dialog offering only some frequently used locations. You have to click a small “More Options…” link (not even a button), and then “Browse”, and finally you are rewarded with a full-featured save dialog. This change drove me to using the New menu only recently.

      1. 7

        I have to wonder why save dialogs have to be so painful. […] navigate all the way back to a folder you have open in another window.

        On RISC OS the save dialog is just a filename entry and an icon that you drag to the folder where you want to save the file. I only know this because I installed RISC OS on a Raspberry Pi 400 yesterday, and it’s pretty neat. This particular aspect is just drag-and-drop, but I can’t remember seeing another system where you drag-and-drop from programs to folders, it’s usually in the other direction. It’s surprisingly nice to use and the system doesn’t need to invent a second (or fifth) way for the user to browse the file system.

      1. 13

        One thing that really surprised me is that symbols are not interned

        I’m surprised that this is surprising. Code is made up of symbols; code must know what file/line it came from in order to produce stack traces. If two instances of the same identifier were always identical, how could you determine its origin in order to produce a useful stack trace?

        A favorite gotcha of mine is that integers are not automatically promoted to bignums like in most Lisps that support bignums.

        This is really frustrating to me too and feels like a missed opportunity. I’d much rather have safe math be the default and fast math be opt-in.

        There doesn’t seem to be a good rationale about why vectors are used instead of regular lists, though.

        This is a really subtle benefit, but the advantage of using binding vectors is that when you see an open paren, you know that it means a function or macro is being called or defined! It leads to a lot more consistency and predictability than other lisps. Unfortunately there are a handful of exceptions in Clojure, but they’re fairly rare.

        Now, this may sound weird from a Scheme programmer, but I never fully bought into the REPL style of developing. Sure, I experiment all the time in the REPL to try out a new API design or to quickly iterate on some function I’m writing. But my general development style tends more towards the “save and then run the test suite from an xterm”

        One big difference is that Clojure’s vars and namespaces were designed from the ground up to support reloading in a way that allows the new code to be visible even retroactively to code that’s already been loaded and even stuff that’s currently still running on another thread. I’ve never seen this done so seamlessly outside BEAM; it’s really a great design. Once you get used to it you get kinda spoiled and working without a repl feels like a huge leap backwards.

        This is made extra painful by “nil punning”. For example, when you look up something in a map that doesn’t exist, nil is returned.

        This is definitely the biggest source of errors in Clojure by a long shot. I understand why it’s done this way but boy is it nice when I work in Racket to not have to think about nil.

        1. 2

          Code is made up of symbols; …

          From R7RS 6.5. Symbols

          Symbols are objects whose usefulness rests on the fact that two symbols are identical (in the sense of eqv?) if and only if their names are spelled the same way. For instance, they can be used the way enumerated values are used in other languages.

          The rules for writing a symbol are exactly the same as the rules for writing an identifier; see sections 2.1 and 7.1.1. It is guaranteed that any symbol that has been returned as part of a literal expression, or read using the read procedure, and subsequently written out using the write procedure, will read back in as the identical symbol (in the sense of eqv?).

          Note: Some implementations have values known as “uninterned symbols,” which defeat write/read invariance, and also violate the rule that two symbols are the same if and only if their names are spelled the same. This report does not specify the behavior of implementation-dependent extensions.

          1. 2

            That doesn’t really answer my question; if symbols are interned, how do you preserve line numbering info for stack traces in between the reader and the compiler?

            1. 9

              Symbols returned from the reader are always interned, but compilers don’t just work with bare list structures as input these days. Let’s take the Chez Scheme compiler as an example. Chez Scheme use a reader that wraps objects in annotations, which contain source information. (The normal read procedure just returns the stripped datum as usual, but the compiler uses the annotated datum). The macro expander understands annotations and is able to extract source info and to remove annotations, as necessary. Macros work with syntax objects, not directly with datums, so they also preserve the source information. The compiler passes that follow expansion are written in the nanopass compiler framework and preserves source information every step of the way through the compilation.

              1. 4

                Ah right; I forgot about syntax objects. I feel like I’ve read up about this process a few times but it’s so complicated I was never able to get it to stick in my brain for more than a couple hours at a time.

            2. 2

              Looking at this, it seems in R7RS, symbols are what Clojurians would call Keywords. Since they are distinct from identifiers in that text.

          1. 2

            A few years ago I decided to see how thoroughly I could overengineer fizzbuzz in JavaScript. The fact I decided to use the sum of two waves means that it doesn’t need any conditionals or modulo. Behold:

            // How many ms between fizzbuzz calls?
            const RATE = 100;
            
            // FizzBuzz Parameters
            const FIZZ_PERIOD = 3;
            const BUZZ_PERIOD = 5;
            
            // Map waves to final output values in range [ 0..3 ]
            const FIZZ_AMPLITUDE = 1;
            const BUZZ_AMPLITUDE = 2;
            
            // Lookup table for results
            const LOOKUP = [ undefined, "Fizz", "Buzz", "FizzBuzz" ];
            
            // Generate a square wave
            const squareWave = period => amplitude => n =>
              amplitude * Math.max( 0, Math.floor( Math.cos( n * 2 * Math.PI / period ) + 0.5 ) );
            
            // Compose the fizzbuzz function out of waves components
            const fizzbuzz = n => LOOKUP[ [
              squareWave( FIZZ_PERIOD )( FIZZ_AMPLITUDE ),
              squareWave( BUZZ_PERIOD )( BUZZ_AMPLITUDE ),
            ].reduce( ( prev, curr ) => curr( n ) + prev, 0 ) ] || n;
            
            // Async sleep to avoid busyloop
            const sleep = async ms => new Promise( resolve => setTimeout( resolve, ms ) );
            
            // Generate an infinite sequence starting from some base
            function* seq( start = 1 ) {
              for ( let i = start; true; ++i ) {
                yield i;
              }
            }
            
            // FizzBuzz Forever!
            async function main() {
              for ( const i of seq() ) {
                console.log( i, fizzbuzz( i ) );
                await sleep( RATE );
              }
            }
            
            // Start
            main();
            
            1. 3

              Isn’t Math.max a conditional?

              1. 4

                I suppose that was cheating slightly, but “no conditionals” wasn’t my original intent. The sum-of-waves method was just intended to be needlessly obtuse. It happens to have this property as a side-effect.

                There are other ways to generate a square wave that don’t have hidden conditionals. This one is nicer and fixes a bug I just noticed in the original (when used with different periods than 3 & 5):

                // Generate a square wave
                const squareWave2 = period => amplitude => n =>
                  amplitude * ( Math.cos( n * Math.PI / period ) & 1 );
                

                Also, thinking about it, the || could also be considered a hidden conditional, but it can be eliminated by just not hard-coding the lookup table and making n be the first entry every time.

                1. 4

                  With squareWave2 this program gives the wrong answer for i = 64084278. With squareWave it gives the wrong answer for i = 895962678003541 (and maybe lower values of i as well, I did not check).

                  1. 3

                    Turns out the 2nd one is good up for all inputs up to 2^25. After that it would need another wave function that doesn’t rely on floating point. This one should be correct until integer overflow:

                    const squareWave3 = period => amplitude => n =>
                      amplitude * !( n % period );
                    

                    Sadly this re-introduces the rather cliché modulo operator, but I don’t think that can be avoided if the promise of “FizzBuzz Forever!” is to be upheld. At least, this one should be good for all values of forever < 2^54. To go any higher than that reliably, I’d need to go through the whole program and suffix all the numbers with n to use BigInt.

            1. 2

              That would have been an interesting timeline to visit. In our timeline the Linux console is regressing, they recently removed the scroll back buffer (i.e. shift-pageup does nothing).

              1. 3

                Just wait until the kernel implementation is removed altogether and moved into logind.

                1. 3

                  I’m somewhat in two minds about that. Back in the old days, the kernel just spoke a very primitive protocol to an RS-232 or similar and all of the clever terminal logic was implemented in hardware in the terminal. In the slightly less old days, IBM PCs (though not most other microcomputers) had a hardware text mode for the monitor and the OS started talking to that and so needed to emulate a bunch of terminal features but got others for free from BIOS services. In the modern world (and on early ’90s UNIX workstations), the simples interface that the hardware provides is a frame buffer.

                  This difference made the built-in terminals very slow on Linux on 32-bit SPARC workstations and meant that a lot of work was needed to make them fast on UEFI systems (which don’t have the old BIOS text mode).

                  I’d generally much rather see the kernel provide a dumb framebuffer and run a userspace program to handle the terminal. A userspace program can do things like allocate a file for persistent logging, use malloc on pageable memory to get large amounts of back trace support, incorporate a TrueType Font renderer without security issues and so on. It has to shunt data to a device fast enough that users won’t notice, which is quite easy with an X server running on a dumb framebuffer and a terminal emulator running in a separate process and so should be fairly trivial without X11 in the way.

                  The one case where this might be problematic is recovery. On Linux, with the initrd infrastructure, that’s far less of an issue than on something like *BSD (where you’d be left without a terminal if the root filesystem didn’t mount) because you can bundle the userspace program and are only stuck if you’re in a situation where the kernel can’t successfully launch a statically linked program from memory (and if your system is that badly broken, having a terminal emulator in the kernel probably won’t help).

                  Windows NT never assumed that the hardware supported text mode and so boots a recovery mode with the simple GUI and ConPTY running in userspace.

                  1. 2

                    *BSD (where you’d be left without a terminal if the root filesystem didn’t mount)

                    Interestingly, FreeBSD can easily do “initrd”/“initramfs”. The loader can load -t md_image your.file, the kernel can mount an FS from that ramdisk as the root fs, and the userspace there can ask the kernel to reroot (reboot -r) into your actual system. It’s just that nobody uses this in normal circumstances because the loader can just load required kernel modules directly from the disk :)

                    1. 1

                      I believe that all your requirements are exactly the features of kmscon. It needed kms or other framebuffer device, and then as a user, you replaced the getty with kmsconvt. It supported UTF-8 glyphs and had a proper configuration file.

                      More details at the archlinux wiki

                      1. 1

                        I’ve used this to boot a FreeBSD kernel that was loaded via JTAG and which then mounted most of the FS via NFS, but it’s not part of the normal workflow. I believe that, now that the reroot stuff has landed, it’s easier to make this a default part of the FreeBSD process (you could boot from your ramdisk and then, once you’ve validated that you can mount /, unmount it and throw away the pages used for the ramdisk. This isn’t part of the normal boot flow though.

                    2. 2

                      You’re joking, but there was such a replacement from one of systemd’s devs in the form of kmscon. As far as I remember it was discontinued at one point, but I don’t recall the reason.

                      I would love to see a modern replacement for the tty susbset, even coming from the systemd team.

                    3. 2

                      they recently removed the scroll back buffer (i.e. shift-pageup does nothing).

                      Really!? What was the motivation for that change?

                      1. 3

                        Announcement. tl;dr: was declared broken and therefore removed.

                        1. 1

                          I would also like to find that out. Just haven’t had time to check.

                        2. 1

                          It has always been kinda iffy… if you switch between VTs it stops working anyway… (edit: i mean like it would be cleared)

                          But what they should do is just pass through shift+pageup to the application if they aren’t going to do anything with it. Then programs like my nested terminal emulator could handle the scrollback itself.

                          1. 1

                            Do they actually eat shift+pageup now? Well you can always rebind the command in your nested terminal to something else. My tmux reacts to bare pageup on its own (tmux is smart about it, sending pageup into a text editor inside still works fine)

                        1. 11

                          And? I don’t see anyone complaining that most desktop applications use mostly the menu layouts and keyboard shortcuts. Why is uniformity and not surprising the user suddenly a bad thing when its the web?

                          1. 6

                            most desktop applications use mostly the [same?] menu layouts and keyboard shortcuts

                            I’m not sure that is true anymore. I don’t at all intend to argue against your point about uniformity and not surprising the user. But the desktop applications I’ve seen lately do not have a menu bar, they do not use standard window decorations and they seemingly do not have any common keybindings apart from Ctrl-c, Ctrl-x, Ctrl-v and Alt-F4. They render as borderless windows and implement their own minimize, maximize and close buttons. If there’s a menu it’s some custom stuff behind a button that looks either like a hamburger(‽), a gear or three vertical dots. The selected desktop theme has very little effect on their looks. They might as well be web pages, and many of them probably are.

                            1. 6

                              Exactly. I think what we are losing are the crazy homebrewed websites of the 90s/00s.

                              Now even the most modest and beginner website will be using one of the libraries used by everyone else.

                              This is both good, as it means that more people can finally access this technology (ss a developer), and bad, since we lose a bit of quirkiness.

                              The thing to think though is: was that crazy internet we had in the past due to creative people being creative or simply because everyone didn’t know anything and didn’t have tools to do better? I remember being 12 and struggling to make a background static, my first website wasn’t “different” out of creativity but out of lack of knowledge and patience.

                              1. 4

                                I think that uniformity is a benefit, but only if the standard that has been settled on is good. For example, I think that hamburger menus, which are everywhere today, are clearly inferior to horizontal menus, which were everywhere fifteen years ago.

                                1. 2

                                  Horizontal menus are great on desktop, but don’t work in mobile. That’s why we got hamburger menus.

                                  1. 3

                                    The problem is that website developers force that compromise on everyone, rather than just on mobile device users.

                                    If a hamburger menu really is the best solution for a certain website when it’s viewed from a mobile device, I really would like the website to degrade to a hamburger menu when I visit it from a phone, and display a normal, non-horrible menu on desktop. It’s not even that hard anymore, now that pointer media query is supported by everything.

                                2. 1

                                  The entire last section of the article is dedicated to addressing this.

                                  1. 4

                                    No, it is not. The last section’s TLDR is: Conformity through libraries brings greater accessibility, Mozilla says its bad, and appeal to nostalgia. It does not at all address that the exact opposite attitude is generally held for most of the rest of computing.

                                1. 1

                                  Is there a single cryptographic ledger in the world, or is it one per e.g. package manager or programming language?

                                  1. 2

                                    One per microcosm.

                                    Optionally, these can cross-sign onto each other for greater resilience. See cross-signing in Chronicle.

                                    1. 1

                                      Interesting. That is likely the right design, as there would otherwise be problems with e.g. namespacing.

                                      I would like to understand the cryptographic ledger better and how it is protected against abuse. Your link mentions using public keys in the context of server communication, so I’m guessing this mechanism stops random people from adding pure junk to the ledger. I understand from the main page that revocations are handled by adding to the ledger. Is it ever possible to remove something completely from the ledger once the data is on it, or is it there forever? If not, is there a human in the loop to review transactions before they are added to the ledger?

                                      1. 2

                                        AuthN/AuthZ for ledger publishing is handled by the existing update infrastructure, which Gossamer treats as a black box.

                                        Everything is immutable: once published, it cannot be removed. Thus, append-only.

                                  1. 2

                                    I’ve borrowed a ROCK Pi X, an x86-64 computer in a Raspberry Pi format, and will try to get my kernel running on it.

                                    1. 5

                                      Is there a tl;dr on how to check for the rootkit?

                                      1. 2

                                        From the NSA disclosure:

                                        If the following commands are run on the command-line and the “testfile” disappears, the system is infected with Drovorub. If the “testfile” does not disappear, the system may still be infected with Drovorub. The signature “ASDFZXCV” could have changed or the pseudo-device used for host-based communications between Drovorub-client and Drovorub-kernel module could be something other than /dev/zero.

                                        touch testfile
                                        echo “ASDFZXCV:hf:testfile” > /dev/zero
                                        ls
                                        
                                      1. 4

                                        Do most schools not teach kids how to type? I went to a tiny rural elementary school and even we had a typing class. It’s a skill that has a pretty decent ROI - eliminating the cognitive overhead associated with typing reduces the friction between your brain and the machine you’re interfacing with.

                                        Relevant XKCD (although it should be extended up and to the left for this…)

                                        1. 5

                                          Nope, that’s not very widespread at all.

                                          1. 3

                                            Here in the UK I’m not aware of any formal touch typing education in the Curriculum…at any level.

                                            1. 2

                                              I believe it was an elective when I was in grade school in Sweden in the 1980s… none of the kids in our household have encountered it.

                                              1. 3

                                                I took a touch typing class at a Swedish grade school in the middle of the 1990s. I remember using SPCS Tangentbordsträning and typing the alphabet in under 4 seconds (but when the teacher wasn’t looking we played a climbing game that advertised a fruit juice drink). Touch typing was not a widespread skill among my peers at the time, some were stunned that I typed without looking down.

                                                Even though we were using computers, I got the feeling that the class might have been a relic from the time of typewriters.

                                            1. 2

                                              Fun stuff! How hard would it be to mux multiple ethernets over one fibre link? (even thinner!)

                                              1. 1

                                                mux multiple ethernets

                                                You mean like VLANs? Or some sort of ring topology network?

                                                1. 1

                                                  You can use VLAN to get multiple virtual Ethernet networks, but it doesn’t give you any extra bandwidth.

                                                  You can get additional bandwidth over a fiber by using more frequencies, but it’s probably not something you’d use at home. You get transceivers for different frequencies and hook them up to a CWDM or DWDM mux/demux filter. This device lets you take the different frequencies from several fiber pairs and run them over a single fiber. So in one end of the device you put in multiple fibers and in the other end you have just one fiber. Basically a fancy prism. This technology can be quite useful if you’ve got connections to multiple operators in a city and want to save on fiber rent.

                                                  In the article he’s using a single-strand fiber and a bi-directional transceiver, using a pair of frequencies in the same strand. So in a sense he’s already running at twice the regular bandwidth for a strand. (I’m not sure a regular mux/demux filter even works with single-strand fibers). But if you have an existing installation with 1Gbps SFPs and want more bandwidth then you can just upgrade the SFPs to e.g. 10Gbps or 40Gbps.

                                                1. 2

                                                  I enjoy these types of articles! I believe that we need people who point out to us that the systems we’re using and designing could be better, that we have inherited a view of the world that limits our vision of what’s possible. It’s not necessary to accept the suggested alternatives as being better, but they can be used to open up your mind to new ideas. Designs of computer systems are open to a lot of choice, but few of the people I’ve worked with in the past have seen anything other than modern mainstream systems.

                                                  About ASCII, there’s an old joke that every key on a serial terminal is already claimed by Emacs, except for BREAK.

                                                  1. 2

                                                    About ASCII, there’s an old joke that every key on a serial terminal is already claimed by Emacs, except for BREAK.

                                                    In TECO, the original mother system for Emacs, every string of characters is a valid, if not useful, TECO program.

                                                  1. 13

                                                    If your new project-approved main branch is quux but like me you have muscle memory you don’t want to retrain, something like this may help:

                                                    $ git symbolic-ref -m "save on retraining"  refs/heads/master refs/heads/quux
                                                    
                                                    1. 1

                                                      What does “quux” refer to?

                                                      1. 2
                                                        1. 2

                                                          foo, bar, baz, quux.

                                                          1. 2

                                                            Quux refers to none other than Guy Steele, co-creator of Scheme! :)

                                                            http://catb.org/jargon/html/Q/quux.html

                                                        1. 0

                                                          I’d argue that types are a terrible solution to the actual problem.

                                                          I’d argue the actual problem is, we need to check variables in our languages, for instance for someone’s age, we almost certainly don’t want -32768 as a possible age, as that makes zero sense. Also an age of 32768 is also probably equally stupid.

                                                          we want age to be an integer between 0 and 120 or so. Certainly < 200. That’s what we actually want.

                                                          We can argue about the upper and lower bounds of the age variable, depending on the program being written(i.e. an age of 120 for a program about the romans would be laughable, since they never lived remotely that long). But I hope we can all agree there should be upper and lower bounds for our variables.

                                                          Types, basically don’t do that, and practically every language ever written skips over any sane way to have limits on our variables besides basically int8, int16 and string.

                                                          There are some attempts, Liquid Haskell has a way. Postgres does this pretty well with the check constraint(though it’s not a programming language, obviously). Nim recently got ‘DrNim’ that attempts the same thing. Most other languages fail.

                                                          1. 8

                                                            Types do that. Commonly the pattern looks like having a constructor function that validates the machine type, like smart constructors in Haskell. (Though, as cgenschwap already noted, dependent types can do this in a quite different way.)

                                                            1. 2

                                                              I think you meant types might be able to do that. so I agree, in theory, types can grow to specify constraints, but other than Haskell(with multiple competing solutions apparently) and now Ada(thanks @weinholt), nobody’s type system has this ability that I’m aware of(I’m sure there are some weird esoteric languages out there that do..).

                                                              But no commonly available/used language has anything resembling a way to sanely do constraints. The best you can do is writing a check function and calling it all over the place, hoping you don’t miss a place and your constraint fails to hold, with no warnings if you miss a spot. Languages aren’t immune to the problem, even most databases, except some SQL ones(like PG’s check) pretty much punt on constraints, so it’s a very wide problem.

                                                              Even web frameworks, mostly fail at checking constraints, and it’s rare to see web code in the wild do much beyond the occasional JavaScript-based client-side validation of inputs. Otherwise the most you will see is ‘yes input validation is important’, but almost nobody is doing it. It’s hard, it’s not taught in programming classes or books or documentation(for the most part) and languages by and large punt on the issue.

                                                              I’ve read a few haskell learning sites, and a book, though I’ve never programmed anything useful in Haskell, and I’d never heard of smart constructors before, so even when it’s available, nobody apparently uses it.

                                                              Anyways, the goal here, from my perspective, is we desperately need to validate inputs, and store data with known constraints, and with rare exception, no code does this, and no commonly used languages make this remotely easy. so I think my point stands, constraint checking is still very much not done in the wild.

                                                              Thanks for teaching me about Smart Constructors! :) I <3 learning new things!

                                                              1. 8

                                                                Pascal also supports it:

                                                                type
                                                                  Age = 0..200;
                                                                
                                                                1. 4

                                                                  Smart constructors are definitely not in the “nobody uses it” category. They are one of the most pervasive patterns in strongly typed languages (especially ML descendants like Haskell or Scala).

                                                                  1. 2

                                                                    Smart constructors are just functions that build values of the required type, but perform some extra checks when the value is constructed…

                                                                    It seems like you could employ the same smart constructor pattern in many languages. For the age example, you’d create a type for the valid age range and use this type elsewhere in your code:

                                                                    class Age {
                                                                        final int value;
                                                                        Age(int value) {
                                                                            if (value < 0 || value > 120) {
                                                                                ...raise exception
                                                                            }
                                                                            this.value = value;
                                                                        }
                                                                    }
                                                                    

                                                                    This is along the lines of cgenschwap’s recommendation of preferring parsing over verifying.

                                                                    1. 1

                                                                      You’d have to make sure the setters and getters did the checking as well along with making sure there was never any access to the internal value other than by the setters and getters. Which is a lot more faff than having it supported natively.

                                                                2. 7

                                                                  Aren’t you just talking about dependent types? I don’t think this is a situation where languages “fail” per se, but more that it is a technically difficult thing to do (while also having a language that is easy to use for regular programmers/programs).

                                                                  Dependent types are just an extension of types – so they are certainly a good solution to the actual problem!

                                                                  1. 1

                                                                    Dependent types is one way to do this, though so far I’ve never seen that built into a language and usually a very complicated way.

                                                                    But who uses dependent types? no languages really have them built-in, certainly no commonly available/used languages. Haskell, has Liquid Haskell and per pushcx smart constructors also does this, apparently. Are Smart Constructors built-in? It seems like they are, but my Haskell on this machine won’t compile it, but it’s also a really old Haskell, so that could be why.

                                                                    I agree bolting constraints onto our existing type system(s) is very complicated and messy.

                                                                    I’ve never seen any code out in the wild that does anything like this.

                                                                    We all know we can’t trust whatever the user gives us, and the giant list of security vulns just enforce the point, and yet basically no language in common use has any nice sane way to handle these sorts of issues.

                                                                    1. 3

                                                                      If dependent types interest you, the answer to “who uses dependent types” is idris

                                                                      1. 2

                                                                        It is unfortunate that few languages have dependent types – I completely agree with you here. However, putting constraints on user input isn’t really an issue in my opinion. You should always parse the info from the user rather than verify it.[1]

                                                                        Raw user input is stored in a Raw{var} type (which can’t be trusted) and is parsed (with constraints) into a {var} which can be used without fear. Of course, this doesnt guarantee the data is valid – your code might still screw it up – but this concept can just be used every time the data is mutated.

                                                                        Dependent types are fantastic because they turn this into a compile-time guarantee. Otherwise I don’t really see the benefit of having a language feature like this at runtime, it is very easy to do yourself.

                                                                        [1] https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/

                                                                        1. 1

                                                                          I think you and I are in complete agreement here about the end goal. I’ve read that post before, and while what they write is possible in Haskell, basically never used(from my very limited Haskell experience), in other languages it’s a giant PITA.

                                                                          No popular JSON parser will let you add constraints to your parsing of JSON(that I’m aware of).. The most they will do is sort of let you say this must be an int64, or this must be a string. Obviously JSON is just one example here. I’m sure there is one or two very generic parsers that allow for constraints at parsing time, but I’m not aware of any in popular languages that make adding actual constraints easy, or even possible.

                                                                          1. 1

                                                                            Certainly with strong, static typing this is easier to enforce (functions only take the parsed version of input). However every language can do this, it just becomes a matter of code hygeine. If JSON parsers dont let you add constraints then you just add another parsing step which can apply constraints.

                                                                            Sure this adds boilerplate and complexity, but I would argue that this is fairly easy to do.

                                                                    2. 6

                                                                      I’d argue that types are a terrible solution to the actual problem.

                                                                      I’d argue the actual problem is, we need to check variables in our languages…

                                                                      …we want age to be an integer between 0 and 120 or so. Certainly < 200. That’s what we actually want.

                                                                      Let me make sure that I understand what you’re asserting here: you believe that there’s only value in type systems insofar as they can allow for constraining numeric types to a bounded range? And, all languages with static type systems which fail to do this are fundamentally failures?

                                                                      1. 0

                                                                        No, Types are awesome for compilers, to make things go fast and optimize their implementation. There is a reason types got invented in the first place. It’s hugely easier for a compiler to optimize number math if they don’t have to concern themselves with if it might also be a string “happy”.

                                                                        I argue though that they are pretty terrible for end programmers, because they lack constraints. There is a reason Python and friends, who mostly ignore types are hugely popular.

                                                                        I only picked age as a very easy, hard to dispute example, but I believe constraints should apply to all data types, not just numeric types. pay period date constraints on a timesheet would be another easy use-case that doesn’t use numbers, but dates.

                                                                        PostgreSQL’s check syntax is what I’m after here, before anything can get stored in the table, it has to be verified for sanity. but PostgreSQL is the wrong place to do this, it needs to happen way out near the user, so it’s way, way easier to say “hey user, “first” is not a valid number in the range 0-100, since this is an input for age.” So when we go to store the variable in our program, we need to be able to parse it and constrain it and verify it’s sane before anything else can happen. We as an industry completely fail at this, for the most part.

                                                                        1. 3

                                                                          Yes and no. There is a lot of benefits to types, they help when writing code by pointing out bugs before the code is running (contrary to Python for example). Depending on the type model you even get theorems for free, i.e. you can prove theorems about functions just from it’s type signature! That’s pretty neat.

                                                                          Another problem is the overly structured data you’re proposing: What if I’m 106 and want to register for your service? What if I don’t have a first name? What if I don’t have a street address and live “2 mi N then 3 mi W of Jennings, OK 74038”? What if, in a family tree program, a person wants to input a child which he had with his daughter?

                                                                          I’m not saying no constraints is a better approach, but there are a lot of edge cases to be thought of, even for something as simple as an age or a name, which maybe shouldn’t be restricted at all.

                                                                          1. 2

                                                                            There are new things being added to types to make it better, I agree, dependent types one of them. Like the OP post says, many type systems are hard to reason about.

                                                                            I agree gross errors are caught trying to shove a string into an int8 variable. But academic papers disagree over how useful types are in practice, it’s mostly just yelling opinions across the internet these days, as far as I can tell. Perhaps over time, academic papers will have better science involved and eventually figure it out, but I think we can all agree the answer , scientifically speaking, is murky at best[0]. That said proving theorems sounds pretty neat!

                                                                            Of course there are lots of edge cases with data validation/parsing, the known issues here, are multitude. I don’t have a street address most of the time. That doesn’t mean we should punt and give up on the problem, and let everything be free-form text fields. :) It’s very, very hard to reason about free-form text fields.

                                                                            Every application will likely need unique constraints around particular data, depending on the context, but I think sane defaults can be found for many use cases. In my OP I covered this already. We can argue where the limits need to be, but for most applications I think we can agree negative ages, and ages over 150[1] are probably sane defaults.

                                                                            If you buy into the parse vs. validate debate[2], we can’t even currently parse with any sanity. OpenBSD mostly punts on sane parsers and just assumes they are totally broken by sandboxing the parsers from the rest of the application(sshd, tcpdump as examples). I also mentioned in a different comment about JSON parsers as an example.

                                                                            0: http://danluu.com/empirical-pl/

                                                                            1: https://en.wikipedia.org/wiki/Oldest_people

                                                                            2: https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate

                                                                      2. 5

                                                                        Types, basically don’t do that, and practically every language ever written skips over any sane way to have limits on our variables besides basically int8, int16 and string.

                                                                        I believe that Ada handles this in a good way. You can declare an age type that has a valid range of 0 .. 120. I don’t have direct knowledge of this, but AFAIK it uses a combination of static and dynamic checking. Those cases which are impossible to verify with a static checker are verified at runtime.

                                                                        1. 3

                                                                          Pascal and Common Lisp are two other languages with this feature, just for completeness. They’re called “subrange types” in Pascal.

                                                                          1. 2

                                                                            Yep, Ada can do this. You can also use a regular integer type with contracts and use Spark (the Ada subset) to prove that the integer is in the range you expect it to be, thus guaranteeing that your program is free from runtime exceptions.

                                                                            Ada has some pretty cool features, it’s sad that nobody knows about them.

                                                                          2. 4

                                                                            You might find Racket’s contract system interesting. Also this talk if you have ~40 minutes (assuming 1.5x speed).

                                                                            1. 1

                                                                              Neat! So I agree in non-popular languages, this is sort of only recently being addressed, to some degree or other, with varying degrees of implementation. Most documentation ignores the problem. I’ve never used Racket, but Haskell is the other commonly known language that has this ability to some degree, yet I’ve never seen any Haskell code in production that uses any of the features available. Is using the contract system actively used in Racket?

                                                                              I went looking through github, seems Pollen is popular for something written in racket, and it uses ‘provide’! [0]

                                                                              It seems however, it’s limited to modules only.

                                                                              0: https://github.com/mbutterick/pollen/search?q=provide&unscoped_q=provide&type=Code

                                                                              1. 3

                                                                                Yes, the majority of Racket code uses contracts extensively and they are also used in documentation. Some examples:

                                                                                provide is just Racket’s way of exposing bindings from one module so that they can be required by another. The contract library provides the contract-out provide transformer that attaches contracts to bindings when they are provided. You’re right that when someone uses contract-out, then that contract will only be enforced at module boundaries. However, that’s not the only way to attach a contract to a value. The same library also provides define/contract among other things so you can do stuff like this within a single module:

                                                                                #lang racket
                                                                                
                                                                                (define smallint/c (integer-in 0 255))
                                                                                
                                                                                (define/contract (f x)
                                                                                  (-> smallint/c smallint/c)
                                                                                  x)
                                                                                
                                                                                (f 42)
                                                                                (f 1024)
                                                                                

                                                                                Running the above yields:

                                                                                42
                                                                                f: contract violation
                                                                                  expected: (integer-in 0 255)
                                                                                  given: 1024
                                                                                  in: the 1st argument of
                                                                                      (-> (integer-in 0 255) (integer-in 0 255))
                                                                                  contract from: (function f)
                                                                                  ...
                                                                                

                                                                                Or even stuff like:

                                                                                #lang racket
                                                                                
                                                                                (define smallint/c (integer-in 0 255))
                                                                                
                                                                                (define/contract (f x)
                                                                                  (->i ([in smallint/c])
                                                                                       [out (in) (=/c (add1 in))])
                                                                                  x)
                                                                                
                                                                                (f 42)
                                                                                

                                                                                That yields:

                                                                                f: broke its own contract
                                                                                  promised: (=/c 43)
                                                                                  produced: 42
                                                                                  in: the out result of
                                                                                      (->i
                                                                                       ((in (integer-in 0 255)))
                                                                                       (out (in) (=/c (add1 in))))
                                                                                  contract from: (function f)
                                                                                  blaming: (function f)
                                                                                   (assuming the contract is correct)
                                                                                

                                                                                It’s been a while since I’ve done any Haskell, but I don’t think there’s anything quite like this in the language. I definitely recommend watching the talk I linked to because it explains some of these ideas in a visual way and much better than I could do here.

                                                                                I believe Clojure is also adopting some of these ideas now via spec, but I haven’t looked into it.

                                                                                1. 1

                                                                                  <3 Thanks!! This looks very awesome! Go Racket!

                                                                                  1. 1

                                                                                    <3 Thanks!! This looks very awesome! Go Racket!

                                                                              2. 2

                                                                                I believe you’re looking for dependent types as in eg Idris: https://en.wikipedia.org/wiki/Dependent_type

                                                                              1. 4

                                                                                (My take on this: yes, a downloaded package gets to run its own Swift code as part of installation, and that could do bad stuff. But don’t most package managers have the same vulnerability? There’s usually some sort of Turing-complete script that gets to run, with privileges to access the filesystem and load code … a makefile, Rakefile, whatever. Swift code can directly access GUI frameworks on a Mac, but any sort of makefile can build and run a small native binary that can do the same.)

                                                                                1. 1

                                                                                  Indeed, packages are used for the code that is in them, it is supposed to run. If not on installation, then later.

                                                                                  But it becomes a problem in a context where nobody checks packages before using them. There are many package managers where the central repositories accept anything from anyone and there are no sanity checks. Sometimes a particular incident is highlighted and shared on sites like this, but few seem to want to fix the broken system that allowed the incident to occur in the first place.

                                                                                  1. 1

                                                                                    Compare and contrast with systems like Nix which have sandboxed builds and do not allow unfettered access to the filesystem or network.

                                                                                    1. 2

                                                                                      Mac OS has pretty robust sandboxing too; maybe they’ll apply that to the Swift package manager.

                                                                                  1. 31

                                                                                    The reason they spread these misconceptions is straightforward: they want to discourage people from using the AGPL, because they cannot productize such software effectively.

                                                                                    This doesn’t stand up to even a modicum of scrutiny. First of all, it assumes you know the intent of Google here. I don’t think Google’s intentions are that great to be honest, but as a rule of thumb, if you form an argument on knowing the intentions of other humans, it’s probably a bad argument unless you can provide credible evidence of their intent. Secondly, I see no such credible evidence in this article, and the lack of attention paid to how Google handles other licenses in this article is borderline disingenuous. All I see is a casual observation that Google’s policy benefits them systemically, which I would absolutely agree with! But that shouldn’t be a surprise to anyone.

                                                                                    Why? Because it omits critical context. The AGPL is not the only license that Google bans. They also ban the WTFPL, which is about as permissive as it gets. They ban it because they have conservative legal opinions that conclude it has too much risk to rely on. I think those legal opinions are pretty silly personally, although I am somewhat biased because I’ve released code under the WTFPL only to have one Googler after another email me asking me to change the license because it’s banned at Google.

                                                                                    My point is that there are other reasonable business explanations for banning licenses. Like that a team of lawyers paid to give their best expert advice on how a judge would rule for a particular license might actually, you know, be really risk averse. Licenses aren’t some black and white matter where things that are true and things that are not are cleanly separated in all cases. There’s oodles of grey area largely because a lot of it actually hasn’t been tested in court. Who would have thought the courts would rule the way they did in Google v. Oracle?

                                                                                    What’s the cost of being wrong and having Google required to publish all of their source code? Can anyone here, even a Googler, even begin to estimate that cost? If you haven’t thought about that, then you probably haven’t thought deeply enough to criticize the intentions on this particular piece of “propaganda.” Because that’s probably what Google’s lawyers are weighing this against. (And probably an assortment of other such things, like the implications of allowing AGPL but giving each such use enough scrutiny as to be sure that it doesn’t wind up costing them dearly.)

                                                                                    But by all means, continue punishing companies for making their policies like this public. Because that’s a great idea. (No, it’s not. Despite how annoying I find Google’s policies, I really appreciate having them documented like they are.)

                                                                                    Disclaimer: I don’t like copyleft, but primarily for philosophical reasons.

                                                                                    1. 11

                                                                                      I don’t think Google’s intentions are that great to be honest, but as a rule of thumb, if you form an argument on knowing the intentions of other humans, it’s probably a bad argument unless you can provide credible evidence of their intent.

                                                                                      As someone who previously worked on the open source team at Google and sat in the office and am friends with these humans, I can say very strongly that those lawyers do not have some sort of hidden agenda. It is also certainly false to assume they are not competent at their job. My read is that they are, as you might expect, very good at their job (noting I am also not a lawyer).

                                                                                      A common mistake I see many commenters (and news stories etc etc) and I think you head to unintentionally, is to talk about Google as if it is a single anthropomorphic entity with its own thoughts and feelings. This piece does the same. There is not “a Google” that is making amoral decisions for its global benefit . There is an office of humans that try their best and have good intentions.

                                                                                      The team makes decisions in this order:

                                                                                      1. Protect the open source ecosystem.
                                                                                      2. Protect the company.

                                                                                      “Protect the ecosystem” is hard to believe if you buy into the “amoral entity” argument but is provably true: the easiest way to protect the company is to ban open source contribution (aside from forced copyleft terms) at all, but Google does this a lot under the Apache 2 (permissive) license. The banned licenses, as you note, are those that either do not have enough specificity (like WTFPL) or ones with what the legal team believe are onerous terms. They are good laywers, and so you have to assume they have a pretty strong case for their interpretation. Even if you think they are wrong (as all law is essentially malleable), hashing things out in court to decide what the terms of the license truly mean is a really bad use of time and money.

                                                                                      1. 13

                                                                                        There is not “a Google” that is making amoral decisions for its global benefit . There is an office of humans that try their best and have good intentions.

                                                                                        Yes, there is. The two are not mutually exclusive. A corporation like Google is structured in such a way that the sum of all its humans, all trying their best, serves the interests of the company. It’s not anthropomorphic, but it does have an agenda, and it’s not necessarily that of any of its constituent humans. Whether morality features prominently on that agenda is a legitimate matter for debate.

                                                                                        I think you’re trying to open a semantic crack in which responsibility can be lost: misdeeds are attributed to Google, but since Google isn’t one person it can’t be guilty of anything. But if companies really aren’t more than the sum of their parts, at least one person at Google must be responsible for each of its transgressions, which I think casts doubt on the claim that they have good intentions.

                                                                                         

                                                                                        The team makes decisions in this order:

                                                                                        1. Protect the open source ecosystem.
                                                                                        2. Protect the company.

                                                                                        Maybe that’s true of the open source team. It’d be hard to believe that of Google in general—partly because it’s a coompany and you’d expect it to protect itself first, but more concretely because there’s history. Google has been hegemonizing Android for years. They’re also trying to do the same to the Web, via Chrome. The open source ecosystem gets to use whatever Google puts out, or suffer. I don’t see how that’s healthy.

                                                                                         

                                                                                        “Protect the ecosystem” is hard to believe if you buy into the “amoral entity” argument but is provably true: the easiest way to protect the company is to ban open source contribution (aside from forced copyleft terms) at all, but Google does this a lot

                                                                                        (I note that you don’t have a problem anthropomorphizing Google when it’s doing things you think are good.)

                                                                                        I’ve yet to see the proof. Publishing open source software doesn’t necessarily speak to any commitment to the wellbeing of the open-source ecosystem, nor does it typically carry any great risk. Let’s take a couple of minutes to think of as many reasons as we can why a company might publish open-source software out of self-interest:

                                                                                        • The existence of good tooling for markets you dominate (web, mobile) directly benefits you
                                                                                        • Developers like publishing things, so letting them publish things is a cheap way to keep them happy if it doesn’t hurt you too badly
                                                                                        • It’s great PR
                                                                                        • If you have a way to use your open-source thing in a way that nobody else does, the free work other people do on it gives you an advantage

                                                                                        You might say: so what? Obviously they have businessy motivation to care about open source, but what does it matter if the result is they care about open source? But, as we’ve seen, the moment it benefits them to work flat-out on destroying an open ecosystem, they do that instead.

                                                                                        1. 3

                                                                                          But, as we’ve seen, the moment it benefits them to work flat-out on destroying an open ecosystem, they do that instead.

                                                                                          This could be said of nearly any corporation as well.

                                                                                          Move from OS sales to cloud services, buy an open-source friendly company, release a good editor that works on the competition, and even inter-op with rhe competition.

                                                                                          The example may have the best intentions in mind, insofar a corporation can, but could also be a long-con for traction and eventually blast out something that makes the users jump ship to the corporation’s platform.

                                                                                          Best part of it all is, it could be hedging in case that “something” comes along. There is some win either way and an even bigger win if you can throw the ideals under the bus.

                                                                                          1. 2

                                                                                            For sure. It’d be naïve to think Microsoft had become nice. They’ve become smarter, and they’ve become a smaller player comparatively, and in their situation it’s pragmatic to be a good citizen. Google was the same with Android before they won their monopoly.

                                                                                          2. 2

                                                                                            (I note that you don’t have a problem anthropomorphizing Google when it’s doing things you think are good.)

                                                                                            It’s easy to do, mistakes were made, I’m human. Don’t assume malice or misdirection.

                                                                                            1. 5

                                                                                              I don’t assume either. I think it’s a natural way to communicate about organisations. But your opening gambit was about how talking about Google in those terms betrayed some error of thought, so I’d hoped that pointing this out might give you pause to reconsider that position. I didn’t mean to cast doubt on your sincerity. Apologies.

                                                                                              1. 2

                                                                                                All good 👍

                                                                                          3. 10

                                                                                            Right, I mostly agree with what you’re saying! I do think a lot of people make the mistake of referring to any large company as a single entity, and it makes generalizing way too easy. With the WTFPL thing, I experienced that first hand: a bunch of individuals at Google reached out to me because none of them knew what the other was doing. And that’s a totally reasonable thing because no large company is one single mind.

                                                                                            Now, I don’t want to come off like I think Google is some great thing. The WTFPL thing really left a sour taste in my mouth because it also helped me realize just how powerful Google’s policies are from a systemic point of view. They have all these great open source projects and those in turn use other open source projects and so forth. My libraries got caught up in that, as you might imagine in this day and age where projects regularly have hundreds or thousands of dependencies, and Google had very powerful leverage when it came to me relicensing my project. Because it worked itself back up the chain. “{insert google project here} needs to stop using {foo} because {foo} depends on {burntsushi’s code that uses WTFPL}.” Now foo wants to stop using my code too.

                                                                                            I’m not saying any of this is particularly wrong, to be honest. I am an individualist at heart so I generally regard this sort of thing as okay from an ethical or legal perspective. But still, emotionally, it was jarring.

                                                                                            Do I think the lawyers in Google’s open source policy office think about that sort of effect it has on individuals? I don’t really. I don’t think many do. It’s probably a third order effect of any particular decision, and so is very hard to reason about. But from my perspective, the line of policy making on Google connects very directly to its impact on me, as an individual.

                                                                                            In the grand scheme of things, I think this is not really that big of a deal. I’m not all hot and bothered by it. But I do think it’s a nice counter-balance to put out there at least.

                                                                                            1. 4

                                                                                              To play devil’s advocate:

                                                                                              It appears that seasoned lawyers have deemed the license you use “not specific enough”.

                                                                                              Isn’t the whole point of a license to fully lay out your intentions in legal terms? If it doesn’t succeed at that, wouldn’t it be better to find another license that does a better job at successfully mapping your intentions to law?

                                                                                              1. 6

                                                                                                To be clear, I don’t use the WTFPL any more, even though I think it makes my intent perfectly clear. So in a sense, yes, you’re right and I changed my behavior because of it. I stopped using it in large part because of Google’s influence, although the WTFPL didn’t have a great reputation before Google’s policy became more widely known either. But most people didn’t care until Google’s policy influenced them to care. Because in order for my particular problem to exist, some amount of people made the decision to use my project in the first place.

                                                                                                I brought up the WTFPL thing for two reasons:

                                                                                                • To demonstrate an example of a license being banned that isn’t copyleft, to show that Google has other reasons for banning licenses than what is stated in the OP.
                                                                                                • To demonstrate the impact of Google’s policies on me as an individual.

                                                                                                I didn’t bring it up with the intent to discuss the particulars of the license though. I’m not a lawyer. I just play one on TV.

                                                                                                1. 2

                                                                                                  But I think even Google’s influence is just one example of the commercial world interacting with the “libre” world; in this light, Google is just entering earlier and/or investing more heavily than its peers. And it could be argued that’s a good thing, as it puts libre creators more in touch with the real needs of industry. It’s the creator’s choice whether to acknowledge and adapt to that influence, or to bend to it entirely. As I see it, Google can’t make you do anything.

                                                                                                  I do hope that Google carves out exceptions for things like Affero though, since I share Drew’s confusion at Google’s claim of incompatibility. I’m in the same boat, after all; I’m also a user of a niche license (License Zero), the legal wording of which I nevertheless have great confidence in.

                                                                                                  I believe that at some point, companies like Google will have to bend to the will of creators to have control over how their work is licensed. I happen to use License Zero because it seems to provide more control on a case-by-case basis, which I think is key to effecting that shift.

                                                                                                  1. 4

                                                                                                    I do hope that Google carves out exceptions for things like Affero though, since I share Drew’s confusion at Google’s claim of incompatibility.

                                                                                                    Large parts of Google work in a monorepo in which anything goes if it furthers the mission. The Google licensing site brings up that example of a hypothetical AGPL PostGIS used by Google Maps. In normal environments that wouldn’t be an issue: your code interfaces to PostGIS through interprocess APIs (which still isn’t linking even with the AGPL) and users interact with your code, but not with PostGIS. In the monorepo concept code can quickly be drawn into the same process if it helps any. Or refactored to be used elsewhere. That “elsewhere” then ends up under AGPL rules which could be a problem from a corporate standpoint.

                                                                                                    It’s a trade-off between that flexibility in dealing with code and having the ability to use AGPL code, and the organizational decision was apparently to favor the flexibility. It can be possible to have both, but that essentially requires having people (probably lawyers) poring over many, many changes to determine if any cross pollination between license regimes took place. Some companies work that way, but Google certainly does not.

                                                                                                    I believe the issue with WTFPL is different: because it’s so vague my guess is that the open source legal folks at Google would rather see that license disappear completely to protect open source development at large from the potential fallout of it breaking down eventually, while they probably don’t mind that the AGPL exists. At least that’s the vibe I get from reading the Google licensing site.

                                                                                                    (Disclosure: I work at Google but neither on open source licensing nor with the monorepo. I also don’t speak for the company.)

                                                                                                    1. 4

                                                                                                      As I see it, Google can’t make you do anything.

                                                                                                      Maybe I didn’t express it clearly enough, but as I was writing my comments, I was painfully aware of the possibility that I would imply that Google was making me do something, and tried hard to use words that didn’t imply that. I used words like “influence” instead.

                                                                                                      And it could be argued that’s a good thing, as it puts libre creators more in touch with the real needs of industry. It’s the creator’s choice whether to acknowledge and adapt to that influence, or to bend to it entirely.

                                                                                                      Sure… That’s kind of what I was getting at when I wrote this:

                                                                                                      I’m not saying any of this is particularly wrong, to be honest. I am an individualist at heart so I generally regard this sort of thing as okay from an ethical or legal perspective. But still, emotionally, it was jarring.

                                                                                                      Anyway, I basically fall into the camp of “dislike all IP.” I’d rather see it abolished completely, for both practical and ideological reasons. Then things like copyleft can’t exist. But, abolishing IP would change a lot, and it’s hard to say how Google (or any company) would behave in such a world.

                                                                                                      1. 2

                                                                                                        Anyway, I basically fall into the camp of “dislike all IP.” I’d rather see it abolished completely, for both practical and ideological reasons.

                                                                                                        Maybe we should turn Google into a worker coop 😉 Then its employees could change IP policy like you say, the same way they successfully protested the deals w/ China & the US military.

                                                                                              2. 3

                                                                                                There is not “a Google” that is making amoral decisions for its global benefit . There is an office of humans that try their best and have good intentions.

                                                                                                Mike Hoye wrote a short article called “The Shape of the Machine” a couple of months ago that examines the incentives of multiple teams in a large company. Each team is doing something that seems good for the world, but when you look at the company as a whole its actions end up being destructive. The company he’s talking about also happens to be Google, although the lesson could apply to any large organization.

                                                                                                I definitely agree with you that Google has lots of capable, conscientious people who are doing what they think is right. (And to be honest, I haven’t thought about the licensing issue enough to be able to identify whether the same thing is at play here.) I just think it’s good to keep in mind that this by itself is not sufficient for the same to be said for the organization as a whole.

                                                                                              3. 9

                                                                                                This is exactly what I came here to say. Basing an argument on your own interpretation of a license is a great way to get into legal trouble. Not only is there the risk that a judge in a court of law may disagree with your interpretation but there is also the risk that you will invite litigation from others that have a different interpretation and disregarding the risk of losing that litigation that litigation has a cost.

                                                                                                So by using AGPL you incur not only the risk of having the wrong interpretation once it is tested in court but also the risk of an increase in costly litigation over time. This risk is further magnified by your size and how much larger it makes the target on your back.

                                                                                                1. 12

                                                                                                  Basing an argument on your own interpretation of a license is a great way to get into legal trouble

                                                                                                  The article starts with “I’m not a lawyer; this is for informational purposes only”, and then proceeds to make strong un-nuanced claims about the license and even proceeds to claim that Google’s lawyers are incompetent buffoons and/or lying about their interpretation. Saying you’re not an expert and then pretending you are in the very next sentence is pretty hilarious. It’s abundantly clear this article is to support the author’s politics, rather than examine legal details.

                                                                                                  1. 6

                                                                                                    I’m not a lawyer; this is for informational purposes only

                                                                                                    I believe that Americans write that type of disclaimer because it is illegal over there to practice law without a license, and articles about software licenses can easily wander into dangerous territory. So based on that, I think it’s unfair to hold that up as a point against the article.

                                                                                                    Disclaimer: I’m not a lawyer; this is for informational purposes only.

                                                                                                    1. 1

                                                                                                      I started to call that tactic ‘joe-roganizing’. He does the same: “I don’t know anything about this.”, Then, in the next sentence: ‘[very strong opinion] - everyone who disagrees is surely stupid….’

                                                                                                  2. 9

                                                                                                    I worked at a startup where we had a massive compliance burden (yay FDA!) and so had even fewer resources than usual. One of my jobs as engineering lead there was to go and audit the tools and source that we were using and set guidelines around what licenses were acceptable because we could not afford the lawyer time if there were any issues.

                                                                                                    If the AGPL had been tested in court, I think companies would be a bit more chill about it, but I reckon that nobody wants to bankroll a legal exploration that could turn out very much not in their favor.

                                                                                                    One of the annoying things too about licensing, especially with networked systems and cloud stuff, is that the old reliable licenses everybody basically understands (mostly) like BSD and MIT and GPL and LGPL were made in a (better) world where users ran the software on machines they owned instead of interacting with services elsewhere. We still haven’t really identified an ontology for how to treat licensing for composed services on a network, versus how to handle services that provide aggregate statistics for internal use but not for end users, versus dumbly storing user data, versus transforming user data for user consumption.

                                                                                                    1. 4

                                                                                                      What’s the cost of being wrong and having Google required to publish all of their source code?

                                                                                                      That’s not how the AGPL works.

                                                                                                      The AGPL does not force you to distribute anything.

                                                                                                      If they’re “wrong”, they are in breach of contract. That’s it. They can then remedy that breach either by ceasing use of that software or by distributing their changes, or even by coming to some alternative agreement with the copyright holders of the AGPL’d software in question.

                                                                                                      1. 2

                                                                                                        This seems like a nit-pick. The point of my question was to provoke thought in the reader about the costs of violating the license. What are those costs? Can you say with certainty that they will be small? I’m pretty sure you’d need to be a lawyer to fully understand the extent here, which was my way of saying, “give deference where it’s due.”

                                                                                                        I personally think your comment is trying to minimize what the potential costs could be, but this isn’t theoretical. Oracle v. Google is a real world copyright case that has been going on for years and has almost certainly been extremely costly. I don’t see any reason why an AGPL violation couldn’t end up in the same situation.

                                                                                                        1. 4

                                                                                                          It’s an actual misconception that many people have, and I don’t think it’s good to perpetuate it.

                                                                                                          1. 2

                                                                                                            I guess that’s fair, but it seems like splitting hairs to me. Even you said “distributing their changes” as a possible remedy, and there’s a fine line between that and “publish all of their source code.” It really depends on how the law and license is interpreted, and nobody knows how it will be. So lawyers guess and they guess conservatively.

                                                                                                            1. 0

                                                                                                              The easiest way not to perpetuate it is to not use the AGPL.

                                                                                                        2. 3

                                                                                                          Thanks for saying this. I don’t work at Google, but I know many people who work at it and other large companies and have talked with them about license policy, and the article just reeks of ignorance as to how corporate lawyers work; even for relatively small companies.

                                                                                                          There’s no ideology here, there’s just lawyers doing what they were hired to do: use an abundance of caution to give the company as ironclad a position as possible.


                                                                                                          Hell, forget WTFPL, I’ve been waved off considering triple licensing of (approved) licenses by Googlers as “the lawyers would never go for this”. The lawyers are going to go for well understood, battle tested licenses where the failure cases aren’t catastrophic.


                                                                                                          Besides that it seems like the article misunderstands what constitutes a “derivative work”, if the article’s definition of “derivative work” (i.e., the code must be modified, not simply “used as a dependency”) was the one used by the *GPL licenses, then there would be no need for LGPL to exist.

                                                                                                          1. 1

                                                                                                            but as a rule of thumb, if you form an argument on knowing the intentions of other humans, it’s probably a bad argument

                                                                                                            This is not true.

                                                                                                            Firstly, the rule for another person and the rule for CORPORATIONS are completely different. Corporations do not operate like people do. When corporations are small, they sort of do, but as they grow larger then they become more corporations like.

                                                                                                            Secondly, it is impossible to know the intentions of other humans. So by this argument, no argument is ever good.

                                                                                                            We might give people the benefit of the doubt, because people are mostly good. They are ruled by an ethical system, built into their brain, to socialise and cooperate. Corporations do not have this internal system. Their motivational system is entirely profit based, and therefore you cannot treat them like people.

                                                                                                            If you have been alive long enough and paid attention to what corporations do, and especially google, the idea that they consider AGPL hostile, and wish to limit its influence and expansion, is highly plausible. How will they limit its influence? They could ban it completely, and then publish a document detailing why they think it’s bad. That’s highly plausible.

                                                                                                            Is risk-averse lawyering a factor? Most likely yes. But risk-averse lawyer adds to the hostility argument. Having received the advice from lawyers to not use AGPL, leadership would easily conclude that a limit to AGPL spread would give them the best chance of getting free software and have their way.

                                                                                                            Additionally, your steelman argument does not explain why google publishes that they do not like AGPL. They could keep it entirely internal. Why do you think they would do that? Free legal advice to competing startups?

                                                                                                            1. 3

                                                                                                              Firstly, the rule for another person and the rule for CORPORATIONS are completely different. Corporations do not operate like people do. When corporations are small, they sort of do, but as they grow larger then they become more corporations like.

                                                                                                              That makes sense in a certain light, sure. But I don’t see what it has to do with my point.

                                                                                                              Secondly, it is impossible to know the intentions of other humans. So by this argument, no argument is ever good.

                                                                                                              I don’t really agree. It might be true in the strictest philosophical sense, but that needn’t be our standard here. Intent is clearly something that we as a society have judged to be knowable to an extent, at least beyond some reasonable doubt. Just look at the criteria for being convicted of murder. It requires demonstrating something about the intent of someone else.

                                                                                                              Why do you think they would do that?

                                                                                                              When was the last time you saw any company publish legal advice generated by internal review?

                                                                                                              If you have been alive long enough and paid attention to what corporations do, and especially google, the idea that they consider AGPL hostile, and wish to limit its influence and expansion, is highly plausible. How will they limit its influence? They could ban it completely, and then publish a document detailing why they think it’s bad. That’s highly plausible.

                                                                                                              I think you’ve really missed my point. If the OP were an article discussing the plausibility of one of any number of reasons why Google published an anti-AGPL policy, then I would almost certainly retract my comment. But that’s not what it was. It’s a one sided turd without any consideration of alternative perspectives or explanations at all.

                                                                                                          1. 1

                                                                                                            How is this related to https://github.com/freebsd/freebsd/? The commit hashes don’t match the tree on GitLab.

                                                                                                              1. 1

                                                                                                                Wow, that’s… wow. The description of how vendor branches are going to work to avoid using submodules makes me so very glad I don’t maintain anything in contrib. Thank you for your work keeping dtc in sync, I’m sorry to hear that the git working group has decided to make your life harder than it needs to be.

                                                                                                                1. 1

                                                                                                                  What is the best way to handle vendor branches in cases like this?

                                                                                                                  1. 2

                                                                                                                    If you don’t have an allergic reaction to submodules, clone each of the upstreams and then the directories in the contrib directory submodules. Keep an upstream branch in each of the cloned repos and a contrib branch that carries any changes you’ve made. It requires users to add –recurse when they clone and pull, but given how many things use submodules now that’s a pretty common requirement. If you don’t have any changes, then the submodules just points at your mirror of the upstream. If you do, then having a self-contained git repo for that project makes merging relatively painless and preserves history. If you’re happy to burn some CPU cycles, you can use git-imerge in rebase-with-history mode every time you pull from upstream to give a clean history of your changes applied on top of upstream, while also making it possible for people who have local changes to merge your new version. In both cases, you update the shared version by just bumping the submodule version. Your main repo’s history just contains a hash and, for extra benefits, people can clone the whole history of your project but use shallow clones of the submodules to avoid having, for example, the entire history of the LLVM versions that you’ve shipped.

                                                                                                                    1. 1

                                                                                                                      It requires users to add –recurse when they clone and pull, but given how many things use submodules now that’s a pretty common requirement.

                                                                                                                      I keep all my vim plugins as submodules in .vim/bundle and every single time I’ve ever cloned my .vim I’ve gone:

                                                                                                                      $ git clone $URL
                                                                                                                      $ ln -s .vim/vimrc .vimrc
                                                                                                                      $ vim 
                                                                                                                      oh, no plugins, wtf? oh ffs
                                                                                                                      $ rm -rf .vim
                                                                                                                      $ git clone $URL --recurse-submodules
                                                                                                                      $ vim
                                                                                                                      :Helptags
                                                                                                                      

                                                                                                                      I don’t think I’ve ever remembered it once, and I can never remember the command for submodules. Is it git submodule init --update? Or git submodule update --init? Easier to just clone again with --recurse-submodules.

                                                                                                                      Your main repo’s history just contains a hash and, for extra benefits, people can clone the whole history of your project but use shallow clones of the submodules to avoid having, for example, the entire history of the LLVM versions that you’ve shipped.

                                                                                                                      And of course they do have the full history of the LLVM versions that you’ve shipped if they want them, they just don’t have to if they don’t want them. It really is the best of both worlds.

                                                                                                                      I must say I find keeping submodules in sync with what they’re meant to be just bizarrely painful, though. Do you know of any way to just say ‘always keep the submodules at whatever commit they’re meant to be’?

                                                                                                                      1. 1

                                                                                                                        I must say I find keeping submodules in sync with what they’re meant to be just bizarrely painful, though. Do you know of any way to just say ‘always keep the submodules at whatever commit they’re meant to be’?

                                                                                                                        There’s a bot on GitHub that notices if your submodules are out of date and sends a PR to update it. I’m not sure if you have to explicitly opt in to it (it seems to run on everything in the Microsoft org).

                                                                                                                        I know that several of my colleagues have just added some custom git verbs to handle them (and also do common things like stash, update, stash pop), so never have to deal with the core git UI abominations for them.

                                                                                                            1. 9

                                                                                                              I knew it a few seconds in, but I listened on 1.75x in the background… then he finally gets there that the folks who got rms to resign were complaining about stuff not worth mentioning by name which indeed was part of a national scandal.

                                                                                                              Centering in part on a WWII era center of American thought MIT, the scandal over Epstein, over dehumanizing women’s lived experience, wasn’t a joke scandal. The acts of RMS for years were bugging people out, in ways that if he’d done them to fellow men, fellow young men, he probably would’ve gotten booted years ago. But here in this video it doesn’t even merit mention by name, only vague reference.

                                                                                                              Being excellent to each other means replacing missing stairs.

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

                                                                                                              1. 4

                                                                                                                I think there are two separate issues here: what RMS said and did, and the mob reaction that forced him out. Maybe both are wrong.

                                                                                                                1. 3

                                                                                                                  There was no mob reaction, let alone a ‘linux users mob’ That’s really the crux of it. The video assumes Linux users had some majority agency in removing him, when in fact he was booted because no organization can have someone like that associated with them. It’s common decency not Linux community decency that forced him out. No mob of any sort needed.

                                                                                                                2. 5

                                                                                                                  If I’m ever in the mood for reading toxic rhetoric (which never happens), I go read RMS. While the things you listed are important, I never really knew about them until the mob happened, because I chose to ignore him.

                                                                                                                  Anyway, toxic rhetoric is exactly the thing that polarizes our world and turns everyone into abominable villains. Toxic rhetoric starts wars and tears communities apart. So in my book, toxic rhetoric alone is enough to get anyone fired.

                                                                                                                  1. 4

                                                                                                                    Yeah I don’t get why some people insist on defending Richard Stallman after his:

                                                                                                                    • pedophilia support
                                                                                                                    • untoward behaviors towards women
                                                                                                                    • utter lack of humility bordering on parody

                                                                                                                    It often makes me think the RMS defenders really think that low of women and that their only code is the bro code. As a woman in technology, it makes me feel somewhat jaded. Just because someone does good things doesn’t excuse them from acting like a human being. :-/ It feels more that people like me are perfectly fine to sacrifice as long as some figure head gets his adoration. And that bothers me a lot.

                                                                                                                    1. 25

                                                                                                                      RMS never supported pedophilia. I actually read the supposed evidence. They are thoughts/questions, admittedly naive, on the subject of unintended consequences of laws (evidence against pedosexual activity being itself illegal) and whether non-coercive, mutually beneficial, pedosexual activity, could, in principle, be possible.

                                                                                                                      Also, please don’t use the term ‘pedophilia’ here. Pedosexual activity is child abuse and that is what is wrong, not ‘pedophilia’. We should encourage people to come forward as pedophiles to counselors and therapists so they can learn to live with a -philia that they must never follow up on. Shaming them for their feelings or even calling them evil merely for their feelings only makes the risk greater.

                                                                                                                      1. 18

                                                                                                                        pedophilia support

                                                                                                                        It was a single philosophical blog banter that he later retracted. Calling it a support is a far far stretch.

                                                                                                                        untoward behaviors towards women

                                                                                                                        Am I missing something or all he did was literaly ask out women on dates? Is that bad?

                                                                                                                        Stallman is weird in many ways but to consider him to be a malicious monster is ridiculous.

                                                                                                                        1. 5

                                                                                                                          He’s an awkward, clearly aspergers guy that asked some women out on dates quite awkwardly. That’s ‘untoward behaviour towards women’ today.

                                                                                                                        2. 27

                                                                                                                          When I did initially read about it, I was quite skeptic, particularly as I had recently seen many cases of mob justice gone wrong.

                                                                                                                          Later it blew out of control and I did some digging. It turned out to be nothing else than the usual character assassination some collectives favor. Due to his personality and lack of awareness of current trends, Stallman proved an easy victim.

                                                                                                                          1. 20

                                                                                                                            Hard agree. Unfortunately, this is happening in tech far too often. The free and open source software movements are getting caught in the cross-fire of US politics.

                                                                                                                            1. 4

                                                                                                                              I disagree. RMS was a seminal contributor to the movement, but there is no reason to pretend that his behavior - which might have acceptable back in the day when computer sciences were a boys club and movies like Revenge of the Nerds were considered funny even though they depict non-consensual sex as a ‘prank’ - is compatible with today’s world.

                                                                                                                              Epstein’s case is not subject to ‘politics’: the guy was a known pedophile and sex trafficker. There’s not even a point in arguing that. Minsky, who Stallman defended, was well-aware of Epstein’s circumstances and willingly took money from him and sexual favors from one of his victims. One could argue that Stallman was trying to make a ‘philosophical’ argument or playing devil’s advocate, but you’d have to ignore the kind of message that would be sending to any young women or victim of sexual assault in that mailing list: welp, it’s a shame Minsky got caught doing something really bad, let’s just ignore this other victim so we avoid rocking the boat!

                                                                                                                              1. 14

                                                                                                                                Epstein’s case is not subject to ‘politics’: the guy was a known pedophile and sex trafficker. There’s not even a point in arguing that. Minsky, who Stallman defended, was well-aware of Epstein’s circumstances and willingly took money from him and sexual favors from one of his victims. One could argue that Stallman was trying to make a ‘philosophical’ argument or playing devil’s advocate, but you’d have to ignore the kind of message that would be sending to any young women or victim of sexual assault in that mailing list: welp, it’s a shame Minsky got caught doing something really bad, let’s just ignore this other victim so we avoid rocking the boat!

                                                                                                                                It is insane to me that RMS’s opponents would denounce a person for making an argument that a personal friend of theirs is not guilty of a crime, on the grounds that making this argument “sends a message” to people who might see it who are members of a demographic they assume is likely to be a victim of that crime. I’m deliberately not addressing the question of whether or not Stallman’s argument is correct or not, in the context of the actual alleged crime. Maybe he’s wrong and Minsky really was guilty in a legal or moral sense of having illict sex. I’m not sure what I think about Stallman’s argument in context, although I agree with him that something seems morally wrong about charging a person with the crime of statutory rape who was unaware that the person they had sex with was under the age of consent.

                                                                                                                                I’m not particularly interested in litigating the details of a media-reported crime I have no special information about, and it doesn’t matter in any event. Young women as a demographic, or even actual victims of sexual assault, have no particular right to never see someone argue that a specific sort of sexual encounter wasn’t actually a sexual assault. I refuse to be complicit in condemning RMS for doing so.

                                                                                                                                1. 2

                                                                                                                                  Do you even understand how society works? Are you arguing that people - in particular people in a position of power in a learning institution - should be able to say whatever comes to their minds, disregarding how other people are going to take what they say?

                                                                                                                                  That’s the kind of behavior that leads to the normalization of behaviors like Minsky’s. The fact that people like RMS are comfortable thinking this is some philosophical riddle we are able to discuss, instead of clearly gross behavior that would creep the fuck out of any young person in the lab, is the problem. This is not someone pondering whether a bear shits in the woods, this is someone defending a 74 year man having sex with people in the age range of his students in front of his students.

                                                                                                                                  Now, if that’s perfectly normal behavior for you, then I don’t know what to tell you. Maybe a consultation with a therapist would be a good start (and no, I’m not being an flippant about it).

                                                                                                                                  1. 6

                                                                                                                                    Do you even understand how society works?

                                                                                                                                    I believe this is a bit patronizing.

                                                                                                                                    Are you arguing that people - in particular people in a position of power in a learning institution - should be able to say whatever comes to their minds,

                                                                                                                                    Yes? I believe that anyone should be able to say almost anything. Of course, there are the traditional exceptions for slander and specific incitation of a crime.

                                                                                                                                    disregarding how other people are going to take what they say?

                                                                                                                                    Lacking foresight is no reason to deny someone’s voice.

                                                                                                                                    1. 6

                                                                                                                                      I believe that anyone should be able to say almost anything.

                                                                                                                                      Good argument against arresting someone. None of this is illegal, nor should it be.

                                                                                                                                      Bad argument for leaving someone in charge of the FSF. Figureheads have resigned for less.

                                                                                                                                      1. 3

                                                                                                                                        Being cast out from society is, like it or not, a serious effect. It’s more serious, in many cases, than legal censorship.

                                                                                                                                        1. 2

                                                                                                                                          Not being the head of the FSF any more is not the same thing as being banished.

                                                                                                                                          1. 3

                                                                                                                                            Being ostracised by the community and accused of all manner of wrongthink and wrongdoing based on at best wilful misinterpretation is being banished.

                                                                                                                                            1. 1

                                                                                                                                              If it works out anything like it worked out for Brian Eich, I’m sure Starman would do fine.

                                                                                                                                              1. 3

                                                                                                                                                Brian Eich? Starman?

                                                                                                                                                Come on if you’re going to participate in the discussion you could make a good faith effort to at least get the names right.

                                                                                                                                                1. 2

                                                                                                                                                  I agree, but it’s Brendan Eich and Stallman. Starman is someone else entirely.

                                                                                                                                        2. 4

                                                                                                                                          I believe this is a bit patronizing.

                                                                                                                                          But, on the other hand, it isn’t patronizing at all to assume how everyone should behave around people who say things that make them feel unsafe?

                                                                                                                                          Yes? I believe that anyone should be able to say almost anything. Of course, there are the traditional exceptions for slander and specific incitation of a crime.

                                                                                                                                          Sure, and I believe people should be able to fire a co-worker they disagree with or find generally disagreeable.

                                                                                                                                          Lacking foresight is no reason to deny someone’s voice.

                                                                                                                                          ‘Lacking foresight’ is hardly the problem, when there’s an extensive email thread where RMS kept digging deeper and deeper. I could see him lacking foresight before the first email, but by the third reply you’d assume he’d have some hindsight.

                                                                                                                                          1. 3

                                                                                                                                            Lacking foresight is no reason to deny someone’s voice.

                                                                                                                                            Dr. Stallman’s free speech rights have not been infringed in any way.

                                                                                                                                          2. 4

                                                                                                                                            Do you even understand how society works? Are you arguing that people - in particular people in a position of power in a learning institution - should be able to say whatever comes to their minds, disregarding how other people are going to take what they say?

                                                                                                                                            Yes. In fact, providing a space for people to say things that (some) other people take to be offensive is an important function of universities as an institution. This is the purpose of tenure systems, for instance.

                                                                                                                                            That’s the kind of behavior that leads to the normalization of behaviors like Minsky’s. The fact that people like RMS are comfortable thinking this is some philosophical riddle we are able to discuss, instead of clearly gross behavior that would creep the fuck out of any young person in the lab, is the problem.

                                                                                                                                            This isn’t (only) a question over whether some kind of sexual behavior is gross on an abstract philisophical level, it’s a question about whether something a friend of his did in fact or should have have constituted a serious felony under law. Discussing questions of law is absolutely the rightful concern of any citizen. I completely reject the idea that the standard of whether a behavior is moral or not should be based on whether some people claim it makes young people in a lab feel grossed out or not.

                                                                                                                                            This is not someone pondering whether a bear shits in the woods, this is someone defending a 74 year man having sex with people in the age range of his students in front of his students.

                                                                                                                                            I defend this. I explicitly believe that it is possible for a 74 year old man to have sex with someone of the traditional age to go to college (18-22 or so - that is, legal adults!) without either party doing something immoral. In fact, I believed this when I myself was within the ages of 18-22! Again, I refuse to be complicit in condemning someone else for making this kind of argument.

                                                                                                                                            1. 2

                                                                                                                                              Yes. In fact, providing a space for people to say things that (some) other people take to be offensive is an important function of universities as an institution. This is the purpose of tenure systems, for instance.

                                                                                                                                              RMS, as a non-tenured member of MIT, should’ve known that didn’t apply to him.

                                                                                                                                              This isn’t (only) a question over whether some kind of sexual behavior is gross on an abstract philisophical level, it’s a question about whether something a friend of his did in fact or should have have constituted a serious felony under law.

                                                                                                                                              ‘Gross’ vs. ‘legal’ isn’t abstract in the context he was discussing though. Let’s think of a different example: let’s say someone in an academic context talks about his experiences with prostitutes in a country where that’s legal. Would that be acceptable?

                                                                                                                                              Just because something is legal, it doesn’t mean discussing it or defending it is appropriate in every context.

                                                                                                                                              I defend this. I explicitly believe that it is possible for a 74 year old man to have sex with someone of the traditional age to go to college (18-22 or so - that is, legal adults!) without either party doing something immoral. In fact, I believed this when I myself was within the ages of 18-22! Again, I refuse to be complicit in condemning someone else for making this kind of argument.

                                                                                                                                              Well, we agree to disagree on that. Personally, I feel like there are so many questions about power imbalance embedded in that statement, that it could lead to a loooooong conversation I’m not willing to have seeing as people have been flagging my replies because apparently not defending RMS is a sin or something.

                                                                                                                                              1. 1

                                                                                                                                                Yes. In fact, providing a space for people to say things that (some) other people take to be offensive is an important function of universities as an institution. This is the purpose of tenure systems, for instance.

                                                                                                                                                There is a time and place for this - for example, invited speakers, seminars, lectures. A free-form mailing list for students and faculty would fall outside of this in most contexts - i.e. if some idiots starts spouting Nazi propaganda for trolling purposes, they can be banned from the conversation.

                                                                                                                                                Dr. Stallman did not have tenure at MIT. In fact, he was not even part of the staff. His office and access to the mailing list was provided as a courtesy.

                                                                                                                                                This isn’t (only) a question over whether some kind of sexual behavior is gross on an abstract philisophical level, it’s a question about whether something a friend of his did in fact or should have have constituted a serious felony under law.

                                                                                                                                                The sad part of this is before this happened, I had no idea that Marvin Minsky was mentioned in the Guiffre deposition[1]. Had Dr. Stallman not gone out on the field and broken a lance for him, I would not have to contend with the plausible possibility of him availing himself of sexual favors provided through Epstein.

                                                                                                                                                I refuse to be complicit in condemning someone else for making this kind of argument.

                                                                                                                                                One can simultanously agree that Dr. Stallman has and did have a right to make this argument, and also agree with the right of MIT to terminate his unofficial occupancy of an office, and the right of the FSF to remove him from a leadership position[2].

                                                                                                                                                Free speech is the right of an individual not to be gagged by the state, not an obligation that private parties have to host that speech.

                                                                                                                                                ______
                                                                                                                                                

                                                                                                                                                [1] a deposition isn’t a statement of fact under the law, it’s a document submitted by one party in an ongoing lawsuit.

                                                                                                                                                [2] as an advocacy group, the FSF is reliant on persuading people to their ideals (and usually soliciting financial donations). A public view (no matter how legally absurd) that their primary spokesperson is a defender of pedofilia is counterproductve to the mission of the FSF.

                                                                                                                                                1. 4

                                                                                                                                                  Free speech is a principle of good society. Yes it has legal protection in some states but this constant appeal to ‘free speech is just a law stopping the STATE from censoring you’ is pathetic. Should we condone attacks on free speech in other states because it’s not protected by law in China or North Korea? Freedom of expression existed as a principle of a decent society far before it was ever enshrined in legislation. In New Zealand it isn’t even supreme law, essentially just a rule of administrative law and of legal interpretation (interpret ambiguity in favour of rights).

                                                                                                                                                  Nobody is talking about whether MIT had the right to terminate his privileges. That’s not in question, anywhere in this thread. The discussion is around whether it was right to do so.

                                                                                                                                                  1. 2

                                                                                                                                                    Nobody is talking about whether MIT had the right to terminate his privileges. That’s not in question, anywhere in this thread. The discussion is around whether it was right to do so.

                                                                                                                                                    In the narrow circumstances of Epstein’s alleged contributions to Harvard (he also had access to an office there as a private citizen, I believe) which is currently tearing Harvard apart, it was absolutely correct of MIT to defensively cut off Dr. Stallman from access to official MIT facilities and mailing lists. Not doing so would only have hurt MIT’s image (and possible future endowments).

                                                                                                                                                    Note that if Dr. Stallman had been part of the faculty or student body, I would probably not accept MIT’s behavior.

                                                                                                                                                    What is your opinion on the FSF removing him from a leadership position?

                                                                                                                                              2. 3

                                                                                                                                                Do you even understand how society works? Are you arguing that people - in particular people in a position of power in a learning institution - should be able to say whatever comes to their minds, disregarding how other people are going to take what they say?

                                                                                                                                                I think that people should not be expected to self-censor on the basis that people might get offended on behalf of others.

                                                                                                                                                This is not someone pondering whether a bear shits in the woods, this is someone defending a 74 year man having sex with people in the age range of his students in front of his students.

                                                                                                                                                Society decided a long time ago - and has not changed its decision since then - that once you’re over the age of consent there’s nothing wrong with relationships with anyone of any age also above the age of consent.

                                                                                                                                                You can advocate for change to that or that you think that’s wrong, but given that the primary basis for LGB rights advocacy I’ve seen is ‘consenting adults in private should be able to do what they like’ I think you should think carefully about what you’re implying.

                                                                                                                                                1. 2

                                                                                                                                                  I think that people should not be expected to self-censor on the basis that people might get offended on behalf of others.

                                                                                                                                                  So, is there any situation at all where you think people should self-censor? Say, for example, is sexual harassment appropriate? After all sexual harassment is just one person being offended about how someone else treats them.

                                                                                                                                                  Society decided a long time ago - and has not changed its decision since then - that once you’re over the age of consent there’s nothing wrong with relationships with anyone of any age also above the age of consent.

                                                                                                                                                  This is definitely not true. Society frowns upon all kinds of relationships where the age disparity is incongruous with the situation. For example, the terms ‘gold digger’, ‘crate robber’ and ‘cougar’ come to mind. Legality doesn’t equal acceptance.

                                                                                                                                                  You can advocate for change to that or that you think that’s wrong, but given that the primary basis for LGB rights advocacy I’ve seen is ‘consenting adults in private should be able to do what they like’ I think you should think carefully about what you’re implying.

                                                                                                                                                  If you can’t see the difference between two adults in a loving relationship wanting to be accepted by society vs. someone abusing a power imbalance to take advantage of people, then I don’t know what I can do to explain it to you.

                                                                                                                                              3. 1

                                                                                                                                                Young women as a demographic, or even actual victims of sexual assault, have no particular right to never see someone argue that a specific sort of sexual encounter wasn’t actually a sexual assault.

                                                                                                                                                Conversely, Stallman has no particular right to an office provided as a courtesy by a private university, nor does he have a particular right to a leadership position in a privately-held non-profit advocacy group.

                                                                                                                                                1. 8

                                                                                                                                                  Imagine someone who pretend to be very nice and morally virtuous to a crowd that’s obsessed with this, which can easily be any crowd when carefully herded the right way (most people will agree with superficial statements that sound “morally good”) and gains influence in this crowd.

                                                                                                                                                  Then, using this leverage (the belief this person is definitely a good person) and some character assassination material (an article, twits, whatever claiming a person is terrible; truth here is irrelevant, the holding of controversial opinions at any point in time, even the distant past, is often used as material), on someone (thereon subject), written by themselves or some convenient third party, calls on the mob to take on actions to try and destroy the subject’s life. Actions including online bullying and organized harassment of the subject’s employer, family and friends. This isn’t an exhaustive list.

                                                                                                                                                  There’s a name for a person who does this. It’s Sociopath, or as it used to be called, Psychopath. They are the actual monsters. Whereas the subject is actually nothing else than a victim. If you still have doubts, digging a little on the perpetrator will typically reveal they have had other targets. Yes, they do it, enjoy it, realize they can get away with it and then do it again.

                                                                                                                                                  It helps when in the mob there’s other monsters which enjoy doing this. They willingly help the mob leader, as in exchange they also get their help with other targets. There’s literally entire communities built around doing this.

                                                                                                                                                  This is getting out of control and it needs to stop. Awareness of how these monsters operate helps. At some point, however, instigators will hopefully have to start answering to Justice. The official sort, with trials, evidence, presumption of innocence and all these steps and safeguards which separate Justice from Mob Justice.

                                                                                                                                                    1. 5

                                                                                                                                                      I have just finished reading this. As I suspected, others have noticed this pattern, analyzed it and explained it much better than I could have.

                                                                                                                                                      Thank you for linking this excellent article on the matter.

                                                                                                                                                    2. 1

                                                                                                                                                      Imagine someone who pretend to be very nice and morally virtuous to a crowd that’s obsessed with this, which can easily be any crowd when carefully herded the right way (most people will agree with superficial statements that sound “morally good”) and gains influence in this crowd.

                                                                                                                                                      This is a straw man.

                                                                                                                                                      1. 3

                                                                                                                                                        This is a straw man.

                                                                                                                                                        No, it is not. My comment is about a dark pattern I have noticed in recent years, nothing else than that. The intended audience is pretty much everybody reading the thread. The intended effect is to raise awareness of this dark pattern, and to promote critical thought (there’s never enough of this).

                                                                                                                                                        The poster I was replying to isn’t being targeted by me in any other way than being the post that incited my reply, and is absolutely not being pinpointed as the instigator. Thus, I am not making them into some strawman.

                                                                                                                                                        Instead, they are kindly and indirectly being nudged into considering the possibility that they might be participating in such a scenario, and into reflecting into whether what they’re doing is positive.

                                                                                                                                                        1. 1

                                                                                                                                                          Can you cite an example of that ‘dark pattern’ you’ve noticed? Can you cite two examples? Can you cite examples where both sides of the political spectrum used that dark pattern to their advantage?

                                                                                                                                                          I’ll be happy to discuss them.

                                                                                                                                                          1. 3

                                                                                                                                                            Here’s an example: there is a transgender YouTuber whose channel is called ‘ContraPoints’. Her name is Natalie Wynn. She makes videos about a variety of different topics. She’s clearly left-wing and has stated openly and frequently that she is not a transmedicalist (essentially someone with a very narrow view of what constitutes a ‘valid’ transgender person).

                                                                                                                                                            She was essentially ‘cancelled’ on Twitter, and left Twitter as a result, because she made a video where she used a particular transgender activist as a voice actor for all of 6 seconds in an hour long video. What this activist actually said had nothing to do with transmedicalism, he was there to be the voiceover for a particular quote.

                                                                                                                                                            However, because said activist is alleged (without any basis that I’ve seen) to have transmedicalist views, not only did ContraPoints get ostracised from Twitter and harassed so badly she deleted her account and left the platform, but anyone that expressed any support for her (her friends, etc.) were harassed, even if they didn’t actually say anything beyond ‘she’s my friend’.

                                                                                                                                                            So to be clear, people get harassed (death threats, other violent threats, spammed with abusive imagery, told to kill themselves, etc.) not just for being a transmedicalist, not just for allegedly being a transmedicalist, not just for collaborating in an unrelated way with someone that they did not know allegedly is a transmedicalist, inhales but for being friends with someone that collaborated with someone that they did not know allegedly is a transmedicalist.

                                                                                                                                                            But no you’re right I’m sure that cancel culture isn’t a problem.

                                                                                                                                                            1. 1

                                                                                                                                                              Can you cite an example of that ‘dark pattern’ you’ve noticed? Can you cite two examples? Can you cite examples where both sides of the political spectrum used that dark pattern to their advantage?

                                                                                                                                                              The answer to all your questions is: I don’t need to.

                                                                                                                                                              I’ll be happy to discuss them.

                                                                                                                                                              I do not have the time nor the inclination to humor you any further than I have.

                                                                                                                                                              1. 1

                                                                                                                                                                The answer to all your questions is: I don’t need to.

                                                                                                                                                                So… it was a straw man. You were just pushing the whole ‘virtue signaling’/‘conservative oppression’ talking point on a conversation that had literally nothing to do with that.

                                                                                                                                                                I do not have the time nor the inclination to humor you any further than I have.

                                                                                                                                                                I have a feeling that you are one of those people who thinks he’s right even when proven wrong, and has been proven wrong enough times he’s learned not to push the envelope when things aren’t going his way. Can’t say I’m surprised.

                                                                                                                                                        2. -1

                                                                                                                                                          lol

                                                                                                                                                2. 8

                                                                                                                                                  I especially recommend reading the “Low grade “journalists” and internet mob attack RMS with lies.”, article, perhaps more for it’s content than it’s choice of words.

                                                                                                                                                  The upside to this whole debacle is that RMS will probably have more tile to work on the GNU project. IMO the role of president of the FSF wasn’t ever the best for him – even if I disagree with they way they amputated him. I’ve been following the Emacs mailing list in more detail recently, and maybe I have a wrong impression, but I see him taking part in the discussions more than at least over the last few years.

                                                                                                                                                  1. 0

                                                                                                                                                    I remember that article. It had some weird phrasings, since edited:

                                                                                                                                                    https://twitter.com/gerikson/status/1176211260142231552

                                                                                                                                                    RMS’ more ardent defenders are in general a bit outside the mainstream.

                                                                                                                                                    1. 9

                                                                                                                                                      This is known as ad-hominem. The author’s personal views (or what kind of person they are) are irrelevant to the validity of arguments presented.

                                                                                                                                                      The linked twit is a good reminder of why I avoid twitter. It is a community full of hate and destructive energy, not one of reasoning and respect for difference of opinions.

                                                                                                                                                      If someone cannot tolerate the existence of human beings who hold opinions different than theirs, then they’re toxic. Twitter is toxic, as it’s full of this sort of people, to the point it hosts mobs that attack people they disagree with, with the full intent of destroying their lives. This is called mob justice (I believe those involved tend to use euphenisms for this), as opposed to justice. Basically a mob, typically herded by a sociopath, playing judge and executor. It isn’t just in any way.

                                                                                                                                                      Twitter tolerates this behaviour and thrives on it. Twitter is a platform for organized hate. It is literally the platform where most of this is conducted. If Twitter went away overnight, the world would be better for it.

                                                                                                                                                      1. 3

                                                                                                                                                        It’s not really a stretch to say that the age of consent at 16 is too old. There are clearly kids having consensual sex that shouldn’t be illegal below that age, but not much below it. ‘Romeo and Juliet’ laws for anyone under 18 is probably a much more reasonable system.

                                                                                                                                                    2. 1

                                                                                                                                                      Hm, that article doesn’t do a great job of proving Stallman’s supposed innocence.

                                                                                                                                                      His argument that Minsky having sex with Virginia Giuffre is not a crime even though she was a minor because she was coerced by someone else is ludicrous. By that argument, having sex with a victim of sexual trafficking Is acceptable. Minsky was a grown-ass man that should be responsible - and accountable - for his decisions, including deciding to have sex with a minor in very weird and strange circumstances.

                                                                                                                                                      Besides the potential legality based on jurisdiction, the very obvious lack of morality of the act should make anyone take a step back. One can’t equate a 17 year old having sex with a partner of similar age as part of a normal love relationship with a full-grown adult taking advantage of someone barely able to make a decision about their sexuality… and yet, the author of that article seems to think that because Stallman somehow has been consistent about that misrepresentation, that must mean he’s been wronged by someone pointing out it’s wrong.

                                                                                                                                                      1. 8

                                                                                                                                                        He’s not arguing that it wouldn’t be a crime. I don’t know how you read that from the very clear, incredibly specific text.

                                                                                                                                                        1. -1

                                                                                                                                                          Did you read the mail thread linked in that article? The whole point of the thread is pondering if they should be calling this sexual assault or not, because to Minsky’s knowledge she could’ve just been a really keen very young woman. For context, they are talking about a 74 year old thinking that a teenager is coming on to him.

                                                                                                                                                          1. 5

                                                                                                                                                            I know two women who in their teens were gerontophiles.

                                                                                                                                                            1. -1

                                                                                                                                                              Ah, I see. So that makes it OK, I guess.

                                                                                                                                                              1. 5

                                                                                                                                                                It makes it believable that an old man could think a teenager is coming onto him, at the least.

                                                                                                                                                            2. 2

                                                                                                                                                              The structure of your post throws around some ideas, but doesn’t construct any arguments. It reads as an appeal to emotions.

                                                                                                                                                              The whole point of the thread is pondering if they should be calling this sexual assault or not, because to Minsky’s knowledge she could’ve just been a really keen very young woman. For context, they are talking about a 74 year old thinking that a teenager is coming on to him.

                                                                                                                                                              Your point being? Be very specific, because through your roundabout strategy, you come out to me as pushing the idea that some topics should never be discussed, that some ideas should be never expressed, and that people who dare do so should be executed by mob. Or that it is alright if this is what happens.

                                                                                                                                                              Please correct me if I am wrong. By all means, please tell me this isn’t what you’re trying to push.

                                                                                                                                                          2. 3

                                                                                                                                                            Virginia Giuffre

                                                                                                                                                            Being born in 1983, she couldn’t have been a minor in 2001 when she alleged this trafficking took place. Assuming that it happened, that Minsky was involved, and that Minsky had sex with her, the crime would not be having sex with a minor.

                                                                                                                                                            His argument that Minsky having sex with Virginia Giuffre is not a crime even though she was a minor because she was coerced by someone else is ludicrous. By that argument, having sex with a victim of sexual trafficking Is acceptable.

                                                                                                                                                            If you don’t know that someone is a victim of sexual trafficking then it isn’t wrong. Obviously.

                                                                                                                                                            1. 2

                                                                                                                                                              That depends on the definition of ‘minor’. In most places that means ‘under 18’, and last time I checked, if she was born in - say - September 1983 and the sexual encounter happened in January 2001, that’d make her a minor. In fact, being that both of them are American, and considering that Americans aren’t exempt from crimes committed against other Americans abroad, the statue is even less clear.

                                                                                                                                                              If you don’t know that someone is a victim of sexual trafficking then it isn’t wrong. Obviously.

                                                                                                                                                              Millions of Johns that got thrown in jail would like to disagree with you.

                                                                                                                                                    1. 3

                                                                                                                                                      Jesus Christ this article is complete trash.

                                                                                                                                                      Two thirds of the article is pointless propaganda, only after a good 60% the author actually starts explaining how this zettelkasten system works.

                                                                                                                                                      What’s the point? Why are you even trying to convince me? Are trying to sell me a piece of furniture later?


                                                                                                                                                      Regarding the system itself: I am tempted to say that a good wiki software like confluence would do the same, but the real advantage of the furniture is that it’s likely going to keep working in 20 years. I wouldn’t bet the same in confluence (or MediaWiki or whatever).

                                                                                                                                                      1. 4

                                                                                                                                                        Mediawiki is 18 years old. Confluence is 16. Considering the Lindy effect, there is a good chance they will still work in 20 years.

                                                                                                                                                        1. 4

                                                                                                                                                          Well, I wouldn’t call Confluence “good wiki software” any more than I would call Visual Basic a robust development environment, but I take your point. My database of personal and professional notes for the past 15 years has been a private instance of Dokuwiki and the more I read about Zettelkasten, it just sounds like a curated personal wiki like I have, once you get past all the gushing.

                                                                                                                                                          1. 2

                                                                                                                                                            Editing in confluence is light years ahead of pretty much everything else.

                                                                                                                                                            1. 1

                                                                                                                                                              Does dokuwiki have backlinks and tags?

                                                                                                                                                              1. 2

                                                                                                                                                                Backlinks yes, tags no. Maybe with a plug-in.

                                                                                                                                                                1. 1

                                                                                                                                                                  Thanks.

                                                                                                                                                                  So perhaps one could have a page called “Tag:Something” that only holds a description of what could have been the tag “#Something”. All pages that are related to “Something” should have a link to “Tag:Something” on their taglist, and the backlinks on page “Tag:Something” will show relevant pages.

                                                                                                                                                                  It’s a bit like Wikepedia’s “Category:Something”, isn’t it.

                                                                                                                                                            2. 3

                                                                                                                                                              The space around the concept “Zettelkasten” has all the features of an emerging marketing space. There are already multiple software solutions. Just wait for the custom-made physical slip-boxes, the note cards in different colors, the books, the pay-for videos, and the webinars.

                                                                                                                                                              1. 7

                                                                                                                                                                As I wrote here a couple weeks ago:

                                                                                                                                                                The Zettelkasten thing sure has been hitting the zeitgeist hard these last few months - right around when I started poking at those ideas myself after kind of edging around them for a decade or two. It’s interesting to feel a burgeoning nerd methodology cult wash over and through the system of my own thinking. I was a lot less self-aware the last few times this really happened to me (the first big wiki wave back in the era of thousand-line Perl CGI wiki software comes to mind), and I never got drawn into GTD or Agile on any deeply felt personal level, so it’s almost like a new experience.

                                                                                                                                                                That said, I think it’s also been quietly bubbling along in the background of the note-taking nerd memespace for many years now. I think I first ran across the word “Zettelkasten” on Taking Note, a blog I’ve probably been following since 2008 or so, but index card approaches that are clear relatives to it in one way or another have been popping up now and then for most of my adult life, I think. It just seems to have reached a critical mass lately. Or, as you say, become an emerging marketing space. Establishing itself as a working methodology-cult ecosystem with an in-group vocabulary, defined rituals, canonical texts & standard arguments, and mystique about True Process. You can see it happening in realtime over at the Zettelkasten Forum, which is run by the authors of The Archive.

                                                                                                                                                                …and which is an interesting forum to skim now and then. I don’t want to be disparaging, this is just how these sorts of cultural phenomena seem to unfold. I’m trying to stay self-aware about all this while I spend a fair amount of time building up my own system of notes.

                                                                                                                                                                (I did some ranting about notes about notes / writing about writing and so forth last night, inspired partly by this thread and others like it.)

                                                                                                                                                                1. 3

                                                                                                                                                                  The memory of your comment inspired mine.

                                                                                                                                                                  There will always be a market for selling tools that magically replace hard work and time with a “process”. I’m not really judging. My work/life doesn’t require anything like Zettelkasten, but I’m sure it would interest my dad, who has been buying old handheld computers just to keep using their database software.

                                                                                                                                                              2. 4

                                                                                                                                                                It’s weird too, that it sells the idea, then starts explaining how it works, then it goes back to selling it again for a few more paragraphs! And only after that second set of propaganda it finishes the explanation.

                                                                                                                                                                1. 3

                                                                                                                                                                  It’s not well written, but all the tools linked in the article are free (and most of them not harvesting your data).

                                                                                                                                                                  1. 2

                                                                                                                                                                    What’s the point? Why are you even trying to convince me?

                                                                                                                                                                    I think that it is targeted towards a particular audience: “The main component of The Writing Cooperative is our publication, which is one of Medium’s largest. […] Everything we publish falls within our mission statement: Helping each other write better.” But yeah, the tempo was a bit choppy and it reminded me of one of those “weird thing” articles. Then with big promises it dumps a board game on the reader without explaining the rules.

                                                                                                                                                                    It seems like there is something promising in Luhmann’s system, but I don’t want to risk getting a hand-me-down cargo culted version of it.

                                                                                                                                                                  1. 32

                                                                                                                                                                    There’s a huge vacuum in the search space right now since Google is so broken. This has so much potential!

                                                                                                                                                                    Could you tell us a little about how the search engine is implemented?

                                                                                                                                                                    1. 20

                                                                                                                                                                      Sure!

                                                                                                                                                                      I use Bing search services (via MS Azure). Quickref itself is a simple RoR app which loads metadata from https://github.com/freetonik/quickref.dev and talks to Azure, while maintaining privacy and not transferring any client info to MS.

                                                                                                                                                                      Bing is pretty good, since I didn’t have to crawl and index the sites myself (the first iteration was built with scrapy + elasticsearch), and the results are generally ok, but there are limits to the number of sites in the index and the number of priority adjustments. So, if this project proofs to be of value, I’d probably need to go back to custom crawl/search setup, hopefully with the help of others. I’ll definitely open source the app.

                                                                                                                                                                      1. 4

                                                                                                                                                                        Very interesting, I had no idea that Bing provides that kind of service. I think it’s good to use their service for now; for the users of a search engine the value should be in the search results, not in how the results are computed. The results are good as far as I can see, I’m finding lots of things I never knew about!

                                                                                                                                                                        If you have some thoughts about it, could you provide some guidance on what sites belong in the index and what is out of scope?

                                                                                                                                                                        1. 4

                                                                                                                                                                          If you have some thoughts about it, could you provide some guidance on what sites belong in the index and what is out of scope?

                                                                                                                                                                          Yeah, I’ll put that info to the github page. In short, I think it’s a good idea to stick to these:

                                                                                                                                                                          • official websites and docs
                                                                                                                                                                          • community-driven docs
                                                                                                                                                                          • private blogs
                                                                                                                                                                          • blogs of engineering departments of companies

                                                                                                                                                                          The borders are vague though, it’s a bit tricky to define. Like, I feel like dev.to is okay, but something like programiz.com is not…

                                                                                                                                                                      2. 14

                                                                                                                                                                        There’s a huge vacuum in the search space right now since Google is so broken.

                                                                                                                                                                        Absolutely yes. I believe that nowadays Google presents the most popular results and not the most accurate anymore. This is especially hard for programmers because we sometimes search for very narrow and specific things where accuracy actually matters. You can still find your ways around this (I call this search skills) but it seems to get harder recently.

                                                                                                                                                                        Maybe it’s time to have more specialized search providers / search engines in the future for different fields or purposes.

                                                                                                                                                                        1. 11

                                                                                                                                                                          One idea I had floating around my head is to seed a search engine with this human-curated content. These “awesome” lists have been appearing to fill a hole in Google, IMO.

                                                                                                                                                                          https://github.com/sindresorhus/awesome – 133 K stars

                                                                                                                                                                          https://github.com/vinta/awesome-python – 82K stars

                                                                                                                                                                          https://github.com/ziadoz/awesome-php - 24K stars

                                                                                                                                                                          https://github.com/aalhour/awesome-compilers – 5K

                                                                                                                                                                          Wikipedia is also another obvious source of human-curated content (and one that Google heavily relies on to answer many queries)


                                                                                                                                                                          It’s like a distributed Yahoo on top of Github! (if anyone even remembers what Yahoo did originally …!) Human curation rather than algorithmic.

                                                                                                                                                                          Basically the theory is that github collaboration prevents spam and is a filter for quality. Spam and dupes are the #1 problem you’ll run into when creating a search engine. And I think the web is full of pages that just BARELY meet the Google threshold of “not spam”. But those pages don’t make it onto these lists…

                                                                                                                                                                          So it should be an easier ranking problem in theory. Too bad I don’t have years to work on this :-/

                                                                                                                                                                          1. 3

                                                                                                                                                                            I mean, that’s how DMOZ and Yahoo worked in the Before Times™.

                                                                                                                                                                            1. 2

                                                                                                                                                                              If we think of a search engine as a shared view into a projected subset of the web and not a gate keeper, then the search service itself should be a form of collaboration so that groups of people can train/code/filter a specific hyperplane in a high dimensional space.

                                                                                                                                                                              There are plenty of niche industries that would be better served by industry specific search services.

                                                                                                                                                                              Combine reddit, full text search, rss/federated queries. Basically a community workbench for creating custom search and presentation services.

                                                                                                                                                                        1. 5

                                                                                                                                                                          Do any lobsters have ham radio licences?

                                                                                                                                                                          1. 4

                                                                                                                                                                            I got my license in the US some years ago, although I haven’t put it to as much use as I would like.

                                                                                                                                                                            1. 4

                                                                                                                                                                              Yes, I’m an active ham (Extra) who enjoys digital modes and hacking on ham-related software, among other things. I also have some fun with SOTA.

                                                                                                                                                                              1. 3

                                                                                                                                                                                SA6CJK here (from Sweden, which has a single license class with no renewals). I’m active on FT8 on HF every now and then. QRP has gotten easier with the new digital modes.

                                                                                                                                                                                1. 3

                                                                                                                                                                                  Yes indeedy, finally got my license a few years ago even though radio has fascinated me since I was a kid.

                                                                                                                                                                                  1. 2

                                                                                                                                                                                    Yes. Anyway I’m only in for APRS, SSTV and weathersats.

                                                                                                                                                                                    1. 2

                                                                                                                                                                                      I do but I need to renew it, will likely get a new callsign since I moved to a new country. QRP is a very interesting technical challenge.

                                                                                                                                                                                      1. 2

                                                                                                                                                                                        I do. It’s a surprisingly big hobby, not just a more powerful CB.

                                                                                                                                                                                        1. 2

                                                                                                                                                                                          raises hand