1. 5

    It is mostly an change that empowers developers; but it also is a change that will cause some existing code to break.

    This has been my impression of Rust, and why I’ve avoided doing much with it. It seems like it’s just a constantly moving target. I remember in its earlier days whole features (like classes) just being nuked out of existence. It may have settled down some now; I haven’t been keeping as close an eye on it.

    1. 27

      Since 1.0, this is the first major breaking change that I can recall. It’s also worth pointing out that any code that does break under NLL was fundamentally unsound – it shouldn’t have been compiling in the first place, but was, due to the limitations of the then-current lifetime analyzer. It’s also going to downgrade these breakages to just issuing warnings that this unsound code is going to stop compiling sometime in the future.

      My personal take is that, in a language that’s trying to prioritize safety and correctness, privileging correctness over the sanctity of “existing code that compiles” is the right move.

      Sure, in pre-release, there was a lot of churn as all manner of different ideas were tried out (like Classes) and subsequently removed. That’s, uh, why it was in pre-release. You need to get feedback somehow.

      1. 2

        It’s also going to downgrade these breakages to just issuing warnings that this unsound code is going to stop compiling sometime in the future.

        What’s the practical difference between “unsound” code that compiles and runs versus “undefined” or “implementation defined” behavior in C and C++?

        I suppose it’s a moot issue because there’s only one Rust implementation?

        1. 4

          What’s the practical difference between “unsound” code that compiles and runs versus “undefined” or “implementation defined” behavior in C and C++?

          I don’t think there’s any relationship there at all. Undefined/implementation defined code in C is code where the standard says, essentially, “in these cases the compiler can do whatever: compile, reject, crash, launch nethack”.

          Unsound code that was compiling under the AST based borrow checker in Rust were simply compiler bugs — explicitly disallowed things that slipped past due to defects in the borrow checker. The analogous situation in C is again a compiler bug

          1. 1

            What’s the practical difference between “unsound” code that compiles and runs versus “undefined” or “implementation defined” behavior in C and C++?

            There might be a difference between “this is unsound, we don’t know if the code is valid”, and “there is a data race” or some other genuine undefined behaviour.

            If you overlap borrows, one of which is mutable, your program should be rejected. But if you’re single threaded, overlapping borrows should be just fine. Perhaps confusing and bug prone, but as long as you don’t have any actual concurrent access, it should work.

            That’s most likely why there’s an unsafe mode: it’s like telling the compiler “I know you can’t prove my program doesn’t have any data races, but trust me, there isn’t any”.

            1. 4

              But if you’re single threaded, overlapping borrows should be just fine.

              Overlapping borrows are unsound even on a single thread. The canonical example of the borrow checker people use in intro talks is single threaded:

              let v: &mut Vec<T> = ...;
              let x0 = &v[0]; // overlapping borrow
              v.push(...); // potential resize invalidating x0
              println!("{:?}", x0); // use-after-free
              

              Or this more blatant case:

              let o: &mut Option<String> = ...;
              if let Some(s) = o { // overlapping borrow
                  *o = None; // string no longer has owner, is dropped
                  println!("{}", s); // use-after-free
              }
              
              1. 1

                Crap, didn’t think of pointer invalidation. Good point.

          2. 1

            It’s also worth pointing out that any code that does break under NLL was fundamentally unsound

            I don’t think this is true:

            https://github.com/rust-lang/rust/issues/59159

            This issue doesn’t mention unsafety, just inconvenience for them.

            1. 1

              That’s not my reading of it.

              From reading the various issues and reasoning behind stacked borrows it seems that:

              That particular lint identifies an unintended pattern that was allowed to compile as a two-phase borrow. The pattern is unintended, and undesirable, because it violates fundamental validity guarantees that all Rust code, safe or unsafe, must adhere to in order for there to be a coherent set of rules (“stacked borrows”) about pointer aliasing in Rust that unsafe code and compiler optimizations can be asked to adhere to.

              The two phase borrow pattern in question, in violating those rules, creates situations in which unsafe code or compiler optimizations that follow the rules will nevertheless result in safety and/or validity issues. This was argued about for several months with a bunch of people proposing various ways to make this particular 2PB pattern “work” with aliasing rules — but none of them seems to have managed a working solution.

              Hence, the lint and eventual removal.

          3. 12

            oh, maybe my standard is lower than yours but with the language itself, I was always impressed how remarkedly well managed stability. But yes, they fix compiler bugs eventually. I was once affected and got a pull request to my crate from the compiler team to fix it. The compiler release before issued a warning.

            So, this affects compiler bugs which might lead to unsafe code. The compiler issued warnings for some releases, now it will stop compiling that code.

            In my view, a remarkable balance between stability and upholding the fundamental guarantees of rust.

            (the library ecosystem is a different story)

            1. 4

              Maybe not the best wording on the author’s part, but if you read the rest of the post you would have read that only unsound code is affected, and it will continue to compile for now; only a future-compatibility warning will be raised.

              Rust has strong backwards compatibility guarantees, and has since the 1.0 release in 2015. It’s only a moving target if you want to use the latest and greatest features, which are admittedly being added at a considerable rate. But that’s only a drawback if the features are not worth the maintenance overhead, which so far has not been a problem for Rust.

              1. -1

                ‘Unsound’ does not mean incorrect, it just means they can’t prove it is sound.

                only a future-compatibility warning will be raised.

                It is not useful to be told working code will maybe fail to compile at some nebulous point in the future when you specifically chose a stable release and edition to work with.

                1. 3

                  ‘Unsound’ does not mean incorrect, it just means they can’t prove it is sound.

                  That’s what the unsafe blocks are for. If you didn’t intend a particular piece of code to be unsound, it shouldn’t be, and you should fix it.

                  1. 0

                    This is a bad argument taken to the logical extreme - as a compiler gets more and more intelligent it can reject more and more code, to the point is just rejects all code ever written due to all code we write having bugs.

                    My argument is simple, a rust edition should keep compiling things it accepted in the past. If they want to fix soundness problems, they should emit very loud and serious warnings and make a new edition. They shouldn’t retroactively stop compiling things they used to accept without a new rust edition.

                    1. 4

                      My argument is simple, a rust edition should keep compiling things it accepted in the past.

                      That argument is wrong. The soundness rules are not just defined by the (only) reference implementation. The soundness rules stipulated that multiple borrows (one of which is mutable) is not allowed to overlap, and it used scope as an approximation. If the compiler allow such an overlap, this is a bug and it should be fixed.

                      Likewise, if you unwittingly took advantage of this bug, and wrote unsound code outside of an unsafe block, you have a bug. Perhaps not a genuine bug, but you at least did not abide the soundness rules you should have. Thus, you should fix your code. I don’t care it’s something you consider “done” and no longer want to maintain. At the very least, you should accept a patch. If you don’t, well… there’s always the possibility of forking.

                      If they want to fix soundness problems, they should emit very loud and serious warnings and make a new edition.

                      Well, this is almost what they did: there’s a legacy compatibility mode, and warnings about that not compiling any more. That’s better than what C compilers do right now: when a new compiler spot an undefined behaviour it didn’t spot before, it could introduce a bug, without any warning, it didn’t used to introduce. (The magic of optimisations.)

                      But this is not about undefined behaviour. This is about soundness. Which unlike undefined behaviour in general is perfectly checkable statically. This won’t get worse and worse as compilers get better. It’s just a matter of fixing compiler bugs.

                      1. 0

                        I think it might annoy and cause reputational damage when all they need to do is make edition 2019-nll to avoid breaking the ecosystem.

                        Any crate with unsafe in it already has as much risk as something that has been there for years and nobody noticed any problem. They just need a warning and some bold flashy lights instead of permanently breaking our ability to compile a portion of crates.io. To maintain soundness they could make calling 2018 crates from 2019-nll an unsafe operation.

                        I think the right action depends how many crates they have obsoleted, which I don’t know. They should probably check and make it public, but I feel like they would rather not know.

                        1. 3

                          I think it might annoy and cause reputational damage when all they need to do is make edition 2019-nll to avoid breaking the ecosystem.

                          I dispute the assumption that they broke anything. Some code will stop compiling by default, but the old ways are just an option away. The warnings and the bold flashy lights is exactly what they have done. They have not broken your code, let alone permanently. Your code still compiles.

                          Sure, some users will get the warnings. Of course those users will file a bug. But your code still compiles, and will do for quite some time.

                          Any crate with unsafe in it already has as much risk as something that has been there for years and nobody noticed any problem

                          That’s just unsafe doing its job: a promise from the programmer that there isn’t any undefined behaviour, even though the borrow checker can’t verify it.

                          I think the right action depends how many crates they have obsoleted,

                          “Obsoleted” is such a strong word. I bet the changes required to fix the soundness errors in those crates will be minimal. I strongly suggest you take a look at your own crates, see where the new borrow checker got displeased, and do whatever is needed to please it again. This should be a quick fix.

                          1. 0

                            They have not broken your code, let alone permanently. Your code still compiles.

                            The warning specifically says they plan to stop it from compiling. Fine if it isn’t broken yet, but they told us the plan is to break things. They seem to have proposed adding these changes to edition 2015 to prevent even more code from compiling in the future.

                            I bet the changes required to fix the soundness errors in those crates will be minimal.

                            You also need to back port the changes to every major version release of your package to keep builds working for people depending on older API’s of your crates. Then you need to spend time testing each release, and publish them all. “Minimal” can quickly add up to an hour per crate., I don’t think all authors will do it, nobody is paying them to do it. Some probably don’t program rust anymore. It is just a loss for everyone.

                            “Obsoleted” is such a strong word. I bet the changes required to fix the soundness errors in those crates will be minimal.

                            Those crates simply won’t compile with newer versions of rustc 2018 edition without changes. The old versions just won’t work anymore without change, that sounds like obsoleting to me.

                            Anyway, obviously there are positives, like a lower maintenance burden so it isn’t totally bad.

                            1. 2

                              I don’t think all authors will do it,

                              I agree, they won’t. But I think it’s reasonable to assume that every single noteworthy crate will be addressed. The other can fall into oblivion like they would have anyway.

                              Those crates simply won’t compile with newer versions of rustc 2018 edition without changes.

                              The original post says: the 2018 edition of Rust […] has had NLL enabled ever since its official release.

                              It’s a new edition. If you don’t want to update your code, well, just put a note that you’re only Rust 2015 compatible. C++ broke compatibility in similar ways, by the way: remember how it hijacked the auto keyword ? Nobody complained, because everyone understood it was a major release of the language (and the auto keyword could easily be removed from old code).

                              And then there’s the migration mode, that allows you to take advantage of Rust 2018 even if you fall into one of those soundness bugs. Yes, they will turn it off eventually. But really, if you stopped maintaining your package, you are still using Rust 2015, and you will be fine. If you do maintain your package, well… what’s an hour per crate, really?


                              It is not possible, nor (I think) even desirable to add special cases to the NLL borrow checker so it is bug compatible with the old AST borrow checker. It doesn’t work the same way at all, and even if you could reach for bug compatibility, you’d still have a soundness bugs, and with it the possibility of data races or pointer invalidation in supposedly “safe” code. Is bug compatibility worth sacrificing correctness? Not in my book.

                              Then there are the benefits of the NLL borrow checker to begin with. Now pleasing the borrow checker will be much easier. Old complaints about it will likely fade away, and learning Rust will likely be less painful. Would you seriously sacrifice that just so you can be bug-compatible?

                              Make no mistake, this is bug compatibility we’re talking about. Breaking code that relied on a buggy version of the Rust compiler, and as a result were not as safe as rustc claimed it were. They did not remove any feature, they fixed a bug (several bugs, actually). Sucks that the bug lead rustc to accept unsound code, but it’s really really not the same as, say, removing support for some syntax sugar or whatever.

              2. 3

                Rust has been stable for a long time now, so the moving target you mention has long settled. And as /u/pkolloch mentioned, the breaking changes are just bug fixes essentially, and they are downgrading the errors to warnings for an indefinite time. You should definitely check the language again if you feel like it.

                1. 3

                  I thought the same about Rust, but then I realized that it was only going to break things if I upgraded my toolchain. This wasn’t something where a “yum/apt/brew install” or even a rustup would nuke my existing binaries. Instead, it only applies to upgrading your toolchain.

                  If the wrong version of python (2.6 instead of 2.7) is installed in a container or on a host I’m trying to use, I’ll see bugs or failures to run. God help me if I want to run Python 3 code. I hit that snag all the time.

                  With Rust, that problem is more or less nonexistent. I use Python A LOT. However, I still see the merit of Rust on this front. I’ve seen and used @yonkletron’s work written in Rust in an incredibly risk-averse environment and I was quite impressed at how little I had to think about it compared to my own Python work.

                  Rust may be less stable for me as a developer (and even that I’d question!) but it sure as hell seems pretty stable for me as an end user of apps written in it.

                  1. 2

                    It seems like it’s just a constantly moving target.

                    It’s definitely pretty active. But IMO this particular case strikes me as fixing a compiler defect (permitting unsound code to compile). It was a defect not to emit an error for this case, IMO. Fixing defects that result in new errors is not instability from the toolchain, it’s a bugfix that Rust customers should welcome (even though fixing their bug is a prerequisite to accepting the new toolchain release).

                    Maybe I didn’t quite read this article right but the fact that their 2015 example yields a warning that explicitly states that it was downgraded for compatibility makes it sound like the designation “will cause some existing code to break” is too pessimistic.

                    1. 0

                      They added warnings saying working code of mine in already released crates was going to stop compiling. I complained about it and nobody replied.

                      To put it another way, rust already broke code in one of my ALREADY RELEASED crates WITHOUT AN EDITION CHANGE. It pissed me off so much.

                      Not everyone has resources to go back and rewrite and retest code at their whims. In my opinion this change should be a strongly worded warning about potential unsafety + an edition change if they were serious about language stability. Don’t tell end users of my crate “hey, we might break your code maybe sometime, we don’t know when.”

                      If by future versions, they meant “future editions” I would be much more okay with it.

                      1. 2

                        If by “broke code”, you mean “emit warnings on newer versions of the compiler”, then maybe. What’s the crate? Where did you notify the developers (“complain”)? Are you sure the code is sound?

                        1. 0

                          Here is the issue, A report from a user of a released package:

                          https://github.com/andrewchambers/orderly/issues/20

                          Here is the complaint in the official thread for complaints of this issue:

                          https://github.com/rust-lang/rust/issues/59159

                          Are you sure the code is sound?

                          My reading of that issue is that it is sound, but inconvenient for them, but I don’t really care, they should do an emergency edition change for unsound code if the change isn’t backwards compatible. If code can’t last 6 months, what use is it? I want to write code that keeps working as when I wrote it for 20 years, 200 years if possible. They invented the edition system, why don’t they use it.

                          I don’t like how it is deemed ok to disregard small projects who put faith in rust.

                          1. 5

                            they should do an emergency edition change for unsound code if the change isn’t backwards compatible

                            No… Compiler bugs should be warned about once it becomes feasible to do so, with ample time before making them hard errors. Which is exactly what they’re doing… This looks like a great example of that system working. The warning drew your attention to your dependence on the compiler bug, and you fixed it the same day. All dependencies continued to compile, and assuming you released a patch version and yanked the previous version they always will.

                            If fixing any compiler bug required an edition bump, then the compiler would be riddled with bugs. Don’t pretend that you would prefer that.

                            1. 0

                              Now 0.1, 0.2,0.3,0.4 and 0.5 versions of my project on crates.io are useless junk. What is the point of them being there?

                              If my crate were a library this would also turn all crates depending on them into useless junk too. In my complaint I asked if they checked how many crates they are no only deprecating, but outright obsoleting.

                              If you also note, the issue I linked doesn’t say it is a soundness issue, just a mistake they made accepting things that makes some future changes more annoying for them.

                              1. 1

                                Traceability. Studying the history of the code. Reproducing the results if they download the needed version of Rust. Not too many practical reasons, though.

                    1. 8

                      No. Source: Betteridge’s law of headlines.

                      More seriously: Most of the use cases I’ve seen are some extension of “I heard Hadoop was good, so I used it.” Use cases that are specifically called out as BAD in Hadoop end up landing on the platform because it’s just so shiny. Single-row-insert-RDBMS type stuff with a few thousand rows? Let’s do it in HIVE! Oooh, we need to analyze that data in a basic SQL-like way. SPARK IT IS!

                      The joke I heard 4-5 years ago was “Big Data is anything that crashes Excel.” I figure what we’re seeing is a bunch of people realizing they used the wrong tools for like 90% of their use cases, and we’re finally narrowing it down to the stuff that actually kind of needs this kind of tech.

                      1. 4

                        Is Nvidia actually on-board with supporting Wayland yet?

                        1. 14

                          Somewhat. NVidia’s not willing to implement Wayland’s low-level graphics buffer (GBM), but they’re willing to contribute code so that Wayland can run on top of NVidia’s own low-level graphics buffer (EGLStreams). Some bits scattered around various repositories: here, here, and here.

                          1. 4

                            nitpick: GBM is not “Wayland’s” really, it’s more like Linux’s/DRM-KMS’s.

                            Xorg with modesetting/amdgpu DDX (GLAMOR acceleration) also uses GBM.

                            1. 2

                              Hail corporate, I guess?

                              That the unpaid core maintainer of KWin had to quit just so that a multi-billion dollar company could keep using their own proprietary API (and therefore pushing associated maintenance costs onto the open-source contributors) … no good day for free software and Linux.

                              1. 4

                                What? he didn’t “have to quit just so that…” it is pretty well stated on his blog: mgraesslin: plasmawayland and nvidia - 2017 edition.

                                “But I think there is lots NVIDIA could do. Today I would accept a patch for EGLStreams in KWin if NVIDIA provides it”. Eventually they did provide it. It got merged.

                                1. 1

                                  Ah sorry, I must have misremembered the person. I thought this was the person who said that he/she wouldn’t accept code from Nvidia that created a separate, unmaintainable code path.

                              2. 2

                                I’m sure we’ve all seen Linus’ message to Nvida. It consisted of seven letters with a space after the fourth.

                                In reality, if it were not for Cuda I would love to see Nvida burn. Is gaming really so important to people that they are willing to through everything else away?

                              3. 4

                                Officially deprecating X eventually would helpfully force their hand at it, but as the user “144Hz” mentions in the forum post comment section for that post:

                                PopOS, Fedora and Ubuntu are all doing major efforts to make Nvidia behave better on their desktop. Some of the effort goes to wayland.

                                So yeah, expect the next round of releases to solve some of the current problems.

                                1. 2

                                  I really hope this involves telling Nvidia to sort themselves out, not patching every other software because Nvidia cannot be bothered.

                                  Because if all conversations turn out like this:

                                  As many of you are aware, nvidia currently only has makeshift support for Wayland using the EGLStream protocol. Unfortunately, nvidia makes up a huge amount of consumer machine’s GPUs so until they get proper wayland support, we have to support this in X.

                                  Then the day Nvidia will play nice will be “never”.

                                  1. 4

                                    Playing nice isn’t exactly on the agenda for any of the competing parties in graphics: Try to quantify who is the shittiest actor between Qualcomm, ARM, NVidia, Broadcom. AMD and Intel are, relatively speaking, underdogs.

                                    Qualified guess & speculation:

                                    1. Nvidia has planned their exit out of the minuscule part of the consumer market that is foss- desktop, it is on life support mostly thanks to Hollywood.
                                    2. EGLstreams is bare-minimum patchwork, but the design maps well/better to the needs of android SurfaceFlinger and Nintendo Switch.
                                    3. Vulkan interop will provide the lower level interoperability for anything recent.
                                    1. 3

                                      Qualcomm has been contributing to freedreno since 2014. Broadcom hired Eric Anholt in 2016-17(?) and for VC5/6, the FOSS driver v3d is, as I understand, the only Linux driver (which is awesome). As for ARM, the kernel side of Panfrost is already seeing commits from @arm.com people.

                                      Of course the worst actor is nvidia. It’s always nvidia. Keep the middle finger up.

                                      1. 3

                                        I’ve done more than my fair share to cause reasonable economic damage to Nvidia, middle fingers are just juvenile. I’ve also been on the receiving end of QCM from an OEM perspective, where they quite emphatically marked against using Freeadreno for anything serious. The contributions of QCMs / BCMs hires etc. are hollow gestures where the real gain was getting access to Mesa in order to test their awful drivers (QCM) and marginally appease the RPi foundation (BCM). Otherwise they burn more resources on coffee for testers - I have friends working at ARM graphics (.se/.no) still and the tales from there - to this date - are some of the most draconic shit imaginable, Luc/libvs frustrations are more than justified.

                              1. 5

                                Avoiding monoculture preserves the motivation for consensus-based standards processes rather than single-party control (see also: Chrome and what it’s done to the web) and the motivation for people writing software to write to the standards rather than to a particular implementation.

                                Sometimes I wonder if anyone with power over at Google has the capacity (or will) to realize the damage Google does with every pie they stick their fingers into.

                                1. 4

                                  Google has a lot of really bright people, which makes them feel really confident in their decisions. I like that they’re at least soliciting feedback here. I like to think the engineer here really wants to help and will take the feedback and contribute to an existing project in a light-touch kind of way. My fear is that they will either end up google-stomping it or be google-stomped as an employee and end up looking at their creation going “WHAT HAVE I DONE?!”

                                  1. 13

                                    Google has a lot of really bright people, which makes them feel really confident in their decisions. I like that they’re at least soliciting feedback here.

                                    For me the problem of this thread on the LLVM list is: what is there to give feedback on?

                                    From the initial e-mail:

                                    Within Google, we have a growing range of needs that existing libc implementations don’t quite address.

                                    But there is no description of the shortcomings that should be addressed. So, the whole thread feels like “we are going to do this anyway, so you can cooperate or be left out”, rather than having a genuine discussion of the problems of existing libc implementations and how they could be addressed.

                                  2. 1

                                    The very problem is that they don’t have to, they can do as they please.

                                  1. 41

                                    Am I the only one shocked by the poverty wages paid in open source? I make more a day than that project makes a month and not by a small margin.

                                    The current open source licenses have failed us completely when middlemen make billions while coders make less than minimum wage.

                                    1. 11

                                      Am I the only one shocked by the poverty wages paid in open source? I make more a day than that project makes a month and not by a small margin.

                                      Probably because giving away something for free and then holding out your hat afterward in expectation of payment is a shitty business model. It barely works for some musicians, it doesn’t work at all as a faceless github account on the Internet.

                                      If you want to make money doing what you love to do, you have to create a workable business model around it. And the thing about businesses is that sometimes they work and sometimes they don’t. Just because you create a thing doesn’t mean you are suddenly entitled to receive a profit from it. The thing you make or do needs to have value to others, you have to prove that value to them, you need a system for delivering that value, and then make it easy for them to pay you for it. There are plenty of companies doing well enough with their own spin on a combination of open source with commercial opportunity. Like any other business, it’s not easy and many fail. But it is possible.

                                      The current open source licenses have failed us completely

                                      Incorrect, they work exactly as they were intended to work. The majority of open source software is given away with no expectation of anything tangible in return. Open source software (generally) gets written because someone had an itch to scratch and wanted to share the results or their work with a community. The authors may have many motivations for giving away their code (altruism, recognition, social interaction) but none of them are to make a bunch of money.

                                      Finally, I have no opinion of the musl project but if they actually want donations, they’re doing a very good job of hiding that fact on their website.

                                      1. 4

                                        Really? He makes only slightly less than half of what I make (and it probably goes a lot further for him), and I consider myself well-compensated by the standards of the amount of work I put in (if not well-compensated by the standards of this industry, where dev wages are hugely inflated).

                                        1. 4

                                          You are not the only one.

                                          1. 3

                                            The current open source licenses have failed us completely

                                            Some licenses are way more permissive towards freeloading than others.

                                            1. 1

                                              That’s true, but there’s another twist to it, right?

                                              Giving away the source code freely and then having freeloading (e.g., not pushing changes upstream or sharing source code they link with) services live behind an inscrutable wall (network service, usually) makes catching violations very difficult. At least with a binary you can decompile it and get an idea of what libraries were used–there are no such easy fruit for web applications if even the slightest effort is put into it.

                                              1. 0

                                                Yes, SaaS make violations difficult to catch. However, licensing can make such “dark pattern” too risky or too unpractical to be used at a large scale.

                                                Unfortunately license adoption needs a critical mass is needed for this to work. If 90% of software stays under very permissive licenses freeloading will not stop.

                                            2. 1

                                              It depends on purchasing power, right?

                                              There are countries even in continental Europe where a small Patreon campaign can match a lawyer’s salary.

                                              Also a reason to not donate to larger projects through Patreon is that it’s impossible for the project management to accomodate everyone. People without that much disposable income, who would prefer to pay for specific features, even if they are on the roadmap but not a priority, may choose to keep their money instead.

                                              Or buy into a more commercial solution to get what they need without the open-source politics.

                                              1. -5

                                                A single lawyer can’t save a company several million in opex a month. I’ve have.

                                                I don’t quite understand why the go to example of people trying to explain to me why I should be getting paid less are jobs which have no inherent ability to scale, be it lawyer, doctor or building architect and whose only reason for being highly paid is a cartel keeping wages inflated. Here’s hoping we import enough Cuban doctors or Latvian lawyers that their wages reflect the difficulty of their job and the demand for it.

                                                1. 24

                                                  Please don’t dismiss other people’s work just because you don’t understand what they do. Of course a single lawyer can save a company millions in operating expenses per month, and their profession has been doing it for far longer than we have.

                                                  1. -5

                                                    [[citation needed]]

                                                    I have seen teams lawyers cost the opposing side tens of millions pretty easily, I have never seen them save money inside a company that wasn’t being sued. In short, a zero sum profession, with a high bar to entry and a marvelously developed class consciousness. Good job if you can get it. I only wish developers could develop that sense too, because we add actual value in the trillions.

                                                    1. 13

                                                      I have seen teams lawyers cost the opposing side tens of millions pretty easily, I have never seen them save money inside a company that wasn’t being sued.

                                                      There’s a good reason you might not see it. By having proper policies and procedures in place to comply with the law, lawyers can save a company money by understanding the law and ensuring that they don’t get fined or sued. For example, breaking wage and hour laws in New York can be very expensive. One of the fines listed is $50 per employee per day. There are like 65,000 fast food workers alone in NYC. If all of the companies failed to comply, that would total over $3 mil / day in just fines. That’s before all the lawsuits that would probably also show up.

                                                      Also interesting, if the guys racking up tens of millions lose their case, they might end up paying those tens of millions back to the people they sued because of laws regarding recovery of attorney’s fees, or counter-suits.

                                                      In short, a zero sum profession, with a high bar to entry and a marvelously developed class consciousness. Good job if you can get it. I only wish developers could develop that sense too, because we add actual value in the trillions.

                                                      I’m wary any time someone talks about how great software engineering is or developers are. Were the people who wrote the code to do spoofing and layering adding actual value? How about the engineers and developers behind the Clipper chip?

                                                      1. 4

                                                        It’s not always a zero sum game, there are (unethical) agencies who make multi million euros a year by sending cease and desist letters for allegedly (and often false) copyright violations. Sadly, it took many years until this practice was prevent by the government in Germany, maybe because about half of the politicians are lawyers themselves.

                                                        Update: typo

                                                        1. 3

                                                          You can bet Goodwill consulted a lawyer before implementing this cost-cutting strategy.

                                                      2. 8

                                                        A single lawyer can’t save a company several million in opex a month.

                                                        Not to take away from your point, but they absolutely can: M&A, restructuring, downsizing, RightSizing™. And so on. I personally know a lawyer whose sole job is to fly around BoA offices around the world shitcanning [redundant] people.

                                                        I don’t quite understand why the go to example of people trying to explain to me why I should be getting paid less…

                                                        Because people like free stuff and one obvious way they get free stuff is if you work for free.

                                                        However if zig is successful, Andrew will likely get hired at a big marketing company like Google or Facebook where he’ll lead a charge to zig all the things with a nice fat salary doubled up with lots of RSU. It’s a bold move, and not for everyone, but using a “open source career” to bootstrap an enterprise retirement is easy enough to do that (while the markets are good) people are doing it on accident.

                                                        1. 15

                                                          That’s not my plan. I might consider working at a place like Mozilla but never Google or Facebook. I’m looking into starting my own non-profit company. Do you know how amazing it is to not have a manager?

                                                          1. 7

                                                            Can I suggest you start a for-profit company instead and make a nice life for yourself? There’s nothing unethical about charging customers money for the tools you build. It’s worked quite nicely for me and I hate to see fellow OSS enthusiasts scrape by and play down their own value to society.

                                                            1. 5

                                                              I appreciate that you’re looking out for my interests, but why not start a non-profit company and make a nice life for myself and others? Non-profits are allowed to charge customers money for tools. There’s nothing stopping me from having a nice salary in a non-profit.

                                                              1. 4

                                                                What is the benefit of a non-profit vs a privately owned company that can do what it wants? I suppose I can see why a programming language steward company might be a non profit.

                                                                1. 3

                                                                  While @mperham is one of the best examples I know of for turning a profit and contributing to the community (maybe followed by Richard Hipp/sqlite), may I augment his suggestion with that of a Benefit corporation if that suits your priorities better?

                                                                  It seems to me that the bigger problem for you (vs @mperham) is that almost everybody expects language toolchains to be free at this point (there are some exceptions, but most of those seem like legacy / gigantic enterprise work).

                                                                  But either way, I hope to see you continue the great work!

                                                              2. 2

                                                                Reminds me of a quote from one of my favorite movies:

                                                                Free winds and no tyranny for you? Freddie, sailor of the seas. You pay no rent. Free to go where you please. Then go. Go to that landless latitude, and good luck.

                                                                For if you figure a way to live without serving a master, any master, then let the rest us know, will you? For you’d be the first person in the history of the world.

                                                                Lancaster Dodd

                                                              3. 0

                                                                Not to take away from your point, but they absolutely can: M&A, restructuring, downsizing, RightSizing™. And so on. I personally know a lawyer whose sole job is to fly around BoA offices around the world shitcanning [redundant] people.

                                                                I said single, any push like that would require a team of at least a dozen. On average, sure, a team of 50 lawyers can for a small investment of 10 million get you a couple of billion in roi.

                                                                1. 3

                                                                  I’ve personally seen a single lawyer acting as in-house counsel and compliance officer in a heavily regulated space save the company millions in potential fines, and tens (if not hundreds) of thousands in filing and process fees.

                                                        1. 15

                                                          This article piqued my interest because I work on analytics and search in a microservices environment (separate issue), so moving data out of different services to use is a big part of being able to do anything. We use kinesis but find it clunky because it’s difficult to test with locally since you need a kinesis client library and dynamodb to run your code. Kafka on the other hand could just be run in docker and offers many clients for different languages, so it appears more simple to run in a development or testing context. Now AWS has a managed Kafka service, so Kinesis doesn’t offer much more in terms of devops simplicity anymore. Why not switch to Kafka?

                                                          After reading this article, I didn’t get any insight as to why Kafka is too complicated The premise for not needing Kafka here was not a technical one but rather a business one. They asked, why even track this IoT data at all if it doesn’t have business value. I think that’s a valid question, but it has nothing to do with Kafka. You could say, “You don’t need Kinesis (or RabbitMQ, or whatever transport to move data)”. If we have no choice but to accept the business choice of collecting this data and we need to transport it, do we still not need Kafka? Is there a more simple alternative? Would love to hear other peoples’ thoughts on this.

                                                          So to me this article seemed more like a snarky critique of WeWork’s use of IoT data in business rather than the pros/cons of Kafka.

                                                          1. 6

                                                            So to me this article seemed more like a snarky critique of WeWork’s use of IoT data in business rather than the pros/cons of Kafka.

                                                            While the author pokes fun at We, the thing I got out of it is that companies should think twice about their technology stack, and probably choose boring technology. Telling, that so many people got different things out of it…

                                                            1. 2

                                                              As for using Kinesis and DynamoDB in testing environments, you can use Kinesalite and Dynalite instead.

                                                              1. 2

                                                                Yes was a bit clickbaity but tbh way more insightful than I thought would be.

                                                                1. 3

                                                                  Agreed. At least the title and example held all the way through. Maybe a better title would be “WeWork doesn’t need Kafka, and neither do you.”

                                                              1. 5

                                                                This person, in 2019, still thinks that the IT industry is about solving problems and not about making profit and/or stealing VC money. So naive.

                                                                Jokes aside, is it just me or Kafka is a much simpler abstraction than most alternatives? I mean, this guy is comparing with DBs and I agree that Postgres is better than a full-fledged kappa architecture, that’s harder. But the abstraction behind Kafka is so neat and well supported that in my experience it simplifies development. Then we might discuss if it simplifies deployment and the answer is probably negative. But I would always pick over Celery, for example.

                                                                1. 3

                                                                  I agree. At the companies where I implemented kafka, it ended up significantly simplifying our architecture and making it more bullet proof. For example, we previously had a bunch of Ruby apps using Cassandra counters and then performing rollups by reading and writing to the database. We replaced it with a system where we wrote events to Kafka and then loaded them into Hadoop, and used batch jobs to roll-up data. Kafka let us easily track the events and replay them when we found bugs in the consumers. Could you implement this in a sql database? Absolutely. But at some point in scaling it becomes slower and slower to the point where it’s just too costly to scale up. Even simple apps that track millions - billions of events across the internet for analytics have a pretty good use for it right now.

                                                                  I totally agree with the author that if you don’t need Kafka, don’t use it. But if you have the volume of data and engineers that are capable of understanding the architecture and tradeoffs, it’s well worth it. A lot of engineering isn’t just about how simple an architecure is, but also the ease of debugging and fixing issues. Kafka makes it very easy to replay logs, since it’s storing data for a few days. That decoupling can sometimes be very valuable, in my experience, similar to a write ahead log in an rdms.

                                                                  That being said, it often surprises me how many engineers will adopt a new technology because it is cool, as opposed to analyzing exactly the functionality and why it makes sense in their application. The industry of “big data” is still young, and over time I think the tools will get simpler and make it easier to decide when to use what kind of queue, database, etc.

                                                                  1. 2

                                                                    For reference I’m talking about web analytics and ad serving applications, which produce many billions of events per month quite quickly. The current industry I work doesn’t have this volume, and we don’t use Kafka.

                                                                  2. 2

                                                                    I suspect the person who wrote this does not identify as a dude/guy

                                                                    1. 1

                                                                      whoops, I never check the author. I’m correcting it

                                                                    2. 1

                                                                      I haven’t really used any of the alternatives, and my Kafka knowledge is a little intermixed with screwing around with Avro and Snappy, but as someone who has to use it I’m pretty happy. There are nice, easy tools that let you do things like use unix pipes and a single command to feed or read data to your cluster. The fact that I can give someone with no Kafka experience a quick command to start slurping down data into their shell is a very very nice thing.

                                                                    1. 0

                                                                      This is a shitty move, no doubt about that. But on a purely technical reasoning I can sorta see why someone might want to reimplement curl:

                                                                      libcurl has 80 public functions and curl_easy_setopt alone takes 268 different options!

                                                                      1. 3

                                                                        No, they are talking about re implementing those options. If they wanted a new thing they could have done that without mentioning curl.

                                                                        1. 2

                                                                          The article says about reimplementing it in part. I made a reasonable assumption that it could mean culling some of the existing API surface.

                                                                          And again, I totally agree on the naming disaster. I’m waiting now when they invent a “plausible” explanation of why they chose this name, and how it’s totally not going to screw anything up.

                                                                        2. 2

                                                                          Why is that necessarily wrong? It’s a complex problem space; there are going to be options, or there are going to be locally floated patches in forks all over the place.

                                                                          1. 4

                                                                            The shitty move is the naming convention, which is literally two letters in the middle transposed from the original library name. People might get Google’s offering simply by typo.

                                                                            1. 3

                                                                              That is a very generous interpretation. Why would I have to typo libcurl when my browser, or my search engine, can infer my “real” meaning and “helpfully” point me to the “corrected” name?

                                                                              [I’m writing this after Google’s “clarification” that the name will be libcurl_on_cronet because I don’t think that version is any better. It literally contains the name of the other project.]

                                                                              1. 1

                                                                                It literally contains the name of the other project Supposedly because it literally implements the libcurl API on top of cronet?

                                                                                As I understand it (having heard of cronet for the first time through this issue despite working on Chrome OS firmware), this allows Chrome (and its third parties, like imported libraries) to conduct all communication through cronet (a http-and-friends library) even if they use the libcurl API.

                                                                                This hints to me that they want to unify the way such connections are made across the application, and it’s easier to reimplement the subset they need (the API surface used by chrome + dependencies) rather than forking all those libraries and tools (Chrome OS) and rewrite their libcurl uses into cronet uses.

                                                                              2. 2

                                                                                Sorry, I was reacting specifically to the suggestion that the existing curl API is too big and complicated, and I should have made that clear.

                                                                                1. 1

                                                                                  Oh! Sorry about that! Misunderstood totally. I get what you mean about it being fine though. I’m also fine with them reimplementing it if they called it something obviously distinct. Forks and clones happen!

                                                                                  This whole muddy “libcurl but not that project” game is messy. Imagine if Linux was called “Minxi” or “Minix_as_monlith” or something…

                                                                              3. 1

                                                                                I didn’t say it was wrong. I said I understand why someone might genuinely want a simpler API.

                                                                            1. 45

                                                                              I hope there’s an uproar about the name.

                                                                              Really shitty move for a giant company to create a competing library with such a similar name to an existing project. Bound to cause confusion and potentially steal libcurl users because so many people associate Google with networking and the internet.

                                                                              1. 22

                                                                                I wonder how long it takes for google autosuggest to correct libcurl to libcrurl.

                                                                                1. 11

                                                                                  Looks like crurl was just an internal working name for the library[0]. They’ve changed it already in their bug tracker to libcurl_on_cronet[1].

                                                                                  [0] https://news.ycombinator.com/item?id=20228237

                                                                                  [1] https://chromium-review.googlesource.com/c/chromium/src/+/1652540

                                                                                  1. 7

                                                                                    Holy shit! It’s with a Ru in the middle instead of a Ur! I actually missed that until I read your comment and reread the whole thing letter-by-letter. Google knows full well that this will cause confusion since they added a feature to chrome for this exact problem. Egregious and horrible.

                                                                                    1. 14

                                                                                      Google knows full well that this will cause confusion

                                                                                      I’m not part of the team anymore and have no connection to this project, but my guess is that some engineers thought it was a funny pun/play on words and weren’t trying to “trick” people into downloading their library. I’m not saying you shouldn’t be careful about perceptions when your company has such an outsized influence, but I highly doubt this was an intentional, malicious act.

                                                                                      1. 6

                                                                                        I’d bet this is exactly what happened. I’ve given projects dumb working names before release, and had them snowball out of my control before.

                                                                                    2. 2

                                                                                      Honestly, I had to double check that I wasn’t reading libcrule.

                                                                                      1. 2

                                                                                        Honestly, their lack of empathy here, and the need to extend rather than collaborate indicates in my opinion a concerning move away from OSS. I hope to be corrected though.

                                                                                      1. 2

                                                                                        Thanks, I hate it.

                                                                                        “Was Steve Jobs an outlier? We won’t bother to plot or even reference his GPA or SAT score on this chart even though it’s the core of our premise, but we’ll claim that he was an outlier.”

                                                                                        1. 2

                                                                                          Steve Jobs was definitely an outlier - he’s globally-famous enough for co-founding Apple Computer, the company that developed the Macintosh, iPhone, and iPod, that you know his name, and can assume everyone in your community knows his name too. There’s billions of people in the world about whom that is not true, most of humanity.

                                                                                          That said, Steve Jobs was only mentioned as an eye-catching hook at the very beginning of the essay (precisely because he is an outlier!), and his specific GPA or SAT scores aren’t relevant to any of the broader points about range restriction.

                                                                                          1. 2

                                                                                            The hook wasn’t carried through though. It felt like the article went:

                                                                                            Steve Jobs was really smart, but also a jerk. Is smart / jerk unusual? Yes, this paper found no correlation between being smart and being a jerk. Here are some other weird artifacts: Jock / Nerd, Hot / Crazy. Neat, right? OK: Let’s test it with an example. Instead of going in depth with any of the ones I just went through, or tying it back with data or papers cited for some of them, let’s go with GPA / SAT score.

                                                                                            It’s really jarring to me.

                                                                                        1. 16

                                                                                          There is some discussion on the issue tracker. It is about the quality you would expect from an issue titled “Leave the themes alone”.

                                                                                          Also related: islinuxaboutchoice.com.

                                                                                          1. 8

                                                                                            Man, this really drove the point home for me.

                                                                                            There are two “please”s in competition here, and I can sympathize with both of them:

                                                                                            • Please don’t make my stuff different than I intended

                                                                                            • Please try to fit into the rest of the ecosystem.

                                                                                            Unfortunately, it seems like the answer to both is often “no.” Sometimes it’s polite, sometimes it’s not, sometimes it’s silent, but it’s still “no.” This is true throughout the Linux ecosystem.

                                                                                            I suspect part of the problem is that the ecosystem is so complex to fit in to, with so many different competing standards, that it’d be next to impossible to get even a small fraction of the design to be consistent. Xorg or Wayland? If I choose to support only Wayland, it won’t work for Nvidia drivers right now! GTK, QT, or something else? Gnome, KDE, XFCE, i3, Xmonad? Which distributions should I package for? Does this mean I need to run every LTS version of Ubuntu and CentOS, plus latest Ubuntu, Fedora, Debian, and Arch?

                                                                                            I was a user in this ecosystem and I regularly had to choose between which item I cared about working. Fractional scaling so I had reasonably sized text on my 4k screen, crisp text for EVERY application rather than a subset, or consistent, non-glitchy graphics? Functional suspend/resume, or reasonable battery life close to the manufacturer spec? Easy installation but a non-standard implementation of the UI, or hard installation but highly compatible?

                                                                                            I finally gave up and switched to macOS, plus a Windows machine as a gaming console. I look wistfully over my shoulder now and then, maybe throw Fedora on a desktop for a few hours or something, before I get fed up and go running back to my Mac.

                                                                                            1. 6

                                                                                              I think the whole discussion is also about the default behavior. I think both camps are OK with X if the user intentionally does it, but not as the default. Which might mean that it’s considered too difficult to customize for users. It seems to be mostly an administrative problem above anything else.

                                                                                              I suspect part of the problem is that the ecosystem is so complex to fit in to, with so many different competing standards, that it’d be next to impossible to get even a small fraction of the design to be consistent. Xorg or Wayland? If I choose to support only Wayland, it won’t work for Nvidia drivers right now! GTK, QT, or something else?

                                                                                              This is exactly the biggest problem with Linux, and why it’s so hard to get started. The more stuff you install, the bigger the chance that two packages don’t place nice together. Example: If you have installed ccstudio on Arch Linux and try to install jlink from the AUR, it just won’t work as it tries to create a /usr/lib/udev/rules.d/99-systemd.rules, which is already made by ccstudio. For almost every issue you have, you have to go down a rabbithole of old threads, conventions, and manuals. Your best option is often to post essentially a “help!” post on the distro’s forum and hope a wizard comes and helps you. And that’s coming from someone who’s studied computer science.

                                                                                              I finally gave up and switched to macOS, plus a Windows machine as a gaming console.

                                                                                              It’s such a shame that in this day and age, where technology and especially software is hailed as the solution to everything, the easiest solution is just to buy two high-end systems (another pet peeve of mine is that you need all that processing power just to edit a document and browse the internet, but I’ll save you that rant).

                                                                                              1. 3

                                                                                                the easiest solution is just to buy two high-end systems

                                                                                                With the major caveat that I haven’t tried it myself, I do follow the Hackintosh community a little bit, and I get the impression that is getting easier to build and maintain these. Then at least it’s just one set of hardware, even though you’re still switching between 2 OSes. It’s only a viable solution for a few people, though.

                                                                                                1. 2

                                                                                                  I think both camps are OK with X if the user intentionally does it, but not as the default. Which might mean that it’s considered too difficult to customize for users. It seems to be mostly an administrative problem above anything else.

                                                                                                  Yeah, I suspect you’re right. It sounds like a lot of the problem comes from confused users opening bugs against the application, rather than the theme. “Tell the users to open the bugs against the theme!” “Sure, but that means I still have to triage and handle a pile of bug reports against my app that only exist because of the theme!” and so on.

                                                                                                  It’s such a shame that in this day and age, where technology and especially software is hailed as the solution to everything, the easiest solution is just to buy two high-end systems

                                                                                                  In fairness to this day and age, the only reason I have a second high-end laptop is because I bought a used Alienware from a friend to run Linux on and got fed up with installing random utilities to get things like the macro keys or the fancy colors working. Basically, I went “sure, I can keep a grand worth of hardware around to run these four games, rather than futzing with Wine.” It already had a Windows license, so no big deal.

                                                                                                  Of course on Windows, I can’t find a way to make the trackpad stay on while I’m typing short of uninstalling the synaptic driver, which keeps reinstalling itself. It’s a gaming laptop that interferes with the trackpad while you’re using WSAD to move… Between that and the forced reboot nonsense, I think of ditching it regularly. It’s infuriating to feel like you have to fight your computer to get it to behave the expected way.

                                                                                                  I get that feeling of fighting with my computer less often on macOS, but I think that could just be luck.

                                                                                                2. 2

                                                                                                  The most important “please” IMO, is from the user wanting to control her computer. While the “platform” and “artiste app dev” struggle for against each other for control, it’s the user they wrest it from, not each other.

                                                                                              1. 11

                                                                                                Incredibly frustrating. First of all, they added a login-wall to download docker-ce. You could get around it, but not easily.

                                                                                                Second, when users complained about this change on GitHub they decided to piss on our leg and tell us it’s raining by telling us it was to improve user experience.

                                                                                                Now they’re pwnd and we’re left with a far bigger mess to deal with than the original wet leg.

                                                                                                1. 14

                                                                                                  What you would do is, instead of having that data being diverted to third-party servers that you have no control over, you would either set up your own server or pay for a service by a trusted third party to store that data yourself.

                                                                                                  Peak silicon valley capitalism: dying because the doctors couldn’t access very important info about you because the server with that info was turned off because you didn’t pay for the hosting.

                                                                                                  1. 17

                                                                                                    I think peak Silicon Valley capitalism would be a free medical record host that profits off the data.

                                                                                                    1. 15

                                                                                                      Or one that you pay but which sells the data anyway (23andMe).

                                                                                                    2. 3

                                                                                                      Heh. Do me a favor, and do a quick search of software for your average doctor’s office or hospital, and let me know which one is the best.

                                                                                                      1. 25

                                                                                                        I’m currently on my third stint in health care.

                                                                                                        The stuff in a typical doctor’s office is not great, but I’d still take it over the average blockchain solution-in-search-of-a-problem any day of the week. The fundamental properties of a blockchain are the opposite of what you want for medical data. Blockchains have everything public and immutable by default and design. Medical data is private by law and must support corrections and errata. In fact, properly handling medical data often requires that you implement a time machine and be able to change history, then replay the new timeline forward.

                                                                                                        Here’s an example: suppose there’s some ongoing treatment that requires documentation before claims on it can be paid, and the documentation doesn’t come in until after the first 4 claims. The first 4 claims would have been rejected, and now you have to rewind time, then replay those 4 claims and pay them.

                                                                                                        Or say there’s a plan with a deductible: the first $500 of costs in the year are the patient’s responsibility, then the plan pays all claims after that. But a claim for something that happened early in the year doesn’t come in until later, after you think the deductible has been met. On many plans – including some of the US government-backed ones – you now have to start over, rewind time to the start of the year, and replay all the claims in chronological order, processing things according to what the deductible situation would have been if the claims had arrived in that order, and pull refunds from doctors you weren’t supposed to pay, order refunds to the patient from doctors who should have been paid by you, and reconcile the whole thing until the correct entities have paid the correct bills.

                                                                                                        An append-only structure is fundamentally terrible at this unless you build a whole bunch of specialized stuff on top of it to treat later entries as addending, modifying or replacing earlier ones. And since at that point you’ve gone and built a mutable history structure on top of your immutable blockchain, why didn’t you just build the mutable history software in the first place and skip the blockchain? You’re not using it for any of the unique things it does.

                                                                                                        And that’s just the technical/bureaucratic part of the problem. The social side of the problem is even worse. For example: sometimes it is incredibly important that a patient be able to scrub data out of their medical history, because that data is wrong and will influence or even prejudice doctors who see the patient in the future. Doctors who just ignore obvious symptoms and write down in the notes “it’s all in their head, refer to a psychiatrist” are depressingly common, and every future doctor will see those notes. When it turns out that doctor was wrong and there was a real problem, you do not want to have to fight with the next doctor who says “well, it’s here in your file that this was found to be psychosomatic”. You have to get that fixed, and it’s already hard enough to do without people introducing uncorrectable-by-design medical records (and no, merely putting a big “that doctor was wrong” addendum in the medical blockchain is not a real solution to this).

                                                                                                        Compared to how much worse it could get with blockchain, the crappy hairballs of only-run-on-Windows-XP (or worse) software in a typical doctor’s office are downright pleasant.

                                                                                                        1. 5

                                                                                                          this is the sort of thing I heard from Americans who work in health care when they reviewed the article ahead of time, yeah.

                                                                                                          The big problem they flagged was data silos - lots of patient data trapped in systems that don’t talk to each other, and the ridiculous dificulty and expense of extracting your health record from your doctor (though passing your stuff to another doctor is apparently fine). You can see the blockchain pitch in there - “control your own data!” … not that it can offer a solution in practice.

                                                                                                          1. 8

                                                                                                            though passing your stuff to another doctor is apparently fine

                                                                                                            It absolutely is not, at least technically, unless both doctors happen to use the same EMR, in which case it’s merely painful; or, if you’re extremely lucky, the same instance of the same EMR (for instance, half the health care in eastern Massachusetts uses Mass General’s EMR), in which case the experience is basically reasonable. Otherwise, you end up with some of the most absurd bullshit imaginable, that makes mailing paper charts seem reasonable in comparison; the best I’ve heard is a mailed CD containing proprietary viewing software in order to send imaging.

                                                                                                            Interestingly, while “patients should own their own data” is a nice pitch, it’s actually somewhat problematic in practice. Health care providers may need to share information about a patient that patient would object to or should be kept unaware of (for instance, if a patient has been violent towards providers in the past, that information absolutely must be conveyed to any future providers that see them); and, like all professionals, health care providers use a lot of jargon in order to communicate clearly and precisely, which tends to make the chart incomprehensible to laypeople.

                                                                                                            1. 3

                                                                                                              In the US, HIPAA provides a right to your medical records, similar (but not identical) to what a European would be familiar with from the GDPR. The gist of it is that you can make a request to any medical provider who’s treated you, and they have 30 days from the time of the request to provide you with a copy of your records. There are some exceptions (the most common exception is therapists’ notes), but not many.

                                                                                                              I would guess that a lot of people probably don’t know they have this right, and probably a lot of medical providers aren’t forthcoming about making sure patients really understand their rights (they have to provide a notice of their privacy-related policies in writing, but a written notice in legalese is not the same as genuine understanding). A bigger problem is just that most people aren’t really able to look at medical records in their “standard” form and understand what they’re seeing.

                                                                                                              And like the other commenter points out, interoperability between medical providers is not great. HIPAA allows medical providers to share information for treatment purposes, though, and the rules produce results that sometimes seem odd to modern tech people (for example, in the US the medical industry relies heavily on fax for sharing documents, because it’s often both the technically and legally simplest way to do so).

                                                                                                            2. 3

                                                                                                              Maybe I’m missing something, but examples you give are related to health insurance, not medical records per se – those are two different concerns that are related, but the latter can exist without the former. Medical records are immutable if they store facts, even wrong diagnoses – after all, how do you figure our that some diagnosis is wrong – by someone else claiming the otherwise and providing supporting evidence. Further, medical records are not a single blob of information, they are more like tiny databases, for which we can have various ACLs for various pieces of information – IBM did quite a lot of work in that direction, IIRC. Nevertheless, blockchain is not the right tool, at least not for this domain.

                                                                                                              1. 5

                                                                                                                Claims are medical records just like everything else.

                                                                                                                1. 1

                                                                                                                  But that depends on the definition what a medical record is, no? In socialist countries with universal healthcare, there is no such thing as claim that should be reimbursed or a plan with deductible. However, what is universal across the board is the state of body and mind, that is, all diagnoses and prescribed medications.

                                                                                                                  1. 6

                                                                                                                    From this comment by @ubernostrum further up the chain:

                                                                                                                    The social side of the problem is even worse. For example: sometimes it is incredibly important that a patient be able to scrub data out of their medical history, because that data is wrong and will influence or even prejudice doctors who see the patient in the future.

                                                                                                                    This applies even without the baroque details of the US health insurance system. And even in countries with universal coverage, you still need to look out for fraud, fraudulent prescription of drugs, etc. The money comes from somewhere and it shouldn’t be wasted.

                                                                                                                    1. 3

                                                                                                                      Here in Finland “universal” claims for things like medical pensions (whatever it’s called, disability retirement) are routinely denied. It’s tough, because people do try to abuse the shit out of it, but sometimes proper claims get denied. The processes for countering these claims are long and costly.

                                                                                                                      We also have systems within the same public health-care district that don’t talk to each other. The private franchises have handled that better, by asking for permission to share data, because it gives a better customer experience.

                                                                                                                      This is fortunately changing, but the data is now within a single point of failure, also duplicated in part for every relevant franchise.

                                                                                                                      Getting your data into the unified system incurs a cost. I don’t know if you can opt out of it, but you probably don’t want to, as the cost is not high, I think insurances cover it (transfer of wealth style) and it’s more convenient to check the records online than papers in a binder somewhere.

                                                                                                                      1. 3

                                                                                                                        That is, for me, the key point. I have had a close relative get the wrong treatment for years because a doctor hastily put in an incorrect diagnosis and everyone after that just assumed it was correct.

                                                                                                                        Why did it take so long to have it edited out of her records? Because one symptom of that diagnosis is denying it. Once that diagnosis is in your records, whatever you say, the next doctor will just put in a note saying, “patient does not think she is suffering from X”.

                                                                                                                        So as far as I’m concerned, mutability of medical records is absolutely crucial. (Of course with a detailed log of operations visible only on court order or something.)

                                                                                                                2. 1

                                                                                                                  Blockchains are indeed append-only logs, albeit ones constructed in an interesting way.

                                                                                                                  And yet within a blockchain-based system state changes are made over time (Bitcoin balances change, CryptoKittes get new owners) by parsing the data contained within those logs.

                                                                                                                  In a medical system this means that records are indeed mutable/scrubbable. Want to fix a record? Post an update to the system’s blockchain. The record is the result of parsing the logs, so this updates the record. If you want a scrubbable log that’s also doable, although it does affect trust in the system in ways that take more thinking through than just “but GDPR!!!”.

                                                                                                                  All that said, like the OP I’m very wary of “control your data” pitches of all kinds. Don’t get me started on data-ownership UBI. ;-)

                                                                                                            1. 3

                                                                                                              Hm. This seems like something NPM could have prevented by running a basic “npm install ” in a container on attempt to publish and rejecting stuff that doesn’t even build. Any reason npm doesn’t do this today?

                                                                                                              1. 2
                                                                                                                1. Someone publishes X dependency
                                                                                                                2. I publish Y project based on X.
                                                                                                                3. Npm checks it and it installs just fine (what you suggested)
                                                                                                                4. X dependency is unpublished
                                                                                                                5. Y project is now broken
                                                                                                                1. 2

                                                                                                                  That’s a different problem though. I’m talking about “I updated and it won’t even build when I upload it.”

                                                                                                                  You’re talking about “it used to build, but doesn’t now.” Even then, npmjs.org already has a list of the dependents for a particular project so an unpublish could be alerted on.

                                                                                                              1. 6

                                                                                                                I like how it has simple “Do this, not this” plus “here’s the engineering why” plus “here’s the child playing with Legos why” all in one doc.

                                                                                                                1. 4

                                                                                                                  I feel this so strongly! When I started doing test driven development, I discovered that I can wait two seconds without changing focus. I’ve kept my personal project test suites smaller than two seconds so I can test without losing focus on what I’m building.

                                                                                                                  One of the test suites in a work codebase takes just under ten minutes!

                                                                                                                  How many times do you run the test suite in a day? Multiply that times the length of your test suite, see how much time productive time was removed from your day.

                                                                                                                  Or, pick a codebase you work with often, find a way to speed up the tests, and see if that increases your productivity?

                                                                                                                  1. 1

                                                                                                                    One of the test suites in a work codebase takes just under ten minutes!

                                                                                                                    How many times do you run the test suite in a day? Multiply that times the length of your test suite, see how much time productive time was removed from your day.

                                                                                                                    I’ve tried to combat this with a model of progressive testing. We might disable the long-running tests on our local machine to pound out a couple of test cases, but every commit will queue up a real-deal full run of tests on our build server automagically.

                                                                                                                    Maybe I do a bunch of commits in a quick series and I’ll get a nice backlog of tests churning away, but I don’t have to get distracted by them until I’m ready. Then I can look at the blob of tests that ran while I was coding and see what else I need to fix.

                                                                                                                  1. 6

                                                                                                                    11 services, 5 languages :-(

                                                                                                                    1. 9

                                                                                                                      Yeah, they’re really under doing it. They could’ve squeezed many of the programming paradigms into this one.

                                                                                                                      1. 4

                                                                                                                        I find it hard to not smile at this comment for some reason.

                                                                                                                      2. 4

                                                                                                                        You gotta pump those numbers up. Those are rookie numbers in this racket.

                                                                                                                      1. 9

                                                                                                                        Disclaimer: I work alongside Kevin, who helped create the Commons Clause. I was not personally involved in the creation of the Commons Clause.

                                                                                                                        I agree with the premise of this article, which is that projects licensed under the Commons Clause are not open source, and to call them open source is misleading.

                                                                                                                        The subtext of this article seems to be “the Commons Clause is bad”, which I’m less sure I agree with:


                                                                                                                        1. Commons Clause makes it possible to publish source code that would have originally been closed source.

                                                                                                                        I’ve mentioned this before. Most of this code would have originally been closed source so the authors can make money off of it. The Commons Clause lets them still make money while making the program and source code available for as many users as possible.

                                                                                                                        I think this is a net improvement.

                                                                                                                        2. Using an open core model with existing OSI-approved licenses is unpleasant.

                                                                                                                        Software developers must feed themselves. They must get paid somehow. This is a hard requirement.

                                                                                                                        Open core has historically worked well for open source infrastructure companies at scale (e.g. Hashicorp, Docker, GitLab, Redis). These companies provide immense value for the software community by doing sustainable open source development. (The only successful large company I’m aware of that used the paid support model was Red Hat.)

                                                                                                                        If you actually talk to many of the teams working on open source infrastructure, they’re frustrated by existing licensing tools. There is a big difference between the value that these teams generate and the value that they’re able to capture. A big contributor to this is the fact that service providers like AWS run hosted versions of open source software and capture disproportionately more value than they generate for the community. This is a strong disincentive to provide open core infrastructure.

                                                                                                                        Permissive licenses like Apache allow this to happen. Highly restrictive licenses like AGPL are too broad and scare away proprietary users who would not be hurting the team’s sustainability. In practice, open source teams do not have an option for saying “I would like to be as permissive as possible, but still make money so I can fund sustainable development”.

                                                                                                                        3. “Free software” and “open source” as concepts are more nuanced than the GNU and OSI definitions.

                                                                                                                        The GNU and OSI definitions are very narrow, and generate a lot of confusion. This is exacerbated when people use “free software” and “open source” (as opposed to e.g. “Free Software” / “free-as-in-freedom” / “GNU free software” or “Open Source” / “OSI open source”) to refer to the GNU and OSI definitions.

                                                                                                                        There are immediate layperson meanings for these terms: “software that I didn’t have to pay for” and “software where I can view the source code”.

                                                                                                                        The terms “non-free” and “non-commercial” can mean too many things, and to use them to describe the Commons Clause is misleading:

                                                                                                                        1. Often times, Commons Clause projects are provided at no cost.
                                                                                                                        2. The entire point of the Commons Clause is to allow as much commercial usage as possible, and to only forbid the strictest possible subset of usage (reselling the software) to enable sustainable development.

                                                                                                                        In practice, there are gradients of freedom. To say that software that is not strictly GNU Free Software is not free or projects that are not strictly OSI Open Source are not open source is misleading to the everyday user.

                                                                                                                        I would love to see GNU and the OSI step up here with better education and clearer definitions around this.

                                                                                                                        4. By insisting on their definitions of “free software” and “open source” and failing to recognise this nuance, GNU and the OSI are missing the forest for the trees and will ultimately push more projects towards closed source models.

                                                                                                                        By winning this battle, they are losing the meta-game.

                                                                                                                        At the end of the day, what matters is not whether there are more OSI Open Source projects, but how much value we provide to the community. When open source advocates say that Commons Clause projects are “not open source” (in the OSI sense) and discourage its use, they are correct but harmful.

                                                                                                                        By taking away this middle ground, they push projects to be either free-as-in-freedom or proprietary. Given the pains of sustainable infrastructure development using OSI-approved licenses, I fear that this will ultimately drive projects that would rather be licensed under the Commons Clause (i.e. as permissive as possible) into becoming closed source and proprietary.


                                                                                                                        I don’t believe that the Commons Clause is the best solution, but I believe that it’s important to start a discussion around:

                                                                                                                        1. How can we best address the need for sustainable open source development?
                                                                                                                        2. Should we create new licensing tools to enable sustainable development? If so, how?

                                                                                                                        I think the fact that the Commons Clause has been able to get adoption is a strong signal that there is a real pain here (see also: MongoDB and its SSPL).

                                                                                                                        @SirCmpwn, I would love to hear your thoughts on a better way to enable sustainable development for open source infrastructure.

                                                                                                                        1. 5

                                                                                                                          Software developers must feed themselves. They must get paid somehow. This is a hard requirement.

                                                                                                                          In practice, open source teams do not have an option for saying “I would like to be as permissive as possible, but still make money so I can fund sustainable development”.

                                                                                                                          Redis Labs only became the official sponsor of Redis in 2015, four years after they were founded as a company. So if they weren’t the primary sponsor for four years, how did sustainable development get funded? Well, until Redis Labs hired him, antirez fed himself with a job at VMware. VMware and Pivotal sponsored Redis and funded that sustainable development.

                                                                                                                          Alright, so how do other developers feed themselves? Is antirez the exception? Did Gudio van Rossum work for some Python-centric company focused on support? Nope! He worked at research institutions, then Zope, then Elemental Security, then Google, then DropBox.

                                                                                                                          The creators of Apache Kafka worked at LinkedIn when they initially developed it. Three years after LinkedIn open sourced it, some of the contributors from within LinkedIn founded their own company to focus on Kafka. Until that point, those devs fed themselves with a job at LinkedIn.

                                                                                                                          Linus Torvalds fed himself with a job at Transmeta, then a series of non-profits that eventually evolved into the Linux Foundation (also a non-profit). Many kernel contributors are employed by hardware companies like AMD and Intel.

                                                                                                                          Developers must feed themselves, but they can totally do that by working at a company that doesn’t revolve around the software they write as its sole product.

                                                                                                                          I would argue that it’s more sustainable that way. Companies like Red Hat, Redis Labs, Canonical, Confluent, and a whole bunch more exist because companies want to buy a bunch of integration work ready-to-go rather than spending huge sums of money doing it themselves. If Canonical went bust tomorrow (as many Linux vendors before it have!) Linux would still get developed. Would Landscape, their closed-source management tool? Probably not. The open source component is the sustainer that allows new companies to spawn and die without fear of losing the core.

                                                                                                                          1. 3

                                                                                                                            You’re giving the exceptions to the rule, not the rule. The rule is most aren’t funded. The responses were really negative, too, with lots of stress and burnout. Whereas, the proprietary software that has users gets money automatically with it going up with product development and/or marketing. FOSS developers trying to catch up to that inherent advantage finding funding sources can itself seem like a 3rd job on top of their 2nd job of making the FOSS for free.

                                                                                                                            1. 2

                                                                                                                              You’re giving the exceptions to the rule, not the rule.

                                                                                                                              Do non-FOSS applications succeed at a higher rate than FOSS ones?

                                                                                                                              The rule is most aren’t funded.

                                                                                                                              Ok. Here’s the end of that article:

                                                                                                                              “P.P.S. [edit 1/18/16] The response to this post has been incredible. I’ve started a list of OSS projects needing support here. Please add your great examples there!”

                                                                                                                              That leads to a git repo that’s no longer maintained. Uh oh. But wait! There’s a link that leads to libraries.io with the tagline “Tidelift has over $1 million dollars available to pay open source maintainers. If you’re a maintainer: Find your package.” Here’s some info from Tidelift.

                                                                                                                              The responses were really negative, too, with lots of stress and burnout.

                                                                                                                              Do me a favor and read them again, only this time imagine they’re working at a Fortune 100 on a closed-source project. How many of those would sound out of place through that lens?

                                                                                                                              I have to say, if you asked me about the projects Ive been paid to work on full time (mostly internal stuff at various companies), I would have largely the same complaints at one time or another, including the one about “It is not fair to expect me to do even more work outside of my regular work, and then not get fairly compensated (time or money) for it.”

                                                                                                                              By the way, here’s what they’re doing now, 3 years on. EDIT: I just realized that some of these are highlighting users on here! I’d love to hear what you have to say now!

                                                                                                                              @pydanny, still going strong on GitHub and contributing to open source, in addition to writing books on Python.

                                                                                                                              @ryanbigg, quit maintaining his open source projects (at the time of the article) and handed some off to other teams and developers. Wrote several books on open source projects, continues to work on the i18n ruby gem.

                                                                                                                              @drmaciver, still working on Hypothesis and doing consulting and training around it.

                                                                                                                              @andrewgodwin, still a Django core member, employed by evenbrite.

                                                                                                                              @kantrn, continues to contribute to open source, did consulting. I didn’t see his employment listed on Twitter, but I found him on LinkedIn. He’s got a job as a principal engineer now.

                                                                                                                              @shazow, working on blockchain tech with his own project, Vipnode. Appears to be working full time on open source via grants and partnerships?

                                                                                                                              Even the person who said “I do not have the time or energy to invest in open source any more” is still contributing to open source. Some have started contributing to open source full time. Others are gainfully employed and either working on them as part of their core work.

                                                                                                                              Whereas, the proprietary software that has users gets money automatically with it going up with product development and/or marketing.

                                                                                                                              dwarffortress, WinRAR, WinAmp, Sublime text editor all release free versions hoping for donations or as a free trial. It is not automatic for proprietary software unless that software is so completely necessary that they can just bill you to even have a peek at it. Hell, even Windows offers a free trial despite decades of a virtual stranglehold on the market for desktop OSs.

                                                                                                                              FOSS developers trying to catch up to that inherent advantage finding funding sources can itself seem like a 3rd job on top of their 2nd job of making the FOSS for free.

                                                                                                                              See above for why it’s not an automatic inherent advantage. Also, that presumes the development needs external funding rather than external contributors who are already getting paid. I’d much rather convince my employer to let me contribute to open source for my regular salary and have other projects to work on for if the open source one goes bust or implodes or hires a toxic developer who everyone hates or I run out of things to do on it or I need a break from the grind.

                                                                                                                              1. 3

                                                                                                                                By the way, here’s what they’re doing now, 3 years on. EDIT: I just realized that some of these are highlighting users on here! I’d love to hear what you have to say now!

                                                                                                                                […]

                                                                                                                                @shazow, working on blockchain tech with his own project, Vipnode. Appears to be working full time on open source via grants and partnerships?

                                                                                                                                Can confirm. Typically I do consulting work for part of the year to make up for the year’s expenses, then I do self-guided OSS stuff the rest of the year. Vipnode turned out to be an exception as it was a self-guided open source project that happened to resonate with a generous community that wanted to support my work financially. (And give or take some sales effort on my part.)

                                                                                                                                Overall, I stand by my original quote in the cited article:

                                                                                                                                Publishing and contributing to open source is going to continue happening regardless whether I’m getting paid for it or not, but it will be slow and unfocused. Which is fine, it’s how open source work has always worked. But it doesn’t need to be this way. — @shazow

                                                                                                                                1. 1

                                                                                                                                  Thanks for following up! Would you mind sharing some of how you did the conversion to working (mostly) full time on OSS stuff?

                                                                                                                                  edit: boy did that sentence get muddled in the middle. Fixed.

                                                                                                                                  1. 3

                                                                                                                                    Any specific questions?

                                                                                                                                    I have a yearly minimum earned income goal (as I’m generally self-employed). If I reach that goal, then I allow myself to switch to not-necessarily-paid OSS stuff. That income comes from a variety of sources (I have some SaaS projects like Briefmetrics, some ad income from high-traffic free projects like Tweepsect), but the majority comes from contracts with clients.

                                                                                                                                    This year, a big chunk came from an Ethereum Foundation grant and the partnership with Infura.

                                                                                                                                    I’ve considered doing a Patreon and funneling supporters through that, but I’m not convinced that the expected value would exceed the relative effort and anxiety that would come with it. Still mulling it over.

                                                                                                                                    When I do paid work, I certainly prefer open source work, bonus points if it’s things I’m interested in independently. I have some recurring clients who allow me to do this kind of work sometimes, which is great. Sometimes I’ll take less-desirable yet high-paying work to reach the minimum income goal quicker so I have more time to do better things.

                                                                                                                                    1. 1

                                                                                                                                      Awesome summary! That’s really exciting about the partnership and the grant!

                                                                                                                                      Any specific questions?

                                                                                                                                      SO many. I’ll try to keep it brief though.

                                                                                                                                      Where was the tipping point where you were like “You know what? I can work for myself.”

                                                                                                                                      How do you find paid work on projects? Do people reach out to you for help, or do you hunt for places to help? Something else?

                                                                                                                                      Have you found yourself to be more productive on projects in general now that you self direct?

                                                                                                                                      What are some things that employers could do to make life better for folks doing open source contributions?

                                                                                                                                      What’s a normal work-week like for you? What kind of hours do you keep?

                                                                                                                                      1. 3

                                                                                                                                        Where was the tipping point where you were like “You know what? I can work for myself.”

                                                                                                                                        I’ve been doing it on and off for a long time (since I was in my teens), so it wasn’t a super scary idea. It helps to be good with tracking your own finances. Figure out how much income you need to at least break even with expenses, and see if you can find contract work to cover it. Then dial that number up year over year so you build up savings.

                                                                                                                                        Hint: It’s much easier when your expenses are low. I suggest not living in SF, or even in the US if you can help it (where health insurance is expensive and risky). That said, I primarily work remotely with US customers (SF/NY).

                                                                                                                                        How do you find paid work on projects? Do people reach out to you for help, or do you hunt for places to help? Something else?

                                                                                                                                        Recurring customers that you have a good relationship with are best, but those take time to cultivate. Small/medium well-funded companies have worked best for me, especially if you know people there who have a good idea of the kinds of help they might need with. Bonus points if they rely on your OSS work.

                                                                                                                                        Have you found yourself to be more productive on projects in general now that you self direct?

                                                                                                                                        In some ways. I certainly do more of the kinds of things I think I should be doing, and less doing things that I think are a waste of time.

                                                                                                                                        It can be hard to stay motivated day to day, especially if you’re working solo it can get lonely. That’s generally true.

                                                                                                                                        It’s common to have self-doubt, but it’s easier to power through it when you’re being paid. If you’re just burning your own savings for your own idea and you’re having self-doubt, it can be very hard to get over that hump. It’s hard learning to trust yourself, but maybe it gets easier with time.

                                                                                                                                        What are some things that employers could do to make life better for folks doing open source contributions?

                                                                                                                                        Encourage employees to spend work-hours time contributing back to projects they use and rely on at work. At least a day or two per week

                                                                                                                                        An open source donation budget would also be nice, maybe as a team you can sit down once every couple of quarters and make a top 5-10 projects that the team wants to have an impact on, and do it (whether financially or through effort).

                                                                                                                                        What’s a normal work-week like for you? What kind of hours do you keep?

                                                                                                                                        When I draft contracting agreements, I tend to limit it to 3 full-time days/wk of commitment. I feel like I get 80-90% of a “40 hour workweek” productivity in 3 days, and it cuts down on a lot of other things. Clients aren’t keen on excessive meetings when the time available is constrained like this.

                                                                                                                                        Personally, I’ve found Mon-Wed works best for me, and brief written status updates on Tuesdays. I don’t charge by the hour, but I do “productive hours” tracking internally for my own analysis. Days with 6 “productive hours” (ie. actual time spent writing code and such) are considered good days. Some days aren’t good days, and that’s okay. If I’m having a particularly off day, I’ll sometimes write it off and try again another day (like today… I’ll probably end up working tomorrow instead).

                                                                                                                                        If I wrapped up my primary commitment for the week and I have days left over, I’ll switch over to other projects. Occasionally, due to the nature of contracting (it’s impossible to maintain an equilibrium of clients around your own schedule), I’ll have multiple concurrent clients, but I try to avoid that when possible.

                                                                                                                                        1. 1

                                                                                                                                          This feels like it could be an entire medium article or something on its own.

                                                                                                                                          It can be hard to stay motivated day to day, especially if you’re working solo it can get lonely. That’s generally true.

                                                                                                                                          We have a bunch of employees that are 100% remote work, and I’ve noticed that some will take advantage of video chat while others generally seem to just want to be left the hell alone, with little variation in their routines.

                                                                                                                                          I don’t charge by the hour, but I do “productive hours” tracking internally for my own analysis.

                                                                                                                                          Do you have a particular tool you use for this? I’ve been meaning to do the same thing at work, but have always been kind of lazy about it because it requires so much extra effort to track by hand. I have noticed that on a “bad” day I can generally tell how much distraction I’ve had by the number of times I’ve had to pause my music :)

                                                                                                                                          1. 1

                                                                                                                                            This feels like it could be an entire medium article or something on its own.

                                                                                                                                            What’s a good spicy title for it? :)

                                                                                                                                            Do you have a particular tool you use for this?

                                                                                                                                            Not really. Right now I just log it with Harvest which I also use for invoicing. My friend really likes Timing2 for macOS, but I’m on Linux these days. I’ve considered using something like Thyme but it does more than what I need.

                                                                                                                                            Really I should just write my own basic timer that lives in the tray and a quick start/stop shortcut.

                                                                                                                                            I have noticed that on a “bad” day I can generally tell how much distraction I’ve had by the number of times I’ve had to pause my music :)

                                                                                                                                            That is a good one!

                                                                                                                                            I often try to keep a policy to stop music anytime I’m not doing “work”, just to condition myself and avoid getting lost in distraction.

                                                                                                                                            1. 1

                                                                                                                                              What’s a good spicy title for it? :)

                                                                                                                                              Maybe:

                                                                                                                                              Abort to Orbit: How I went independent and what I do when I need more.

                                                                                                                                              The concept of Abort to Orbit is that you launch your ship and then if the crap hits the fan, you’ve got a still-relatively-good fallback option. More importantly, you look at possible failure modes and address them rather than letting them hold you back.

                                                                                                                                              I’ve considered using something like Thyme but it does more than what I need.

                                                                                                                                              Oooh, that looks very promising indeed.

                                                                                                                                              I often try to keep a policy to stop music anytime I’m not doing “work”, just to condition myself and avoid getting lost in distraction.

                                                                                                                                              I follow the rule of “if they have headphones on, leave them the hell alone.” Exceptions include the building being on fire or prod issues. I’m trying to encourage my colleagues to do the same. It’s… hit and miss.

                                                                                                                                2. 1

                                                                                                                                  Re success rate. Yes, non-FOSS succeeds in getting their developers paid at a higher rate despite failure rate for new companies being high. They actually charge for software. So, they win by default.

                                                                                                                                  Re $1 million. So, FOSS developers have to divide up a million while proprietary developers get a slice of tens of billions in recurring profit. Your example argues my point more than yours.

                                                                                                                                  Re working big companies instead. Many already work for them before doing the FOSS on the side. You’re in luck though since Ive surveyed thousands of people on this issue when working general public. Most gripe, shrug, or roll their eyes before saying “at east Im working” (low pay) or “but it pays well” (high pay). The percentage with terrible jobs can attempt to switch companies. So, they’re not a counter to my position but I decided to answer anyway.

                                                                                                                                  Re anecdotes. Good they’re still contributing and/or employed. Remember my model has them working one job in regular hours paid for their work. In most examples I see, many still do FOSS as extra thing they’re not paid for. And often for lower amounts than proprietary sector pulls in.

                                                                                                                                  Re trials. That’s a marketing technique to generate sales. Nothing in my post precudes loss leaders if necessary. The Prosper license, a candidate for shared source, allows a 90-day evauation for free.

                                                                                                                                  Re last stuff. My post was about people that would like to get paid for their contributions not working extra hours on them. There’s people like you and maybe those you mentioned that want something different. Ive even known people, been one, to turn down money to keep their intentions purely altruistic or just separate fun from business. My comments may not apply to you or them at least for selfish gain and/or employment.

                                                                                                                                  All that said, you still havent refuted biggest point that money dictates laws governing software freedom, FOSS-lovers are losing ground due to lobbying, the need a fortune to counter it, and current models paying a pittance guarantees we loose more freedom over time. I gave examples involving money being seized via patent trolling. If they want to get dirty, copyright law has criminal penalties, too. Current or future expansions might use it. Who knows what they’ll do in future but we have less if staying on same trajectory. Doing nothing in this case is still doing something (for opponents).

                                                                                                                                  1. 1

                                                                                                                                    Re success rate. Yes, non-FOSS succeeds in getting their developers paid at a higher rate despite failure rate for new companies being high. They actually charge for software. So, they win by default.

                                                                                                                                    Do you have any stats to back this statement?

                                                                                                                                    Re $1 million. So, FOSS developers have to divide up a million while proprietary developers get a slice of tens of billions in recurring profit. Your example argues my point more than yours.

                                                                                                                                    If FOSS developers had to divide up $1 million amongst all the projects, it might argue your point. However, since as I pointed out in my other examples of companies that sponsor particular projects or employe developers directly to work on FOSS projects and companies based on FOSS Projects, this represents an additional $1 million to try to fill in the edges rather than core development. It’s disingenuous to represent that $1 million as the sole source of money for FOSS developers when Red Hat alone has $4bn in assets.

                                                                                                                                    Re working big companies instead. Many already work for them before doing the FOSS on the side. You’re in luck though since Ive surveyed thousands of people on this issue when working general public. Most gripe, shrug, or roll their eyes before saying “at east Im working” (low pay) or “but it pays well” (high pay). The percentage with terrible jobs can attempt to switch companies. So, they’re not a counter to my position but I decided to answer anyway.

                                                                                                                                    Can we see those survey results?

                                                                                                                                    Re anecdotes. Good they’re still contributing and/or employed. Remember my model has them working one job in regular hours paid for their work. In most examples I see, many still do FOSS as extra thing they’re not paid for. And often for lower amounts than proprietary sector pulls in.

                                                                                                                                    You said the rule was that they’re not funded, and cited a series of anecdotes. OK, pop quiz: how many of the anecdotes you cited resulted in people contributing to FOSS as their full time job rather than as an extra? Does writing books about FOSS count?

                                                                                                                                    Re trials. That’s a marketing technique to generate sales. Nothing in my post precudes loss leaders if necessary. The Prosper license, a candidate for shared source, allows a 90-day evauation for free.

                                                                                                                                    You said they get money automatically, which is demonstrably not true if they do a 90-day evaluation that doesn’t result in purchase. While it doesn’t preclude loss-leaders, it does refute your statement that they automatically get money.

                                                                                                                                    Re last stuff. My post was about people that would like to get paid for their contributions not working extra hours on them. There’s people like you and maybe those you mentioned that want something different. Ive even known people, been one, to turn down money to keep their intentions purely altruistic or just separate fun from business. My comments may not apply to you or them at least for selfish gain and/or employment.

                                                                                                                                    Fair enough, but your post claimed that “most” don’t get funded without any backing evidence, proprietary software “automatically” gets money without any backing evidence, and then made assertions about FOSS developers (without bothering to qualify it like “some FOSS developers” or even “most FOSS developers”) trying to “catch up” might have an experience like working a 2nd or 3rd job. You started with broad generalizations and suddenly want to add disclaimers?

                                                                                                                                    All that said, you still havent refuted biggest point that money dictates laws governing software freedom, FOSS-lovers are losing ground due to lobbying, the need a fortune to counter it, and current models paying a pittance guarantees we loose more freedom over time. I gave examples involving money being seized via patent trolling. If they want to get dirty, copyright law has criminal penalties, too. Current or future expansions might use it. Who knows what they’ll do in future but we have less if staying on same trajectory. Doing nothing in this case is still doing something (for opponents).

                                                                                                                                    The comment I responded to, in it’s entirety, is the following:

                                                                                                                                    You’re giving the exceptions to the rule, not the rule. The rule is most aren’t funded. The responses were really negative, too, with lots of stress and burnout. Whereas, the proprietary software that has users gets money automatically with it going up with product development and/or marketing. FOSS developers trying to catch up to that inherent advantage finding funding sources can itself seem like a 3rd job on top of their 2nd job of making the FOSS for free.

                                                                                                                                    Please show me where you made that biggest point or gave any of the examples you just claimed in the comment I replied to.

                                                                                                                              2. 3

                                                                                                                                Developers must feed themselves, but they can totally do that by working at a company that doesn’t revolve around the software they write as its sole product.

                                                                                                                                This stance ensures that FLOSS contributors will only ever be people who have abundant energy and free time outside of their work week. That excludes a bunch of, e.g., parents, people with multiple jobs, and people with medical issues.

                                                                                                                                1. 1

                                                                                                                                  My point was that they can be employed by a company to do that contribution as a function of their job even if the company itself isn’t focused on that particular project. Redis exists because of this model. Ditto for Kafka. If you work a full time job doing open source for a company that uses that project and have a second job doing other stuff, how would that interfere with the open source contribution?

                                                                                                                                  1. 2

                                                                                                                                    Then that’s a chicken/egg issue. How does one get a job doing open source contribution (of which there are very, very few) without having open source contributions on their resume?

                                                                                                                                    If you’re saying simply that companies should all contribute to open source, remember that running an open source project is significantly more work than simply writing software. That’s a large extra investment over what they’re doing now, and doesn’t have a clear ROI.

                                                                                                                                2. 3

                                                                                                                                  I think the wording of the questions in the parent post is misleading, though probably not intentionally so. If the question was really, “How can we develop open source software sustainably?”, then as you have described, one answer is simply, “the same way we have for the last few decades”. However, I suspect the question they really want to ask is something along the lines of, “How can we fit open source development into a for-profit business in a capitalist economy?”. I do not think this is a bad question to ask, as the motivation for asking it is almost certainly a desire to promote and improve open source software full time without starving, but it is not the same as asking how we can develop open source software sustainably.

                                                                                                                                  Once the questions are rephrased in this way, it’s a lot less alarming: The issue is no longer dressed up as a desperate attempt to save free/open source software, it’s just some people looking for business opportunities.

                                                                                                                                  If you can run a successful business centred around free software development, that’s great. If you can’t, then FLOSS software development will continue regardless. I personally do not believe it is worth the risk of watering down the ideals of software freedom by implying, even if only by the names, that a free software license + commons clause is somehow still free.

                                                                                                                                  As far as the “Commons clause” is concerned, I see two possibilities

                                                                                                                                  1. It’s just ‘openwashing’. I.e. pretending to promote software freedom without actually making free software.
                                                                                                                                  2. It’s genuinely trying to find some middle ground where software that would otherwise be closed source can be “slightly freer” without radically changing the owner’s business model.

                                                                                                                                  Personally, I am opposed to 1. and have no interest in 2., but maybe option 2. might benefit some people in some way.

                                                                                                                                  1. 3

                                                                                                                                    This is essentially the “real musicians have day jobs” argument, and I find it very weak. There are a number of things wrong with it. The “day job” distracts from the work of open source maintenance and can make it much harder to do deep work. Only the top of the organization can really get jobs of this nature, it can’t fund helpers. It perpetuates the traditional problems in open source of making it easier to concentrate on technology as opposed to product management. The funding organization has too much control over the direction of the project, as opposed to the users who derive the most value from it.

                                                                                                                                    But yes, in the current landscape, it’s (sadly) one of the more viable approaches.

                                                                                                                                    1. 1

                                                                                                                                      This is essentially the “real musicians have day jobs” argument

                                                                                                                                      I disagree. The “real musicians have day jobs” argument is that because they can’t get a job doing the music they love, they do something else, right? Even if it’s still in music, they don’t do their main wish.

                                                                                                                                      My argument is that not all projects require a company dedicated to that project to succeed. In many cases success is found in projects that have a variety of contributors. Some of them are paid to work full time on the project by a company that - while not primarily focused on the software - still want or need to invest in its development. Examples of this are AMD and Intel engineers working on the Linux Kernel, or how Kafka and Redis were initially developed before the contributors either formed or joined a company dedicated to the project.

                                                                                                                                      Those companies provided incubation for projects that weren’t their core business model, but were useful nonetheless. Paying people to work full time on something you use - but can’t or don’t want to sell - is something many companies do already, but they don’t share the code. By open sourcing the project, they can get contributions from other companies with full time engineers that would use their code, or attract new talent from folks who want to work on open source but can’t because their current employer won’t allow it.

                                                                                                                                      1. 3

                                                                                                                                        Then we agree to disagree. Again to use my own example, I think it’s likely that working on xi-editor fulltime would likely be the largest value I could create right now. I had a sweet gig very much like you describe, working for a big company where they let me put some of my time into it. But the goals of that project weren’t precisely aligned, and I found my concentration pretty fragmented.

                                                                                                                                        If I could find a sustainable way to work on xi-editor fulltime, I probably would. My decision to work on the synthesizer game is partly because it’s fun and exciting, and partly because, if it flies, it’s a nice revenue stream that will let me work sustainably.

                                                                                                                                        This is my experience, I don’t speak for anyone else.

                                                                                                                                        1. 1

                                                                                                                                          Your example is a good one, and I totally get that disagreement. Your point is well taken. Additionally, the idea that the goals weren’t aligned is a pitfall that I imagine has lead to many a fork over the years in various projects :)

                                                                                                                                          If you do find a way to work on it full-time and still want to, I absolutely want to revisit!

                                                                                                                                        2. 1

                                                                                                                                          Examples of this are AMD and Intel engineers working on the Linux Kernel, or how Kafka and Redis were initially developed before the contributors either formed or joined a company dedicated to the project.

                                                                                                                                          The examples you keep giving are rare. Most FOSS doesn’t get funding or dedicated employees by big companies. Most FOSS with lots of users doesn’t get AMD/Intel-type investments. If we’re talking general case, it’s more accurate to assume what happens in the general case now will happen in general case for other people unless incentives and environment driving it changes. They haven’t changed. If anything, companies appear to be using FOSS in SaaS dodging the need to contribute many changes back more often than before.

                                                                                                                                          And your only reply from people you quoted was a person that doing FOSS at a loss using revenue from other work. Like a 2nd or extra job worked for free while proprietary vendors of similar libraries get paid. Just like I said most would be doing if it’s FOSS.

                                                                                                                                          1. 1

                                                                                                                                            The examples you keep giving are rare. Most FOSS doesn’t get funding or dedicated employees by big companies. Most FOSS with lots of users doesn’t get AMD/Intel-type investments. If we’re talking general case, it’s more accurate to assume what happens in the general case now will happen in general case for other people unless incentives and environment driving it changes. They haven’t changed. If anything, companies appear to be using FOSS in SaaS dodging the need to contribute many changes back more often than before.

                                                                                                                                            The question is are they rarer than closed-source software getting that kind of investment? You haven’t addressed that statement beyond your assertion that it is fact despite an utter lack of backing evidence.

                                                                                                                                            And your only reply from people you quoted was a person that doing FOSS at a loss using revenue from other work. Like a 2nd or extra job worked for free while proprietary vendors of similar libraries get paid. Just like I said most would be doing if it’s FOSS.

                                                                                                                                            People you cited, I quoted. I extracted their quotes from the thing that you specifically cited as an example of work not getting funded, from an article that had at the core of its premise “FOSS doesn’t get funded.” I specifically cited the examples you gave claiming they contradicted my point.

                                                                                                                                            Even then, in the territory of something you cited as directly opposing my view, the response here was not a slam dunk for you point. On the contrary, you claim that the person is doing FOSS at a loss using revenue from other work despite them clearly stating that was not the case this year where a substantial chunk of their income came from exactly the funding you say is rare.

                                                                                                                                            You can still hide behind the fact that it’s an exception if you want, but it doesn’t prove that it’s any different in the proprietary world. You keep asserting it’s true without the backing. Show me the stats to compare the two and maybe we can draw a conclusion.

                                                                                                                                    2. 2

                                                                                                                                      Hi liftM, thanks for taking the time to write up your thoughts in such detail.

                                                                                                                                      I agree with the premise of this article, which is that projects licensed under the Commons Clause are not open source, and to call them open source is misleading.

                                                                                                                                      You’re right. This article is talking about two things:

                                                                                                                                      • Using the Commons Clause and calling that software open source is dishonest and unethical
                                                                                                                                      • The Commons Clause is bad

                                                                                                                                      The reason these aren’t separate articles is:

                                                                                                                                      • The two are related, because I think that the design of the Commons Clause actively encourages its users to lie
                                                                                                                                      • I’m sick of writing articles about the Commons Clause.

                                                                                                                                      Let me explain more about why I dislike the Commons Clause before I answer your questions directly.

                                                                                                                                      First, I don’t think that FOSS is the end-all-be-all of software licensing. Like I said in the article, anyone is welcome to license their software any way they choose. I’m also a fan of source-available models as an alternative to closed-source software, I think it’s strictly better than closed-source. However, the Commons Clause is not a good way to license source-available software.

                                                                                                                                      The Commons Clause should have been a new source-available license entirely. As an addendum to FOSS licenses, it’s totally bunk. The entire point of FOSS is to enshrine basic protections for the authors, users, and contributors. By removing these basic protections, the original license effectively becomes meaningless. It’s like a Jenga tower, with the removal of some freedoms it has a cascading effect which removes many of the others. Restricting commercial use has many grave side-effects: reusing the code elsewhere, forking the project, providing support after the maintainers abandon it, etc - all of this is now difficult-to-impossible, or at least egregiously under-specified by the Commons Clause.

                                                                                                                                      Additionally, I take offense with the Commons Clause’s stated goal of turning previously open source projects into source-available projects. Though source-available is strictly better than closed source, it’s strictly worse than open source, and the change is a net loss for the commons - which is why I take offense with the name as well. It also fails to adequately explain the responsibilities maintainers hold to their contributors - without a CLA in place which assigns copyright to the maintainers, it’s in fact illegal to switch to the Commons Clause. Or at the least, the Commons Clause can only apply to new code, and the old license has to be kept in place and in many cases (notably Apache 2.0) the differently-licensed changes must be explicitly disclosed.

                                                                                                                                      Now, to answer your questions directly…

                                                                                                                                      Commons Clause makes it possible to publish source code that would have originally been closed source.

                                                                                                                                      No, the stated goal of the Commons Clause is to transition code which was already open source to source-available. The code wouldn’t have originally been closed source because it was originally open source.

                                                                                                                                      The Commons Clause lets them still make money while making the program and source code available for as many users as possible.

                                                                                                                                      I don’t think it does. Without the rights afforded to users by the Apache 2.0 license, why would users have the good faith desire to use your software? Additionally, with so many grey areas, such an amateurish license, and only one option for support, any company who uses this kind of software is nuts.

                                                                                                                                      If you actually talk to many of the teams working on open source infrastructure

                                                                                                                                      Like me

                                                                                                                                      A big contributor to this is the fact that service providers like AWS run hosted versions of open source software and capture disproportionately more value than they generate for the community.

                                                                                                                                      So make a better hosted version than AWS has. Boo-hoo.

                                                                                                                                      Permissive licenses like Apache allow this to happen. Highly restrictive licenses like AGPL are too broad and scare away proprietary users who would not be hurting the team’s sustainability. In practice, open source teams do not have an option for saying “I would like to be as permissive as possible, but still make money so I can fund sustainable development”.

                                                                                                                                      Dual-licensing has allows this to work for ages. Use AGPL with a paid BSD option. Also note that many organizations have been successful with paid support, or with something like Patreon. You can also do sponsored blog posts, put their logos at your conference… get creative with it. You don’t need to capture all of the value of your software. Let AWS have some of it. By making it open source, it’s no longer yours. If you can make a living income on your software, demanding more is just greed. This is part of the commitment you make to the public by making your software open source. Companies like AWS have a vested interest in making sure you have a sustainable income - it’s your job to point this out to them, not to pull the rug out from beneath them.

                                                                                                                                      “Free software” and “open source” as concepts are more nuanced than the GNU and OSI definitions.

                                                                                                                                      No, they’re not. There’s no point in arguing this because I’m not going to concede it. Free software is defined by the GNU free software definition. Open source is defined by the OSI open source definition. If you do something which doesn’t fit in those niches, call it something else.

                                                                                                                                      I would love to see GNU and the OSI step up here with better education and clearer definitions around this.

                                                                                                                                      They already have. You just don’t like their definitions. Everyone else does, and in language the consensus is correct. If you misuse these terms you are a liar.

                                                                                                                                      By insisting on their definitions of “free software” and “open source” and failing to recognise this nuance, GNU and the OSI are missing the forest for the trees and will ultimately push more projects towards closed source models.

                                                                                                                                      Maybe they are. But the Commons Clause is doing a piss-poor job in their stead.

                                                                                                                                      1. 0

                                                                                                                                        I’ve mentioned this before. Most of this code would have originally been closed source so the authors can make money off of it. The Commons Clause lets them still make money while making the program and source code available for as many users as possible.

                                                                                                                                        No it wouldn’t. You’re relicensing free software as ‘commons clause’ proprietary software.

                                                                                                                                        Using an open core model with existing OSI-approved licenses is unpleasant.

                                                                                                                                        Nobody is saying you have to use OSI-approved licenses, and nobody is saying you aren’t allowed to license things as source-available. What you aren’t allowed to do is to call those source-available models ‘open source’. That’s misleading.

                                                                                                                                        “Free software” and “open source” as concepts are more nuanced than the GNU and OSI definitions.

                                                                                                                                        No they aren’t. Literally it’s as simple as ‘no they aren’t’. They just aren’t more nuanced than that. Those definitions are what those mean to literally the entire software industry and all software hobbyists. They’re universally agreed upon terms with precise technical definitions. Muddying the waters then claiming that the waters are muddy is very poor behaviour.

                                                                                                                                        ‘Software I don’t have to pay for’ is called freeware. ‘Software where I can view the source code’ is called ‘source available software’. Laymen are completely irrelevant. The terms exist, they’ve existed for decades.

                                                                                                                                        Often times, Commons Clause projects are provided at no cost.

                                                                                                                                        Commons Clause is a proprietary software license. It does not give users the four freedoms, so it is a non-free software license. What it costs has nothing to do with whether it’s free. You know this, I know this, everyone knows this. This was all sorted out long ago.

                                                                                                                                        In practice, there are gradients of freedom. To say that software that is not strictly GNU Free Software is not free or projects that are not strictly OSI Open Source are not open source is misleading to the everyday user.

                                                                                                                                        No, you are being misleading. And you know it. That ‘open source’ means ‘open source’ and ‘free’ means ‘free’ is long established. Very long established. The words work, they’re good.

                                                                                                                                        By winning this battle, they are losing the meta-game.

                                                                                                                                        What an awful article. Someone just learnt what an analogy was, I guess, and decided to practice them. Unfortunately, it makes the article impossible to skim-read.

                                                                                                                                        At the end of the day, what matters is not whether there are more OSI Open Source projects, but how much value we provide to the community. When open source advocates say that Commons Clause projects are “not open source” (in the OSI sense) and discourage its use, they are correct but harmful.

                                                                                                                                        You acknowledge that they are correct, but before you’re saying it’s misleading. Sorry, but that’s a contradiction. And what is harmful is misleading people, which is what you are doing.

                                                                                                                                        By taking away this middle ground, they push projects to be either free-as-in-freedom or proprietary.

                                                                                                                                        Proprietary software is, by definition, software that is not free. So pushing projects to either be free or not to be free, to either not be proprietary or be proprietary, is doing nothing. Every project is either proprietary or not, just like every project either includes Java or doesn’t, and every project either is lead by one person or isn’t lead by one person.

                                                                                                                                        Given the pains of sustainable infrastructure development using OSI-approved licenses, I fear that this will ultimately drive projects that would rather be licensed under the Commons Clause (i.e. as permissive as possible) into becoming closed source and proprietary.

                                                                                                                                        There are no pains. Free software has existed for decades, and will continue to exist for decades to come. It works fine as a model, as it is. Sell support. Sell proprietary licenses. Or don’t sell anything, and get a job doing something else. The world doesn’t owe you a paycheque.

                                                                                                                                        How can we best address the need for sustainable open source development?

                                                                                                                                        For a start, you need to stop misleading people and muddying the waters. You need to come up with your own terminology that is not misleading, or adopt the existing terminology (‘source available’). Until you have done so, you are actively harming the software industry and software community.

                                                                                                                                        @SirCmpwn, I would love to hear your thoughts on a better way to enable sustainable development for open source infrastructure.

                                                                                                                                        I’m not SirCmpwn, but my thoughts are thus: it’s fine as it is.

                                                                                                                                      1. 8

                                                                                                                                        I’ve thought about doing a transparency report like this for myself. It’d be great to see a trend in truly open salaries. the taboo against knowing other peoples’ incomes keeps people from knowing what they’re truly worth and what to ask for.

                                                                                                                                        1. 4

                                                                                                                                          My current employer (Cigna) gives an annual packet to employees that lists out

                                                                                                                                          • base pay
                                                                                                                                          • bonus (cash and/or stock)
                                                                                                                                          • how much I spent on Medical/Dental/Life Insurance/Social Security, contributed to 401k
                                                                                                                                          • how much they spent on Medical/Dental/Life Insurance/Social Security, contributed to 401k
                                                                                                                                          • Retirement plan projections

                                                                                                                                          Just an awesome amount of detail.

                                                                                                                                          1. 2

                                                                                                                                            It’d be great to see a trend in truly open salaries

                                                                                                                                            True. What would also be interesting (and maybe connected to what you wrote) to see is just transitions that others have made. A common question I see coming up every now and then is “where is my career going”.

                                                                                                                                          1. 8

                                                                                                                                            First of all, JIRA doesn’t lie or tell the truth. It just is. Points don’t tell you value, they tell you an estimate of complexity. Using points as a relative measure between engineers doesn’t lead to good things, which it sounds like you’re already seeing. I’ve got a bunch of questions like “are you the one estimating the points, or is your team” and stuff like that, but I’ll skip it for now.

                                                                                                                                            The thing that made me move fastest was creating giant blocks of “CODE” on my calendar. I don’t mean meetings though they occupy the same space. There’s just a huge, multi-hour chunk of time where I’m by myself writing code.

                                                                                                                                            Generally speaking this is really hard to achieve at my current job. Now that I’m a team lead, everyfriggenbody wants to have a “quick” 30 minute or 1 hour meeting, but I can ensure my team members are - whenever possible - spending like 4 or 5 hours a day writing code uninterrupted by anyone. If they need to reset their brains by grabbing a coffee or taking a break to chat around the water cooler for half an hour, no biggie, but if they’re in the zone? They need to be left alone.

                                                                                                                                            I would also look at what the other engineers are doing. Look at their commit history: see the changes they made for their story. How did it evolve? What did they have to do to get there?