Hacker culture fundamentally contradicts with capitalism in their principles; capitalism is based on surplus value, while hakcer culture is based on communist values: collectivization (of program code) and revolutionary action.

How the UNIX philosophy favors capitalism

The UNIX philosophy is a philosophical guideline for software development that was formed in the 1970s; it formed because hardware resources in all computers were minimal during that period. An important detail (that is not mentioned) is that computers were under the influence of capitalism. The lack of hardware resources favors capitalism; because it demands that the consumer must buy more hardware.

This means that computers developed under capitalism necessitates arbitrarily gradual increments in sold computer hardware. It is in this system that the UNIX philosophy forms. Practice is directly related to theory; so the resulting theory of capitalist computers in the past is the UNIX philosophy.

So, capitalism subverts hacker culture by favoring profit over technology. LISPs (and by extension LISP machines) have a cultural association with hacker culture due to being efficiently flexible. (I wouldn’t be surprised if there was or are propaganda against LISPs and LISP machines as a result.)

Hence, the UNIX philosophy was heavily promoted to fight against hacker culture.

“Write programs that do one thing and do it well.”

This allows the capitalist to easily profit by selling each program under the guise of being efficient due to the UNIX philosophy. Base UNIX tools could have a heavy expense, while more complex programs with redundant functionality have a cheap expense.

LISP machines…

Lisp machines are general-purpose computers designed to efficiently run Lisp as their main software and programming language. Lisp is an efficiently flexible language that is fostered in hacker culture; LISP’s read-eval-print-loop promotes collectivization through interactivity.

Lisp machines are technologically superior in efficiency and flexibility as a result.

…promote socialist values.

Collectivization

LISP promotes collectivization (of program code) to the person through the read-eval-print-loop (REPL). A REPL promotes interactivity and experimentation, an environment were a person can freely learn at their own pace.

Revolutionary Action

LISP promotes revolutionary action through (the interactivity of) the read-eval-print-loop (REPL). This seems absurd, but think it.

Compilers that do not use a REPL result in programs that can only compiled machine code. Program code is difficult to reverse engineer without the source code; because the source code is often converted to machine code. The result is that programming languages that lacks runtime interactivity dissuade socialist values in users. The user cannot freely tinker with the program code without the program becoming unstable.

Users of compiled programs, formed with languages designed to soley be executed, are dissuaded from collectivizing machine code in the program and utilizing revolution action to improve the material conditions to achieve goals; even when the program’s source code is open.

For example: C is a popular programming language in operating systems; because it lacks interactivity. Open source code often works against the capitalist’s advantage, so they close the source code to prevent the proletariat from freely copying the source code and compiling it themselves.

Although the Linux kernel is free and open source, there is still a contradiction between the program code and the user. The program code runs independently of the user because it was not designed with interactivity in mind.

…contradict capitalism’s principles.

Profit forms the base of capitalism.

Developing high hardware resources for computers are expensive investments; therefore capitalism promotes minimalist hardware resources to increase profitability. LISP machines were expensive to the consumer because more labor needed to be invested in them.

LISP machines are technologically superior in efficiency and flexibility (due to being a list processor and the REPL); but capitalism demands halting development for profit; and Lisp machines were only expensive to build because developing good computers works against the capitalist’s profit.

Summary

The UNIX philosophy seems to be a mostly corporate philosophy that carries a reformist message; a philosophy to weakly justify the lack of hardware resources in computers developed in capitalist countries, and distract the proletariat from real change. The present material conditions work against the UNIX philosophy; yet it’s still promoted as being efficient.

LISP contradict capitalism’s principles because it’s based on socialist (arguably communist) values: collectivization and revolutionary action. LISP promotes these values through the REPL and favoring linked lists.

I suspect that the UNIX philosophy is intentionally promoted by the capitalist to slow the inevitable development and use of LISP and LISP machines. (This idea hasn’t been confirmed.)


