[HN Gopher] Complexity is a source of income in open source ecos...
       ___________________________________________________________________
        
       Complexity is a source of income in open source ecosystems (2019)
        
       Author : teleforce
       Score  : 223 points
       Date   : 2021-05-24 16:39 UTC (6 hours ago)
        
 (HTM) web link (www.r-bloggers.com)
 (TXT) w3m dump (www.r-bloggers.com)
        
       | jmcphers wrote:
       | > The wave is subsiding and they now need to appear to have a
       | viable business (so they can be sold to a bigger fish), which
       | means there has to be a visible market they can sell into.
       | 
       | Might need a (2019) tag. As of 2020, RStudio is a Public Benefit
       | Corporation and has a corporate structure that is designed for
       | long-term investment in the scientific community, and isn't
       | susceptible to buyout or IPO.
       | 
       | https://blog.rstudio.com/2020/01/29/rstudio-pbc/
       | 
       | (disclaimer: I work at RStudio)
        
         | shkkmo wrote:
         | It's great that RStudio is a B-corp, but that, by itself, isi a
         | magic bullet.
         | 
         | Is there any information you can share on what steps RStudio
         | has taken to reduce susceptibility to buyout and IPO pressure
         | from VC?
        
       | bigbillheck wrote:
       | I've had a low opinion of Matloff since at least
       | https://matloff.wordpress.com/2018/06/20/neural-networks-are...
        
         | dash2 wrote:
         | Now I'm curious. What was wrong with that paper?
        
       | sytse wrote:
       | The incentive to make open source products more complex is worse
       | for consultancy business models than product driven ones.
        
         | js8 wrote:
         | It should be according to the hypothesis, and it is an
         | observable prediction that could confirm or reject it.
        
       | furstenheim wrote:
       | This is kind of what happens with Postgres. Postgres in itself is
       | great and simple to use. However, managing replication,
       | maintenance, sharding... Is often quoted as very complex in the
       | conference themselves. And that's precisely what most of the
       | companies around Postgres live on
        
         | [deleted]
        
         | truth_ wrote:
         | Which alternatively will you suggest. I know it all depends on
         | the case, but for a fairly simple use case, what would you
         | suggest?
         | 
         | Are MySQL and SQLite still the most reliable ones around?
        
           | adolph wrote:
           | Here are SQLite's suggested use cases:
           | 
           | https://www.sqlite.org/whentouse.html
        
           | whalesalad wrote:
           | This is why I dislike commentary like the one you are
           | responding to.
           | 
           | Replace "postresql" with literally any tool and the sentence
           | holds true: redis, mysql, mongodb, cassandra, mssql, HDFS,
           | Kubernetes, React, Vue...
           | 
           | The fact that cottage industries pop up around powerful
           | tooling is not a bad thing. Some things are just complicated,
           | and there shouldn't be such an aversion to those things.
        
             | osalberger wrote:
             | The thing is that SQL was originally built to be an easy
             | accessible DSL for simple database queries, and was not
             | intended to be used to build highly complex stuff. Datalog-
             | like query languages would do the latter much better since
             | they are actually capable of letting you write reusable
             | predicates and libraries for common usecases, while SQL
             | easily grows into a monolithic monster.
             | 
             | Sadly a lot of the "NoSQL" hype later on was led by people
             | who had no clue about database theory, and proceeded to
             | throw the baby out with the bathwater and build whatever
             | abomination MongoDB is, rather than taking SQL's
             | theoretical basis and building a language on top of it that
             | is actually designed for complex usecases. There were only
             | a few exceptions like say Datomic in Clojure world that did
             | NoSQL right.
        
               | whalesalad wrote:
               | This is unrelated to SQL. We are using SQL as examples -
               | but it is not important to the argument.
        
               | jklowden wrote:
               | IBM did not spend the money it did to replace its premier
               | database product, IMS, with another DBMS, DB2, just to
               | enable "simple database queries". Yes, SQL was influenced
               | by other "4th generation languages" of the era. But IBM
               | judged -- correctly, on the evidence -- that most
               | programmers would not take the time to master first order
               | predicate logic or set theory.
               | 
               | So they came up with something that implemented the
               | Relational Model in a simple way, one that would attract
               | new converts. SQL has plenty of warts and defects, but
               | its success at extinguishing every other database query
               | language can't be denied.
        
       | reilly3000 wrote:
       | I have no issue with this basic premise. Its annoying if you want
       | to pay nothing for a mature, nuanced service, but in my mind its
       | the most equitable way to compensate open source development
       | teams. Dual licensing, "enterprise" features, and such seem to be
       | popular, but are really frustrating to work with and buy. No
       | knock on software salespeople, but I've candidly never had a
       | pleasant experience around any sales or marketing interaction
       | with an OSS team. I would far rather pay for expertise than
       | suffer endless email marketing, inside sales lead qualification,
       | waiting for the AE to ask an internal expert, and getting spun
       | around whether a needed feature does/will exist. That entire
       | apparatus seems to exist to extract money from corporate bank
       | accounts while development is a cost center rather than main
       | focus of the team.
       | 
       | More fundamentally, complexity has more to do with the problem
       | space than the business model.
        
       | [deleted]
        
       | sneeuwpopsneeuw wrote:
       | Based on the title the first thing that popped in my mind was
       | https://www.aseprite.org/ there source code is freely available
       | to anyone https://github.com/aseprite/aseprite/ and if you search
       | some more you can find how to install it at
       | https://github.com/aseprite/aseprite/blob/master/INSTALL.md But
       | none of these links are easy to find and the installation is not
       | that simple either. Is this way of doing things good/bad? I just
       | do not really know how to feel about it. It's partly better then
       | not having the option available, but, i just don't know to feel
       | about it.
        
       | api wrote:
       | IMHO "open" systems that are too complex are not actually open.
       | 
       | What is closed source anyway? It just means you get binaries.
       | Binaries are not actually obfuscated. You can disassemble them,
       | and there's even some decompilers on the market that will create
       | functionally equivalent C code with auto-generated function and
       | variable names. Nothing stops you from decompiling and reading a
       | closed-source binary... except the complexity and difficulty of
       | understanding it.
       | 
       | Open source systems where the source and installation/admin
       | procedure are absurdly complicated are not actually open...
       | they're just using a different obfuscation technique. If it takes
       | days to install or the source is write-only code, it's no
       | different from closed source software.
        
         | MaxBarraclough wrote:
         | > What is closed source anyway?
         | 
         | This is asked as if there is no correct answer, but there is.
         | 
         | Open Source software is software where the source is made
         | available under an OSI-approved Open Source licence. Closed
         | source software is software which is not Open Source software.
         | 
         | See https://opensource.org/osd
         | 
         | > It just means you get binaries
         | 
         | Sometimes even the binaries are carefully obscured. I imagine
         | it's an uphill battle to dig the binary out of a PS5 game, for
         | instance.
         | 
         | > Binaries are not actually obfuscated.
         | 
         | Some are.
         | 
         | > Nothing stops you from decompiling and reading a closed-
         | source binary... except the complexity and difficulty of
         | understanding it.
         | 
         | And possibly the licence, and possibly laws like the DMCA.
         | Also, even if you succeed in reverse-engineering the code, you
         | may be legally constrained in what you can do. If you improve
         | the software, you probably cannot legally distribute the
         | improved version, although you might get away with distributing
         | a delta.
         | 
         | See also https://www.gnu.org/philosophy/free-sw.en.html
         | 
         | > Open source systems where the source and installation/admin
         | procedure are absurdly complicated are not actually open...
         | they're just using a different obfuscation technique.
         | 
         | I agree artificial complexity (whether in the code or in the
         | software's usability) _could_ be a way for someone to, say,
         | deliberately subvert copyleft licences. An artificially
         | unmanageable codebase would increase the cost of development
         | for the company, though.
         | 
         | As for tricky installation processes, I believe the only way to
         | get the official OpenBSD builds is by buying their DVDs. I
         | don't think most OpenBSD users particularly mind compiling
         | their own system, but I don't know for sure.
         | 
         | > If it takes days to install or the source is write-only code,
         | it's no different from closed source software.
         | 
         | It _is_ different, because the licence allows others to improve
         | the software.
        
           | lapinot wrote:
           | > > What is closed source anyway?
           | 
           | > This is asked as if there is no correct answer, but there
           | is.
           | 
           | > Open Source software is software where the source is made
           | available under an OSI-approved Open Source licence. Closed
           | source software is software which is not Open Source
           | software.
           | 
           | I believe you're missing the point. Parent is making a moral
           | point and your talking about copyright laws and licences
           | stamped by OSI. For one i'm pretty sure parent would much
           | more trust GNU than OSI. Perhaps parent's point would've been
           | clearer if they said 'non-free software' instead of 'closed
           | source'.
           | 
           | And GNU licences define 'source code' as the 'preferred form
           | of modification'. The reason for this being exactly parent's
           | point. As an example, that's one (of the multiple) gripe i
           | have with ml: some 100 lines of python defining a neural
           | network with millions of params doesn't constitute the source
           | code, neither do the trained params. The source is in this
           | case non-textual, it's the training data and the state-dump
           | of the IDE used to manage the training and inspect the model.
           | 
           | > > If it takes days to install or the source is write-only
           | code, it's no different from closed source software.
           | 
           | > It is different, because the licence allows others to
           | improve the software.
           | 
           | But that is pure legalese since it's intractable to modify
           | it. It completely subverts the spirit of the licence, as such
           | it is _practicaly_ and in spirit closed-source.
           | 
           | Extending a bit more the argument, what we want isn't just
           | free software, it's software that's also interoperable, where
           | it's easy to reuse just a part, well engineered (minimaly
           | complex), with well defined scope and powerful/precise
           | interfaces, etc. That software is golden, the rest will just
           | disappear in 20 years.
        
       | workallday21 wrote:
       | Looks like R is having their own systemd moment.
       | 
       | At this point I would like to read a book about the Confessions
       | of an Open Source Hit Man.
        
       | ellisv wrote:
       | This article strikes me as odd. The premise is based on a
       | "pattern of behavior" but to me it feels the author is
       | attributing malice where there likely is none.
       | 
       | > For the last nine-months I have noticed that the term Tidyverse
       | is being used more regularly to describe what had been the
       | Hadley-verse. And???
       | 
       | Hadley never liked the name 'Hadleyverse' and the first
       | appearance of the `tidyverse` package on CRAN is from 2016.
       | 
       | > RStudio management rode in on the data science wave, raising
       | money from VCs.
       | 
       | RStudio is now a Public Benefit Corporation.
        
       | harikb wrote:
       | I think the author ignores the fact that creating simple,
       | consistent systems is a very hard problem, and rarely compensated
       | (short term). So most apps, APIs, platforms will eventually
       | become complicated and messy until there is significant push from
       | a competition to force people to do the dirty work of cleaning up
       | architecture
       | 
       | So if you want a clean and simple R ecosystem, go support Julia
       | or some alternative like that.
        
       | AzzieElbab wrote:
       | it is not unique to open source. Complexity is a source of income
       | in software period. Simple software is hard
        
       | mushufasa wrote:
       | This is true, and a corollary is that the observation that the
       | value proposition for many SaaS companies is just the simplicity
       | over open-source underpinnings.
       | 
       | For example, anyone who's tried to implement SAML SSO by hand or
       | self-hosting a shibboleth server will appreciate the relatively
       | simpler services provided by OneLogin / Okta.
       | 
       | I'm not sure, however, that this is a problem. The freedom of
       | open source to develop without constraints has to come first, so
       | that someone can later take existing code and impose guardrails
       | to simplify.
       | 
       | In other words, freedom itself is at odds with simplicity.
        
         | [deleted]
        
         | api wrote:
         | Economics, not freedom, is at odds with simplicity. Nothing is
         | actually free, so you have to have a paywall somewhere. For
         | for-profit open source the paywall is usually at the UI/UX
         | layer where that's typically SaaS-based or for enterprise
         | software available in the form of consultants to hold your hand
         | and train your team.
         | 
         | Make a free, open, easy to use app and you'll go bankrupt.
        
           | mushufasa wrote:
           | I meant freedom as in liberty, not free as in 'free beer.'
           | 
           | In other words -- if you are free to write code any which
           | way, complexity will result. Or conversely, in order to keep
           | code consistent, someone would need to enforce rules.
        
             | api wrote:
             | I 100% agree, but the problem is that most people care a
             | lot more about free as in free beer than free as in
             | liberty.
             | 
             | I have for quite some time seen the two as being at odds.
             | Free as in free beer undermines free as in liberty by
             | destroying the economic basis for anything other than
             | surveillance or closed business models.
        
           | suifbwish wrote:
           | I frequently run across codebases that appear to have
           | purposely "broken" tiny things that need to be fixed before
           | the code can be used. This seems to be a type of lock/key
           | mechanism to prevent just anyone from using it even though
           | it's open source
        
       | the_optimist wrote:
       | A very unusual claim we have here, on the link-through to
       | Matloff: "The Tidyverse also borrows from other "purist" computer
       | science (CS) philosophies, notably functional programming (FP).
       | The latter is abstract and theoretical, difficult even for CS
       | students, and thus it is clear Tidy is an unwise approach for
       | nonprogrammer students of R."
       | 
       | This seems to be the root of the argument, and it is a completely
       | bizarre statement.
        
         | vharuck wrote:
         | I agree with Matloff's overall point, though. "Tidy
         | programming" (which came to mean non-standard evaluation) is
         | very hard to understand, even for R professionals. It relies on
         | directly handling symbols, and encourages using new notations
         | to do it. Debugging is even more complex with NST code, and
         | people learning the language will be doing a lot of debugging.
         | I can't imagine a good way to introduce functions to newer
         | users when using NST. You'd have to first mention environments,
         | scoping, and symbols.
         | 
         | My rant aside, I did find this next quote from Matloff a better
         | argument _for_ using dplyr:                   >
         | mean(Nile[80:100])
         | 
         | "printing the mean Nile River flow during a certain range of
         | years. Incredibly, not only would this NOT be in a first lesson
         | with Tidy, the students in a Tidy course may actually never
         | learn how to do this. Typical Tidiers don't consider vectors
         | very important for learners, let alone vector subscipts."
         | 
         | With dplyr, you'd subset based on a `filter()`, likely
         | specifying the years to keep. It encourages self-explanatory
         | code. Matloff's vector subscript tells me nothing about why
         | certain elements are kept.
        
       | Tade0 wrote:
       | Wouldn't be the only such project if that was the case.
       | 
       | I often joke that Angular(or specifically any app written in it)
       | is a job program for front-end developers.
       | 
       | The architecture of this framework is so byzantine that you can
       | spend _years_ working with it and still keep discovering new,
       | often insufficiently documented features.
        
       | fmajid wrote:
       | And this is why Python is eating R's lunch.
        
       | legulere wrote:
       | Another case in point: OAuth
        
       | truth_ wrote:
       | > RStudio, the company, need to sell their services (their IDE is
       | clunky and will be wiped out if a top of the range product, such
       | as Jetbrains, adds support for R). If R were simple to use,
       | companies would have less need to hire external experts.
       | 
       | They are actually fighting for survival I would say.
       | 
       | Most of the people using R and RStudio are the people who _only
       | know_ R and RStudio.
       | 
       | RStudio's interface feels like it is from the early 90s, and
       | RStudio is impractical and messy to use. Frankly, it is _bad_.
       | 
       | R, as a language does only very few amounts of things well. And
       | when some people's use cases that are limited to that, uses it.
       | 
       | Data Science wave riders dominantly learn Python (IMO, as they
       | should). Think >90%.
       | 
       | There are plenty Data Science Misguiders (influencers) who, just
       | from shallow knowledge, tell gullible learners to learn R _OR_
       | Python. And still almost everybody chooses the second.
       | 
       | Some people I know who uses R amd RStudio uses them as a simple
       | Dashboard, dataviz app, or those who uses it for other reasons
       | write R using Jupyter, VSCode, or good ol' vim.
       | 
       | R thrives on the backs of lesser skilled developers amd domain
       | experts using R for some reason.
       | 
       | Some argue that the tooling of R projects is better than
       | Python's, but it does so less. A penny is of course more reliable
       | than a train.
        
         | rleigh wrote:
         | I discovered that PyCharm had some nice R support a few weeks
         | back. Not sure why PyCharm and not other IDEs, but what was
         | there was simple but decent. Even embedded the graphics output
         | in its panels and integrated really nicely. I can see myself
         | using this when I have problems which call for R.
        
           | kuang_eleven wrote:
           | I would suspect because Python is R's main competitor in data
           | science.
        
         | iagovar wrote:
         | I'm one of those noobs. Python... IDK, I don't really like
         | pandas, but i can do anything with python, the community feels
         | pretty welcoming even when you're asking stupid things (which I
         | do), there's plenty of information for everything, I can use
         | any database I want...
         | 
         | I tried R but it felt weird, and the community felt more
         | elitist.
        
       | gwern wrote:
       | > Once a collection of complicated packages exist, it is in
       | RStudio's interest to get as many other packages using them, as
       | quickly as possible. Infect the host quickly, before anybody
       | notices; all the while telling people how much the company is
       | investing in the community that it cares about (making lots of
       | money from).
       | 
       | More than RStudio, it's in _Tidyverse_ users ' interests to
       | extend and embrace; even without any plan or malice aforethought,
       | it is simply natural that as Tidyverse users do their own thing,
       | their packages and scripts will rely on the Tidyverse ever more,
       | and their downstream users will thenceforth rely on it whether
       | those users like it or not. Thus the situation where you
       | install.package some harmless looking package and now R is
       | installing 20 or 40 packages from the Tidyverse.
       | 
       | I dub this general phenomenon 'bitcreep':
       | https://www.gwern.net/Holy-wars Somewhat ironically, Hadley
       | Wickham himself has been a bit annoyed by bitcreep caused by
       | Mac/Linux users working against Windows users:
       | https://twitter.com/hadleywickham/status/1280340931657564160
        
         | cwyers wrote:
         | I missed your article when it first came out, and I'm glad to
         | have encountered it here; thank you, I think it helps explain
         | some things here and more generally. I do think that this
         | explains why the "Base R" people feel so threatened by the
         | Tidyverse.
         | 
         | What I find interesting about the quoted excerpt, and the
         | article most broadly, is about how it spends very little time
         | discussing what RStudio's economic interest in propagating the
         | Tidyverse actually is. Because, notably, RStudio doesn't charge
         | for the Tidyverse packages. There's no Tidyverse Enterprise
         | Edition, there's no Tidyverse support plans. They mostly make
         | money off their IDE and server products, and those products
         | don't have a lot of meaningful synergies with the Tidyverse
         | packages; there's few IDE features that integrate directly with
         | the Tidyverse, and those that exist aren't very significant.
         | Meanwhile, nothing about the Tidyverse is written to work
         | better with RStudio than with VS Code using the R language
         | server, or with Emacs, or what have you.
         | 
         | This isn't to say that RStudio is doing this for any reason
         | other than economic interest, but the economic interest here is
         | not in convincing R users to use Tidyverse packages; RStudio
         | makes the same amount of money if you do your plots in ggplot
         | or not, and if you switch to ggplot there's nothing about it
         | pushing you to change your IDE/editor.
         | 
         | So what is the business model for the Tidyverse, then? It's
         | pretty straightforward: the goal of the Tidyverse from the
         | perspective of RStudio is to drive R adoption, mostly at places
         | who are using commercial closed-source alternatives to R, like
         | Matlab, or SAS or SPSS. (You could argue that they're competing
         | for mindshare with Python, too, but RStudio has moved to
         | treating Python the way that post-Azure Microsoft treats Linux,
         | as a part of its product portfolio. RStudio's flagship
         | products, the IDE and the Connect server, both advertise first-
         | class Python support. Whether or not they have achieved this is
         | another question, but they certainly are trying.) Once you have
         | converted people to using R, you can sell them IDEs and
         | servers.
         | 
         | I suspect that the "Base R" people have a hard time grappling
         | with this aspect of the Tidyverse business model, because it
         | implies that Base R is _inherently less popular_ than the
         | Tidyverse, which makes their losing less about the whims of a
         | corporation that they can argue is acting in bad faith, but
         | about the preferences of the R community, which they have no
         | power to gatekeep.
         | 
         | Because the point of the Tidyverse is driving adoption among
         | people who were not previously R users, the Tidyverse is able
         | to win over the majority of the community not by persuading
         | holdouts but simply by growing the community with new Tidyverse
         | supporters. I understand how that can feel threatening to
         | someone who was an R user pre-Tidyverse, but you understand why
         | they don't want to focus their message around shrinking the R
         | community. And their efforts to persuade these new people to
         | switch from the Tidyverse to Base R is undermined by the fact
         | that the best argument for Base R over Tidyverse, the
         | familiarity of Base R to someone who learned Base R to begin
         | with, doesn't apply to them at all. They're fighting a losing
         | war with bad weapons.
        
       | lwhi wrote:
       | Perhaps there is a perverse incentive to not worry about
       | simplifying now, but I think complexity will eventually piss
       | people off enough to either leave the community or develop an
       | alternative.
       | 
       | Atlassian's Jira is a good day example of what the author's
       | gunning for. A complex, unintuitive, hulk of a product .. with
       | seemingly nonsensical UI updates and archives of out of date
       | documentation.
       | 
       | Amazing for people providing support and training. As a potential
       | user, I've been annoyed by badly set-up instances so many times
       | I'd gladly turn my back on it.
        
       | throwawayboise wrote:
       | The popularity of R amazes me. I took a one-week class in R and
       | left with a vow to avoid it at all costs. I have never seen a
       | more confusing, hard to understand, inconsistent software product
       | in my 30 years as an IT professional. It's apparently targeted at
       | scientists and sociologists who are non-programmers. I have no
       | idea how they manage to use it.
        
         | beforeolives wrote:
         | I've written some R both for small interactive scripts and
         | running in production, it wasn't the first language I learned -
         | R gets some things done very well; it also has some
         | idiosyncracies, there is stuff that is clearly patched up
         | together and exists for backwards compatibility, and there are
         | _many_ ways to do the same thing in R. If you don 't expect it
         | to be perfect, it gets the job done - nothing to write home
         | about and certainly not a language that you should avoid at all
         | costs.
        
           | sharadov wrote:
           | It does it well, if there is a package out there for what you
           | are trying to accomplish and hope that the package works for
           | your use case..
        
         | gravypod wrote:
         | It's selling point is it's not matlab. It's downfall is it's
         | not python. The python scientific compute libraries have
         | they're problems but people are using them and math people "get
         | them". I think they have an awful design/api from a programming
         | perspective but most people don't care. Matlab is similarly a
         | strange language but all of it's libraries/tools make what
         | scientists do easy. "Click a button and your code can now run
         | on a compute cluster".
         | 
         | R is very popular with stats people but new PhD candidates are
         | beginning to write python implementations of R things (sort of
         | how like DataFrames/pandas happened).
        
         | breck wrote:
         | Have you spent time with the community? The community is
         | fantastic.
         | 
         | Also, the cheat sheets put out by the RStudio team are the best
         | programming language cheat sheets I've seen for any language:
         | https://www.rstudio.com/resources/cheatsheets/
         | 
         | I don't do R much anymore (at the end of the day I personally
         | have the freedom to start fresh so I choose that over dealing
         | with technical debt in the R language itself), but the R Studio
         | product, team, and R community I found fantastic.
        
         | colechristensen wrote:
         | Scientific programming is just different. Much of the culture
         | of scientific programming is different and with good reasons
         | not easy to understand.
         | 
         | Its something like how baking cookies at home and running a
         | cookie factory are very different. To a person doing each, the
         | behaviors and priorities of the other seem strange and it's
         | easy to for one to think "we are both just making cookies, why
         | don't they do what i do which is obviously superior "
         | 
         | Scientific programmers are solving problems first, not writing
         | programs. They are solving problems in a way that is useful
         | only to them or peers who know a whole lot about the problem
         | being solved. The problem-first tools look strange because they
         | deemphasize the programming niceness in favor of problem
         | niceness.
         | 
         | You find the same sort of confusion when programmers are facing
         | business types and excel usage.
         | 
         | There are certainly times when a piece of code starts needing
         | the programming touch, but the right tool for the job depends
         | on the job.
        
           | lwhi wrote:
           | There's no good reason for something being difficult to
           | understand. Especially a product that's been designed to be
           | general purpose.
           | 
           | You give good reasons for why a certain situation exists in
           | scientific communities, but I see no reason why it has to be
           | that way.
        
             | tacostakohashi wrote:
             | Being "difficult to understand" is a perspective of an
             | individual observer, not some fundamental property of the
             | thing itself. Japanese is "difficult to understand" if you
             | only know English, but not if you grew up speaking
             | Japanese.
             | 
             | The various conventions around "accepted" programming
             | paradigms like OO, inheritance, scoping, etc are natural if
             | you use them every day for years, but if you're more
             | interested in optimizing some finances or solving a physics
             | problem, something "primitive" or "messy" like a
             | spreadsheet formula or fortran might actually be more
             | understandable.
        
               | xeromal wrote:
               | Love this point
        
               | gravypod wrote:
               | I'm wondering what your opinion is of this talk:
               | https://www.youtube.com/watch?v=7jiPeIFXb6U
               | 
               | It has some comments about why good software engineering
               | leads to good software, how good software engineering is
               | hard right now because there's a lot of bad examples
               | which cause people to make more bad code, and some
               | suggestions on how things could be done.
        
               | taoffhand wrote:
               | I couldn't agree with more OP. I got my graduate degree
               | in Statistics and, after working for several years in
               | such a role, made a similar vow to Never Again(tm) touch
               | R (or SAS). This effectively forced a career change. (I'm
               | now "officially" a software developer and couldn't be
               | happier.) My distaste for Statistics stems directly from
               | the commonly used tools.
               | 
               | I appreciate your point. In most contexts, such as your
               | comparison between Japanese and English, I agree with it.
               | However, paradigms like OO, inheritance, scoping, etc.
               | are hard-won, intellectual accomplishments; they're not
               | arbitrary. They're purposefully designed to solve
               | specific problems. My experience with R showed it to be
               | rife with problems that have been avoidable for decades.
               | AFAICT, it boils down to the tragic view of "I'm a
               | (statistician|engineer|mathematician) not a coder so I
               | don't need to care". The unfortunate truth is that
               | despite such a view, doing analysis with R makes the
               | analyst a programmer _by definition_. And so the
               | language, ecosystem, and, consequently, users suffer from
               | half-baked, poorly designed workarounds to problems which
               | have long been solved (and abundantly documented in the
               | software literature). To reduce it to a matter of
               | perspective feels to me like a tautology: it 's easy once
               | you get it.
               | 
               | Clearly, I'm triggered by this. I hope I've expressed
               | myself respectfully. My point is, I don't feel it's
               | arbitrary. The design and complexity of R has real
               | consequences in terms of cost and reproducibility.
        
               | edumucelli wrote:
               | Inheritance was invented for performance reasons [1]. It
               | was not conceived for pure code organization, so in way
               | it is arbitrary as any other solution that could have
               | brought performance gains for the original garbage
               | collector. Inheritance is an "intellectual
               | accomplishment" as other accomplishments, that will incur
               | into issues if applied blindly, so not having it is not
               | an issue per se. On the contrary, today's widely accepted
               | view of inheritance is to rather use composition instead
               | of it [2].
               | 
               | R does have inheritance by the way, not as you will see
               | frequently on "general purpose" programming languages,
               | thing R is not.
               | 
               | [1] http://catern.com/inheritance.html [2] https://books.
               | google.pt/books?id=ka2VUBqHiWkC&pg=PA81&lpg=PA...
        
               | azalemeth wrote:
               | I use R regularly. I love it. Doing the maths is very
               | easy and general. The programming makes me think
               | differently. I like how it's high level, reasonably fast,
               | rarely involves loops or inline functions directly, and,
               | above all, is the Swiss army chainsaw of statistical
               | analysis. The fact that the journal of statistical
               | software exists is a good thing!
        
               | lwhi wrote:
               | > Being "difficult to understand" is a perspective of an
               | individual observer, not some fundamental property of the
               | thing itself.
               | 
               | I disagree. There are inherent qualities associated with
               | systems that happen to be easier to understand. If you or
               | I were designing such a system, and wanted to ensure this
               | system imbued similar qualities -- I believe it would be
               | possible to do so.
               | 
               | > Japanese is "difficult to understand" if you only know
               | English, but not if you grew up speaking Japanese.
               | 
               | Needing a priori knowledge to be able to understand
               | something, is different.
        
               | Karrot_Kream wrote:
               | > I disagree. There are inherent qualities associated
               | with systems that happen to be easier to understand. If
               | you or I were designing such a system, and wanted to
               | ensure this system imbued similar qualities -- I believe
               | it would be possible to do so.
               | 
               | Can you formalize these inherent qualities? Until you
               | can, it's hard to prove that a quality is or is not
               | essential.
        
               | zaphirplane wrote:
               | Of course difficult and easy exist. It's hard to run a
               | marathon it's easy to eat popcorn. It's hard to learn
               | Japanese it's easy to watch tv
        
           | droopyEyelids wrote:
           | Having worked a bit with candy making and baking from home
           | sized to restaurant sized to a regional factory, I'll say
           | this analogy doesn't make sense.
           | 
           | Almost all the progression in that industry is relatively
           | straight forward and would make sense to the lay person.
        
             | TeMPOraL wrote:
             | I sometimes quip that the difference between cooking and
             | process engineering is that unlike the former, the latter
             | actually gives a shit about the quality of outcome.
             | 
             | The issue isn't _just_ specialized knowledge - knowing the
             | principles underlying the process, knowing that there _are_
             | principles - but also access to tooling. I 'm sure plenty
             | of lay cooks would appreciate appliances that let them be
             | more consistent, even without knowing any related formal
             | theory - but these are not available. As it is, an oven
             | that's not shit is a major capital investment. It only
             | makes sense to get one if you're more likely to call your
             | work output a "formulated product" than "cookies".
             | 
             | However, software development is a peculiar occupation -
             | one in which the best tools are free. It's like being able
             | to buy a production line for less than a consumer-grade
             | stove. Access to quality tools is not a limiting factor.
             | Knowledge and awareness is.
             | 
             | Of course, non-programmers that code have more interesting
             | things to do than to study software engineering. Which is
             | why it's doubly important to make sure tools that are being
             | popularized aren't shit. On the contrary, tooling is the
             | perfect place to encode good practices and principles, so
             | that even most lay (programming-wise) users succeed by
             | default.
        
         | Communitivity wrote:
         | R programming is fundamentally different at a conceptual level.
         | You are operating on datasets rather than individual values.
         | Also the GUI mechanism use reactive programming if you are
         | using R Shiny. R is awesome for what it is designed for.
        
           | jayd16 wrote:
           | Yeah, its not so hard to groc. Its just a data driven style
           | all the way down. You get pros and cons. Its great at working
           | on data sets.
           | 
           | That said, I feel like correctness should be given a higher
           | priority in scientific computing and yet a dynamically typed,
           | lazily evaluated language is used.
        
         | CapmCrackaWaka wrote:
         | I was a mathematics major in college, and didn't have much
         | training in programming when I graduated. R was the first
         | language I learned when I started my career as an actuary, and
         | it was a breeze. Things "just work". Want to add 2 vectors of
         | different dimensions together? R knows what you're getting at,
         | and makes it work. Comparatively, learning Python was harder.
         | 
         | Now that I'm used to both languages, I find it funny how much R
         | is hated by "true" programmers.
        
           | vharuck wrote:
           | This is the key. R shouldn't be seen as a general programming
           | language, but a domain specific language that's still open-
           | ended. I started with SAS in my job, which was fine for
           | statistics and handling tables. But anything beyond that,
           | even supposedly simple things like reusing code or listing
           | all files in a folder, was not simple. With R, it was.
           | 
           | R only had to be ergonomically better than the competition,
           | and they weren't very good.
        
           | blt wrote:
           | What are you "getting at" by adding two vectors of different
           | dimensions? It's not obvious to me.
           | 
           | Off-by-one dimensionality errors are so common in
           | programming. If the language does something like zero-
           | extending instead of raising an error, it will lead to an "it
           | runs but gives the wrong answer" bug. These are much more
           | painful in numerical code than in logic-based code.
        
             | CapmCrackaWaka wrote:
             | For instance, if you wanted to add 1 to every other element
             | in the vector (1,2,3,4,5,6). To someone who has no
             | programming experience, this may be a daunting task. But
             | simply doing (1,0) + (1,2,3,4,5,6) works in R.
        
               | Closi wrote:
               | The only problem with this is that I don't personally
               | find it obvious/intuitive that (1,0) + (1,2,3,4,5,6) =
               | (2,2,4,4,6,6).
               | 
               | In fact, I would probably _expect_ the output to be
               | (1,0,1,2,3,4,5,6).
        
               | Karrot_Kream wrote:
               | Indeed, no mathematician or statistician would think of
               | `+` as concatenation. List concatenation isn't a relevant
               | problem to most mathematicians. This is where the above
               | comments about prior knowledge and context come into
               | play. Likewise, when I multiply two vectors together, or
               | multiply a scalar with a vector, I have a definite idea
               | what I "want" out of that multiplication. For many
               | programmers, they think of this more as an exercise in
               | data-types than an expression of linear algebra.
        
               | CapmCrackaWaka wrote:
               | I guess that's the difference between people who prefer R
               | vs. people who use more traditional languages. '+' means
               | addition in the scientific world, if I'm trying to figure
               | out how to add numbers the first thing I try is '+'. To
               | me, those vectors are just that - vectors of numbers, not
               | instances of a class (even though that is kind of true
               | under the hood). I have a problem I want to solve, and R
               | does a good job of giving me what I want.
        
               | roenxi wrote:
               | In what branch of maths or science is (1,0) +
               | (1,2,3,4,5,6) even defined? That operation shouldn't make
               | sense to anyone; it is adding vectors of different
               | dimensions.
               | 
               | The result should probably be vector promotion then
               | (2,2,3,4,5,6). (2,2,4,4,6,6) is not a good answer.
        
         | samuel wrote:
         | That's are my thoughts, mostly, but in the end libraries are
         | the killer feature of successful programming languages. I have
         | got used to it and I'm more proficient now at data analysis
         | tasks using R than Python/pandas thanks to tidyverse+ggplot.
         | 
         | The object system mess though... I have no words.
        
         | rossdavidh wrote:
         | I am primarily a python programmer, but I sometimes use R.
         | 
         | You are either going to use a programming language (or library,
         | etc.) made by a programmer pretending they know about
         | statistics, or a statistician pretending they know about
         | programming. Oftentimes, as a programmer, the right choice is
         | the former, but not uncommonly (because statistics is even less
         | intuitive than programming), you really really need to know
         | that the statistics have been done right. If someone has ported
         | the relevant code from R to python, great. If not, bit the
         | bullet and use R, it's where the statisticians hang out.
         | 
         | You know, I bet statisticians don't think any more kindly of
         | how programmers make stuff. Our use of the '=' sign, for
         | example. We're just used to that kind of thing, so it doesn't
         | look like a problem to us.
        
         | blacktriangle wrote:
         | My description of R: It makes hard things easy and easy things
         | hard. Ergonomically it is the absolute worst "programming
         | language" I've touched in my life. However somehow it managed
         | to become the official language of statistics research and has
         | packages to do any type of analysis you can dream of.
         | 
         | I think the reason you and I dislike R is because we just work
         | differently than non-programmers. Non programmers think in
         | purely imperative, straight-forward semantics. They write one-
         | off unmaintainable code tying together libraries that solves
         | their immediate problem. Programmers try and write R code as if
         | it was a proper programming language and immediately run into
         | walls. Non-programmers never see the walls because they don't
         | even know there's another way.
        
           | sedeki wrote:
           | FWIW, R started to make sense to me (as a programmer) once I
           | read Advanced R by Wickham.
        
           | mbreese wrote:
           | I have a colleague that use R as a general purpose language
           | (I'm in science), and it's horrible. He runs into problems
           | all the time and usually the answer is "more RAM".
           | 
           | For the things it's good at, it's great. For everything else
           | I avoid it like the plague. More often I find it easier to
           | use a quick Python script to generate a data table that I can
           | then read into R to perform whatever stats or plots I need.
           | It's almost always faster than if I had just run everything
           | in R to begin with.
           | 
           | But I think your description is spot-on. Non programmers just
           | want to get something done and if it works in R, then great.
           | For those of us that think in terms of software engineering,
           | good practices can be difficult in R.
           | 
           | The vanilla-R vs Tidyverse split has made this all worse too.
           | These are two completely separate dialects of R that while
           | still the same language, are completely different.
           | 
           | It's like the R folks took the "there's more than one way to
           | do it" mentality from perl and said "challenge accepted!".
        
             | A4ET8a8uTh0 wrote:
             | I agree overall. In my particular case, my employer won't
             | let me have Python for fear I will do things with it. But
             | it is perfectly ok for me to RStudio with 2 million useful
             | extensions that will do similar things. For better or
             | worse, sometimes the tools we use are the tools we are left
             | with.
             | 
             | And I am saying this as a recent RStudio convert. I love
             | how easy it makes some otherwise hard things. I hate the
             | sheer amount of hoops you have to jump through to make some
             | stuff work.
             | 
             | But it works and I am definitely not an engineer.
        
           | dragontamer wrote:
           | R > Matlab. But both suck as programming languages.
           | 
           | But that's because neither R nor Matlab are primarily
           | programming languages. They're primarily mathematical
           | exploration tools.
        
             | kuang_eleven wrote:
             | Luckily, Python >> R > Matlab, and the fight between R and
             | Python is core to data science. Last I did any real
             | investigation, R still had the edge in highly-theoretical
             | and new techniques, for whatever reason it was much more
             | used by academics, but Python was eating R's lunch for non-
             | academic data science.
        
               | dragontamer wrote:
               | I've given SciPy a try, but its performance is grossly
               | lower than R and Matlab in my experience. SciPy also
               | seems to be missing plenty of things. You get pretty far
               | (basic filter design seems easier in SciPy than Matlab),
               | but Matlab has so many different mathematical fields in
               | it its just incomparable still.
               | 
               | R is statistical-slant, so you have all sorts of
               | distributions and statistical features.
               | 
               | Matlab is general mathematics (but especially matricies).
               | So you can grab say... Galois Fields between 2^2 through
               | 2^16 and just start working with them immediately.
               | 
               | Matlab itself is decently replicated by Octave (which is
               | a great project), but it should be noted that Octave aims
               | to be largely compatible with Matlab (so all of my
               | complaints about how awful that programming language
               | still applies).
        
             | osalberger wrote:
             | Right. Julia is looking fairly promising as a "real"
             | programming language that is still an excellent Matlab
             | replacement, and possibly to a lesser extent an R
             | replacement, and it does show that there is nothing about
             | filling the exploratory math programming niche that
             | requires it to have the warts that the incumbents have.
             | 
             | Fundamentally, R and Matlab are probably best comparable to
             | Perl in terms of how they got popular. While they are
             | rather ugly, they were the first to provide a simple
             | solution to a few specific problems that a lot of people
             | had, which snowballed them into popularity and network
             | effect advantages
        
               | mushufasa wrote:
               | The fact that Julia requires compilation seems like such
               | a huge hurdle to adoption in light of the above. When the
               | alternatives are a REPL and the users aren't programmers,
               | to use Julia they have to first learn the difference
               | between code and compiled code.
        
               | beforeolives wrote:
               | Julia is JIT compiled and most people use it through a
               | REPL. For a beginner there's hardly a difference in the
               | experience.
        
               | dash2 wrote:
               | No, there is a difference. My day-to-day use case is:
               | start the REPL, start typing some code, wanna see a
               | graph. I might literally only want to write a single
               | command. If that takes a minute to compile, it's a
               | problem. Julia is pushing hard to address this and I'm
               | really interested to see where it goes - I tried it for
               | the first time recently and saw a lot to like.
        
               | adolph wrote:
               | _Project Jupyter 's name is a reference to the three core
               | programming languages supported by Jupyter, which are
               | Julia, Python and R_
               | 
               | https://en.wikipedia.org/wiki/Project_Jupyter
        
           | bachmeier wrote:
           | > somehow it managed to become the official language of
           | statistics research
           | 
           | There's zero mystery to this. The intended audience is people
           | that want to get stuff done. Professional software developers
           | commenting on R are like this: "He's such a good salesman. He
           | does everything the right way. He dresses right. He talks
           | right. He has the best smile of any salesman I've ever seen.
           | He fills out his reports on time. Granted, he doesn't make
           | many sales, but why would you hire one of those other guys
           | over someone that's perfect?"
        
             | Grimm1 wrote:
             | Mmmm more like like they try to put the salesman in an
             | operations role and wonder why the company has broken down.
             | 
             | If you tried to use R for an actual engineering project
             | you'd wind up with a system that is always on fire. Where
             | as these one off analysis it's fine because it's just a one
             | off.
             | 
             | We want to get stuff done too, but we need it to hold up
             | for more than a few hours so that's the mode we think in.
        
               | bachmeier wrote:
               | Every HN discussion: I do real programming. Everyone else
               | works on toy problems.
        
               | blacktriangle wrote:
               | He wasn't calling that one-off use case a toy, just that
               | it's a different world than most of the people here on HN
               | function in.
        
               | Grimm1 wrote:
               | It's all real programming and it has all the real
               | consequences, but there is a distinction between
               | something that needs to live for a day, a few months,
               | maybe years and then maybe have multiple people work on
               | it, have it communicate with other systems or not and the
               | level of investment and structure you need to put into a
               | system to make sure that's possible.
               | 
               | Programming has a very low barrier to entry and that is
               | incredibly powerful but there is a big gap between
               | someone writing one off scripts to solve immediate
               | problems and people writing highly connected systems that
               | withstand scrutiny.
               | 
               | I've always personally been for accreditation for
               | software engineers much like pretty much every other
               | engineering discipline.
        
           | andyonthewings wrote:
           | > It makes hard things easy and easy things hard.
           | 
           | People also say it for k8s. And it kind of explains why k8s
           | is creating so many jobs.
        
             | ghaff wrote:
             | I'd generally argue that, if you're trying to do easy
             | things with Kubernetes, there's a good chance you're using
             | the wrong tool.
        
             | outworlder wrote:
             | > And it kind of explains why k8s is creating so many jobs.
             | 
             | Is it 'creating' jobs? I think it's merely making it easier
             | to specialize.
             | 
             | A few problems are unique because of container usage, but
             | by and large K8s is trying to do what's otherwise a
             | difficult job. Try assembling your own distributed
             | container system with scheduling and whatnot and see if you
             | can build something easier to understand or that works
             | better. Maybe you can, but there's inherent complexity.
             | 
             | The criticism of K8s should really be criticism of
             | indiscriminate container usage and the attempts to ship a
             | company's organization chart as microservices. Many
             | applications should really be monoliths and would work
             | better that way. Some should be split on different
             | "services" (not _micro_) along obvious interface points.
             | Just a minority should be architected as microservices from
             | the get go. Distributed systems are _hard_
        
               | collyw wrote:
               | I imagine that you could get rid of kubernetes in 90% of
               | the projects it is used in. We have it at my work, must
               | have taken around six months to a year for on dev. Sure
               | we can autoscale now, but we never actually need to. It
               | saves us a bit in server costs, but more in maintenance /
               | dev time.
        
               | jokethrowaway wrote:
               | What's the previous system you had which required less
               | maintenance than k8s?
        
         | failwhaleshark wrote:
         | R was the supposedly the "FOSS" replacement for SAS, and Matlab
         | to a degree. I had to support it and bioconductor.
         | 
         | Now, most people just use Python.
        
         | jokethrowaway wrote:
         | Machine learning is ripe with similar examples (tensorflow in
         | primis).
        
         | agumonkey wrote:
         | it seems to me that the value is in hard-compressed optimized
         | functions and to this crowd this is the most important factor
         | 
         | software engineering practices don't exist unless you have a
         | gigantic program, programming language theory is either not
         | interesting or too foreign for them
         | 
         | about how they manage.. it's easy, they get used to it
        
         | froh wrote:
         | R got a simplicity boost with the "tidyverse", R studio and
         | ggplot, all driven by Hadley Wickham. at its core, R is a very
         | straightforward language. however it never had a benevolent
         | dictator who gave it consistency, elegance and style. Hadley is
         | compensating that a bit.
        
           | asdff wrote:
           | I'd argue that tidyverse is entirely nonconsistent with the
           | rest of R, though. At least base R packages all operate in an
           | "R-way," so learning this syntax helps you with other
           | packages that others try to write in an "R-way," while
           | tidyverse only operates in a tidyverse way that you can't
           | take your syntax knowledge with you to other packages.
           | 
           | I'd say the learning curve for making a sexy plot is a lot
           | shorter with tidyverse, but overall, relying on it handicaps
           | you versus spending the half hour longer to do the same thing
           | with base graphics (or a base-like package).
        
             | roenxi wrote:
             | > I'd argue that tidyverse is entirely nonconsistent with
             | the rest of R
             | 
             | Well, yes, but that is part of the reason why it is so
             | popular. R may be written by world-leading language design
             | experts - but it doesn't show!
             | 
             | > ...relying on it handicaps you versus spending...
             | 
             | There is almost no reason to drop out of tidyverse if the
             | problem domain is visualising data. Most people could go an
             | entire career as an analyst using just ggplot + tidyverse.
             | 
             | If something needs to be plotted and ggplot won't work it
             | probably makes sense to drop out of R and go straight to
             | TikZ or OpenGL.
        
           | jklowden wrote:
           | A lot can be said in favor of R, but "straightforward" is a
           | debatable description. The semantics of R were never really
           | designed, and were only recently "discovered", post hoc. See
           | "Evaluating the Design of the R Language"
           | (http://janvitek.org/pubs/ecoop12.pdf).
        
         | asdff wrote:
         | Other than using apply functions instead of loops, coding R is
         | a lot like coding python only you get a lot more of the data
         | science python package functionality already baked into base R.
         | The syntax differences are slight enough where it's pretty easy
         | to move between the two (or find relevant stackoverflow answers
         | instantly to common annoyances). R generally inputs your data
         | and outputs your statistical test results in less code with
         | less headscratching than doing the same in python in my
         | experience. I prefer plotting in R as well.
        
       | dash2 wrote:
       | In general this idea may be true, but for the tidyverse it's just
       | a load of horse.
       | 
       | Hadley Wickham is a very talented developer, and what he's
       | _particularly_ talented at is writing interfaces that are easy
       | for people to use. dplyr, a key part of the tidyverse, is a great
       | example of that. It breaks data tidying up into a few simple
       | steps that can be chained together. It 's the descendant of an
       | earlier iteration (plyr) and Hadley learned from that and just
       | kept polishing the interface.
       | 
       | There's a similar story with tidyr. Reshaping data from wide to
       | long is a complex operation. Base R has a reshape() function and
       | using it has given me permanent PTSD. It was impossible to get
       | right until you read the documentation. After you read the docs -
       | still impossible. Hadley wrote the reshape2 package, which
       | improved things a bit. Then there was tidyr::gather() and
       | spread(). Finally, we got tidyr::pivot_wider() and
       | pivot_longer(), and at last I can be reasonably confident of
       | getting the results I need without too many tries.
       | 
       | The tidyverse is hugely popular for just this reason. Without it,
       | I'd probably have abandoned R. I certainly wouldn't dream of
       | teaching it. Ditto Rstudio. Calling these people parasites is
       | absurd.
        
         | macleginn wrote:
         | I agree with your assessment of the claims made in this post,
         | but I want to note that for me the tidyverse culture became the
         | reason to abandon R for all use cases where it has decent
         | alternatives. R is not pretty, but it is also not super hard,
         | and it has some internal logic. tidyverse's logic is orthogonal
         | to that of R, it is a different data-manipulation paradigm,
         | which I know have to know in addition to having to know R
         | itself---not that you can really skip this part. Also, as it
         | has been already mentioned here, this layering doesn't help
         | with debugging.
         | 
         | ggplot2 did a similar thing with plotting. Together these two
         | projects made R more accessible-like and, IMO, seriously
         | damaged the culture around it.
        
           | asdff wrote:
           | tidyverse has ruined stackoverflow. So many questions could
           | be answered with base R, and sometimes you might _need_ to do
           | base R if you want your code widely compatible, but people
           | insist on submitting some arcane ggplot2 or dpylr code
           | instead, and nothing is learned about R.
        
         | mbauman wrote:
         | It's interesting, though, that those "clean" interfaces come
         | with the horrors of non-standard evaluation and have caused a
         | rather large divide between the tidyverse and base R.
         | 
         | I fully disagree with the disparaging aspersions or even
         | motives that TFA leans towards, though. I can see how this
         | would arise out of a local minimum.
         | 
         | The "beauty" of R has always been its core DataFrame
         | abstraction and the fact that a table is a language primitive
         | -- and that's where 90% of the consistency came from (from my
         | outsiders' vantage point).
        
         | rossdavidh wrote:
         | Just to add an anecdatum, as a python programming who has
         | started using R in production, I find dplyr to be less clear
         | than base R. Not that either one is clear.
        
       | zelphirkalt wrote:
       | I don't have much to say about the R ecosystem, as I am not
       | actively using it or even doing anything using R.
       | 
       | > Matloff is also upset about a commercial company swooping in to
       | steal their precious, a common academic complaint (academics
       | swooping in to steal ideas from commercially developed software
       | is, of course, perfectly respectable).
       | 
       | This reads like some kind of sarcastic statement. In fact it is
       | indeed perfectly respectable, that academics do this, because it
       | lets our society advance and research progress outside of
       | proprietary software gardens. In my opinion any such kind of
       | action is perfectly respectable, if it shares knowledge with the
       | world. The other way around it is not OK, because from
       | proprietarizing ideas, there is no benefit for society. If a
       | company is worth its salt, it will offer services on top of
       | existing public knowledge, without creating walled gardens. If it
       | cannot do so, then it might be time to realize, that the company
       | should not exist.
       | 
       | What is not OK is, if academics take that knowledge and make it
       | seem like they were the ones inventing stuff. One should always
       | give credit where credit is due. Never forget academic honesty.
       | Usually however, a lot of foundational research is done by
       | academics, only to be picked up years later and often by
       | commercial entities dealing in proprietary software.
        
         | tfehring wrote:
         | > _If a company is worth its salt, it will offer services on
         | top of existing public knowledge, without creating walled
         | gardens._
         | 
         | I contend that every profitable company leveraging public
         | knowledge _does_ offer services (broadly construed) on top of
         | that knowledge, since otherwise no one would pay them. Maybe
         | the minimal example is that in which the only service provided
         | is marketing, but the range of service levels provided in
         | practice runs the gamut. RStudio clearly goes well beyond that
         | minimum.
         | 
         | In some cases, the services offered are so valuable that the
         | company can create a walled garden - which reduces the net
         | value of those services to the customer but provides the
         | company with monopolistic pricing power. (It's not clear to me
         | that RStudio's products have significant lock-in, for what it's
         | worth. R has significant lock-in, like any programming
         | language, and RStudio benefits from the lack of competitors
         | creating good R tooling, but that's not really a walled garden
         | of RStudio's making.)
        
       | archibaldJ wrote:
       | In mathematics we roughly have two ways to discovering new
       | things: one is the theoretical approach (eg Galois and his theory
       | that proves the none-solutions for fifth degree polynomial
       | equations) and the other is the more adhoc technique-driven
       | approaches (e.g. you can see the ingenuity of that in many of
       | Erdos proofs). Of course the categorization is not always so
       | clear-cut you often get a mixed of both worlds.
       | 
       | I think it's very similar when it comes to writing code. The more
       | theoretical driven approach, the more structures you've got at
       | your disposal to reason about things (eg see Mochizuki's proof of
       | the abc conjecture).
       | 
       | For example, should you use monad in a small project? Maybe not.
       | But if you are dealing with thousands lines of code every week
       | you may find that if you reimplement some components as monads
       | then suddenly refactoring gets easier and you can extend things
       | more easily without having to do a global search and modify all
       | the occurrences of a certain thing every time you make changes to
       | the type, etc
       | 
       | So ultimately you are offloading cognitive efforts to structures,
       | which are really just constructs to optimize cost-to-transform
       | (though it may increase the cost-to-execute (both computationally
       | as well as mental-visualization/simulation-wise))
       | 
       | So is it worth the effort to work with structures? It really
       | depends on the project you are working on or what you see
       | yourself building in the next 10 years
       | 
       | Depending on how you see your career it's always good to be a bit
       | more ambitious
        
         | sebastialonso wrote:
         | you know..."it depends" if a famous (non) answer among (good)
         | software architecture
        
         | [deleted]
        
         | [deleted]
        
         | hnrj95 wrote:
         | has mochizuki's proof been formally recognized? i thought it
         | wasn't yet agreed upon
        
           | jacobolus wrote:
           | No, Mochizuki's "proof" is likely to be fatally flawed. He
           | has almost entirely refused to engage with careful and
           | targeted criticism by the experts who found what they claim
           | is a serious flaw.
           | 
           | Mochizuki finally went ahead and published his work in a
           | journal where he is the editor in chief. So much for peer
           | review.
        
       | failwhaleshark wrote:
       | OpenStack, K8s. Nuff said.
        
       | hinkley wrote:
       | These days it seems like people make a library, and they never
       | get to documenting it properly until someone offers them a book
       | deal. And they can't just put all of than knowledge immediately
       | in the docs otherwise who would still buy the book?
       | 
       | From outside this looks like they're holding out on us.
       | 
       | Some tools require google stalking the maintainer in order to
       | synthesize explanations from six different places into a Theory
       | of the System of how the thing is supposed to work. Apache Ant,
       | for a memorable one.
       | 
       | As with many things, you don't know your own opinion of a subject
       | until you have to try to teach it to someone else.
        
         | rabidrat wrote:
         | > holding out on us
         | 
         | They're doing the fun part (coding) for free. It's well-known
         | that developers don't like writing documentation (esp
         | "properly" which is ill-defined and for some definitions can be
         | a much larger task than writing the code in the first place);
         | in fact, does _anyone_ enjoy writing docs as much as an
         | engineer enjoys writing code?
         | 
         | So this makes total sense to me. As a user of free software,
         | you can choose: a) pay for a commercial package with comes with
         | docs; b) use free software, and pay for the docs in the form of
         | a book (perhaps waiting a few years until lots of people want
         | to do the same); c) use free software and figure it out from
         | breadcrumbs the developer left in whatever forums they use; d)
         | (c) but then step up and write some docs.
         | 
         | Too many people think that free/libre software is supposed to
         | be like commercial software, only better, but it's not the
         | case. It's definitely better in the "libre" way, and of course
         | cheaper in the "price" way, but it's usually not packaged for
         | easy consumption, nor is the developer going to do a bunch of
         | work they don't enjoy for other people who don't want to pay
         | them for it.
        
       | antirez wrote:
       | One thing I used to say often was: "Complexity is a form of
       | vendor lock-in"
        
         | throw_m239339 wrote:
         | Consultancies made billions with unnecessarily complex
         | JEE/Enterprise patterns systems that needed hundreds of
         | developer to maintain. So I'm not surprised all that pseudo
         | agile/DRY/SOLID stuff were pushed as "good practices" in the
         | 2000's and the 2010's.
         | 
         | "No you can't just use if statements, you need to use a chain
         | of responsibility with many classes cause it's SOLID".
         | 
         | It's not a mystery that one of the author of a popular front-
         | end framework was a JEE consultant, and this popular framework
         | now feels like a solution looking for a problem...
        
       | fock wrote:
       | another example is Moodle. It's horrible spaghetti code (PHP as
       | used in 2000, including addons relying on specific database
       | schemata) and if you google for it you'll find a nice forum
       | thread, where a lot of LMS "consultants" are bashing a guy asking
       | whether there are plans for a rewrite.
       | 
       | And yes, as a Moodle user (teacher) you notice quickly that these
       | decisions seriously impact usage!
        
       | ExcavateGrandMa wrote:
       | lemme re-iterate :D
       | 
       | Complexity is a source of useless processing with the only goal
       | to obfuscate simple things... :)
        
       | agumonkey wrote:
       | This is a regular pattern.. it's worth asking if that's not the
       | sole mean for systems to stay alive.
        
       | turminal wrote:
       | The title is actually true for any kind of software ecosystem,
       | open source or not.
        
       | Nasrudith wrote:
       | I have found that claim mostly projection from closed source
       | rivals in my experiences. Namely because those are the only
       | places I have found support knowledge outright cashgated.
       | 
       | I head the claim and it seems as if it was a line from Microsoft
       | back when they were hostile to open source and a minute after it
       | left their mouth managment promptly set up a meaning to ask "Why
       | aren't we doing that?" shortsightedly to the detriment of their
       | own longterm health.
       | 
       | Open source ethos have been more "not want to deal with that
       | crap" in ethos and a general tendency against wanting to provide
       | support if it doesn't involve bugfixes. Again back when the
       | community were more stereotypically grumpy greybeard telling you
       | to boost your expertise by RTFM than evangalists with sizable
       | blog and/or social media presence depending on the timeframe, or
       | even novices grinding out tutorial websites as a portfolio item
       | of sorts as an extension of "extracurriculars to get into a good
       | college" side activities. I am not calling that cultural change a
       | bad thing, far from it. I am just noting it has far more energy
       | involved in maintenance of a communal efforts compared to less
       | than easily accessible man files whose gap in time between last
       | update and today could rent a car if it was an ordinary human.
        
       | xg15 wrote:
       | This is why a market-based economy is not good at solving
       | problems. It's great at _managing_ problems, alright, but
       | _solving_ a problem would mean cutting off a source of potential
       | revenue.
        
         | jokethrowaway wrote:
         | I don't see how you got to this conclusion.
         | 
         | It's not good at solving problems in the best possible way
         | according to everyone. Centralisation is great at solving
         | problems in the best possible way according to a single person
         | or circle of people.
         | 
         | It's good at solving problems so that the majority of people
         | willing to pledge resources are happy.
        
       | recursivedoubts wrote:
       | There's probably something to that.
       | 
       | I've accepted that my open source project, htmx, will likely
       | never drive any significant income. It's too simple. Whenever
       | someone starts talking about consulting, I tell them to read the
       | docs and maybe jump on the discord, but that they'll probably
       | figure it out.
       | 
       | In addition to the revenue angle, a lot of developers don't like
       | admitting "that seems too complicated" because it can be
       | interpreted as "I'm not smart enough". Arguing for simplicity
       | often requires a lot of backbone (or disagreeableness, according
       | to taste.)
        
       | breck wrote:
       | "There are 2 kinds of products: Ones that get more complex over
       | time and ones that no one uses."
        
         | shkkmo wrote:
         | True, but if your business model depends on providing support,
         | you may be less incentized to minimize the growth of complexity
         | as new functionality is added (especially if your software has
         | little competition.)
        
         | asdff wrote:
         | Meanwhile everyone uses 50 year old bash. Sometimes it's
         | ridiculous to waste effort inventing yet another hammer.
        
       | whalesalad wrote:
       | Complexity is a source of income everywhere, not just open
       | source. It's even worse in the Microsoft world. Just because you
       | can't see the complexity doesn't mean it isn't there.
       | 
       | The blog post is projecting a lot on the situation. It's a blog.
       | Take it for what it is.
        
         | robertlagrant wrote:
         | When choosing between Office 365 and Google Workspace, you may
         | find the familiarity of Office is an expensive choice with all
         | the IT people you need to hire to tame it.
        
         | throwaway3455 wrote:
         | >It's even worse in the Microsoft world
         | 
         | One of the reasons I stopped using Windows was the complexity
         | pretty much forces a support contract for anything other than a
         | toy business.
         | 
         | Funny how distros offering support contracts are taking linux
         | down the same path.
        
       | schleiss wrote:
       | I can emphasize with the argument that complexity is a source of
       | income. But, I don't think that it's intentional. Rather, the
       | constant change of developers introduced little inconsistencies
       | that over time accumulate and generate complexity. Recently, I
       | even looked at some open source projects[1] to measure the
       | complexity by counting import/include statements.
       | 
       | [1] https://schleiss.io/measuring-potential-complexity-in-
       | open-s...
        
       | for_i_in_range wrote:
       | What he's touching on is Complexity Fallacy. (i.e. we "over-
       | complexify" things). Why? "We often find it easier to face a
       | complex problem than a simple one."[1]
       | 
       | Humans also possess Simplicity Bias. (i.e. we "over-simplify"
       | things). "Simplicity bias is a cognitive bias towards holding
       | views which can be explained by a simple narrative."[2]
       | 
       | Ironically, this very article may exemplify the _Simplicity Bias_
       | to explain a _Complexity Fallacy_!!
       | 
       | It seems the ultimate answer is the perennial, "know thyself."
       | Practice self-awareness; and know which Bias you're leaning on,
       | and more important, _why_ you 're leaning on it (in light of the
       | goal).
       | 
       | [1]: https://fs.blog/2018/01/complexity-
       | bias/#:~:text=Complexity%....
       | 
       | [2]:
       | https://issuepedia.org/Simplicity_bias#:~:text=Simplicity%20....
        
       | jedberg wrote:
       | My first job was working for Sendmail, Inc. Their entire business
       | model was based on helping people configure open source Sendmail,
       | via consulting and/or a commercial web UI for configuring the
       | software. And of course selling support for the open source
       | software.
       | 
       | And it wasn't even intentional. The software existed for almost
       | two decades before the commercial company. The commercial company
       | sprang up because the open source authors needed paychecks for
       | all the support they were doing. And also a bunch of companies
       | were selling Sendmail consulting. So they figured people would
       | rather buy consulting from the people who actually make the
       | software.
       | 
       | Sadly, it didn't work out. The company was acquired for a loss to
       | the investors.
        
         | vmarshall23 wrote:
         | Heh. I actually replied below before I saw this, but the
         | sendmail.cf file immediately popped into my head when I read
         | the post's subject line.
        
       | DesiLurker wrote:
       | Isn't it everywhere?
        
       | chovybizzass wrote:
       | is that why i'm tired of programming after 25 years?
        
       | vmarshall23 wrote:
       | sendmail.cf
        
       ___________________________________________________________________
       (page generated 2021-05-24 23:00 UTC)