Threads for mmulet

  1. 1

    An interesting feature of this model is that it was trained on Huawei Ascend, instead of NVIDIA chips. In comparison, their last work, GLM-130B, was trained on NVIDIA A100.

    1. 1

      That is interesting. I bet we will see a lot more of that in the future because of the NVIDIA export ban. I’ve been looking online to see a performance comparison of the Huawei chips, but I can hardly find any information on them other than marketing material.

    1. 1

      Do you know why Emacs doesn’t support OTF features? I would like to get fontemon working in emacs (just for fun), but it relies heavily on the GSUB table and multiple substitutions. So, something like fontfreeze wouldn’t work.

      1. 3

        For those who, like me, had a hard time finding a summary of what this is all about, here it is:

        What Phantom OS is

        To be short:

        Orthogonal persistence. Application does not feel OS shutdown and restart. Even abrupt restart. It is guaranteed that application will be restarted in consistent state, which is not too old. As long as you have reference to any variable, it’s state is the same between OS reboots. You don’t have (though you can) save program state to files. It is persistent. Managed code. Native Phantom applications are running in a bytecode machine. (But it is worth to mention that Phantom has simple Posix compatibility subsystem too.) Global address space. Phantom OS is an application server. All applications can communicate directly, by sharing objects.

        Phantom OS persistence is achieved not by serializing data to files, but by running all applications in a persistent RAM. You can (and it will be true) think of Phantom memory subsystem as of a persistent paging engine. All the memory is paged to disk in a way that lets OS to restore whole memory image on restart. Consistently.

        (From the developer’s guide, which might be a starting point for introducing something like this than the particular kind of README in this repo.)

        1. 1

          I like this idea. I don’t know if I would switch my main OS to this, but it could be useful for virtual machines, like setting up a dev environment that has a lot of watcher scripts.

          1. 4

            resetting application state by OS reboots – has been the ‘repair’ tool of our trade, for more than 2 decades. :-) Some technologies, eg (Erlang) made it into a feature.

            But yes, this is very interesting. Perhaps another area where this would be very helpful – is running ‘dually-verifiable-mode’ (my naming). Where similar apps (in functionality) are separately designed and run on even different hardware. Yet, they periodically-compare their state, to ensure that the results are not diverging. If they do diverge, the instance with ‘correct state’ should take over.

        1. 5

          I was literally playing around with window mangers this weekend, so I know exactly where to start!

          Since you seem interested in wayland, tinwl is a great example of a minimal Wayland compositor. It’s part of the wlroots project, which seems to be a popular library for creating wayland window compositors

          If you would rather make a window manager in X11, check out dwm, it’s also a small and easy to understand tiling window manager in X11. You could also checkout dwl which is a wayland port of dwm.

          Last but not least, instead of writing your own window manager, you could use a custom configuration of fvwm. This what NsCDE does.

          1. 1

            Great, thanks! Is a window manager responsible for clearing the screen and so on? Or do I need to start a Wayland session some other way and then run the window manager?

            1. 2

              Last weekend I ended up using x11, so I don’t know the specifics of Wayland. But for x11 (on Ubuntu),

              • I logged in to console mode CTRL+ALT+F3
              • Stopped the gnome window manger, sudo service stop gdm
              • Modified, ~/.xinitrc to exec $name_of_my_program_here
              • Run xinit Then the x server (and my window manager) takes care of clearing the screen and so on. I imagine there is a similar process for Wayland
          1. 1

            But why now?

            Why ignore the problem for 25 years, then turn around and admitting the problem when null and undefined has been a problem for longer than most of us have lived?

            1. 22

              Because we are living through a programming language renaissance: it seems that major languages (Java, JavaScript, C++, Python) had a period of stability/stagnation, when they were considered “done”, as they fully implemented their vision of OOP. Then, the OOP craze subsided, and people started to look into adapting more of FP ideas. Hence, all those languages finally started to get basic conveniences as:

              • statement-level type inference (auto in C++, var in Java) / gradual types (TypeScript, mypy)
              • optional and result monads (?. in JS, optional/outcome in C++, optional in Java. Curiously, Python seems to get by without them)
              • data types (records in Java, <=> operator/hash in C++, NamedTupple/@dataclass in Python. Curiously, JS seem to get by without them)
              • sum types / union types / pattern matching (pattern matching in Java, variant in C++, pattern matching in Python, union types in TS)
              • destructing declaration ( auto [x, y] = in C++, richer unpacking syntax in Python, let { foo } in TypeScript. Nothing yet in Java I think?)
              • async/await (curiously, Java seems to have chosen stackful coroutines instead)
              • and, of course, lambdas. JS doesn’t get enough credited for being the first mainstream language with closure functions, but they shortened the syntax. Python curiously got stuck in local optima, where lambda was pretty innovative at the time, but now feels restrictive.
              1. 1

                data types… Curiously, JS seem to get by without them

                FWIW the way anonymous objects (and their types in typescript) work in JS is just as convenient for casually structuring data as e.g. NamedTuple in Python.

                1. 1

                  I consider structural eq/hash/ord a part of being a data type. I think JS still doset have those?

                  1. 1

                    No and it’s never getting them, but oh well, eq is in lodash.

              2. 3

                The “billion dollar problem” hasn’t been ignored, modern languages (last 5-10 years), usually treat null and undefined completely different than the past. Nowadays, they are treated as algebraic data types (like tagged unions) that must explicitly be checked by the developer, avoiding runtime NullReferenceExceptions.

                New syntax ,such as ?., tries to make these checked as easy as possible.

                //c, this value may or may not be null
                SomeStruct * s = get_struct();
                //This may or may not be an error
                int value = s->some_field;
                
                //Typescript
                type ReturnValue = SomeStruct | null
                const s : ReturnValue = get_struct();
                //The compiler will not allow this
                Const value = a.some_field;
                //you have to do this
                const value : number | null = s !== null ? s.some_field : null;
                //or with the new syntax
                const value  = s?.some_field;
                
                

                Where it really shines, is chaining multiple checks together:

                //Turn this:
                Interface I {
                  field1?: {
                    field2?: {
                    field3?: number
                  }
                  }
                }
                function func(arg: I | undefined){
                  If(!arg){
                   return;
                 }
                 if(!arg.field1){
                    return;
                 }
                 if(!arg.field1.field2){
                    return;
                 }
                 return arg1.field1.field2.field3;
                }
                
                //into this:
                const func = (arg: I | null) => arg?.field1?.field2?.field3;
                
                1. 1

                  Er, that’s my point. The problem has been known for fifty years, solutions have been known for a long time as well. Why did TS/JS ignore the problem until now?

                  1. 5

                    Because it used to have much bigger problems to deal with first.

                    1. 3

                      Just because someone knows the problem doesn’t mean it’s in everybody’s understanding, or on everybody’s roadmap.

                      1. 1

                        The problem was solved in a few languages for a long time (e.g. Haskell) - it’s just popularity.

                    2. 2

                      Honestly, having null and undefined doesn’t bother me at all, as long as they are part of the type system- as is the case in TypeScript.

                      They mean subtly different things. The most common convention is that null means “this value has been explicitly set to empty/bottom/default” and undefined means “this value has not been set”. (I know this is not the case for the TypeScript compiler project that just prefers undefined for everything)

                      It would be better to just have an Option<T> type, IMO, but TypeScript is trying to be a thin veneer over JavaScript, so that’s out of scope for it.

                      1. 2

                        In my opinion, null and undefined actually conflate three different cases:

                        1. This variable has not been defined
                        2. This variable has not been given a value
                        3. This variable has no value (or value not found)
                        1. 3

                          Interesting. If I understand your list, #1 refers to a variable name just not existing at all in scope (never declared with var, let, const), #2 refers to a let or var declaration, but no assignment: let foo;, and #3 is setting something to null.

                          I think you’re right and that makes sense, but do you see any value in differentiating scenarios 1 and 2?

                          Also, if I understand and remember correctly, #1 is not allowed in TypeScript at all. So I think, for TypeScript, your list and my described convention is the same.

                          1. 1

                            For languages where you do not have to pre-declare variables, then yes, there is a value in differentiating between 1 and 2.

                    1. 1

                      Does anyone have experience with it?

                      1. 2

                        It’s brand new and have had about 25 contributors so far. Over about 12 different languages, so not much progress has been made in each individual repo. You can keep track of the progress here I think iPython has the largest quantity so far.

                        Of people who’ve tried it, they say it’s fun. Which is what I’m trying to build. A fun way to get people into open source.

                        1. 1

                          Hey @mmulet, has the project been growing?

                          1. 1

                            It peaked in March, then steadily declined. I haven’t seen any requests for a couple weeks now. I had a lot of people sign up to work on tasks but literally no maintainers submitting tasks. Which was the exact opposite of what I thought would happen. I’m pretty busy doing other things right now, but I think I’ll relaunch in a couple of months, with a new focus on attracting maintainers.

                            1. 1

                              Let me know here when you have it. My experience was mixed, task was clear but I got no feedback for a while after I submitted it.

                              I would try again

                        1. 2

                          It really does still hold up.

                        1. 51

                          The paper has this to say (page 9):

                          Regarding potential human research concerns. This experiment studies issues with the patching process instead of individual behaviors, and we do not collect any personal information. We send the emails to the Linux community and seek their feedback. The experiment is not to blame any maintainers but to reveal issues in the process. The IRB of University of Minnesota reviewed the procedures of the experiment and determined that this is not human research. We obtained a formal IRB-exempt letter.

                          [..]

                          Honoring maintainer efforts. The OSS communities are understaffed, and maintainers are mainly volunteers. We respect OSS volunteers and honor their efforts. Unfortunately, this experiment will take certain time of maintainers in reviewing the patches. To minimize the efforts, (1) we make the minor patches as simple as possible (all of the three patches are less than 5 lines of code changes); (2) we find three real minor issues (i.e., missing an error message, a memory leak, and a refcount bug), and our patches will ultimately contribute to fixing them.

                          I’m not familiar with the generally accepted standards on these kind of things, but this sounds rather iffy to me. I’m very far removed from academia, but I’ve participated in a few studies over the years, which were always just questionaries or interviews, and even for those I had to sign a consent waiver. “It’s not human research because we don’t collect personal information” seems a bit strange.

                          Especially since the wording “we will have to report this, AGAIN, to your university” implies that this isn’t the first time this has happened, and that the kernel folks have explicitly objected to being subject to this research before this patch.

                          And trying to pass off these patches as being done in good faith with words like “slander” is an even worse look.

                          1. 79

                            They are experimenting on humans, involving these people in their research without notice or consent. As someone who is familiar with the generally accepted standards on these kinds of things, it’s pretty clear-cut abuse.

                            1. 18

                              I would agree. Consent is absolutely essential but just one of many ethical concerns when doing research. I’ve seen simple usability studies be rejected due to lesser issues.

                              It’s pretty clear this is abuse.. the kernel team and maintainers feel strongly enough to ban the whole institution.

                              1. 10

                                Yeah, agreed. My guess is they misrepresented the research to the IRB.

                                1. 3

                                  They are experimenting on humans

                                  This project claims to be targeted at the open-source review process, and seems to be as close to human experimentation as pentesting (which, when you do social engineering, also involves interacting with humans, often without their notice or consent) - which I’ve never heard anyone claim is “human experimentation”.

                                  1. 19

                                    A normal penetration testing gig is not academic research though. You need to separate between the two, and also hold one of them to a higher standard.

                                    1. 0

                                      A normal penetration testing gig is not academic research though. You need to separate between the two, and also hold one of them to a higher standard.

                                      This statement is so vague as to be almost meaningless. In what relevant ways is a professional penetration testing contract (or, more relevantly, the associated process) different from this particular research project? Which of the two should be held to a higher standard? Why? What does “held to a higher standard” even mean?

                                      Moreover, that claim doesn’t actually have anything to do with the comment I was replying to, which was claiming that this project was “experimenting on humans”. It doesn’t matter whether or not something is “research” or “industry” for the purposes of whether or not it’s “human experimentation” - either it is, or it isn’t.

                                      1. 18

                                        Resident pentester and ex-academia sysadmin checking in. I totally agree with @Foxboron and their statement is not vague nor meaningless. Generally in a penetration test I am following basic NIST 800-115 guidance for scoping and target selection and then supplement contractual expectations for my clients. I can absolutely tell you that the methodologies that are used by academia should be held to a higher standard in pretty much every regard I could possibly come up with. A penetration test does not create a custom methodology attempting do deal with outputting scientific and repeatable data.

                                        Let’s put it in real terms, I am hired to do a security assessment in a very fixed highly focused set of targets explicitly defined in contract by my client in an extremely fixed time line (often very short… like 2 weeks maximum and 5 day average). Guess what happens if social engineering is not in my contract? I don’t do it.

                                        1. 2

                                          Resident pentester and ex-academia sysadmin checking in.

                                          Note: this is worded like an appeal to authority, although you probably don’t mean it that way, so I’m not going to act like you are.

                                          I totally agree with @Foxboron and their statement is not vague nor meaningless.

                                          Those are two completely separate things, and neither is implied by the other.

                                          their statement is not vague nor meaningless.

                                          Not true - their statement contained none of the information you just provided, nor any other sort of concrete or actionable information - the statement “hold to a higher standard” is both vague and meaningless by itself…and it was by itself in that comment (or, obviously, there were other words - none of them relevant) - there was no other information.

                                          the methodologies that are used by academia should be held to a higher standard

                                          Now you’re mixing definitions of “higher standard” - GP and I were talking about human experimentation and ethics, while you seem to be discussing rigorousness and reproducibility of experiments (although it’s not clear, because “A penetration test does not create a custom methodology attempting do deal with outputting scientific and repeatable data” is slightly ambiguous).

                                          None of the above is relevant to the question of “was this a human experiment” and the closely-related one “is penetration testing a human experiment”. Evidence suggests “no” given that the term does not appear in that document, nor have I heard of any pentest being reviewed by an ethics review board, nor have I heard any mention of “human experimenting” in the security community (including when gray-hat and black-hat hackers and associated social engineering e.g. Kevin Mitnick are mentioned), nor are other similar, closer-to-human experimentation (e.g. A/B testing, which is far closer to actually experimenting on people) processes considered to be such - up until this specific case.

                                        2. 5

                                          if you’re an employee in an industry, you’re either informed of penetration testing activity, or you’ve at the very least tacitly agreed to it along with many other things that exist in employee handbooks as a condition of your employment.

                                          if a company did this to their employees without any warning, they’d be shitty too, but the possibility that this kind of underhanded behavior in research could taint the results and render the whole exercise unscientific is nonzero.

                                          either way, the goals are different. research seeks to further the verifiability and credibility of information. industry seeks to maximize profit. their priorities are fundamentally different.

                                          1. 1

                                            you’ve at the very least tacitly agreed to it along with many other things that exist in employee handbooks as a condition of your employment

                                            By this logic, you’ve also agreed to everything else in a massive, hundred-page long EULA that you click “I agree” on, as well as consent to be tracked by continuing to use a site that says that in a banner at the bottom, as well as consent to Google/companies using your data for whatever they want and/or selling it to whoever will buy.

                                            …and that’s ignoring whether or not companies that have pentesting done on them actually explicitly include that specific warning in your contract - “implicit” is not good enough, as then anyone can claim that, as a Linux kernel patch reviewer, you’re “implicitly agreeing that you may be exposed to the risk of social engineering for the purpose of getting bad code into the kernel”.

                                            the possibility that this kind of underhanded behavior in research could taint the results and render the whole exercise unscientific

                                            Like others, you’re mixing up the issue of whether the experiment was properly-designed with the issue of whether it was human experimentation. I’m not making any attempt to argue the former (because I know very little about how to do good science aside from “double-blind experiments yes, p-hacking no”), so I don’t know why you’re arguing against it in a reply to me.

                                            either way, the goals are different. research seeks to further the verifiability and credibility of information. industry seeks to maximize profit. their priorities are fundamentally different.

                                            I completely agree that the goals are different - but again, that’s irrelevant for determining whether or not something is “human experimentation”. Doesn’t matter what the motive is, experimenting on humans is experimenting on humans.

                                      2. 18

                                        This project claims to be targeted at the open-source review process, and seems to be as close to human experimentation as pentesting (which, when you do social engineering, also involves interacting with humans, often without their notice or consent) - which I’ve never heard anyone claim is “human experimentation”.

                                        I had a former colleague that once bragged about getting someone fired at his previous job during a pentesting exercise. He basically walked over to this frustrated employee at a bar, bribed him a ton of money and gave a job offer in return for plugging a usb key into the network. He then reported it to senior management and the employee was fired. While that is an effective demonstration of a vulnerability in their organization, what he did was unethical under many moral frameworks.

                                        1. 2

                                          First, the researchers didn’t engage in any behavior remotely like this.

                                          Second, while indeed an example of pentesting, most pentesting is not like this.

                                          Third, the fact that it was “unethical under many moral frameworks” is irrelevant to what I’m arguing, which is that the study was not “human experimentation”. You can steal money from someone, which is also “unethical under many moral frameworks”, and yet still not be doing “human experimentation”.

                                        2. 3

                                          If there is a pentest contract, then there is consent, because consent is one of the pillars of contract law.

                                          1. 1

                                            That’s not an argument that pentesting is human experimentation in the first place.

                                      3. 42

                                        The statement from the UMinn IRB is in line with what I heard from the IRB at the University of Chicago after they experimented on me, who said:

                                        I asked about their use of any interactions, or use of information about any individuals, and they indicated that they have not and do not use any of the data from such reporting exchanges other than tallying (just reports in aggregate of total right vs. number wrong for any answers received through the public reporting–they said that much of the time there is no response as it is a public reporting system with no expectation of response) as they are not interested in studying responses, they just want to see if their tool works and then also provide feedback that they hope is helpful to developers. We also discussed that they have some future studies planned to specifically study individuals themselves, rather than the factual workings of a tool, that have or will have formal review.

                                        They because claim they’re studying the tool, it’s OK to secretly experiment on random strangers without disclosure. Somehow I doubt they test new drugs by secretly dosing people and observing their reactions, but UChicago’s IRB was 100% OK with doing so to programmers. I don’t think these IRBs literally consider programmers sub-human, but it would be very inconvenient to accept that experimenting on strangers is inappropriate, so they only want to do so in places they’ve been forced to by historical abuse. I’d guess this will continue for years until some random person is very seriously harmed by being experimented on (loss of job/schooling, pushing someone unstable into self-harm, targeting someone famous outside of programming) and then over the next decade IRBs will start taking it seriously.

                                        One other approach that occurs to me is that the experimenters and IRBs claim they’re not experimenting on their subjects. That’s obviously bullshit because the point of the experiment is to see how the people respond to the treatment, but if we accept the lie it leaves an open question: what is the role played by the unwitting subject? Our responses are tallied, quoted, and otherwise incorporated into the results in the papers. I’m not especially familiar with academic publishing norms, but perhaps this makes us unacknowledged co-authors. So maybe another route to stopping experimentation like this would be things like claiming copyright over the papers, asking journals for the papers to be retracted until we’re credited, or asking the universities to open academic misconduct investigations over the theft of our work. I really don’t have the spare attention for this, but if other subjects wanted to start the ball rolling I’d be happy to sign on.

                                        1. 23

                                          I can kind of see where they’re coming from. If I want to research if car mechanics can reliably detect some fault, then sending a prepared car to 50 garages is probably okay, or at least a lot less iffy. This kind of (informal) research is actually fairly commonly by consumer advocacy groups and the like. The difference is that the car mechanics will get paid for their work where as the Linux devs and you didn’t.

                                          I’m gonna guess the IRBs probably aren’t too familiar with the dynamics here, although the researchers definitely were and should have known better.

                                          1. 18

                                            Here it’s more like keying someone’s car to see how quick it takes them to get an insurance claim.

                                            1. 4

                                              Am I misreading? I thought the MR was a patch designed to fix a potential problem, and the issue was

                                              1. pushcx thought it wasn’t a good fix (making it a waste of time)
                                              2. they didn’t disclose that it was an auto-generated PR.

                                              Those are legitimate complaints, c.f. https://blog.regehr.org/archives/2037, but from the analogies employed (drugs, dehumanization, car-keying), I have to double-check that I haven’t missed an aspect of the interaction that makes it worse than it seemed to me.

                                              1. 2

                                                We were talking about Linux devs/maintainers too, I commented on that part.

                                                1. 1

                                                  Gotcha. I missed that “here” was meant to refer to the Linux case, not the Lobsters case from the thread.

                                            2. 1

                                              Though there they are paying the mechanic.

                                            3. 18

                                              IRB is a regulatory board that is there to make sure that researchers follow the (Common Rule)[https://www.hhs.gov/ohrp/regulations-and-policy/regulations/common-rule/index.html].

                                              In general, any work that receives federal funding needs to comply with the federal guidelines for human subject research. All work involving human subjects (usually defined as research activities that involve interaction with humans) need to be reviewed and approved by the institution IRB. These approvals fall within a continuum, from a full IRB review (which involve the researcher going to a committee and explaining their work and usually includes continued annual reviews) to a declaration of the work being exempt from IRB supervision (usually this happens when the work meets one of the 7 exemptions listed in the federal guidelines). The whole process is a little bit more involved, see for example (all the charts)[https://www.hhs.gov/ohrp/regulations-and-policy/decision-charts/index.html] to figure this out.

                                              These rules do not cover research that doesn’t involve humans, such as research on technology tools. I think that there is currently a grey area where a researcher can claim that they are studying a tool and not the people interacting with the tool. It’s a lame excuse that probably goes around the spirit of the regulations and is probably unethical from a research stand point. The data aggregation method or the data anonymization is usually a requirement for an exempt status and not a non-human research status.

                                              The response that you received from IRB is not surprising, as they probably shouldn’t have approved the study as non-human research but now they are just protecting the institution from further harm rather than protecting you as a human subject in the research (which, by the way, is not their goal at this point).

                                              One thing that sticks out to me about your experience is that you weren’t asked to give consent to participate in the research. That usually requires a full IRB review as informed consent is a requirement for (most) human subject research. Exempt research still needs informed consent unless it’s secondary data analysis of existing data (which your specific example doesn’t seem to be).

                                              One way to quickly fix it is to contact the grant officer that oversees the federal program that is funding the research. A nice email stating that you were coerced to participate in the research study by simply doing your work (i.e., review a patch submitted to a project that you lead) without being given the opportunity to provide prospective consent and without receiving compensation for your participation and that the research team/university is refusing to remove your data even after you contacted them because they claim that the research doesn’t involve human subjects can go a long way to force change and hit the researchers/university where they care the most.

                                              1. 7

                                                Thanks for explaining more of the context and norms, I appreciate the introduction. Do you know how to find the grant officer or funding program?

                                                1. 7

                                                  It depends on how “stalky” you want to be.

                                                  If NSF was the funder, they have a public search here: https://nsf.gov/awardsearch/

                                                  Most PIs also add a line about grants received to their CVs. You should be able to match the grant title to the research project.

                                                  If they have published a paper from that work, it should probably include an award number.

                                                  Once you have the award number, you can search the funder website for it and you should find a page with the funding information that includes the program officer/manager contact information.

                                                  1. 3

                                                    If they published a paper about it they likely included the grant ID number in the acknowledgements.

                                                    1. 1

                                                      You might have more luck reaching out to the sponsored programs office at their university, as opposed to first trying to contact an NSF program officer.

                                                  2. 4

                                                    How about something like a an Computer Science - External Review Board? Open source projects could sign up, and include a disclaimer that their project and community ban all research that hasn’t been approved. The approval process could be as simple as a GitHub issue the researcher has to open, and anyone in the community could review it.

                                                    It wouldn’t stop the really bad actors, but any IRB would have to explain why they allowed an experiment on subjects that explicitly refused consent.

                                                    [Edit] I felt sufficiently motivated, so I made a quick repo for the project . Suggestions welcome.

                                                    1. 7

                                                      I’m in favor of building our own review boards. It seems like an important step in our profession taking its reponsibility seriously.

                                                      The single most important thing I’d say is, be sure to get the scope of the review right. I’ve looked into this before and one of the more important limitations on IRBs is that they aren’t allowed to consider the societal consequences of the research succeeding. They’re only allowed to consider harm to experimental subjects. My best guess is that it’s like that because that’s where activists in the 20th-century peace movement ran out of steam, but it’s a wild guess.

                                                      1. 4

                                                        At least in security, there are a lot of different Hacker Codes of Ethics floating around, which pen testers are generally expected to adhere to… I don’t think any of them cover this specific scenario though.

                                                        1. 2

                                                          any so-called “hacker code of ethics” in use by any for-profit entity places protection of that entity first and foremost before any other ethical consideration (including human rights) and would likely not apply in a research scenario.

                                                    2. 23

                                                      They are bending the rules for non human research. One of the exceptions for non-human research is research on organization, which my IRB defines as “Information gathering about organizations, including information about operations, budgets, etc. from organizational spokespersons or data sources. Does not include identifiable private information about individual members, employees, or staff of the organization.” Within this exception, you can talk with people about how the organization merges patches but not how they personally do that (for example). All the questions need to be about the organization and not the individual as part of the organization.

                                                      On the other hand, research involving human subjects is defined as any research activity that involves an “individual who is or becomes a participant in research, either:

                                                      • As a recipient of a test article (drug, biologic, or device); or
                                                      • As a control.”

                                                      So, this is how I interpret what they did.

                                                      The researchers submitted an IRB approval saying that they just downloaded the kernel maintainer mailing lists and analyzed the review process. This doesn’t meet the requirements for IRB supervision because it’s either (1) secondary data analysis using publicly available data and (2) research on organizational practices of the OSS community after all identifiable information is removed.

                                                      Once they started emailing the list with bogus patches (as the maintainers allege), the research involved human subjects as these people received a test article (in the form of an email) and the researchers interacted with them during the review process. The maintainers processing the patch did not do so to provide information about their organization’s processes and did so in their own personal capacity (In other words, they didn’t ask them how does the OSS community processes this patch but asked them to process a patch themselves). The participants should have given consent to participate in the research and the risks of participating in it should have been disclosed, especially given the fact that missing a security bug and agreeing to merge it could be detrimental to someone’s reputation and future employability (that is, this would qualify for more than minimal risk for participants, requiring a full IRB review of the research design and process) with minimal benefits to them personally or to the organization as a whole (as it seems from the maintainers’ reaction to a new patch submission).

                                                      One way to design this experiment ethically would have been to email the maintainers and invite them to participate in a “lab based” patch review process where the research team would present them with “good” and “bad” patches and ask them whether they would have accepted them or not. This is after they were informed about the study and exercised their right to informed consent. I really don’t see how emailing random stuff out and see how people interact with it (with their full name attached to it and in full view of their peers and employers) can qualify as research with less than minimal risks and that doesn’t involve human subjects.

                                                      The other thing that rubs me the wrong way is that they sought (and supposedly received) retroactive IRB approval for this work. That wouldn’t fly with my IRB, as my IRB person would definitely rip me a new one for seeking retroactive IRB approval for work that is already done, data that was already collected, and a paper that is already written and submitted to a conference.

                                                      1. 6

                                                        You make excellent points.

                                                        1. IRB review has to happen before the study is started. For NIH, the grant application has to have the IRB approval - even before a single experiment is even funded to be done, let alone actually done.
                                                        2. I can see the value of doing a test “in the field” so as to get the natural state of the system. In a lab setting where the participants know they are being tested, various things will happen to skew results. The volunteer reviewers might be systematically different from the actual population of reviewers, the volunteers may be much more alert during the experiment and so on.

                                                        The issue with this study is that there was no serious thought given to what are the ethical ramifications of this are.

                                                        If the pen tested system has not asked to be pen tested then this is basically a criminal act. Otherwise all bank robbers could use the “I was just testing the security system” defense.

                                                        1. 8

                                                          The same requirement for prior IRB approval is necessary for NSF grants (which the authors seem to have received). By what they write in the paper and my interpretation of the circumstances, they self certified as conducting non-human research at time of submitting the grant and only asked their IRB for confirmation after they wrote the paper.

                                                          Totally agree with the importance of “field experiment” work and that, sometimes, it is not possible to get prospective consent to participate in the research activities. However, the guidelines are clear on what activities fall within research activities that are exempt from prior consent. The only one that I think is applicable to this case is exception 3(ii):

                                                          (ii) For the purpose of this provision, benign behavioral interventions are brief in duration, harmless, painless, not physically invasive, not likely to have a significant adverse lasting impact on the subjects, and the investigator has no reason to think the subjects will find the interventions offensive or embarrassing. Provided all such criteria are met, examples of such benign behavioral interventions would include having the subjects play an online game, having them solve puzzles under various noise conditions, or having them decide how to allocate a nominal amount of received cash between themselves and someone else.

                                                          These usually cover “simple” psychology experiments involving mini games or economics games involving money.

                                                          In the case of this kernel patching experiment, it is clear that this experiment doesn’t meet this requirement as participants have found this intervention offensive or embarrassing, to the point that they are banning the researchers’ institution from pushing patched to the kernel. Also, I am not sure if reviewing a patch is a “benign game” as this is the reviewers’ jobs, most likely. Plus, the patch review could have adverse lasting impact on the subject if they get asked to stop reviewing patches if they don’t catch the security risk (e.g., being deemed imcompetent).

                                                          Moreover, there is this follow up stipulation:

                                                          (iii) If the research involves deceiving the subjects regarding the nature or purposes of the research, this exemption is not applicable unless the subject authorizes the deception through a prospective agreement to participate in research in circumstances in which the subject is informed that he or she will be unaware of or misled regarding the nature or purposes of the research.

                                                          As their patch submission process was deceptive in nature, as their outline in the paper, exemption 3(ii) cannot apply to this work unless they notify maintainers that they will be participating in a deceptive research study about kernel patching.

                                                          That leaves the authors to either pursue full IRB review for their work (as a full IRB review can approve a deceptive research project if it deems it appropriate and the risk/benefit balance is in favor to the participants) or to self-certify as non-human subjects research and fix any problems later. They decided to go with the latter.

                                                      2. 35

                                                        We believe that an effective and immediate action would be to update the code of conduct of OSS, such as adding a term like “by submitting the patch, I agree to not intend to introduce bugs.”

                                                        I copied this from that paper. This is not research, anyone who writes a sentence like this with a straight face is a complete moron and is just mocking about. I hope all of this will be reported to their university.

                                                        1. 18

                                                          It’s not human research because we don’t collect personal information

                                                          I yelled bullshit so loud at this sentence that it woke up the neighbors’ dog.

                                                          1. 2

                                                            Yeah, that came from the “clarifiactions” which is garbage top to bottom. They should have apologized, accepted the consequences and left it at that. Here’s another thing they came up with in that PDF:

                                                            Suggestions to improving the patching process In the paper, we provide our suggestions to improve the patching process.

                                                            • OSS projects would be suggested to update the code of conduct, something like “By submitting the patch, I agree to not intend to introduce bugs”

                                                            i.e. people should say they won’t do exactly what we did.

                                                            They acted in bad faith, skirted IRB through incompetence (let’s assume incompetence and not malice) and then act surprised.

                                                          2. 14

                                                            Apparently they didn’t ask the IRB about the ethics of the research until the paper was already written: https://www-users.cs.umn.edu/~kjlu/papers/clarifications-hc.pdf

                                                            Throughout the study, we honestly did not think this is human research, so we did not apply for an IRB approval in the beginning. We apologize for the raised concerns. This is an important lesson we learned—Do not trust ourselves on determining human research; always refer to IRB whenever a study might be involving any human subjects in any form. We would like to thank the people who suggested us to talk to IRB after seeing the paper abstract.

                                                            1. 14

                                                              I don’t approve of researchers YOLOing IRB protocols, but I also want this research done. I’m sure many people here are cynical/realistic enough that the results of this study aren’t surprising. “Of course you can get malicious code in the kernel. What sweet summer child thought otherwise?” But the industry as a whole proceeds largely as if that’s not the case (or you could say that most actors have no ability to do anything about the problem). Heighten the contradictions!

                                                              There are some scary things in that thread. It sounds as if some of the malicious patches reached stable, which suggests that the author mostly failed by not being conservative enough in what they sent. Or for instance:

                                                              Right, my guess is that many maintainers failed in the trap when they saw respectful address @umn.edu together with commit message saying about “new static analyzer tool”.

                                                              1. 17

                                                                I agree, while this is totally unethical, it’s very important to know how good the review processes are. If one curious grad student at one university is trying it, you know every government intelligence department is trying it.

                                                                1. 8

                                                                  I entirely agree that we need research on this topic. There’s better ways of doing it though. If there aren’t better ways of doing it, then it’s the researcher’s job to invent them.

                                                                2. 7

                                                                  It sounds as if some of the malicious patches reached stable

                                                                  Some patches from this University reached stable, but it’s not clear to me that those patches also introduced (intentional) vulnerabilities; the paper explicitly mentions the steps that they’re taking steps to ensure those patches don’t reach stable (I omitted that part, but it’s just before the part I cited)

                                                                  All umn.edu are being reverted, but at this point it’s mostly a matter of “we don’t trust these patches and will need additional review” rather than “they introduced security vulnerabilities”. A number of patches already have replies from maintainers indicating they’re genuine and should not be reverted.

                                                                  1. 5

                                                                    Yes, whether actual security holes reached stable or not is not completely clear to me (or apparently to maintainers!). I got that impression from the thread, but it’s a little hard to say.

                                                                    Since the supposed mechanism for keeping them from reaching stable is conscious effort on the part of the researchers to mitigate them, I think the point may still stand.

                                                                    1. 1

                                                                      It’s also hard to figure out what the case is since there is no clear answer what the commits where, and where they are.

                                                                  2. 4

                                                                    The Linux review process is so slow that it’s really common for downstream folks to grab under-review patches and run with them. It’s therefore incredibly irresponsible to put patches that you know introduce security vulnerabilities into this form. Saying ‘oh, well, we were going to tell people before they were deployed’ is not an excuse and I’d expect it to be a pretty clear-cut violation of the Computer Misuse Act here and equivalent local laws elsewhere. That’s ignoring the fact that they were running experiments on people without their consent.

                                                                    I’m pretty appalled the Oakland accepted the paper for publication. I’ve seen paper rejected from there before because they didn’t have appropriate ethics review oversite.

                                                                1. 27

                                                                  I’d recommend a NUC here. I’ve tried using an RPi 1, and then an RPi 3 as desktops, but both were painful compared to a NUC, which was drama-free. I’ve never had any problems with mainstream Linux on mine. IIRC, it comes with either SATA or M.2.

                                                                  1. 4

                                                                    I’ve also used an Intel compute stick when traveling. It has the added benefit of not needing an hdmi cable.

                                                                    1. 2

                                                                      It has its benefits, but it was slow when it came out five years ago… I used one for a conference room and it really is disappointing. A NUC would have been better. Harder to lose if you do take it traveling, too.

                                                                    2. 3

                                                                      I agree with this: If you don’t want a laptop, a very small form factor PC is a better choice than a more barebones SBC for use as a general-purpose PC. The NUC is great, though there’s some similar alternatives on the market too.

                                                                      I have a Zotac ZBOX from a little while ago. It has a SATA SSD, Intel CPU and GPU, and works great in Linux. In particular it has two gigabit NICs and wifi, which has made it useful to me for things like inline network traffic diagnosis, but it’s generally useful as a Linux (or, presumably, Windows) PC.

                                                                      The one I own has hdmi, displayport, and vga, making it compatible with a wide selection of monitors. That’s important if you’re expecting to use random displays you find wherever you’re going to. It also comes with a VESA bracket so it can be attached to the back of some computer monitors, which is nice for reducing clutter and cabling.

                                                                      1. 2

                                                                        Never heard of a NUC before now but I can agree that trying to use an RPi as a desktop is unpleasant.

                                                                        1. 1

                                                                          Yeah the Pi CPUs are very underpowered, it’s not even a fair comparison. They’re different machines for different purposes. I would strongly recommend against using a Pi as your primary Linux development machine.

                                                                          I think this is the raspberry Pi 4 CPU, at 739 / 500:

                                                                          https://www.cpubenchmark.net/cpu.php?cpu=ARM+Cortex-A72+4+Core+1500+MHz&id=3917

                                                                          And here’s the one in the NUC I bought for less than $500, at 7869 / 2350 :

                                                                          https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i5-8260U+%40+1.60GHz&id=3724

                                                                          So it’s it’s 4-5x faster single-threaded, and 10x faster overall !!! Huge difference.

                                                                          One of them is 1500 Mhz and the other one is 1600 Mhz, but there’s a >10x difference in computer. So never use clock speed to compare CPUs, especially when the architecture is different!

                                                                        2. 2

                                                                          Yeah I just bought 2 NUCs to replace a tower and a mini PC. They’re very small, powerful, and the latest ones seem low power and quiet.

                                                                          The less powerful NUC was $450, and I got portable 1920x1080 monitor for $200, so it’s much cheaper than a laptop, and honestly pretty close in size! And the CPU is good, about as powerful as the best desktop CPUs you could get circa 2014:

                                                                          https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i5-8260U+%40+1.60GHz&id=3724

                                                                          old CPU which was best in class in a tower in 2014: https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-4790+%40+3.60GHz&id=2226

                                                                          (the more powerful one was $800 total and even faster: https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-10710U+%40+1.10GHz&id=3567 although surprisingly not that much faster)

                                                                          This setup, along with a keyboard and trackball, is very productive for coding. I’m like the OP and don’t like using a laptop. IMO the keyboard and monitor shouldn’t be close together for good posture.

                                                                          In contrast the tower PC in 2014 was $700 + ~$300 in upgrades, and the monitor from ~2006 was $1000 or more. Everything is USB-C too on the NUC/monitor setup which is nice.

                                                                          I guess my tip is to not upgrade your PC for 7-10 years and you’ll be pleasantly surprised :) USB-C seems like a big improvement.

                                                                          1. 4

                                                                            Yeah I just bought 2 NUCs to replace a tower and a mini PC. They’re very small, powerful, and the latest ones seem low power and quiet.

                                                                            NUCs are great machines, but they are definitely not quiet. Because of their blower-style fan, they become quite loud as soon as the CPU is just a bit under load. Audio proof: https://www.youtube.com/watch?v=rOkyFLrPc3E&t=341s

                                                                            1. 2

                                                                              So far I haven’t had a problem, but it’s only been about 3 weeks.

                                                                              The noise was the #1 thing I was worried about, since I’m sensitive to it, but it seems fine. For reference I replaced the GPU fan in my 2014 Dell tower because it was ridiculously noisy, and I have a 2012 era Mac Mini clone that is also ridiculously noisy when idle. The latter honestly 10x louder than the NUC when idle, and I have them sitting side by side now.

                                                                              The idle noise bothers me the most. I don’t have any usage patterns where you are running with high CPU for hours on end. Playing HD video doesn’t do much to the CPU; that appears to be mostly GPU.

                                                                              I’m comparing against a low bar of older desktop PCs, but I also think Macbook Airs have a similar issue – the fan spins really loud when you put them under load. For me that has been OK. (AdBlock goes a long way on the Macbooks, since ads code in JS is terrible and often pegs the CPU.)


                                                                              I think the newer CPUs in the NUCs are lower power too. Looking at the CPU benchmarks above, the 2014 Dell i7 is rated a 84 W TDP. The 2020 i5 is MORE powerful, and rated 10 W TDP down and 25 W TDP up.

                                                                              I’m not following all the details, but my impression is that while CPUs didn’t get that much faster in the last 7 years, the power usage went down dramatically. And thus the need to spin up fans, and that’s what I’ve experienced so far.

                                                                              I should start compiling a bunch of C++ and running my open source release process to be sure. But honestly I don’t know of any great alternative to the NUCs, so I went ahead and bought a second one after using the first one for 3 weeks. They’re head and shoulders above my old PCs in all dimensions, including noise, which were pretty decent at the time.

                                                                              I think the earlier NUCs had a lot of problems, but it seems (hopefully) they’ve been smoothed out by now. I did have to Google for a few Ubuntu driver issues on one of them and edit some config files. The audio wasn’t reliable on one of them until I manually changed a config with Vim.

                                                                          2. 1

                                                                            I have also been using a NUC for a year now, and it works well. A lot of monitors also allow you to screw the NUC to its back, decluttering your desk.

                                                                            Just watch out, it has no speakers of it’s own!

                                                                          1. 1

                                                                            This might be terrifically short sighted on my part, but the fact that the creator has put his name in front of the project sets off all kinds of alarm bells for me. It was as though he were Dick Wolf.

                                                                            1. 6

                                                                              Yeah , I went back on forth on the decision to put my name on there because I thought it might have this reaction in some people. I’m not famous at all, so it’s not to attract people by going; “look it’s made by this guy” I decided to go for it because I think more open source software should do the same. A lot of maintainers put a lot of work into the software and they deserve the recognition for their time and effort. I don’t think I’ll start a trend, but as you can clearly see from my site, I’m not afraid to try new ideas, even if they might not work.

                                                                            1. 1

                                                                              This is awesome. Although I couldn’t actually figure out how to win the game :) .

                                                                              1. 4

                                                                                This was a common complaint so I added a secrets guide

                                                                                1. 1

                                                                                  I wondered as well, until I found out that you just have to keep on pressing after the “death” screen in the final fight.