So what do you think of this? I’ll probably append more details in the future.

  • HaSch@lemmygrad.ml
    link
    fedilink
    arrow-up
    7
    ·
    2 years ago

    As a militant Linux user, I got a few hours into learning Lisp some time ago, and it is as you say: It is superior to non-Lisps in performance and elegance, it improves your coding practices and understanding of what you do, and I have seen people do a lot of cool things with it (notably the first AIs were developed using it). I just wish it was in higher demand, because right now I have to pay my rents in SQL

      • FuckBigTech347@lemmygrad.ml
        link
        fedilink
        arrow-up
        7
        ·
        2 years ago

        I’m curious which AES country will be the first to implement free/libre software laws into their constitution. It will have to happen sooner or later, as not having access to source code or the necessary tools around it to build the program is equivalent to having a machine that can’t be serviced. My bet is on PRC.

  • MexicanCCPBot@lemmygrad.ml
    link
    fedilink
    arrow-up
    6
    ·
    2 years ago

    Interesting. I’m kind of a programming noob but I take it that LISP is a very early interpreted programming language that was originally made to run on hardware optimized for this very language, am I correct? I do agree with the main message regarding closed-source software and compiled code. It’s the software equivalent of a non-serviceable device. An unrepairable and un-upgradeable commodity. When the company behind it decides to stop supporting it, it will start degrading into obsolence, prompting you to buy the new version. Open-source and interpreted-language software should be the way of the future under socialism.

  • MellowGamer1309@lemmygrad.ml
    link
    fedilink
    arrow-up
    6
    ·
    2 years ago

    An interesting perspective. I can tell you’ve put a lot of thought into this. I agree with a few of the points you made here, but I take issue with others, namely your portrayal of the UNIX philosophy.

    The UNIX Philosophy

    The UNIX philosophy is usually expressed with the maxim “Do one thing and do it well,” but that doesn’t tell the whole story in my opinion. The idea behind the UNIX philosophy (as well as software minimalism, suckless programming, KISS, etc.) is to create small, simple, modular, and reusable programs whose ouput can be the input of other similarly small, simple, modular, and reusable programs. This is referred to as a “pipeline,” where the output of one program is “piped” into another. To quote the Wikipedia page, “The Unix philosophy emphasizes building simple, compact, clear, modular, and extensible code that can be easily maintained and repurposed by developers other than its creators. The Unix philosophy favors composability as opposed to monolithic design.” That is to say building a complex program with a bunch of preexisting simple programs instead of building a complex program completely from scratch. To use a literary example, compare reading a dense stream-of-consciousness-style wall of text with no punctuation to reading a work with clearly defined chapters, sections, and paragraphs. I don’t think hardware limitations factored into the UNIX philosophy, though it may be possible.

    As for the profit motive surrounding the UNIX philosophy, I’m unaware of any examples of UNIX-philosophy-abiding software toolkits being sold piecemeal. As far as I’m aware, UNIX was distributed as a single package.

    For a more in-depth look, you might be interested in reading The UNIX Programming Environment, an introduction to the UNIX toolkit and the UNIX philosophy written by people actually involved in the development of UNIX.

    Lisp and Lisp Machines

    Lisp and the Lisp derivatives like Clojure and Scheme are an interesting family of languages. I don’t have any hands-on experience with Lisp myself, but I’ve heard it’s proponents laud it’s many benefits. As far as I know, Lisp was originally made for AI development, and you can kinda see that in the design of the language since the programs themselves can be used can be used as data for other programs.

    Lisp machines came about due to the hardware demands of running AI programs on the standard computer hardware at the time, which was designed with other languages in mind like Fortran. This led to the creation of machines that were specifically tailored to the Lisp programming language. However, Lisp machines aren’t technologically superior anymore and are no longer relevant since general-purpose computer hardware has been able to run Lisp programs faster than Lisp machines for decades and have since fell out of use. There’s really no more use for Lisp machines.

    REPLs

    I don’t think REPLs are all you make them out to be. Useful, yes, but I see them as being primarily useful for debugging by running your code line by line to make sure every line does what it’s supposed to.

    A REPL promotes interactivity and experimentation, an environment were a person can freely learn at their own pace.

    Someone could freely interact with a programming language without a REPL. They’d just have to recompile whatever code they changed. And Lisp itself is a compiled language, it just also has an interactive environment.

    […] C is a popular programming language in operating systems; because it lacks interactivity.

    The C programming language is so popular for operating systems because the language itself is so simple and it’s close to the hardware. Operating systems go between the user and the hardware, so they need to be able to talk directly to the hardware to allocate resources to programs. C, whose development was closely tied with the development of UNIX, was designed with similar principles in mind. That is, having a small feature set and instead having an extensive software library that can be imported when necessary. That’s why you have to import stdio.h before you can even print a Hello World.

    Although the Linux kernel is free and open source, there is still a contradiction between the program code and the user. The program code runs independently of the user because it was not designed with interactivity in mind.

    That’s where its being FOSS comes into play. If the user of a FOSS program doesn’t like what it does and wants to make changes to it, they have the freedom to do so. They just need to acquire the source code, make their changes, and compile the source with the changes. I don’t fully understand what you mean by “interactivity” in this context.

    You make a few good points. Computers and the Internet were designed with free software, open protocols, and cooperation. I would say they were even designed for those very aspects as well. Of course capitalism has to shoehorn the profit motive everywhere at the expense of everyone, and technology is certainly no exception. I believe this tweet sums it up pretty well.

    Sorry for the TED talk. I know I’m probably coming across as contrarian, and no offense, but it feels like you’re trying to apply a revolutionary message where there is none. I’m not trying to shit on you for making a dialectical analysis. I know next to nothing about diamat myself, and I’m still just a beginner to Marxism. I’m just someone with a CS degree, limited software development experience, and a lot of strong software opinions (this is rambly enough without going into web3 and blockchain 🙃).

      • MellowGamer1309@lemmygrad.ml
        link
        fedilink
        arrow-up
        3
        ·
        edit-2
        2 years ago

        I’ll concede I may have been unfairly dismissive of Lisp and Lisp machines. I’ve done a bit more research into the area, and I’m beginning to see the level of interactivity and customizability offered by the platform that you were referring to. Pretty neat stuff. It’s clear that Lisp is something you’re passionate about, and I’m sorry if I gave offense. I’m still unclear on a few of your points, though.

        Could you expand on what you mean by collectivizing source code? How exactly do REPLs factor into that?

        People can’t freely interact with compiled program code without a REPL; they would have to destroy the generated code and recompile programs in order to change the program.

        Surely once a program is compiled you can’t interact with it with a REPL, right? It would just be machine code at that point. I thought REPLs worked by reading the source code. That way the programmer would have a better idea of what their code does before they compile it.

        If the program code to run hardware was integrated in a REPL; there wouldn’t be a need for an operating system.

        What do you mean by this?

        As for Lisp machines, I was originally under the impression they were just a different type of computer optimized for a different language because of hardware constraints at the time. I would think that due to the advances in general purpose hardware, the performance gains of such uniquely optimized hardware would be minimal. I was previously unaware of the customization options they offered even down to the hardware level. Are there any modern examples of Lisp machines outperforming similarly specced general purpose computers, or are they geared more towards customization and interactivity?

        Leaving Lisp alone, I still disagree with your stance on Unix and the Unix philosophy.

        UNIX promotes cooperative modularity; which provides capitalists the opportunity to extract profit to use them.

        Having small programs uniquely suited to a single simple purpose cooperating to acheive a complex goal sounds more collectivized to me than designing a single unwieldy program from scratch to acheive the same goal. Think about it in terms of people. In my mind, a socialist society would acknowledge that everyone has their strengths and weaknesses and utilize them accordingly. Capitalism, on the other hand, would rather everyone be a Swiss army knife capable of everything. Case in point, the “10x developer.” I can speak to this anecdotally as I’m currently looking for a career in software development. You hardly ever see companies looking for just an SQL person, or just a backend JS person, or just a frontend person. They almost always want someone who knows everything. The capitalists extract profit from everything they can, and Unix is not unique in that regard.

        UNIX was designed for the capitalist, which is why all the tools were free. If UNIX was designed for the average person, then there would be a pricy markup to buy the tools. Well UNIX would be useless at that point; but that doesn’t stop capitalists from selling useless BS that doesn’t work […].

        I don’t understand your line of reasoning here. Wouldn’t something meant for the capitalist be prohibitively expensive from the start because only they would be able to afford it, thus keeping it out of reach of the average consumer?

        I don’t think hardware limitations factored into the UNIX philosophy, though it may be possible.

        It did. The Economy and elegance of design due to size constraints (“salvation through suffering”) is one of the foundational principles of the UNIX philosophy.

        I’ll admit I was wrong regarding hardware considerations in Unix’s development. But is there anything wrong with that? You make it sound like being frugal with hardware resources is a bad thing. The developers were able to do what they wanted with Unix in spite of the hardware constraints of the time.

        The lack of hardware resources and capitalism’s refusal to improve hardware formed the UNIX philosophy.

        I don’t understand the point you’re trying to make here. How did Lisp machines happen if not to address perceived deficiencies in existing hardware? And if capitalism refuses to create better hardware, then how do we have better hardware today? How do personal computers exist? Wouldn’t we still be using massive punchcard mainframes?

        What I’m saying is that there is a possibility that the capitalist could have profit off selling modular programs as independent programs.

        Again, unsure what you’re getting at here. The possibility of modular programs being sold piecemeal even though (AFAIK) they weren’t makes the Unix philosophy a corporate philosophy?

        Supposing the Unix philosophy is a capitalist philosophy, as you propose, what is the alternative? Large, unwieldy, monolithic programs with massive feature sets and no interoperability? To me, it makes more sense for a capitalist to sell those types of programs and continually tack on new features than it would for them to sell a toolkit of modular, easy to use programs once (or even piecemeal) and the developers making their own programs with them.

        This quote from The UNIX Programming Environment puts it very well:

        Even though the UNIX system introduces a number of innovative programs and techniques, no single program or idea makes it work well. Instead, what makes it effective is the approach to programming, a philosophy of using the computer. Although that philosophy can’t be written down in a single sentence, at its heart is the idea that the power of a system comes more from the relationships among programs than from the programs themselves. Many UNIX programs do quite trivial things in isolation, but, combined with other programs, become general and useful tools.

        That sounds pretty darn collectivized to me, and possibly even dialectical.

        Again, I’m sorry if I’m coming across as rude, comrade. That’s not my intent. And I don’t disagree with you on the utility of Lisp. From what I’ve seen it’s capable of a lot of cool stuff, and modern Lisp machines would be an interesting tool. And thank you for showing me those Lisp OSes; I didn’t know any existed. Hell, I’m half-tempted to learn Lisp myself since I have some ebooks on some different Lisp dialects that I’ve never read. My main point of contention with your OP is what I saw as your misrepresentation of Unix and the Unix philosophy. I just want to clarify how I see Unix and the Unix philosophy. In the end, I guess it just boils down to opinion: I am quite fond of Unix-like systems whereas you may not be. We can both have our own opinions, and neither of us would be wrong for having them. I’m just trying to understand your reasoning while explaining mine.

    • holdengreen@lemmygrad.ml
      link
      fedilink
      arrow-up
      3
      ·
      2 years ago

      Isn’t like 90% of Linux just drivers? That’s what really makes it useful imo.

      I think the UNIX philosophy applied to kernels would be microkernel and that would be cool.

      • MellowGamer1309@lemmygrad.ml
        link
        fedilink
        arrow-up
        3
        ·
        edit-2
        2 years ago

        That sounds familiar. I do remember hearing the majority of the code in the Linux kernel is drivers. I don’t recall a specific percentage. I assume it’s a similar story with Windows and other kernels. But yes, rigorously applying the UNIX philosophy to kernels I think would mean devolving their functions into separate modular parts. That said, I don’t really have any gripes with Linux in that regard.

  • Cysioland@lemmygrad.ml
    link
    fedilink
    arrow-up
    4
    ·
    2 years ago

    Within an open source system the UNIX philosophy doesn’t necessitate selling more software. It’s about separating the big application into small, self-sufficient atoms. The core example are the GNU coreutils: you have a bunch of small executables that each does its own thing and does it as well as it can. So if you want more things to be done you just call the executables one after another, piping the data between them. All of these small utilities can be distributed as a single software package, like coreutils do.

  • holdengreen@lemmygrad.ml
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    2 years ago

    I’ve been meaning to actually learn LISP properly… I use Python for most things because it’s just so practical. How useful is LISP irl? How would you recommend learning and using it?

      • holdengreen@lemmygrad.ml
        link
        fedilink
        arrow-up
        2
        ·
        2 years ago

        Does lisp have ffi? What features does it support compared to other languages like C/C++ and Python and more modern languages?

        Does it have a bunch of great libraries like Python?

        I see projects like GNU using it and I want to use it myself but it has just never been a necessity for me to use it so I need to carve out some time to study without a specific application.