1. 2

    For someone who knows absolutely nothing about gaming, World of Warcraft, or this thing in particular… what is this? Can someone explain?

    1. 4

      World of Warcraft is a massively popular 16 years old game, and maybe one of the most popular games ever. Since its launch in 2004 it’s been changing and evolving into what it is today, which is something completely different to what it was in its inception. Given that a large number of people would like to play the Vanilla WoW, that is, the first version of the game before any expansion was released, Blizzard has decided to roll out a “classic” version with all the content prior to the first expansion. This expansion was released in late 2006, and since there have been many more. Before the company’s official announcement that they would be releasing this classic version, many requests were made for it by fans but they were turned down by Blizzard citing several arguments such as: “the vanilla wow doesn’t exist anymore since the codebase has continued to evolve” and “Vanilla wow would be looking back and we want to move forward”. However, a vanilla WoW paid server named Nostalrius, maintained by fans for fans gained such popularity that during its peak it had more than 100k players on it. Sadly, it had to be closed in 2016 after Blizzard sent them a cease and desist order. It would seem that from the whole episode the company realized that there was actually a market for a classic WoW and they eventually changed their mind.

      1. 6

        World of Warcraft is a popular commercial subscription-based cloud-hosted enterprise legacy app featuring a low grade CRM system married to a highly complex logistics system in a standard 3 tier architecture deployed in a fully sharded configuration. Like many legacy systems, it has undergone significant schema mutation over the course of its deployed lifecycle in response to customer demand. Notably, it started out with a mostly-denormalized schema and, with the advent of improved database performance, a better understanding of the customer base’s requirement envelope, and feature creep, it has moved towards Codd’s 3rd normal form.

        As with many legacy apps, some customers’ business needs mandate that they stay pinned to older versions of the app. Interestingly, customers have here asked that an earlier version of a cloud-provided app be made available 12 years later, which poses some interesting issues having to do with incompatible schema migration. Given that the app is also written in a mix of obscure legacy languages, the traditional approach of simply migrating the queries and schema together is technically formidable.

        One established practice here is to create a proxy facade layer. In this pattern, you keep the interface to the legacy client application exactly the way it is, but create an intermediate layer which translates the db calls to and from the normalized format. This incurs round trip cost and bugs are common in edge cases, especially in frequently-undocumented minor shifts in API and field meaning, and especially given the expected low coverage of unit and functional tests in a 12 year old codebase. This technique is frequently overused owing to underestimation of the cost and time complexity of ferreting out the edge cases.

        The other established practice is to perform a one-time wholesale schema migration, normally done either through an ETL toolchain like Informatica, or more commonly through hand-written scripts. This approach frequently takes more developer time than the facade approach, owing to needing to “get it right” essentially all-at-once, and having a very long development loop.

        Whatever the technique used, schema migration programs of this scope need a crisp definition of what success looks like that’s clearly understood by all the involved developers, project managers, data specialists, and product leaders. Too frequently, these types of programs fail owing to incomplete specification and lack of clearly defined ownership boundaries and deliverable dependencies. The industry sector in which this legacy app resides is at greater than average risk for failure of high-scope projects due to fundamental and persistent organizational immaturity and improperly managed program scopes.

        Also, they better not nerf fear, because rogues were super OP in vanilla and getting the full 40 down the chain to rag with portals was tough enough.

        1. 2

          As someone who levelled through Stranglethorn Vale via painstaking underwater+Unending Breath grinds in order to escape OP rogue stunlock love, I say to you: Bravo Sir!. Also, f**k the debuf cap.

      1. 1

        There are people who concluded from the Vasa story that all incremental improvement is a bad strategy. However, if the Vasa had been sent to sea as originally designed, it could not have served its purpose. Being under-gunned, someone would have sent it to the bottom full of holes. Being somewhat ordinary, it would have failed in its representative (image) role. Recent research has shown that a relatively modest increase of the Vasa’s length and breadth (claimed technically feasible) would have made it stable, so my reading of the Vasa story is: Work hard on a solid foundation, learn from experience, and don’t scrimp on the testing.

        At risk of pushing the nautical metaphor a bit too far, it looks like Bjarne may have snatched defeat from the jaws of victory with this analysis: while presuming that perhaps this time the Vasa of C++ will float, the application world is eating its lunch with PT boats in the form of Javascript.

        Small nimble ugly languages trump large ones for most purposes.

        1. 1

          and this is why all kernel development is today done in Lua.

        1. 8

          For people who aren’t quite as ambitious about heat pipes, there are several nice little fanless kits from companies like Zotac that will give you a machine that’s passively cooled and only needs some RAM and an SSD.

          They’re basically the 80% lowers of fanless computing.

          1. 2

            Hi, a Zotac user here. CPU is a bit slower than I expected, but overall I’m very happy with my setup. Zotac CI527 is cheap, well built, and silent!

            1. 2

              It seems like the best Zotac fanless PC is the ZBOX-CI549NANO-P which uses an i5-7300u. The author of the post installed an AMD Ryzen 5 1600.

              2 cores/4 threads vs 6 cores/12 threads.

              1. 1

                Thanks for the link! A few thoughts:

                Wow, Zotac is really bad at selling silent computers. They have a ton of models and I don’t see a way to see only passively cooled models.

                The silent PC crowd are all about x86 at the moment. I wonder how ARM fares here. Are all end user ARM machines like Raspberry Pi? (Its CPU is too slow and it has bad IO connectivity.)

                1. 2
                  1. 2

                    Ha! The displays are a tad small for desktop computing though. 🙂

              1. 7

                I jumped on the K8s train moderately early, and have since jumped right back off owing to the rapidly accelerating unnecessary extra complexity.

                I’m sympathetic to the idea that enterprise requires a sometimes bewildering array of configuration options, and that the usual array of systems-screwer-uppers (e.g., Red Hat, IBM) were naturally going to show up to the party to try to increase consultant billing time, but man did that thing get messy and confused in a hurry. It almost makes you sympathize with the go development philosophy.

                1. 3

                  It feels like the K8s train replaced the OpenStack train.

                  1. 2

                    Now consider that there are organization that deploy OpenStack on a hypervisor, then kubernetes on that openstack :)

                  2. 2

                    LOL I couldn’t agree more. “systems-screwer-uppers” I hadn’t heard that before. beautiful turn of phrase!

                  1. 6

                    linux on the desktop is 45% stockholm syndrome, 15% wishful thinking, 15% undergrad code shambles, 15% cargo cult microsoft aping, and 10% cynical corporate complexity to sell support contracts.

                    1. 6

                      What’s your preferred alternative? The walled, proprietary gardens of Apple or Microsoft? OpenBSD?

                      It’s a serious question, Debian Stable as a desktop OS is working reasonably well for me. I wan’t a unix-like system - No Windows - which offers broad choices of hardware - no OS X - and it should be free software - one of them. I’d switch to OpenBSD for most of my work, but I need stuff like docker for work and want resonable gaming support at home. I could switch between different OSes for different tasks, but why bother? Debian truly is “the universal operating system” for me, even with all it’s faults.

                      1. 2

                        FWIW, I use FreeBSD on my Laptop. I know it is not ideal but I choose to do it and work through the pain because I can and because I think it’s good to support options.

                        1. 1

                          What is the preferred DE on *BSDs? GNOME?

                          1. 2

                            I just use i3. TrueOS is pushing for Lumina. Gnome is basically Linux only at this point with all of its systemd coupling, from what I understand.

                            1. 3

                              OpenBSD has good Gnome3 support, see here, although note that the instructions mentioned are out of date, it’s best to follow the readme that is installed when you pkg_add gnome.

                              1. 2

                                “systemd coupling” is mostly logind. It’s only really necessary for starting gnome-shell as a Wayland compositor. Someone should try either reimplementing logind for *BSD (there were such projects but I don’t think anyone got it completely working) or adding support for something like my little loginw thing to gnome-shell :) same for kwin_wayland.

                                I actually use Weston right now, and going to write my own libweston-based compositor eventually… (loginw was created for that)

                                For X11, both gnome-3.26 and plasma5 should work.

                                1. 1

                                  Do you write your own scripts for stuff like volume/backlight control, locking etc? Having used I3 for over a year, this was the least enjoyable part for me because sometimes stuff would break/change/rename and I’d have to fiddle with my scripts.

                                  1. 1

                                    Yes I’ve been writing my own scripts. I haven’t had any issues with it. But like I said, I’m explicitly deciding to add some pain in my life to support something I think is bigger, so it’s not for everyone. Lumina, though, is a full DE AFAIK so that should handle the things you’ve brought up.

                            2. 1

                              Huh. Because my Linux desktop is peerlessly stable, bears no resemblance to anything Microsoft has released in the past thirty years, and is community developed and supported. I in fact find that the commercial desktop environments are unstable, unusable buggy garbage, and I’ve had the misfortune to have to use both of them fairly significantly.

                              Don’t confuse “Linux on the desktop” with “GNOME on the desktop” (or, for that matter, “intentionally using unstable software on the desktop”).

                            1. 2

                              https://blogs.msdn.microsoft.com/philipsu/2006/06/14/broken-windows-theory/

                              Windows code is too complicated. It’s not the components themselves, it’s their interdependencies. An architectural diagram of Windows would suggest there are more than 50 dependency layers (never mind that there also exist circular dependencies). After working in Windows for five years, you understand only, say, two of them. Add to this the fact that building Windows on a dual-proc dev box takes nearly 24 hours, and you’ll be slow enough to drive Miss Daisy.

                              I haven’t been around in the industry too long, i was in school when this blog entry was posted. But I’ve seen a few projects struggle and fail because of bad architecture and increasing technical debt. The OPs article definitely reflects the struggle between new features, legacy support, and paying down the technical debt (improving security, etc.).

                              1. 2

                                The microservices that are all the rage these days adds a whole new layer of challenge to understanding dependencies. While monoliths have their own challenges, at least all of the information is there to understand what is connected. I’m still not sure if this has been adequately solved.

                                1. 2

                                  Arguably microservices can simplify this dependency tree tremendously. In the world to date, it has been essentially impossible to compile many differently versioned libraries together into one monolithic application, which is what generally happens when you have a large number of teams doing separate development.

                                  With microservices, again arguably, encapsulation happens at the whole-service layer, so each team is free to develop using whatever versions they like, and just provide HTTP (or whatever) as their high level API.

                                  Where this tends to break down in my experience is (a) where true shared dependencies exist, which can happen if you either were bad at data modeling to begin with or if your needs organically grew differently than your original design, and (b) operationally, in a world of incredibly broken and insecure software, processors, etc., resulting from C (and now JS) and the shared memory model, where it is no longer possible to understand what in the opaque blobs need patching.

                                  1. 1

                                    C obviously has memory bugs but I’m curious what insecurity you see stemming from JS. Is it the automatic type casting? (I write JavaScript every day and think a good portion of the new parts of the language are good, but I will fully admit it spent its formative years on crack.)

                                    1. 1

                                      I don’t see how adding more dependencies simplifies anything, that can only make it more complicated. It may be convenient, but it’s not simpler. And in order to have that architecture one needs to have network protocols and serialization going on which has a performance and cognitive cost. There certainly are reasons to have a microservice architecture but I have a hard time seeing simplification as one of them.

                                    2. 1

                                      Microservices exist mostly to facilitate development by many teams on a large system. They are one of the best examples of Conway’s Law.

                                      You are correct that they add complexity, and they tend to be adopted regardless of if they solve a real problem.

                                  1. -2

                                    It is, after all, a truth universally acknowledged, that a program with good use of data types, will be free from many common bugs.

                                    I’m afraid it is only so for the value of “universally” meaning “other fans of type safety”. And that’s a rather constrained subset.

                                    1. 2

                                      A language being free from a many common bugs does indeed change the set of common bugs for that language. But that doesn’t mean that it is indeed free from many common bugs of the languages without those safety features. You absolutely do gain a certain amount of safety the stronger your type system is and that does provide a fair amount of value that shouldn’t be dismissed just because there are still possible bugs. Type systems in many cases manage to push the remaining bugs into the “spec”. Which has the benefit of allowing you to fix the bug by fixing the spec and then having a compiler tell that you have indeed actually fixed said bug.

                                      For developers who can leverage this power it’s really useful and increases productivity. For those who can’t yet leverage this power it just feels like the language is slowing you down.

                                      1. 0

                                        I’m not trying to discuss the issue itself, I’m pointing out that that “truth” is not universally accepted, not even close.

                                        Talking about the issue, one of the assumption by type safety advocates I have qualms with is the word “many” here:

                                        A language being free from a many common bugs does indeed change the set of common bugs

                                        Another is this implied assumption that any gain in safety is good, without considering the disadvantages:

                                        You absolutely do gain a certain amount of safety the stronger your type system is and that does provide a fair amount of value that shouldn’t be dismissed just because there are still possible bugs.

                                        This is trivialization of the opposing view. Strong type safety system may be dismissed not because “there are still possible bugs” but because on balance they remove too few for too much effort. Simple as that.

                                        1. 1

                                          you’re shifting the goalposts a little. Sure, maybe the balance of safety versus effort is not worth it for you. But that doesn’t mean that there isn’t a much smaller set of bugs with type safety than without, all else being equal.

                                    1. 3

                                      How running containers reconcile with components that rely on “owning” entire physical machine, like Postgres or Erlang VM? Say with Erlang I can routinely run with half terabyte RAM and 10G dedicated network and serve 100s of thousands users per node. Can I do this with K8s?

                                      1. 2

                                        I wouldn’t say PostgreSQL relies on “owning” an entire machine, but if you want that, you can create node pools with taints, and then setup your PostgreSQL pod such that it can tolerate said taints. It will be the only pod allowed to be scheduled on that node. (I suspect you might still have some Kubernetes infrastructure running on that node, so I doubt you can literally remove everything, but you can certainly manage the allocation of pods to nodes in a fine grained way.)

                                        1. 1

                                          Can K8s help with replication and failover? Say Amazon RDS maintains DNS record to be used in clients and when master failure is detected it promotes slave and adjusts that record.

                                          1. 3

                                            think of k8s as ‘erlang for the datacenter, thrown roughly together by enterprises and people who like C’ and you’ll get pretty close.

                                            1. 1

                                              I don’t know. I’m not a k8s expert. I just know the basics. My guess is that something like that is possible. Disclaimer: that’s probably my answer for every question you might ask. K8s is very large and very complicated. I don’t even know enough to say whether it is mostly incidental or necessary complexity.

                                        1. [Comment removed by author]

                                          1. 20

                                            Yeah you can be direct without being a dick. “I won’t merge something that breaks the kernel, please find some other way.” would have worked just fine.

                                            1. 18

                                              And in fact, that’s how it works most of the time.

                                              Linus’ reputation as an asshole is due, in part, to selection bias, and the high profile of Linux. Thousands and thousands of merges go into the kernel all the time without a problem, and without Linus going off on a rant.

                                              I don’t work on the kernel, but my observation has been that the big blow ups seem to only come after people repeatedly break the rules. I won’t say Linus handles it well, but I don’t think he’s as bad as some maintainers in some smaller open source communities.

                                              1. 6

                                                It’s survivor bias, not selection bias. He also owes a lot of it to businesses that got his kernel out there plus make up a lot of contributions. It’s not as if him being an asshole combined with some FOSS contributors that loved that asshole equals success of Linux.

                                                1. 6

                                                  Not that it makes a difference, but I believe I was correct in calling it selection bias. Nobody will post to Lobste.rs or write an article when Linus is being nice, so in general people only see the bitchy posts, hence the bad reputation.

                                                  1. 7

                                                    I don’t think that’s strictly true.

                                                    I think there are a few salient points here:

                                                    • If you just go by his posts that make it to lobste.rs/hacker news/reddit, you’ll get an extremely skewed view of Linus’s attitude. The vast majority of his communications are somewhere between polite and blunt. (Remember, his job basically entails reading and writing emails all day every day, and he writes something social-media worthy at most monthly.) To the best of my knowledge, he’s never exploded at a kernel newbie, only at long-time kernel hackers.
                                                    • That said, his attitude is still incredibly problematic. It’s been demonstrated to drive away talented developers. It drives away new developers, even if they are not themselves directly getting yelled at by Linus.
                                                    • Linux’s success is a complicated beast dependent on a whole host of factors, including to varying extents all of good timing (a few years later and BSD would have made it through its legal troubles), technical talent, corporate support, sheer dumb luck. Linus’s attitude certainly had an impact, but where it slots in that long list is impossible to say; I think it was a negative factor and thus, based on Linux’s evident success, had a relatively low impact, but obviously that’s pure speculation.
                                                    1. 2

                                                      Even adding in that first bullet from you and jlarocco, I think I still agree with about everything you said. It’s consistent with my position that he goes too far with the bad stuff.

                                                  2. 5

                                                    I have never ever behaved this way to my colleagues, and I suspect you haven’t either. So to call it selection bias is to ignore that he’s doing something that the vast majority of us would be fired for. It’s not okay to rarely shout down your coworkers. Sure it’s better to do it rarely than every single day, but the fact that we keep examples of this is a clear example that he has no checks and balances.

                                                    1. 1

                                                      And generally these are people who have a corporate position that makes them believe they are entitled to break the rules.

                                                  3. 45

                                                    The only thing I’m getting tired of is people pulling the odd email out of thousands and wringing hands over how mean Old Man Linus is.

                                                    Maybe folks should reflect on how, after 25 years of loud and blatant protestations by Linus, fucking morons keep trying to merge the same types of userspace breaking bugs.

                                                    Maybe, sometimes, a broader more accepting tent isn’t the answer.

                                                    1. 27

                                                      If Linus being famously mean for 25 years hasn’t produced a productive culture, perhaps it’s time to try a new approach.

                                                      1. 26

                                                        But it has produced a plenty productive culture - a culture that produces a better end product than many more professional environments, in fact.

                                                        1. 5

                                                          Professionally “rewarding”, still toxic at the personal end. It’s mentioned in this article mentioned at the main link.

                                                          1. 3

                                                            Professionally “rewarding”, still toxic at the personal end. It’s mentioned in this article mentioned at the main link.

                                                            And little of value was lost. This is how Sarah Sharp tried to publicly humiliate the guy with a wife and daughter - https://lwn.net/Articles/559077/ :

                                                            *Snort*. Perhaps we haven’t interacted very often, but I have never seen you be nice in person at KS. Well, there was that one time you came to me and very quietly explained you had a problem with your USB 3.0 ports, but you came off as “scared to talk to a girl kernel developer” more than “I’m trying to be polite”.

                                                            I disagree with labelling things and people as “toxic” in general, but I’ll choose Linus over Sarah any day: https://linux.slashdot.org/story/15/10/05/2031247/linux-kernel-dev-sarah-sharp-quits-citing-brutal-communications-style

                                                            1. 12

                                                              Did we read the same mail? Did you read any of the quoted parts from Linus? A guy that refuses to even consider treating people with respect is a clear-cut asshole. I’d much rather work with someone that talks about treating people with dignity than someone that refuses to consider the concept seriously.

                                                              1. [Comment from banned user removed]

                                                                1. 16

                                                                  You got it backward. Linus is the special snowflake here if he can continue to be that unnecessarily-abusive publicly with no consequences just because his work just happened to get popular in that way. Expecting people to deliver constructive criticism or not chase away good talent is the default for those managing good teams in most places. A manager/leaser simply getting off on abusing those doing work is adding nothing of value to the project in doing so.

                                                                  Instead of a snowflake, people just expect to be treated with decency by default with shitflakes like Linus able to get away with being exceptional jerks.

                                                                  1. [Comment from banned user removed]

                                                                    1. 2

                                                                      That would be a good trait if he had it. Instead, he’s still pushing monoliths in unsafe languages with limited metaprogramming. Took forever to get it reliable versus Minix 3’s a few developers in a few years. So much for his decisions being merit-based. ;)

                                                                      1. 3

                                                                        he’s still pushing monoliths in unsafe languages with limited metaprogramming

                                                                        Linux is modular.

                                                                        There was no serious alternative to C back in 1991 and, as much as I love metaprogramming, it increases the amount of surprises for the programmer.

                                                                        Took forever to get it reliable versus Minix 3’s a few developers in a few years.

                                                                        It’s easy to be reliable when your biggest deployment is on Intel’s spy chip.

                                                                        Minix was little more than an emulator pet for a few CS students, before that. Low on drivers, low on performance, low on functionality. You might as well compare Linux with L4…

                                                                        1. 4

                                                                          It’s modular in kernel mode for full compromise and crash potential. There were a bunch of memory-safe languages used in other OS’s before 1991, esp from Wirth, whose safety could be selectively disabled. Worst case compile them to C to leverage compilers while dodging programmer-related problems like some projects did.

                                                                          “It’s easy to be reliable when your biggest deployment is on Intel’s spy chip.”

                                                                          DOD is one of Red Hat’s biggest customers and sources of funding for contributions to Linux. Lots of kernel bugs were also found by analysis and testing tools from CompSci similarly funded by US-government. I agree that helps but a company just freeloaded off Minix 3. Should’ve went with GPL.

                                                                          “Minix was little more than an emulator pet for a few CS students, before that. Low on drivers, low on performance, low on functionality. “

                                                                          You should’ve seen the first Linux. It was similar but crashed more. Meanwhile, several years earlier than 1991, QNX folks were building a microkernel-based UNIX that became reliable as hell, fast, and deterministic. The Playbook versus iPad comparisons were the first I got to see with multimedia after BeOS. In both, the multithreading without stalling abilities were mindboggling versus the better-funded, older competition. My Linux systems can still come to a crawl over misbehaved applications to this day. Things that the others made highly unlikely with better architecture.

                                                                          You’re arguments were who used it and features that came with labor put in. Either one of those put into better architecture would’ve made an even better Linux. So, they’re neutral points. Mine was Linus wouldn’t listen anyway. If you believed him in Linus vs Tannenbaum, things like the Playbook w/ QNX and BeOS would’ve been impossible to program easily or perform well. Way wrong cuz he’s about politics and arbitrary preferences as much as merit. Like most developers.

                                                        2. 18

                                                          It has, though?

                                                          What I meant was that newcomers seem to be ignoring 25 years of norms and others being surprised when those newcomers–who are doing dumb things–are told to knock it off.

                                                          1. 6

                                                            Yeah, With “productive”, which seems to have been a really poor word choice, I meant one that didn’t have to teach the same thing over and over in the way you described. Sorry to you and the other responders for the confusion.

                                                            1. 2

                                                              Thanks for the clarification, and agreed.

                                                          2. 13

                                                            Linux is the most successful, widespread operating system kernel of all time. You can say the man’s rude, but you can’t say the results demonstrate unproductivity.

                                                            1. 2

                                                              The others from Microsoft, Apple, and IBM also were driven by assholes who were greedy on top of it. Just throwing that in there even though Im anti-Linus in this debate.

                                                          3. 21

                                                            There’s honestly no good reason to be hostile. It doesn’t actually help reduce the problem, evidenced by the fact that what he has done hasn’t worked. Instead they need processes for check in, code reviews, and linters. Linus should be delegating more as well if this is bothering him so much.

                                                            1. 4

                                                              That’s not a theory supported by the evidence.

                                                              1. 3

                                                                What he’s done hasn’t worked. Most contributions are from businesses. Many good talent say they avoid it. That seems to be evidence of something. Meanwhile, the Rust crowd managed to get piles of people early on for one of the hardest-to-learn languages I’ve seen in a while. They used the opposite approach. Now, two projects or even ten aren’t a lot of datapoints for an empirical assessment of which method is working. Oh, what can we do to see how much or how little damage Linus is doing to kernel in terms of lost contributions?

                                                                Oh wait, it turns out researchers in universities have been doing both observational studies and surveys on large numbers of organizations and people for decades covering this very thing. A key question was which management styles have most positive impact. One thing that’s pretty consistent in the research is that people working for assholes were much more likely to half-ass their work on purpose, dodge doing work, or even sabotage that person where possible. People working for those that treated them with respect or constructive criticism did better work. That kept being a result of most studies. Crazy to ignore decades of consistency in human behavior when trying to decide how best to treat them in a FOSS project for achieving goals such as more contributors, higher-quality contributions, and so on.

                                                                The theory supported by the evidence is that Linus’ style when doing what’s in the OP is unnecessarily rude and destructive. The evidence says he’ll loose a lot of talent since that talent just needs a worthwhile project to work on rather than his project. Just like he feels he doesn’t need them. Objectively, such a result is bad for the project if one wants it to improve. He might be willing to sacrifice features, QA, and so on for the personal enjoyment of those insults. That is what he’s doing. Anyone defending him shouldn’t pretend otherwise. Instead, they should shift to their actual argument of “I know we’re losing contributors that could’ve made the Linux kernel even better. The main reason is Linus’s personal preference. We think that’s a good status quo to maintain because…” That does look to be a harder position to defend, though, on either technical or moral grounds.

                                                                1. 1

                                                                  Just to say, would be nice if you posted source of the research you’re referencing.

                                                                  1. 3

                                                                    I’m too much of an overloaded procrastinator to give it to you. I’d have to resurvey it as I bet the Web 1.0 sites are gone, new ones have formed, and I’ll have to dig through tons of noise. I do plan to either find or do another meta study on that in future since it’s so critical. For IT, I always told people to read the PeopleWare book and Dale Carnegie’s How to Win Friends and Influence People. Lots of managers hand out the latter believing it’s great advice. Implies they think blunt assholes are non-ideal. The No Asshole Rule book also cited a bunch of studies on effects of people being assholes downward or upward in an organizations recommending against it.

                                                                    I do need to recollect the studies, though. Plus do a new bookmarking solution I’ve been procrastinating on since Firefox is full to point it constantly looses bookmarks lol.

                                                          4. 8

                                                            Linux would not be what it is today if they would be “merge-first-fix-later” type code-conducted safe place for noobs to mess around in.

                                                            1. 16

                                                              If you’re going to be derogatory, safe space is properly mocking.

                                                              There is a near infinite gap between “let the noods do whatever they want to the codebase” and “don’t degrade people’s character because they submitted a PR you dislike”.

                                                              I guess some people are just more tolerant of a project leader taking their anger and frustration out on people trying to get involved?

                                                              1. 20

                                                                The problem isn’t that he wouldn’t merge the person’s code. The problem is the unprofessional way that he treats other people. The fact that you think the problem is that he wouldn’t merge the code is either deeply concerning or purposefully avoiding the issue.

                                                                1. 7

                                                                  If you actually read the damn thread, you see that Linus actually explained this pretty clearly: http://lkml.iu.edu/hypermail/linux/kernel/1711.2/01357.html

                                                                  The person decides to ignore Linus and Linus gets angry, I really don’t see a problem here.

                                                                  1. 2

                                                                    Ok, I read the full thread. It’s more reasonable in the other parts. Kees seems to have put some work into making it acceptable. Later on, I see someone do what Linus should’ve done in the first place in giving specific details about where he’s coming from in a way that wouldn’t have bothered me as a contributor:

                                                                    http://lkml.iu.edu/hypermail/linux/kernel/1711.2/03732.html

                                                                    After seeing that, I’m more annoyed by whoever was half-assing security contributions to the kernel so much that it will be hard for worthwhile contributions to get in.

                                                                    1. 1

                                                                      Yeah, same here - I think there are just special snowflakes who think that human psychology has anything to do with whether or not the kernel is going to continue running reliably for me, the kernel user. Guess what snowflakes, nobody cares about the feelings if the product doesn’t work.

                                                                      Not to mention, this is only the squeaky wheel - Linus has been nice and professional and accommodating many, many times over. Many more times over, in fact. It just never makes the news ..

                                                                  2. [Comment removed by author]

                                                                    1. 3

                                                                      I’m not used to navigating the CVE database, is there an easy way to restrict issues to just the Linux kernel?

                                                                  3. 6

                                                                    Nope. I think he’s great. And I’m very glad that he is stewarding the Linux project to this day. Whether you think its ‘nice’ or not, his management of the Linux kernel has produced superlative results - and sometimes, in the thick of the mob, you have to be an asshole to get people to work the way they need to work to continue producing quality results.

                                                                    What I am sick of, is petulant snowflakes who think they know better than Linus how to manage the 1000’s of developers that want to have their fingers in the pie. The kernel doesn’t care about your feelings, and neither do 99.9999% of the kernels really important people: its users.

                                                                    1. 4

                                                                      Since when did asking to be treated with the bare minimum of basic human decency become a “special snowflake” thing? Nobody wants Linus to write “You’re so wonderful, and special, and beautiful, but I cannot accept this patch because, despite how wonderful and unique it and you are, it just won’t work with Linux’s performance requirements.”

                                                                      NOBODY is asking for that. So I don’t get why I keep seeing “special snowflake” thrown around. I guess it’s just a strawman? (OH WAIT I GET IT NOW!)

                                                                      Notice how your comment is verging on “nobody can critique the way Linus runs the project (that we all rely on in myriad ways)”. Aren’t snowflakes the ones who want to shut people down and stop discussion? Isn’t it the “snowflakes” that want to prevent people from having to hear mean things? (Like, stop taking your anger out on contributors because you’re not 7 anymore).

                                                                      Doesn’t it kind of seem like–and bear with me here, I know it hurts–that you’ve become the special snowflake? Stifling discussion, needing a space where someone you look up to is immune to criticism, insulting people who are just trying to have a conversation?

                                                                      Isn’t it your post that seems to be the petulant one here?

                                                                      1. 2

                                                                        Since when did asking to be treated with the bare minimum of basic human decency become a “special snowflake” thing?

                                                                        Precisely at the point where well-established ground rules, respected by the rest of us, were continually broken with no regard for the work load incurred, nor the hassle of having to deal with all the noise. Or did you miss the part where known, functional, productive policies were repeatedly ignored in the rush to get this patch included in the next release?

                                                                        Its one thing for a contributor to feel like they should be treated with respect as a special snowflake whose feelings are more important than the work, or in this case non-work, that they are contributing to the lives of others; its another thing to respect the very foundations of the activity from which one is attempting to derive that respect in ones own life.

                                                                        Perhaps you missed the part where this could have been a disaster for the Linux kernel, and a lot of time was wasted having to deal with it, since the original developer decided to ignore the policies, well-since established as being necessary to the task of managing the Kernel patch integration process?

                                                                        “nobody can critique the way Linus runs the project (that we all rely on in myriad ways)”

                                                                        Well, whether you like it or not, its the truth: Linus has guided the way through decades of these kinds of events, and we have an extraordinarily powerful tool that has revolutionised computers as a result. Perhaps you ought to consider whether the quality of your own work and contributions might improve if you harden up a little and don’t take offence so easily. Time and again, this proves to be true - in the real world and in this fantasy land we’re currently sharing as participants in this thread.

                                                                        The poster involved in this incident seems to have accepted that they were, in fact, violating a fundamental policy of the Linux kernel developer group, and has addressed the issue in a way that moves things forward - how, exactly, would Linux kernel development be pushed forward by your insistence at being treated like a snowflake?

                                                                        A mistake was made - the policy was not followed - and Linus jumped on the guy. He’ll never do it again, many many others have also learned the importance of the check-in policy (Rule #1: Don’t Break The Kernel.) and he doesn’t seem at all worse for the wear, personally, as a consequence; its really only folks such as yourself who are getting so easily upset about this, because Linus somehow doesn’t conform to your particular cultural ideal.

                                                                        Perhaps you haven’t been following Linux kernel development for long, or with much attention - there are many, many counter-cases of Linus having great relations with the developer group, which don’t seem to figure into your equation that “Linus is rude”. He’s precisely rude when he needs to be, and an awesome, polite, respectful individual, all the while. Please try to avail yourself of that truth before you continue ad-hoc insults and insinuations against random Internet strangers. It hurts my feelings to be challenged by an ignoramus.

                                                                        Doesn’t it kind of seem like–and bear with me here, I know it hurts–that you’ve become the special snowflake?

                                                                        Are you assuming that I wouldn’t want to be called a snowflake when appropriate? Because, I’m quite a snowflake, and often, when its appropriate or otherwise. Absolutely nothing with being called one, when you are one. Or, is there some other kind of kettle we should be boiling for tea?

                                                                    2. 2

                                                                      If a security vulnerability is introduced by design it’s still a bug. It just means the mistake was made at design time as opposed to implementation time.

                                                                      1. 2

                                                                        In all sincerity here, what would it mean for a person to say, “I’m not going to tolerate this behavior?”

                                                                        Linus would still own the Linux trademark. He’d still control the mainline kernel repo. The “lieutenants” that manage various areas of the kernel would still control those areas and report to him. It seems very unlikely that they would support a coup. (Anyone who had a major problem with Linus’ behavior wouldn’t have lasted long enough to get one of the top positions.)

                                                                        As a user, you can choose not to use or support Linux. But as a user, you don’t get to change the way the project runs.

                                                                        I think the most extreme option you’d have would be to fork the source code and try to attract both a large developer community and a large user base on the basis of running a more inclusive community. But there’s a chicken-and-egg problem to that approach.

                                                                        There’s an implicit hypothesis that says, “A more inclusive community will produce a better kernel.” Let’s assume that proves to be true. Some users would switch on that basis alone, but most will wait to see practical benefits. Since it would still take time for a fork to produce tangible benefits, you’d have to attract developers and users with the promise alone. We have a small set of cases to examine, where a major open source project was forked with the intention of creating a better community. It appears that the majority of users will hang back with a “wait and see” approach.

                                                                        I really don’t know what kind of negative feedback anyone could apply to Linus that would have an effect.

                                                                        1. 1

                                                                          Working code doesn’t care about your feelings. Working code is completely orthogonal to human emotions. My computer runs whether I’m crying or not.

                                                                        2. 0

                                                                          This behaviour would violate the code of conduct of any sensible project.

                                                                          Maybe you should run a kernel made by the CoC crowd. I’ll stick with the foul-mouthed guy.

                                                                          1. 5

                                                                            The only one I know off top of head is Redox OS since it used Rust CoC. It’s got potential but is alpha software. All the rest that are good seem to be made with different philosophies with a range of civility.

                                                                            I am interested if anyone knows of another usable OS made with all activity enforced with a CoC a la Rust/Redox. At least the basic console or GUI apps so it’s usable for some day to day stuff.

                                                                              1. 1

                                                                                Good catch. This one…

                                                                                “There can be no place within the FreeBSD Community for discriminatory speech or action. We do not believe anyone should be treated any differently based on who they are, where they are from, where their ancestors were from, what they look like, what gender they identify as, who they choose to sleep with, how old they are, their physical capabilities or what sort of religious beliefs they may hold. What matters is the contribution they are able to make to the project, and only that.”

                                                                                …is where the politically-motivated try to find a lot of wiggle room for censorship as beliefs vary. One reason I collect these is so we can look back at data in commits or on forums to see what impact they have. Note I said OS that was made with the activity enforced this way. Some could have it added as an evolution of moderation policies well after it’s a successful project that was built on a different philosophy. How long has that CoC been in FreeBSD?

                                                                                1. 4

                                                                                  How long has that CoC been in FreeBSD?

                                                                                  It’s relatively new - it was announced in July 2015. Even before the CoC was added a few developers were ejected for abusive behaviour (I’m not going to dig those out, but you can find references online).

                                                                                  1. 2

                                                                                    Ok, so it’s not an example of an OS developed under the CoC. It was a highly-mature OS that probably started with really different kinds of people just because they were the norm for early days of BSD’s and Linux. With your comment, they were just using common sense of ejecting folks who were obviously abusive without anything more formal or constraining. That still leaves Redox as the only one I know that had the policy and supporters of it from the start.

                                                                                    The main way I think this can be tested is with frameworks or libraries that are in same language and crowd. Basically, keep the situation as close as possible so about the only strong variable is community style. Should be easier with libraries or frameworks since they’re more accessible to new contributors. People are always doing more of those.

                                                                        1. [Comment removed by moderator pushcx: don't make "hate posts"]

                                                                          1. 4

                                                                            And Direct3D. But for an electron app it really is minimal: only 145.3 MiB on disk.

                                                                            1. 5

                                                                              A “minimal X app” generally means an app with a simple and straightforward interface, not an app that fits in 64kb.

                                                                              1. 3

                                                                                I mean, you sort of need a browser to render markdown.

                                                                                1. 3

                                                                                  Isn’t the point of markdown the ability to see ‘formatted’ text without rendering it as HTML? I’ve never really understood the value of these markdown editors, given that the most complex thing in MD seems to be lists

                                                                                  1. 4

                                                                                    What makes you think you need a browser for simple text formatting?

                                                                                    1. 8

                                                                                      Markdown has full support for inline HTML.

                                                                                      It’s even so central to the language that it’s literally the second section in the original markdown document

                                                                                      1. 3

                                                                                        Never saw this, but I guess that comes from all the different markdown flavors.

                                                                                        But ok, use electron for this and call it minimal, I don’t have to care if I don’t use it.

                                                                                        Edit: But using some webkit view from gtk or qt would make it less of a problem for me as someone who packages software for a linux distribution. Packaging electron apps is just not feasible because we need patches for it to support musl libc and building it over and over again for each electron app is just wrong.

                                                                                        1. 4

                                                                                          I find your comment particularly infuriating.

                                                                                          Your original post was a lowbrow dismissal of someone’s work couched with irony to provide plausible deniability. Even then, you knew it wasn’t the right thing to do.

                                                                                          You then showed that you hadn’t even bothered to understand the field before dismissing the project.

                                                                                          You then did another lowbrow dismissal comment, but then followed it up with an edit, in which you suggested:

                                                                                          1. the developer take a hard dependency and rewrite their entire software in one of two perennially buggy, flaky, fast-moving and platform-locked desktop linux frameworks, just because it would make your life as a linux software packager easier

                                                                                          2. it’s impossible to package electron apps because you have to do work to compile it and that makes you sad

                                                                                          I’m trying to imagine scenarios under which you could express more entitlement or lack of respect for people who actually do work, but they’re not coming to me. Additionally, if the job of packaging software is too hard for you, maybe stop doing it.

                                                                                          1. 6

                                                                                            After your edit this is a much more informative post than your top level one dissing the project. Perhaps you could lead with something more like this next time?

                                                                                            1. 3

                                                                                              To my understanding, though, there’s no good quick solution to package GTK and QT applications to OS X/Windows, which - to my understanding - is one of the main reasons people pick electron?

                                                                                              1. 1

                                                                                                Edit: But using some webkit view from gtk or qt would make it less of a problem for me

                                                                                                I maintain the OpenBSD port for ghostwriter, it’s pretty minimalistic and uses qt5 webkit view.

                                                                                            2. 2

                                                                                              There are much nicer ways to make a technical point than this. Please use one of them in the future.

                                                                                        1. 2

                                                                                          Why would I want to go back to the dark ages of managing my own dependencies and updates and updates to my dependencies? Sounds like a nightmare.

                                                                                          1. 2

                                                                                            first, there was the dark ages of managing your own dependencies. Then came the new age, where people began relying on package managers and upstreams to handle dependencies for them. This was revealed as a false dawn. Package managers and upstreams are no better, and frequently far worse, at managing your dependencies than you are. Now we are tentatively exploring other alternatives, in which it is possible to lock down dependencies. This is probably not working either. Simple solutions may not be forthcoming.

                                                                                            1. 4

                                                                                              Nix gets this right by allowing multiple versions of a package to coexist. In retrospect, it’s kind of unfortunate that the nix community put their energy into making a Linux based on it rather than trying to get it adopted as a base-package manager for more use cases.

                                                                                              1. 1

                                                                                                What sort of use cases are you imagining?

                                                                                                1. 5

                                                                                                  Every language has its own package manager and, IMO, they all mostly suck. If I can’t get my one big universal package manager based on nix, I wish at least pip, opam, maven, etc etc were based on nix.

                                                                                                  1. 1

                                                                                                    Yeah. I try as much as I can to stick to packages in my OS unless I really want to play with bleeding-edge libraries for something :)

                                                                                                  2. 2

                                                                                                    To be clear, I’m saying I wish nix was the base technology these language specific package mangers were implemented on, even if they have their own repositories and UIs and all that.

                                                                                                  3. 1

                                                                                                    The way nix solves this is great, but most good OS systems also allow multiple major versions to coexist when necessary, it’s just less considered the major, core feature that Nix has made it.

                                                                                                    1. 1

                                                                                                      This is based on the assumption the different minor and patch versions are compatible, or at least backwards-compatible.

                                                                                                      Nix is built on the observation that they can’t be guaranteed to be.

                                                                                                  4. 2

                                                                                                    At least when an OS handles the dependencies you get a single set installed that works for all apps instead of whatever I as the developer thought worked on my machine.

                                                                                                    But I agree, nothing is simple and someone always has to do the work.

                                                                                                    1. 1

                                                                                                      you, the developer, are more right than everyone else is about what version of dependencies are appropriate for your software. This is further true for each and every developer of each and every software. The best an OS can do is try to make things safe for everyone generically, which constantly causes dependency-version-fighting between bundles, forced upgrades, and the decoupling of the dependency from its original use.

                                                                                                      1. 0

                                                                                                        you, the developer, are more right than everyone else is about what version of dependencies are appropriate for your software.

                                                                                                        Except when you’re not. Lots of developers publish dozens of packages and can’t really be bothered to keep track of all dependencies and any security updates.

                                                                                                  5. 1

                                                                                                    There is a AppImage daemon that is supposed to update appimages if they embed a special manifest.

                                                                                                    What I personally like about AppImage is that it’s much simpler than using the package manager; download a file and run it.

                                                                                                    On the other hand, yes it’s true, with appimage you don’t get all those nice updates of dependencies being shoved into everything you run on your computer. But docker has stopped that trend nicely anyway, atleast on the server and when heavily relied on.

                                                                                                  1. 6

                                                                                                    Shouldn’t You Be Writing This In Rust?

                                                                                                    1. 6

                                                                                                      What the fuck has happened to Unix?

                                                                                                      1. 20

                                                                                                        I like this comment because you could mean it three ways:

                                                                                                        1. What is wrong with kids these days and their XDG crap? Dotfiles are a perfectly good solution and aren’t visible in ls output by default, anyway.

                                                                                                        2. What has happened to Unix, that so many programs need to specify configuration data in $HOME? Well-designed Unix programs should be simple enough to need no configuration in the vast majority of cases.

                                                                                                        3. Hiding files beginning with a . was a terrible idea totally out of whack with the rest of the Unix ethos. It’s up there with filesystem links and BSD sockets for worst additions to the system.

                                                                                                        I vote for option three, but which one were you going for?

                                                                                                        1. 2

                                                                                                          1 and 2. . is a hack, but filesystem links were and are a great idea, and bsd sockets is why you are reading this.

                                                                                                          1. 3

                                                                                                            I mean, on the one hand, fair enough.

                                                                                                            On the other hand, symlinks (in comparison to hardlinks, I should have been more specific) remove the guarantee that the filesystem can be modeled as an acyclic graph. In addition, every program has to handle symlinks: make a decision whether to treat them like the files they point to or like stub files that point to a path name; deal with symlinks to non-existent files; properly follow symlinks to resolve files when needed — it’s not even possible, because of this, to correctly display the current directory in Unix 100% of the time. Bash tries to track where you last were before you ran cd so it acts like you expect, but there’s logic in Bash just for this. The Fish shell, for example, does not do so and always resolves symlinks in the displayed path.

                                                                                                            Sockets are truly terrible, despite being an enabling technology for the Internet. You need a special set of APIs just for sockets, instead of following the Unix precedent and exposing a device file with a standard file API. This argument is more controversial, and others have made it better than I, but BSD sockets siloed network programming off from other kinds of I/O programming in a way that was unnecessary and, I think, left a lot of gains on the table compared to a (virtual) filesystem approach.

                                                                                                        2. 4

                                                                                                          Real Unix® operating systems distribute configuration across ~/.app/, ~/.config/app/ and ~/Library/Preferences/org.foo.bar.App.plist, so I’m quite happy with Linux converging on the XDG spec.

                                                                                                        1. 5

                                                                                                          that sucks and sorry to hear you’re going. Your hand was steady at the till.

                                                                                                          1. 2

                                                                                                            I feel like this is something that can be solved with a 8 or 10 pole low-pass filter tuned to 22.05 kHz (or even lower) before the ADC?

                                                                                                            1. 1

                                                                                                              What’s the significance of the “8 or 10 pole” part?

                                                                                                              1. 2

                                                                                                                you want it to have sufficient resolution to be able to clip out just the parts that you can’t hear.

                                                                                                            1. 50

                                                                                                              This isn’t a particularity interesting read - it doesn’t say anything that hasn’t been said a thousands times already by more informed sources, and seems to be based on some very subjective measures, and some (objectively) wrong claims.

                                                                                                              On formatting:

                                                                                                              According to my opinion, a programming language should let a developer use his or her style. A heavy influence on the programmer’s style is okay, but a fanactic, religious-like enforcement is inacceptable.

                                                                                                              That’s a great opinion to have if you never work with anyone else, but it doesn’t work at scale, which is one of the key design principals for Go.

                                                                                                              On broken package management: Go does have issues with package management - it’s very much a weak spot. Vendoring is the official workaround, and whilst it’s not perfect, it does work.

                                                                                                              On the lack of inheritance, the author doesn’t seem to mention type composition which is one of my favourite features of Go and frankly sounds like the solution to the very vague issue they’re describing. I’ve always found composition to be much more powerful than inheritance so I’m not sure what the author’s issue is here.

                                                                                                              I’m not going to bother addressing generics.

                                                                                                              This is also the first time I’ve ever heard anyone call Go’s built in HTTP package “lacking” because it doesn’t come with helper functions for a REST library…? Go’s standard library is excellent, and the HTTP package is one of the best parts of it.

                                                                                                              1. 10

                                                                                                                The HTTP library complaint really threw me too, because it seems to imply that other languages have more features in their standard HTTP libraries. In Python or Ruby if you wanted to write a similar web server as what you could with Go’s (basically just simple routes that do things) you’d have to grab a package like Flask or Sinatra, because the base language doesn’t support things like that.

                                                                                                                It just seems like a complaint because the author wanted to complain. If you’re pointing out something bad in about the core libraries, and then comparing it to a third-party library in another language, you’re not making a fair comparison.

                                                                                                                1. 6

                                                                                                                  On broken package management: Go does have issues with package management - it’s very much a weak spot. Vendoring is the official workaround, and whilst it’s not perfect, it does work.

                                                                                                                  I am using a combination of GNU make and goland/dep for every new Go project and I and my coworkers are pretty happy with it. Here is the project template I use if anyone is interested. To summarize, go dep and other tools like gopm and glide make package management pretty easy, thus it is not a real issue anymore.

                                                                                                                  1. 5

                                                                                                                    I’m not saying you’re wrong, but there is real value in having one blessed package / dependency management system that everyone in an ecosystem uses. That’s one of my biggest complaints with the JavaScript community, there are 10 different tools to solve every problem and they change regularly.

                                                                                                                    1. 4

                                                                                                                      dep is, or will be, that blessed tool.

                                                                                                                  2. 3

                                                                                                                    Among other things, he doesn’t mention what he’s using instead, which doubtless has tradeoffs of its own.

                                                                                                                    1. 5

                                                                                                                      I feel like the OP is a significantly better read than your reply. You assert that it’s all been said before, but then later say that the post makes surprising and novel claims. You decry subjective measures, but your entire reply has no meaningful backup for any of its arguments. You state that there’s objectively wrong claims (in an opinion post about programming!), but then don’t say what they are. You refuse to even address an argument the guy makes. Frankly, your post is awful.

                                                                                                                      1. 15

                                                                                                                        I feel like the OP is a significantly better read than your reply.

                                                                                                                        One is a comment, the other is a blog article. I feel like the Financial Times is a significantly better read than your reply but making that comparison would be absurd.

                                                                                                                        You assert that it’s all been said before, but then later say that the post makes surprising and novel claims.

                                                                                                                        Of the valid criticisms of Go in the post (package management, lack of generics), there are literally thousands of well written and well informed articles describing the issues and possible solutions, the vast majority of them are better reads and more informative. These are very well known issues to anyone who has ever read about Go.

                                                                                                                        The complaint about code formatting is made regularly and dismissed by the vast majority of people, “Go can’t do X because it lacks inheritance” is wrong and occurs frequently enough to have a section in the official Go FAQ. Perhaps I should have written “Of the things the article doesn’t get entirely wrong, it says nothing which hasn’t been said a thousands times before”?

                                                                                                                        You decry subjective measures, but your entire reply has no meaningful backup for any of its arguments.

                                                                                                                        I’m not going to re-write what has been written thousands of times before on matters that have been discussed to death and which I can add nothing original. I could tear into almost everything written in the post, but I have better things to do (unlike you, perhaps?)

                                                                                                                        You state that there’s objectively wrong claims

                                                                                                                        The post claims: “Go forces me to maintain the same code in three different places.” because it lacks inheritance. This is objectively wrong. The author doesn’t seem to know about type composition, which as I said, would likely solve the issue he was describing.

                                                                                                                        The post claims: “The Go compiler is repressively enforcing a mix of Google’s C++ and Python style guidelines.” and proceeded to give examples of syntax errors which occur because the compiler has rules about where you put newlines. You can style Go however you want: you can can have (brackets) around if statements, you can end lines with semicolons, but it doesn’t need either of these things. You can do whatever you want if you follow the syntax, which isn’t that strict:

                                                                                                                        package main
                                                                                                                        
                                                                                                                        func main() {
                                                                                                                                if(1 + 1 == 2) { println("hello");
                                                                                                                                } else if 1+5 == 6 {
                                                                                                                                        println("goodbye")
                                                                                                                                } else {
                                                                                                                                        println("string" +
                                                                                                                                       "concatenation") }
                                                                                                                        }
                                                                                                                        

                                                                                                                        That’s valid Go code. You’ll note, for example, the new line between concatenated strings, something the post claims isn’t allowed.

                                                                                                                        Most editors will run go fmt because it provides a consistent format for all Go code and is required by most Go projects before they will accept code. To claim that the compiler “repressively enforces” Google’s C++ and Python style guide because it uses newlines as part of the language syntax is wrong.

                                                                                                                        Frankly, your post is awful.

                                                                                                                        I’m glad you enjoyed it, but frankly I couldn’t care less what you thought of it. Perhaps you could trying adding to the discussion next time rather than simply criticising my response? There are a million ways you could have made the same points without framing it as an attack on my post, yet that’s all you did. Frankly, I find your attitude to be awful, but I wouldn’t have wasted time on it if it hadn’t been aimed at me.

                                                                                                                    1. 2

                                                                                                                      update employees set salary = salary * 1.10;

                                                                                                                      1. 3

                                                                                                                        Given all the aspects in which it would seem to be technically superior, how come OpenBSD isn’t eating away at some of Linux’s market share?

                                                                                                                        1. 12

                                                                                                                          Network effects. Default choices. AWS launches with linux support, so people pick linux, then they pick docker, etc etc etc.

                                                                                                                          Linux does solve a great many problems that OpenBSD does not. (Well, it offers a great many features and buttons and such which look like solutions. :)) I’m not sure that one operating system that solves all problems is the best approach, though. there’s a lot of disagreement about how even a desktop OS should work and how components should fit together.

                                                                                                                          1. 5

                                                                                                                            I had also heard that performance on newfangled hipster tasks (http service, MP scheduling, databases) was nontrivially worse, so I started trying to run an OpenBSD instance on AWS to run some side by side tests in order to invalidate those rumors. Apparently one guy once heard of a file you can UUCP from sunsite.unc.edu that enables 80-character mode so that you can give it a shot, but that was from a Byte magazine reader article so I cannot vouch for its veracity. I had to give up when my eyelids started twitching uncontrollably.

                                                                                                                            The reputation for security doubtless partially stems from the fact that installing the thing requires delivering the One True Ring to a locked basement cabinet guarded by leopards in an abandoned mausoleum underneath a nuclear waste disposal site in Afghanistan. Minimization of attack surface and all that. Somewhere, a Haskell core developer is putting down his glasses and rubbing his eyes in admiration.

                                                                                                                          2. 9

                                                                                                                            Hardware support is what keeps me from switching.

                                                                                                                            1. 7

                                                                                                                              And historically, perofrmance. I haven’t seen any good performance comparisons in the last few years (that I remember anyway), but several years ago there were several comparisons done that showed somewhat poor openbsd (and netbsd as I recall) scalability (multi-core performance, etc). Linux has often been one of the top performers in those types of benchmarks.

                                                                                                                              Go fast until the wheels fly off?

                                                                                                                            2. 5

                                                                                                                              The following HN comment from Brendan Gregg might be worth a read. It’s answering in detail basically the same question, just for Illumos rather than OpenBSD: https://news.ycombinator.com/item?id=12837972

                                                                                                                              1. 8

                                                                                                                                The reply is a touch acerbic, but makes some good points too I think. Like why not just give up when linux is 1000 developers ahead? Because half of them are wasting their time inventing ten different tracing frameworks. Ok, admittedly it would be nice for openbsd to have one perf tool, but I think we’re not so far behind as it may seem.

                                                                                                                                Also, for something like inteldrm, there’s a team of devs who keep churning the code, which causes kettenis some struggle when he tries to import it, but on the whole we get most of the benefits of that driver at a considerable manpower discount. The precise economics aren’t quite that simple, but not all of the effort spent on linux is locked in linux either.

                                                                                                                                1. 3

                                                                                                                                  Sure, I agree on both of those points. Some effort will be wasted to duplication and churn, some will have little effect as it can be easily reused by other projects.

                                                                                                                                  But if the larger developer base is at all positive, it will add up over the decades. E.g. 20 years ago the common wisdom would have been that the BSD TCP stack was both battle hardened and state of the art, while the one in Linux was flaky and scaled badly with load. It’s definitely the other way around these days (to a different extent for different BSDs), with a steadily increasing delta. And then repeat the same story over dozens of subsystems.

                                                                                                                                  Clearly there are things that more manpower doesn’t help with. Like deleting code to reduce attack surface; I’m pretty sure that the larger the team, the harder that is to achieve :) It’s not that developers of non-Linux operating systems should just give up, or anything like that. But the assertion at the start of this thread on Linux’s technical inferiority doesn’t feel realistic to me.

                                                                                                                                  1. 2

                                                                                                                                    That interesting comment reminds me a lot of the Worse is Better effect that got UNIX to dominance in the first place. There were better systems including some focused on good docs, reliability, and high security. I write about them a lot. ;) They lost with them being in close to legacy mode or gone depending on the product/project. The Linux situation, esp as Brendan Gregg describes it, looks like a repeat of that with Linux doing it to the other UNIX’s. I already knew this seeing the likes of SGI, IBM, and Oracle get on the Linux bandwagon despite having proprietary UNIX’s to push. In contrast, OpenBSD is trying the UNIX version of The Right Thing. It will fail in broad sense because that always happens.

                                                                                                                                    It’s destined to a niche of those that care about The Right Thing. You’ve all done a great job keeping it up despite your filter on the kind of contributors you accept and not giving into market’s crap that much. I saw Theo backtrack a bit with VMM admitting OpenBSD might have to do a little more for marketability. Still, the project will probably need a like-minded sponsor with lots of money and/or talent to break past what we’ve seen so far since The Right Thing is always swimming upstream vs Worse is Better which sometimes creates tsunami’s. Those of us focused on quality might always be also-rans in larger scheme of things. (shrugs)

                                                                                                                                2. 5

                                                                                                                                  Linux is easier to use.

                                                                                                                                  How do you search for a package in OpenBSD? How do you get a description in your search results? You can search package names by downloading the index.txt file from the packages directory on a mirror. But anything more sophisticated you have to use the ports tree and the janky makefile system with non-intuitive syntax and cryptic errors to do any interesting searches.

                                                                                                                                  It’s actually possible to download and install a Linux distro that comes with a desktop environment, installs quickly, and works fine right away. When I was first getting into non-Windows operating systems in middle school, I tried out OpenBSD because the whole secure OS thing sounded cool to me. I screwed with it for hours, felt like I was getting nowhere, then gave up and installed Linux Mint.

                                                                                                                                  I run OpenBSD now, but I’m also a systems programmer / SRE at a database company, so I’m not exactly an “average user” that represents the trend of the market.

                                                                                                                                  1. 6

                                                                                                                                    pkg_info -Q is what you want. That said - it looks like it doesn’t respect the -d or -c flags (I have a diff to make it work with it though)

                                                                                                                                    1. 3

                                                                                                                                      yep. i use pkg_info, i browse the ports mailing list, read the website, and also look at my mirror of choice from time to time.

                                                                                                                                      i just use cwm that’s in base. i had previously used gnome and xfce from packages. i reckon my willingness to read documentation mostly gets me to where i need to be… other things figured out by trial and error, mailing list, and searching the internet.

                                                                                                                                      1. 2

                                                                                                                                        You make it seem like reading the documentation is a bad thing? This should be the preferred approach.

                                                                                                                                        On linux the preferred approach is asking half assed questions on stack overflow.

                                                                                                                                        1. 1

                                                                                                                                          i don’t think it’s a bad thing. i’m implying that everyone saying openbsd is difficult to install or use aren’t reading these things and i don’t really understand why.

                                                                                                                                      2. 2

                                                                                                                                        Ahhhh. I’m somewhat amazed that I didn’t know that. But I will still call it unintuitive. See, I expected something like pkg_search, or to find something searching for “search” in man pkg_info. Searching “OpenBSD search for package” on Google returns a bunch of ancient results about ports. It IS mentioned in the packages FAQ though, but the preview text on Google mentions ports specifically. So I must have searched for it, seen those results, rolled my eyes, looked in the man pages, seen nothing, and decided to just download the index file.

                                                                                                                                        Compare to most Linux package managers, which when run with no arguments tell you the commands to install and search. The word “search” specifically is much more well known than “query” because of Google.

                                                                                                                                        So even though I’m a bit lazy and it’s clearly my fault for not knowing this as a sophisticated user, I think helping rather than blaming the user isn’t the right strategy towards getting adoption. Linux is really good about that, OpenBSD not so much.

                                                                                                                                        1. 2

                                                                                                                                          or to find something searching for “search” in man pkg_info.

                                                                                                                                          Query is close. I guess it’s a difference in terminology.

                                                                                                                                          Searching “OpenBSD search for package” on Google

                                                                                                                                          This seems to be a common trend among Linux users, google is consulted with more authority than local documentation. I personally do the same thing.. when finding issues with linux machines I always go to google first.. the crap documentation (often lacking entirely) has trained me to do so!

                                                                                                                                          I think helping rather than blaming the user isn’t the right strategy towards getting adoption. Linux is really good about that, OpenBSD not so much.

                                                                                                                                          Where was there lack of help and who is doing blaming?

                                                                                                                                          1. 3

                                                                                                                                            I realize query and search are close, but search is definitely the layman terminology.

                                                                                                                                            Googling isn’t just a Linux strategy, that’s what Windows and Mac users do too. Apple in particular is pretty good about making their support pages show up on Google.

                                                                                                                                            I didn’t originally mean people blaming the user directly, but rather a UX that “blames the user” in its design, and for OpenBSD I mostly see this in docs or commands. Not being able to find the -Q flag in the man page by searching (querying?) for search is poor UX. It implicitly becomes the users fault for not reading the whole manual. There are no examples either, where surely a common operation like search would be demonstrated. And OpenBSD commands don’t self document or provide assistance, whereas Linux commands will often list the most common usage if you don’t type a valid command. Using OpenBSD feels a bit RTFM, wheras on Linux stumbling around in an interactive session is much more viable, as most things try and point you in the right direction.

                                                                                                                                            This goes both ways, on OpenBSD it’s way more likely that if you can’t figure something out, it actually is documented somewhere. But that documentation could be more accessible and searchable.

                                                                                                                                            But also user blaming happens directly on misc@. I am part of no other community that ever makes me think “wow these people are such outrageous stuck up assholes, I’m not even sure I want to be a a part of this anymore.” Mostly OpenBSD people are intelligent, articulate, and kind. For example, I’ve had nothing but good experiences talking with OpenBSD folks on lobsters. But wow some of the stuff on misc makes my blood boil.

                                                                                                                                            I’ve considered contributing to OpenBSD docs to make them more accessible, especially FAQs / new user guides, but my experiences on misc have always stopped me. I worry that I’ll be shot down for going against the OpenBSD philosophy, and I won’t even be rightly told why, just be told I’m a moron. It sucks, because I love OpenBSD and I want to share it and make it easier for people to learn about, but I feel discouraged from contributing.

                                                                                                                                            1. 1

                                                                                                                                              again i feel the direct opposite here.

                                                                                                                                              i was able to find everything i needed without asking for help and without googling for the most part.

                                                                                                                                              still don’t understand how you missed -Q in the pkg_info man page because it’s right at the top in synopsis.

                                                                                                                                              maybe i’m a stuck up asshole too.

                                                                                                                                              1. 1

                                                                                                                                                maybe i’m a stuck up asshole too.

                                                                                                                                                I don’t think so.

                                                                                                                                                still don’t understand how you missed -Q in the pkg_info man page because it’s right at the top in synopsis.

                                                                                                                                                I wanted to search, I scanned the first line for search, /searched for search, moved on. I’m just too impatient. But a lot of people are too impatient, and worse a lot of people just don’t care enough to persist.

                                                                                                                                                1. 1
                                                                                                                                      3. 3

                                                                                                                                        i’m an average to below average user and i use openbsd as my daily driver.

                                                                                                                                        i don’t program and my knowledge of computers is intermediate at best.

                                                                                                                                        i also work in a non-tech field.

                                                                                                                                        i think it’s the easiest and most straight-forward OS to use.

                                                                                                                                        so, obviously i disagree with this.

                                                                                                                                        1. 3

                                                                                                                                          I wonder what you’re doing on lobste.rs :)

                                                                                                                                          1. 2

                                                                                                                                            Interesting! So, how do you look for packages you need to install? How’d you get going with a desktop environment?

                                                                                                                                        2. 3

                                                                                                                                          The file system isn’t great…

                                                                                                                                          1. 11

                                                                                                                                            Please. Greatest filesystem of the 80s. Best decade, best filesystem.

                                                                                                                                            1. 2

                                                                                                                                              That was Files-11 on OpenVMS with versioning and stuff. Especially integrated with high-uptime stuff like clustering and distributed lock manager. Or NonStop’s Guardian with its crazy reliability. Or first system (SCOMP) certified to high security that added ring and segmented protection to them with system-wide security policy.

                                                                                                                                              I do agree it was one of best decades for applied IT with all kinds of awesome shit happening based on what CompSci had worked on in 1960’s-1970’s with better hardware available. A lot of things started coming together that couldn’t before.

                                                                                                                                          2. [Comment removed by author]

                                                                                                                                            1. 8

                                                                                                                                              Or they need to run certain applications that are only available on Linux, or they need drivers that are only available on Linux, or they want a filesystem that has more features than UFS/FFS, etc.

                                                                                                                                              OpenBSD picked a niche and perfected itself in that niche. I think it is a shining example that picking one problem and solving it well, is often better than being a jack of all trades, master of none.

                                                                                                                                              (Which does not mean that it cannot be used as a general purpose OS with some care.)

                                                                                                                                              1. 6

                                                                                                                                                Even as someone who likes the FSF, I doubt many Linux users are there because of (rather than despite, or indifferent to) the GPL. It’s not hard for me to imagine an alternate universe without the BSD lawsuits where FreeBSD or something got popular as the mainstream free hobbyist Unix in the 1990s, and I seriously doubt FSF diehards would have been able to keep more than a handful of people from going with that bandwagon, had it developed (and had they actually wanted to).

                                                                                                                                              2. 1

                                                                                                                                                Same reason as many other similar situation throughout the industry. People know something else, a lot is built on other systems, marketing, and once you have a certain amount of people using tech X it’s really hard to use something else.

                                                                                                                                                Another side effect that kicks in with Linux Distributions, Operating Systems and Programming languages is that at many places if you introduce a technology that isn’t the currently dominant one you will be personally blamed for every single bug or different obstacle it has. It will often be blamed on it, despite also existing on the dominant OS.

                                                                                                                                                Something related is that sadly a lot of software that companies and people end up using at some point is written in unnecessarily non-portable ways. I once worked at a company that used a software running a bash script (stored inside a string in a program) and it had a typical non-portable #!/bin/bash instead of #!/usr/bin/env bash. As usually I’d report that and even create a pull request on a huge (in terms of stars, in the tens of thousands) and very hyped software, expecting it would be accepted. After being baffled that the authors didn’t even know about /usr/bin/env and what it does, a link to Wikipedia didn’t help either the conversation stalled. Since that project was being used by the front end developers I kept patch sets for such things around.

                                                                                                                                                And while those tiny things are really not hard in general these tiny things add up. I know the problem even exists if you don’t use Ubuntu, but for example Alpine in the Linux world.

                                                                                                                                                Having these kind of portability issues leads to the dominant technology in a field to quite often not be the best. The most famous example is how long Internet Explorer stuck, despite Opera and the Mozilla browser, until Firefox came along.

                                                                                                                                                When there is a lot of users and developers even pretty bad technology can stick, because there will be widely used workarounds for problems, there will be progress on fronts, even when the architecture is flawed, etc. Change is rarely that quick, especially when many parties are involved and put their money and effectively lives on it.

                                                                                                                                                Of course that doesn’t mean that Linux is bad and OpenBSD is great, just that technical superiority or being a bit better than others usually is far from a good indicator for dominance in a field. Especially if marketing and politics have a big presence, but even without. People simply need to have heard of it and a good reason to switch and get into something new to them and settle there. When there is no direct financial effect, that is significant enough people tend to not just switch utilities from one moment to the next. And even when you know OpenBSD really well and are convinced its better introducing that in an existing company might not be an option. Of course you can always switch, but why give up a safe, well-paying job with great coworkers for an operating system?

                                                                                                                                                1. 1

                                                                                                                                                  Docker / namespaces

                                                                                                                                                1. 9

                                                                                                                                                  if you want M:N thread multiplexing […] your options today are precisely Erlang, Go, .NET, and Perl 6

                                                                                                                                                  And JVM, GHC Haskell, Rust, Pony

                                                                                                                                                  1. 15

                                                                                                                                                    Don’t think I’d include Rust in that. M:N threading was a feature of the language early-on, but it was removed because it complicated the runtime. What you link is a third-party library that tries to provide a library implementation of green threads, but 1) it’s not part of the standard language, 2) it’s alpha-quality code with no official release, and 3) according to its own continuous-integration tests, it doesn’t even compile currently.

                                                                                                                                                    1. 8

                                                                                                                                                      Rust has semantic support for those patterns, though, through Send and Sync.

                                                                                                                                                      The M:N-threading runtime was not removed because it complicated the runtime, but because of the decision to fully remove any active runtime. (There’s a remaining minimal runtime that does stack unwinding and such)

                                                                                                                                                      It’s certainly lower level, but Rust knows what that pattern is and assists you there. I’m not sure if I want to recommend it for learning, but those systems can and have been written well in Rust. It’s certainly no “here’s a library, just use it” state of things, I would guess that’s still a year or so out.

                                                                                                                                                      1. 1

                                                                                                                                                        In rusts defense, the language tends to support external crates for most extended features.

                                                                                                                                                        1. 2

                                                                                                                                                          Do you mean that there is a crate that provides M:N threading?

                                                                                                                                                          1. 4

                                                                                                                                                            futures-cpupool and others, yes.

                                                                                                                                                            1. 4

                                                                                                                                                              I was not specific enough so you are technically correct. What I meant to ask is if rust has a way to preempt any of the running threads - something like go. Afaics futures-cpupool is cooperative multithreading, not preemptive.

                                                                                                                                                              1. 1

                                                                                                                                                                Can you give me an example? AFAIK, the Go scheduler is only lightly preemptive.

                                                                                                                                                                (The reference I just dug out, I’m not really into go in detail)

                                                                                                                                                                https://github.com/golang/go/issues/11462

                                                                                                                                                                1. 3

                                                                                                                                                                  Yes, that is true that Go scheduler is not completely preemptive (although I don’t think it’s useful to call it cooperative - I don’t recall seeing any code which had to manually mark preemption points).

                                                                                                                                                                  If you want example of completely preemptive scheduler in M:N system the best example I know of is Erlang. You can read about it here. Some additional languages with this property are also mentioned there.

                                                                                                                                                                  1. 1

                                                                                                                                                                    Erlang schedulers are not preemptive, as the linked article explains.

                                                                                                                                                                    1. 1

                                                                                                                                                                      Does it really say that? To quote the article:

                                                                                                                                                                      In effect, this is what makes me say that Erlang is one of a few languages that actually does preemptive multitasking and gets soft-realtime right.

                                                                                                                                                                      To me it sounds like the article says that Erlang is one of the few runtimes with preemptive scheduling.

                                                                                                                                                                      1. 3

                                                                                                                                                                        huh! I stand corrected (about the content of the article), I missed that paragraph. My apologies.

                                                                                                                                                                        That said, preemptive multitasking involves preemption; that doesn’t happen in Erlang. Schedulers let processes run, possibly infinitely, until they (a) have used up a reduction metric and (b) encounter a scheduling decision point (e.g. an erlang function call). There is no way to guarantee preemption or get particularly near hard-real-time scheduling. So I would say jlouis is wrong in that particular assertion although the rest of the article is correct.

                                                                                                                                                                    2. 1

                                                                                                                                                                      The problem here is that Rust is operating at a level lower: as Rust has no runtime, it also has no concept of “reductions”, as Erlang has. Erlang does not manually mark these preemption points, it just defines a language primitive as such (function calls). Rust being a low-level language, we just can’t do that. Suspension itself at that level is a tricky problem.

                                                                                                                                                                      So, without further work, no, Rust cannot have these semantics in-language. You could build them in Rust, though. Futures are kind of a way towards that: small, composable parts with natural points where preemption can happen.

                                                                                                                                                                      I am currently not aware of a system that builds such a large system to a final state. For preemption, we currently rely on the system scheduler. So, you could use futures-cpupool to put futures on it that emulate the Erlang semantics. (the last part probably being a big piece of work)

                                                                                                                                                                      To circle back to my initial point: just as in many aspects, Rust has semantics support for many of these things, without forcing a solution.

                                                                                                                                                                      1. 1

                                                                                                                                                                        I never doubted that rust can be used to build things you mentioned. I was just surprised by @superpat suggestion that rust can provide preemptive M:N threading via crates. As I suspected and you have confirmed this can’t be done without runtime.

                                                                                                                                                                        1. 2

                                                                                                                                                                          Well, the crate would provide the runtime :).

                                                                                                                                                                          1. [Comment removed by author]

                                                                                                                                                                            1. 4

                                                                                                                                                                              Sure, but low-level languages are built to support multiple eco-systems on top of them.

                                                                                                                                                      1. [Comment removed by author]

                                                                                                                                                        1. 4

                                                                                                                                                          The whole Internet feels overrun with extrinsic motivation.

                                                                                                                                                          It makes it feel rare to do something because you like it. It has to be about stupid vanity metrics, such as likes, retweets, views, stars, and other things that don’t matter but well, actually they sort of do because we need to like what others like to really appreciate it.

                                                                                                                                                          This is completely antithetical to forming one’s own taste, which is a prerequisite for actually doing great work.

                                                                                                                                                          1. 3

                                                                                                                                                            what conversation are they polluting, exactly?

                                                                                                                                                            1. [Comment removed by author]

                                                                                                                                                              1. 9

                                                                                                                                                                Is there anything wrong with the mindset of programming as a 9-5 and nothing more? There’s certain merits to it - cleaner separation of work and home life, for one.

                                                                                                                                                                1. 7

                                                                                                                                                                  I’m really not sure why coding for personal enjoyment is supposed to be more noble than coding to provide for one’s family’s financial needs. If anything, the latter seems superior to me. And I’m someone who does enjoy coding just for fun[1].

                                                                                                                                                                  [1] Though there are certainly things I enjoy more, like writing. :-)

                                                                                                                                                                  1. 3

                                                                                                                                                                    I think there’s more than one conversation. There’s a career-oriented conversation, and there’s a ‘progress of the sciences’ conversation. In my lifetime I’ve sometimes ignored one or the other, or listened to both, or listened to neither. It turns out the world needs both to varying degrees, and they amplify and strengthen each other by turns.