1. 2

The BMI instructions are pretty cool, they’re also used in finding Minimal Perfect Hashtables for sliding attacks in Chess Engines via ‘PEXTBoards’ – which themselves derive from Magic Bitboards (which are also pretty cool).

1. 7

If by ‘rewrite’ you mean jump back in time and be in charge of making (that is, if I’d have to actually do the work and live with the consequences of that world), I would replace C with a C that didn’t have null, had a string type, and probably have objects. It’s the obvious answer, it’s probably going to be a good thing for everyone else on the list, and while I don’t think I’d like living pre-internet, I’d be okay to take the hit for the team.

If by ‘rewrite’ you mean magically replace something that exists now with something changed, I think I’d probably rewrite the MIT license to be this ungodly poisonous copyleft thing and watch the world burn.

1. 4

Don’t forget 64-bit timestamps!

1. 2

I did not do well in college physics, but shouldn’t any perfectly insulated heat plate with a heat source eventually converge to 1.0 everywhere? Without any heat sinks, shouldn’t it just keep getting hotter and hotter until it matches the temperature of the source?

1. 2

I think so, but the examples used aren’t that – that would be equivalent to a Dirichlet condition where all the edges are pinned to 1. In the examples given, only 1 edge (the rightmost) is pinned to 1, and the other edges are all 0s, so there are sinks available (at least, that’s how I interpreted it).

1. 1

The Dirichlet example I agree makes sense. I was thinking more of the later examples where the 0 derivative edges are simulating a perfect insulator.

1. 2

what is the significance of 128 days? (The grace period after a business stops being “small”.)

seems like an oddly specific amount of time.

1. 2

I think the license author just liked powers of 2 (later they use `32 days` as well).

1. 2

Sizedness is lowkey one of the….

I’m a native english speaker and am around 20-somethings incessantly, but still wonder, what does “lowkey” mean in this sentence?

1. 3

“Not often talked about,” I would guess.

1. 2

I’ve generally seen it used in a more personal way, as in, “This isn’t often talked about, but I think it should be.” It can also be used to mean ‘secretly.’ So we might translate the above to `Sizedness is secretly one of the most important…’

In this article I think the author is using it in something between those senses. Pointing to Sizedness as an under-represented topic in the Rust community. Lots of focus on the borrow checker and memory safety and other such, but not that.

1. 14

All these folks out here noting that sum types existed in ML or Swift or F# or w/e. Who cares, this person found a cool thing that they like and I, for one, am happy for them. The fact that they came across them in Rust first only means that they will be extra excited to find them in Haskell later.

Maybe just be happy for them and read a pretty good article about sum types.

1. 4

The fact that they came across them in Rust first only means that they will be extra excited to find them in Haskell later.

That’s why (many) people point out the history, because we are excited to share it and spread the excitement. Of course, to a certain extent we also want to give proper attribution where it’s due, because our field really sorely lacks it sometimes.

1. 4

I think every discipline cares about it’s tools. Humans are tool-users, it’s literally what separates us most from other animals. I know that when I practice music, I care deeply that the tools I’m using are allowing me to make the most efficient and dexterous motions possible. I care a lot about the typeset of the sheet music and the quality of the strings on my guitar. So I don’t think it’s unreasonable that programmers spend time looking for good tools to amplify their ability in programming any more than I think it unreasonable when guitarists care about which brand of strings they like (Ernie Ball Aluminum Bronze, 13-56 is the only correct answer, I am not taking comments at this time) or what kind of pick they use.

It’s true you can overfocus on those things as an excuse for poor practice habits, but they aren’t irrelevant – an uncomfortable pianist is likely to play worse than a comfortable one!

1. 8

I’ve had the experience that whenever I created such a file where the name “doesn’t matter”, I ended up stumbling across it some time later and I had no clue what it did and why it was there. I then had to open it and think about why it was there. And don’t get in the habit of deleting files with weird names, next thing you know is you’ve got some data loss or outages on your hand. Give your files names, even if it’s just `ThisFileCanSafelyBeDeleted.txt`. You won’t regret the additional 2 seconds you spent, it will pay for itself even if you just prevent confusing yourself once in your entire life.

1. 3

This might speak to the hostility of the architecture I inherited more than anything, but if I saw a file named ‘ThisFileCanSafelyBeDeleted.txt’, the last thing I would do is delete the file.

That said, I do tend to name vmware snapshots something similar – usually something like ‘delete after DD-MON-YYYY - jgf’ so people know who made it, how long I needed it for, and whether it’s safe to delete. Your idea is similar and quite good, maybe if I can break through the gaslighting from my arch I’ll adopt it.

1. 1

I usually make `tmp/` in my working directory if I need it, then name files in there whatever I want.

Unfortunately in college I thought it was funny to name my scratch files `loldongs` and the habit has stuck. I’m not proud.

1. 1

99 times out of 100: `notes`, all other times are some variant of the usual metasyntactics: foo, bar, baz, tmp, etc.

EDIT: Had a coworker who named everything he didn’t have a better name for ‘chicken’ – if he had multiple, I think he’d go with other farm animals. That was more for classes than for files though.

1. 29

One my friend noted that many people think that the UNIX principle is “do one thing”, while its original wording is “do one thing, and do it well”. So many “lightweight” projects indeed don’t do anything especially well, and then it doesn’t matter whether they do one thing or many. Size by itself is not an advantage.

1. 19

I’ve always found that ‘one’ thing is a bit ambiguous. You can argue that ‘converting file formats’ is a single thing just as well as ‘converting png to bmp files’ is one thing. People probably expect something in the middle, e.g. ‘converting images’. In practice, many programs will also allow you to resize, clip, rotate, etc.

So maybe ‘clearly define your scope’ is a better alternative to ‘do one thing’. Not as catchy, of course.

1. 5

Good point. In my mind, VLC does one thing. But of course it does a lot. I mean it can even show videos on a chrome cast. It exists on pretty much all major platforms and now to contradict myself I’m not sure if it does one thing… I’m just confused.

Does OBS do one thing? I’d say so but it has a lot of uses: like you can even use it as a virtual camera…

1. 5

Almost no GUI does “one thing” because very few platforms come close to cracking the nut that is GUI composability.

1. 3

Which do you think come close?

1. 2

Sometimes the web comes close. Depending on how you use it, smalltalk can. Maybe by “close” I should say “closer than anyone else”. We need to do better.

1. 2

I think many browsers come close. Netscape. IE. Opera 3-12 wanted to do many things, but you could disable all but the browser components. Today, it’s browsers like Dillo, NetSurf, and Links. My favorite browser today is great too, but it might as well be textmode…

SimpleScreenRecorder is amazing, and does no more and no less than it promises, unless you count partial screen recording as a different thing.

Audacity is great.

ScreenKey.

1. 3

I’m sorry; I should have been more clear. I meant which platforms come close to cracking GUI composability.

1. 3

Looking only at GUI composability and nothing else, I’ve yet to see anything come close to how good Visual Basic is, and I’m talking about VB3 - VB6, not newer stuff. VBA falls under this umbrella as well, though Office integration complicates things a bit.

As far as what’s available, relevant, and floss today, you’re looking at it, it’s HTML, JS, and CSS. If you try my website, it works in 25 years worth of browsers. I’ve tested it on Windows 95 and up, and I’m confident it would work in Windows 3.1. It works (in compat mode) in IE2 on NT4. It also works in textmode browsers and with various accessibility useragents such as screenreaders. It’s zoomable, resizable, and modifiable.

It’s written by one borderline-idiot but very determined programmer, working part time, over the course of a couple of years. A roomfull of Googlers could rewrite it in 36 hours, probably. Why don’t they? I don’t know, but I would be embarrassed to have anything to do with most of today’s mainstream Web properties. If I could put today’s Gmail or Reddit on my resume, I’d probably leave it off out of shame and pad the time with something else…

But neverthless, the Web itself remains, and so does the freedom to write compatible code.

This wonderful, miraculous platform has remained stable enough over this time for me to be able to plan ahead and not be caught off-guard by something like “we’re deprecating version 2.0, please use new version 3.0 syntax” or “your platform is now obsolete, please switch to the new HTML.NET”. The W3C gang tries, and they fail, because HTML is stronger and bigger than them. The Web is stronger and bigger than all of them combined.

Many have tried to contain it, to own it, to be the main one calling the shots, and HTML laughs in all their collective faces. All thanks to its basic concept of “be strict with yourself, and accepting with others.”

Mosaic was the first browser for which “best viewed with” buttons were used. They failed to own the Web. Then came Netscape, “Mosaic killa”, and they managed to kill Mosaic, but they failed to tame HTML, because HTML will not be owned. Netscape was destroyed by Microsoft-IE, who also wanted to tame and own HTML, and they also failed, because HTML is not ownable.

Then Firefox came and fucked up IE, and things were good for a while, Mozilla was a decent steward. Then Google came and took ownership of Mozilla, and together with Chrome they also tried to tame HTML. They will fail just like the others. HTML cannot be tamed or owned. The Web was built for freedom.

If you want composable, future-proof GUI, open up your notepad.exe and write this:

``````<html>
<title>Hello, World!</title>
<body>
<h1>Hello, World!</h1>
<p>
This is demonstration of proper composable,
future-proof, accessible GUI.
</p>
<form action="/">
<input type=text size=80 name=comment>
<br>
<input type=submit value=Go>
</form>
</body>
</html>
``````

This GUI will work as expected and render in 25+ years worth of platform. And it could have been composed by a 10-year-old.

2. 2

I’ve generally thought of the “Do one thing” more as “Answer one question, and answer it as completely as possible.”

So if the question is “How do I convert an image to another format.” then an image converting tool should try to completely answer that question. VLC falls into that model much more easily than the ‘do-one-thing’ version. Same thing with Vim or Emacs or VSCode – all different, but fairly complete answers to the question of “How do I efficiently edit text?”

That model helps with the ‘clearly define your scope’ mentioned by @rustybolt fairly effectively, though it is subject to some of the same problems as ‘do one thing’ (“What question should I try to answer?” is a very natural way to break this rubric), but overall it seems to avoid at least some of the problems of the D1TW axiom.

2. 9

I would add “and play well with others” to that Nix maxim. That’s generally not a problem in the Nix world from what I’ve seen but it’s important to keep in mind: focusing on doing just one thing often means the users has to depend on several pieces of software to accomplish and they need to work well together.

1. 11

I am a big fan of Posits, which are the culmination of a year-long research effort in the field of ‘Unums’ which I was a part of with my Bachelor’s thesis. I analyzed an earlier approach based on interval arithmetic, which proved to be not so good, but if you are interested in the mathematics behind the “number circle” (i.e. the real numbers with just one infinity, which posits also make use of), definitely check out chapter 3.1.

You might think that you lose something with just one infinity, but this is not the case! Even mathematically, you can express almost everything in infinite limits by approaching the infinity from below or above. Even cooler is that you can divide by zero and by infinity, and it’s all well-defined (see Definition 3.1 on page 17) and proven in this thesis.

There are still invalid expressions (i.e. ∞+∞, ∞∞, 0∞, 0/0, ∞/∞, ∞/0), but the overall mathematics is much cleaner than the mess that we have with IEEE floating point numbers (see Definition 2.3 on page 3), which are cumbersome to use because of the subnormal number-“hack” and the many NaN-expressions.

Regarding @olliej’s remarks: I’m a numerical mathematician and have never seen a case where one would need a signed 0 in an underlying algorithm where this isn’t just the IEEE-way to do something (but I might just be ignorant), but we can definitely agree on the signed ∞, which takes getting used to and requires more consideration in algorithm design. NaNs have one useful property, namely that when there’s an invalid calculation the error-state is propagated meaningfully. However, we waste a lot of space with NaN (see Table 2.1 on page 8, especially for low-precision floating-point numbers, where we waste 3.12% of available space for NaNs for half-precision (16-bit) floats that are very relevant for graphics cards), even though we only need just one NaN at most. Gustafson proposed other methods of error handling.

To give my final remarks: We’ve been working with IEEE floating-point numbers for a long time and the entire ecosystem has been built around their many deficiencies. Proposing a new machine arithmetic format is as crazy as trying to boil off the ocean, I agree, but despite not having received decades of optimiziations in hardware, Posits as a new concept show so many extremely promising and impressive properties. It not only ‘works’ mathematically, where they are very simple and elegant to work with, but they also have massive advantages for hardware implementations, because they are much simpler to implement in silicon and might actually turn out to be much faster.

Let’s see what the future brings.

1. 5

I work on a programming language for computer graphics. I’m not a numerical mathematician, but there’s a lot of floating point in my project, and my code is tightly coupled to IEEE float semantics. (A lot of code would be rewritten to switch to Posits, probably.) Also, I have opinions.

I use NaN boxing to efficiently represent boxed floating point values. I stole the idea from Google’s V8 Javascript implementation in the Chrome web browser, but I think Firefox uses the representation as well. It would be cool if there were an analogous technique for Posit numbers, where a 64 bit word can represent either a pointer or a float. Perhaps you could use 64 bit Posit hardware to efficiently perform arithmetic on 63 bit posits, where the missing bit is used as a flag to indicate if the value is a posit or a pointer. That would be good and useful if that could be worked out.

The fact that NaN != NaN in IEEE float is an atrocity. The standard equality operator in my language is an equivalence relation, where a==a, and that is not negotiable. William Kahan would not approve of my solution, but my language is not meant for numerical mathematicians.

The fact that 0 == -0 in IEEE float arithmetic is a nuisance, from a programming language semantics perspective. @icefox posted a link showing that it is causing problems for Javascript language designers as well. It’s a problem I can live with though. I can allow this without breaking the equivalence relation axioms.

My language supports both finite and infinite geometric objects, and the language depends on the properties of inf and -inf to represent these infinite objects. I don’t know how this would work with Posits. Maybe I could use an affine representation for points and vectors, but that is a non-backward compatible API change.

I’m not too worried about ever having to deal with these issues, since it would require ARM and Intel processors and consumer class GPUs to drop IEEE and switch to Posit before I had to do anything.

1. 1

This thesis looks much more readable than the article. I really like the idea of novel arithmetical systems, it’s definitely an uphill battle to implement, but it’s worthwhile since the alternative is “We’ve tried nothing, it didn’t work, and now we’re out of ideas” is pretty lousy.

I would definitely like to hear from @olliej on what algorithms may need +/- 0 or infinity that may not be adaptable. Not because I think they’re wrong or trying to mislead, but because if that truly is the case there is likely to be a lot of interesting mathematics there.

1. 3

Honestly pretty put off by the unnecessary ‘religion’ metaphor. Made it pretty hard to follow the whole thing.

1. 2

Therapy.

I started going to therapy about 2 years ago. It has been, no question, one of the most profound sources of change (for the better) in my life since becoming an atheist nearly 15 years ago. I’ve had trouble with anxiety and fear dictating a lot of my life, and preventing me from doing, saying, or just being things I wanted to be; Therapy has radically altered my relationship with those feelings in a way that seems trivial at first, but in reality is deeply elegant in the sense of mathematics.

Therapy provides a perspective which you can, after sufficient due-diligence, entirely count on to be consistent and explicit about it’s pre-existing biases. That simple provision – knowing that there is at least one person who will not bullshit you, nor allow you to bullshit them, is such a useful tool for efficient introspection; the best analog I have is it’s pair programming for your own mental operating system. Refactoring your own mind to better serve your interests is at first a little scary, but the results cannot be argued with. I feel less terror at the things that would leave me apoplectic. I feel more in control of who I am and what I do. It’s honestly just the fucking greatest. I heartily recommend it.

(This not to say it’s for everyone, it’s also not a cheap endeavor (though many therapists provide sliding scales in terms of cost), but if you can spare it, it’s worth the money IMO. If I had my druthers, it’d be on offer for everyone, for free, but I’m a filthy Communist, so take that for what you will).

1. 2

I was originally planning on working on the open-sourcing my framework for building distributed systems, Encore. Unfortunately my MacBook display broke down (a bunch of purple lines across the screen) so need to spend the weekend getting it repaired and setting up my dev environment on another machine. Fun times!

1. 1

I’m basically the least lucky guy on the planet and have computer issues constantly, the best thing I ever did was migrate to using a VM for a Dev environment. I can get a more or less full dev-laptop experience, but it’s easier to back up, easier to replicate to other machines if my main one dies, and generally just pretty much the-universe’s-attempt-at-a-better-idiot-proof. Heartily recommended.

1. 9

Zen’s claims seem sketchy.

1. “We cannot see a future for Zig where the founder does not allow corporate entities to use and support Zig” — unless I really missed something, there’s nothing in Zig’s licensing or community against that.
2. OK, they have a point here; I also feel that polymorphism is important. (That was one of several missing things that led me to stop exploring Zig. The other one being lack of a global memory allocator.) But that of course is only a rationale for forking, not for going closed-source.
3. IANAL, but I know that trademarks are very domain-specific. Would the existing “Zig™” trademarks cover a programming language/compiler? Is “Zen™” any more available?
4. “we want to prioritize embedded development” — other languages, notably Rust, have been able to accommodate embedded systems without a hard fork. (Not sure if MicroPython / CircuitPython count as forks or not.)
1. 12

That entire list just seems like a post-hoc rationalisation of “I don’t like to work with Andrew”. That’s actually fair enough; sometimes people don’t work well together based on different interests, personalities, differences of opinion, etc. but just be honest about it instead of all this FUD.

1. 5

“We cannot see a future for Zig where the founder does not allow corporate entities to use and support Zig” — unless I really missed something, there’s nothing in Zig’s licensing or community against that.

I’m reminded of the old saying, “A lack of imagination on your part does not constitute impossibility on our part.” Taking the premise that Zig doesn’t ‘support corporate entities’ as true (which I do not think is the case) – Just because a company can’t imagine a future for a language that doesn’t support companies doesn’t mean that there is no future.

1. 4

zig is already ideal for embedded development. zen has no value-add there other than translating the docs into japanese.

1. 3

Maybe they are offering support contracts zig does not?

2. 5

Some interesting info over at the orange site too. Apparently Zen/connectFree is trying to register Zig as a trademark?!

1. 4

It reminds me of something similar which happened with Linux a long time ago:

The Linux trademark is owned by Linus Torvalds in the U.S.,[2] Germany, the E.U., and Japan for “Computer operating system software to facilitate computer use and operation”. The assignment of the trademark to Torvalds occurred after a lawsuit against attorney William R. Della Croce, Jr., of Boston, who had registered the trademark in the US in September 1995[3] and began in 1996 to send letters to various Linux distributors, demanding ten percent of royalties from sales of Linux products.[4] A petition against Della Croce’s practices was started,[5] and in early 1997, WorkGroup Solutions, Yggdrasil, Linux Journal, Linux International, and Torvalds appealed the original trademark assignment as “fraudulent and obtained under false pretenses”.[5] By November, the case was settled and Torvalds owned the trademark.[3]

The lesson is to register the trademark early, before someone else does and begins to use it against you.

1. 4

The lesson is to register the trademark early, before someone else does and begins to use it against you.

It’s not really as simple as that.

1. There are a lot of different jurisdictions around the world.
2. Registering a trademark is not free (there are generally fees, in addition to the time and knowledge required to do it. For foreign jurisdictions, you may need the services of somebody who speaks the language and understands the legal process to acquire a trademark)

So yes, if you have a moderately successful project, it may make sense to trademark the name in your own jurisdiction, and possibly a few other key areas, but it’s by no means something that everyone should do early on, especially for projects which have no idea that they will grow into something big.

An alternative lesson from that story would be that registering your trademark early is not that important, because using a name outweighs registering it anyway (though doing both will probably save you a legal battle).

2. 2

There was some Japanese company (a sort of programming class) that was able to get a trademark on Python and would claim that they were the only ones allowed to do “Python training certification” with it…. really shady stuff when you see this sort of thing going on

3. 4

Just to be clear, is Zen violating the MIT license here by replacing it with their own license?

If so, then at the moment it wouldn’t make a difference if Zig were licensed under the GPL, Zen is currently violating copyright law and Zig could sue. Presumably Zig is not doing so because they don’t think it’s a good use of their time and money, and these public posts warning about Zen’s bad faith actions should achieve most of what they want, i.e. preventing people from getting scammed.

Personally I think that A/GPL licenses specifically and copyleft in general deserve more popularity with new projects than they currently enjoy, and I avoid permissive licenses in my own work, but this may not be the time to bring it up.

EDIT: According to a random comment on HN, “They are complying, the original Zig license is at the bottom of the file lib/zen/std/LICENSE (complete with “Copyright (c) 2019 Andrew Kelley”). I just downloaded it from the Zen website, and the tarball is dated 2020-09-04.”

1. 5

The BSD license (some of them anyway, there are a gazillion variants) is actually a bit clearer on this:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

With “retain” it seems to mean more “keep this notice here”, rather than “stuff it somewhere in the project”.

1. 1

This reminds me a little bit of the `-etic` and `-emic` distinction from (among other things) linguistics. The idea of studying something from the outside looking in (phonetics studies how different sounds are used to communicate across languages / “From outside” the context of a language) and from the inside looking out (phonemics studies how a particular language uses sounds to communicate).

I think the rhyme here is found in the intrinsic/extrinsic distinction – a ‘losers’ game is won due to extrinsic (outside our control) factors, just like phonetics studies how sounds work separate from any particular implementation; and a ‘winners’ game is a game won due to intrinsic factors (just like phonemic studies the use of sound internal to a language).

I don’t know that there is much more relevance than the fact that these things seem similar, but it’s at least interesting enough to me to warrant a mention.

1. 52

I’m not convinced everybody hates it. I think a certain group of programmers dislike it a lot and are quite vocal about it, while the vast majority use it every day and don’t think about it too much. Even the name is somewhat misleading to me, in practice its really class based programming. I don’t think most programmers are sitting there being like “the problem with this project is the fundamental nature of this language”.

Technology loves these grand, sweeping statements of “this is terrible and this is excellent”. The truth is always more nuanced than that. I suspect many people hate OOP because they work in large OOP codebases every day that are hard to work in, because despite the fact that OOP doesn’t force you to write bad code. It turns out that’s not how humans interact with tools. For me especially the “drift” of the object I’m interacting with over time (customer becomes a different thing as the product evolves) can be frustrating. I bet if we all worked with large functional programming codebases everyday there would be a lot of conversations about how much we all hate that.

Programming is hard and I think it is great that we, as a community, are constantly trying to rework software to make it more reliable and usable. In my experience OOP in the hands of experts is easy to maintain and flexible. When less experienced people get involved in the codebase, it gets harder to work with. Right now what I see is smaller teams writing functional programming applications and being like “this is the right way to do things”. Let’s talk when they’ve been interacted with for 5-10 years by a few dozen people of varying levels of experience.

1. 13

“the problem with this project is the fundamental nature of this language”.

I think that when I have to work with JavaScript. :p

1. 5

In my experience OOP in the hands of experts is easy to maintain and flexible. When less experienced people get involved in the codebase, it gets harder to work with.

This 100%, but more general. Any paradigm, in the hands of people who understand how to use the paradigm, will be maintainable and flexible. That’s why it’s so incumbent on people who are experienced to be good and empathetic mentors to people who aren’t experienced with the paradigm.

I’ve worked, as I’m sure many here have, with just about every programming mentality around, and none of them are any good – they’re just tools, and any tool has jobs it is suited for and jobs it is suited against. Some things naturally lend themselves to Object-based thinking, some to procedural, some to functional. I’d never want to write a OOP Theorem Prover any more than I’d want to write a procedural CMS or a functional video game. This not to say it’s not possible to do those things, but rather, I – personally – don’t find it easy to think about those things in those paradigms.

Computing oughta be a big tent, and there’s plenty of room for people to figure out what set of tools make sense for them.

PS, this goes for strong vs weak vs no typing too.

1. 3

I’m not convinced everybody hates it.

I took the title to be a fairly sarcastic comment, given the contents of the post. However, I would agree that the premise is a non-starter if meant seriously.

I think one of the biggest advantages to OOP which isn’t mentioned in the article outside of the quote he uses comes from the mental model you can use when teaching someone who has no knowledge of programming. As humans we all quite obviously interact with objects every day, whereas far fewer of us interact intentionally with mathematical functions every day.

I don’t know how many people I’ve encouraged towards programming, simply by verbally walking through something they are holding or looking at and helping them describe it as an object. You can see the lightbulbs go on as they realize this isn’t some magic, it is something they can understand. Often times, I’ll do this with a browser’s web console and offer some Javascript, not because it is the “best” language in the world, but because it is incredibly accessible as long as you have any modern web browser. What happens later down the road for them, whether they pick up a different type of language or move to something besides Javascript, doesn’t really matter in that moment, only that they were able to start the journey.

1. 1

Let’s talk when they’ve been interacted with for 5-10 years by a few dozen people of varying levels of experience.

I might be a little qualified to participate in that talk, because right now I’m working full time on a 7 year old 70k LOC Haskell codebase that has seen multiple generations of programmers where the codebase has changed hands across people who have never met each other. Some of those generations even only had juniors only. When I started, there were no Haskellers around, nor any kind of documentation. So I only had the code to stare at with the occasional comment that says `-- yeah, I know this sucks`. Mind you, this codebase had been serving customers and suffering “agile” changes in requirements with deadlines almost throughout its lifetime.

I’ve pushed my first fix the second day to a long standing problem, and started implementing new features the first week. Iteratively refactored the codebase bit by bit, never having to rewrite anything. Now after more than a year of combined refactoring, internal tooling development and new features without any pauses, I think the codebase is in a fairly decent state.

This experience made me appreciate how much beating Haskell can take and remain productive.

1. 1

I’m working on a rails app that’s in the same boat (well, 12 years and 85k lines).

Probably took me two weeks to be productive instead, and the pain of people using `define_method` with template strings is very real, but I’m astonished how far you can get on “this is a rails app, so you know where to look for everything”.

1. 2

On the topic of #5 (running commands w/o exiting vim), this is certainly a way to do it, but in my experience, it’s a lot easier to `Ctrl+Z` and background the vim job and do my stuff there. That said, this command is super useful when combined with `:r`, `:r!ls` will run `ls`, and then paste the contents into your file. It’s a nice way of pulling data into somewhere where you can screw around with it, a little bit quicker than dropping to the CL and dumping the content into a file where you can edit it.

Otherwise great tips!

1. 1

Thank you and good points! When I first started using the command line I remember learnings about backgrounding tasks but for whatever reason, it didn’t become a long term habit for me. I can’t really explain why though. Nice point about adding the command ouput into the file to play around with!

1. 76

I’m surprised this is being received this well, when it should be apparent to anyone that the license is practically unworkable, and quite sloppy in legal terms. Your source is public for the good guys, and you tell the bad guys, “don’t you use this!”. To properly enforce this, you would require user-tracking like actual propitiatory software (not that the license denies this fact), which is not trivial to begin with, and especially so for a non-commercial entity. And that’s assuming you can enforce it in the first place.

I think it goes without saying, that this should not be used for any serious project. You isolate yourself from the entirety of human software progress, and just like a revolution surrounded by adversary forces, the chances are slim that you’ll get anywhere.

Ultimately, even if you agree with the spirit of the license, you should consider replacing the moralist particularism with an universalism, such as that of the GPL. We don’t live in revolutionary times, and capitalism will (for better or worse) be a reality of our society for the time to come. Copyleft licenses are the only ones that transform “egoism” into “altruism”, that align the private interest with the common interest. In my eyes, that is far more subversive than whatever the indent is of this license.

1. 38

I don’t really disagree with your comment, but I think it misses the point a bit: this is activism, not an attempt to build a software ecosystem. Generally speaking, people aren’t too concerned with this kind of pragmatism when it comes activism.

1. 7

I get your point, but the activism begins and ends with choosing the license. After that, it would seem to me that you’ve only got the software to use, with it’s limitations.

1. 10

I can’t say I personally care much to join in either, for the reasons you mentioned as well as some others. But I’m all for people expressing their beliefs in their own ways as long as it doesn’t unreasonably interfere with other people. Personally I would phrase any criticism as “here are reasons why I wouldn’t use it/join this: [..]” rather than “this is bad”.

2. 1

For activism to be affective it needs to do something right?

This could be used by hobby projects, but the best way to spread word on this license would be to be in a useful project. As currently written it’s almost impossible to be used by any private org since it requires equal share ownership by all “workers” that includes anyone who performs work and really ambiguous. Is a company allowed to use janitorial services without giving their workers equity? Etc etc

This seems very meta until there are projects using it, and the license doesn’t seem like it will be used.

“ 3. If the User is an organization with owners, then all owners are workers and all workers are owners with equal equity and/or equal vote.”

3. 23

Exactly. Capitalists, i.e. “big tech”, avoid the AGPLv3 (and GPLv3) already, so that seems to be quite effective at preventing them from using it…

1. 20

The GPL3 licenses don’t forbid any practice or field of endeavour, and yet those organisations self-select out of the field. That makes it a much more principled and subtle tool than a license that says “boo, capital sucks”.

2. 36

To me it’s more than just unworkable, it’s goes against what I believe is valuable and good. To me it is slightly disgusting to be honest. And I would consider such license to be a step towards evil.

But that aside, I think it will only spark purity spirals between some hard-core socialists and communists, and they will start claiming infringements on one another. Which maybe is a good outcome.

1. 6

it’s goes against what I believe is valuable and good

What do you mean by that?

1. 17

Well, people here hate some of Apple or Microsoft licensing. They pull updates on you, spy on you. You don’t own the software that you bought. The way I interpreted it - this license is worse than that.

Imagine buying some software licensed under this (it allows for commerce). You don’t own that software unless you promise to live a certain way. And what is that way - you cannot make certain kinds of voluntary associations with other people (i.e. offer your services and ask for something you want in return, as that would be capitalism), and you cannot join or help the police (and wtf is that?!). If you do, you must abandon using the software, even thou you gave something in exchange for it.

I do support their right to do anything they want and write any license they want of course. But as for being involved with anything licensed under it - no thank you.

1. 42

That’s not what Capitalism is. Capitalism is an exploitative relationship wherein a class of people who own the tools and means necessary to produce enter into a forcibly non-equitable relationship with others who use those tools to produce.

What’s described there is a fair exchange between an individual who (ostensibly) owns their means of production, with another person who wants that good or service. It’s about who gets to keep the value of their labor – in Capitalism, you go to work for Charlie Capitalist at Acme Corp, you make software or widgets or whatever for them all day and generate something Charlie Capitalist can have their other employees sell – Charlie Capitalist rarely does anything directly – generating some amount of money. You can think of this as a chain of employees generating X\$ of value, in the simplest case that chain is exactly you -> capitalist, but generally it’s fairly long.

So far, so good, if you have a chain of `n` people and generate `X\$` of value – what is the proper distribution of that value? There are lots of arguments about proportional amounts of work, but for the moment let’s keep things simple and say you make a widget, and Sally Salesperson sells it for X\$, the only two people bringing value to the thing are you and Sally, so the natural expectation would be you get `X/2\$` and she the same.

But that’s not what happens, instead, you get paid some flat rate `Y\$` and Sally some flat rate `Z\$` such that `Y + Z < X`. Charlie takes the difference.

So in essence, Charlie is not paying you, you are paying him for the privilege of making Widgets for him. Because if you made them for yourself, you would split that difference with Sally and make a little (or more typically, a lot) more.

“But Charlie is taking all the risk!” Perhaps, but let’s look at a real example of a Capitalist at work. Bezos.

If Bezos, tomorrow, wanted to try a new venture, and invested 100 million of his own dollars into it, is Bezos really taking any risk? I mean, he’s got billions of dollars – 100 million barely registers. So there’s no real material risk to Bezos, but, if his venture is successful, he will extract that 100 million and likely more from the people he hires. Is this efficient?

The argument in favor of capitalism is that it is the most efficient means of distributing resources, but I’d argue it’s abysmal at doing exactly that. We generate more than enough food to feed the world, but we don’t because there is no profit in it, poor people can’t pay for that food, so we don’t give it to them. We can generate plenty of power in clean ways via Nuclear and Renewable sources, but we don’t because it’s not profitable[1]. We can provide healthcare and education for absolutely free if we wanted to, but we are artificially limited by people who are resisting the force-of-production for their own gain.

In an anti-capitalist world, you would absolutely be allowed to sell your services to another person for a fair wage – that kind of interaction is exactly what we want. The issue right now is that you (and the majority of other people who actually do shit for a living) are being exploited by a system to artificially inflate the wallets of capitalists, who take no real risk and experience no pain in failure – while you and I suffer their failures immensely.

[1] Nuclear energy is the only viable energy strategy and I will fight to the pain anyone who disagrees.

1. 33

Capitalism is an exploitative relationship…

Well, if we start with definitions like that, then the conclusion is already defined in the assumptions.

1. 29

I didn’t define it that way, I made a claim and then showed why it was true. That’s called a ‘thesis’, the rest of the post is the demonstration of that thesis.

1. 16

Sorry for not engaging you after you wrote your long post. But honestly I do not see anything meaningful coming from this discussion. For one - I do not care about capitalism that much, and your post is a bashing of capitalism from the left. The only difference is that I would bash it from the right.

I think the only substantive dialog to be had here is about how we interpret this statement:

1. The User is one of the following: a. An individual person, working for themselves

I think this excludes me offering contractor services to (say) CocaCola. If it does - my point stands, as the license would not allow certain types of voluntary associations between people. And if it doesn’t forbid that - then I am really unsure what it tries to say there.

1. 14

Unfortunately, any discussion of a license that is explicitly anticapitalist (or at least trying to be) is likely to come back to capitalism. So if you’re not interested in engaging on that, I understand and we don’t have to talk about it.

1. 7

Sorry again, I hope someone else engages you in the discussion you want to have, as you spent some effort putting that out.

1. -3

Lesson learned - sometimes it’s actually better to stay silent here (especially if you’re educated). It’s hard to argue with pseudo-leftist pseudo-intellectualism.

1. 13

That’s not the lesson I took from this discussion, if that’s what you’re implying here. I took that KKPMW didn’t want to talk about this, and that’s fine – we don’t have to, I’m not here to like, preach at people. I did enough of that in my youth.

1. 2

Wise choice.

2. 3

I flagged your comment as unkind. Your comment makes it appear that being educated makes it harder to deal with other people in here, and probably those same people are not of the same point of view due to being uneducated on the issue at stake. Maybe other people are educated as well, but share different point of view than you. Also, why would you imply that people arguing here are fake leftists and intellectuals?

2. 9

I think in your Bezos example you are conflating risk with impact. The risk is still the same but the impact of that risk is different. The risk isn’t based on the amount of the investment. It’s based on the viability of the venture. Bezos is able take on riskier ventures because the impact of that risk is lower for him.

There is a case to be made that having a segment of the population that is capable of taking on a venture with high risk is a good thing. There is also a case to be made that having a segment of the population capable of taking on that risk comes with it’s own set of risks to society. But I’m not particularly persuaded by an argument centered around the relative risks of high wealth in an individual as a moral argument if it ignores the potential upside of that risk.

Your argument about feeding the world is a much better argument I think. But in order to make the case well it needs examples of non-capitalist approaches that work at scale. Most attempts in the worlds history that were not capitalist in nature have devolved to either massive authoritarianism and/or massive poverty.

In general I agree that capitalism has failure modes that need mitigation. I’m open to suggestions of replacements to captilisim or modifications to capitalism. Most such suggestions I have seen have failed to address their own failure modes and fall short when deployed at scale.

1. 12

Yah, I’m playing a bit loose here – but I do think there is some connection between risk and impact – kind of like a mass/acceleration relationship. Bezos can take bigger risks only because the impact is lessened. I always find this stuff easier to talk through than write though. I would argue that while there may be benefit to having people capable of taking those bigger risks, we should certainly be deciding who gets to do that by means other than the ruthless drive towards personal enrichment – that’s not to claim that syndicalism or any other anarcho-leftist philosophy is the ‘right’ way to do that, but I’m happy to walk away from conversations agreeing there is at least a problem worth solving.

I definitely concur that the feed-the-world argument is the better of the two (I’ve also found it “works” better in getting people to understand the core complaint I, and those of my persuasion, have with capitalism). I do disagree with:

Most attempts in the worlds history that were not capitalist in nature have devolved to either massive authoritarianism and/or massive poverty.

In three ways, first, sure – there are high profile examples of bad Leninist/Stalinist regimes, but there are just as many examples of bad capitalist regimes as well (I gesture here, wildly, towards the United States and the imperialist shitshow that it is and has been for a long time). I think the tendency towards authoritarianism isn’t rooted in economics, but in the nature of big hierarchies to become unjust over time – i.e., it’s a philosophical/social problem that’s influenced by, but not fully controlled by, economics.

The second way is that Capitalism isn’t immune from massive poverty, indeed, the earliest capitalists were building their system around the Slave trade. It proceeded to maintain that institution for hundreds of years as something ‘too big to fail.’ It echoes today in the way it exploits prison labor, certainly those people should be counted as suffering under authoritarianism and poverty. It’s not even like we can cleanly say “Well they broke the law, so that’s their punishment,” we know the laws are unjustly applied (the data is readily found) and that the laws themselves are not based on ethics or morality, but often purely predicated on creating an underclass to act as slaves. We weren’t even creative enough to define the class differently than before. This doesn’t even get into the issue of housing, healthcare, or any of that.

So I guess my question is, “Why is it that non-capitalist economic systems have to prove their worth, when Capitalism didn’t and couldn’t even if we asked it to?”

The third way is that there are functional examples – the Paris Commune wasn’t destroyed from within, but by embargo from without. Cuba has lived under decades of embargo from without and is still, by all accounts, as okay a place to live as anywhere else. It’s not perfect but it’s not a hellscape either. Rojava in the middle east is a great current example of an anarcho-leftist system working pretty alright (and this despite huge outside pressure to fail from Turkey, Syria, and ISIS). Sure, we can argue these are ‘too small’ – but that’s kind of the point of anarchism as a philosophy – governments should be small, and there should be lots of them – high granularity government.

Again, I don’t think you’re wrong, but I also don’t think you’re right. You have (arguably good) company in this regard as I also don’t think I’m right or wrong, I’m not sure what the right fix is, I only have confidence that whatever we’re doing isn’t working very well and we should probably try to fix it. :)

1. 3

Regarding Cuba and the Paris Commune, I think both of those are worth considering as examples in the small and not the large. Part of what I think you need to address is what happens when you scale these models up. That is where I think history shows that they begin to fail.

I think a key point of nuance that needs to be considered is that all systems have failure modes. It doesn’t matter which one you pick, at the extremes it will have pathologies. A more pragmatic and I think productive discussion would start with the system you have and the failure modes that system exhibits and then propose mitigations for those failure modes.

So then the discussion doesn’t start at: “Let’s replace capitalism” or “Let’s replace communism” or “Let’s replace socialism”. Instead it becomes what form of Capitalism (or communsim, socialism, …) + X would mitigate the worst elements of the system and be acceptable to society. It turns the conversation away from “Find the perfect replacement system” and toward “What useful changes can we make now to the current system”.

1. 11

Regarding Cuba and the Paris Commune, I think both of those are worth considering as examples in the small and not the large. Part of what I think you need to address is what happens when you scale these models up. That is where I think history shows that they begin to fail.

history shows that they get sabotaged, attacked, and undermined by the powers that they threaten. this is a filter that destroys non-authoritarian anti-capitalism, because to survive they need to put all of their resources into military development, including forcing people off their land and into factories (just like capitalism does).

before alternative systems can be tested and compared fairly, you would need to dismantle this filter, i.e. huge military and covert resources controlled by a group dedicated to preserving capitalism. short of dismantling it, people around the world who would like to try new things need to be protected from it, even if they are brown or call themselves communists.

1. 7

I think where you and I may diverge (and I don’t mean that to imply I think my way is better, we just take different forks somewhere) is that I don’t want to scale things up – rather I prefer to scale them down to the Rojava/Cuba size and let them federate (but not integrate) from there. A large number of small states acting independently is a way to deal with a wide variety of pathologies (and I really like that term for them) that arise when you ‘scale up’ by simply not scaling up.

I wholeheartedly agree that the right answer isn’t “Let’s replace X” but rather, “How can we modify X” – I think there are a lot of things to try to do that, but I think getting into the hows and whats would be scope-creeping this conversation a lot.

1. 3

Fair enough, I’m not backing a particular horse in this necessarily. I just find the topic interesting when you focus on achievable goals rather than pure philosophy.

2. 3

From my point of view, it’s less harmful that traditional propitiatory software, because the source code if freely accessible, and I can imagine people using it would want it to be so, they just don’t want certain people to profit from it. You have the practical freedom to do whatever you want with it, but not the legal freedom.

you cannot make certain kinds of voluntary associations with other people (i.e. offer your services and ask for something you want in return, as that would be capitalism),

This is actually a good example for the ambiguity of the license. I can guarantee you that the people who wrote this don’t have this understanding in mind, and then again, there are others who would regard their sympathy to coops as the failure to actually overcome capitalism.

1. 7

From my point of view, it’s less harmful that traditional propitiatory software, because the source code if freely accessible

Regarding available source, they do have this in there:

The Anti-Capitalist Software License is not an open source software license. It does not allow unrestricted use by any group in any field of endeavor, an allowance that further entrenches established powers. It does not release your project to the creative commons or public domain, nor does it require derived source code to be made available. The availability of source code is less important than the organization of software labor.

You have the practical freedom to do whatever you want with it, but not the legal freedom.

I got a different impression. They wrote stuff like “The user is such and such”, “The user is not such and such”. Which is practical freedom (?). As opposed to GPL which really is just about legal things as in “if you release further software, do what you want, but include GPL freedom clauses in the license”.

1. 2

It seems I didn’t phrase myself clearly enough. By “practical freedom” I was thinking about the brutal, simple ability to do something. You download the tar archive of the source, and it comes with this license – even if you’re working for EvilCorp, you can still compile, change, distribute it, etc. – even if it is “illegal” from the perspective of law. That isn’t usually given with “traditional” propitiatory software.

2. 1

You don’t own that software unless you promise to live a certain way. And what is that way - you cannot make certain kinds of voluntary associations with other people

all things that can be said of usual proprietary EULAs. yet you find this license worse?

do you also have a vendetta against CC-BY-NC?

1. 8

I said I didn’t like the license, so now those disguised insults begin. Nice.

If you want me to respond - you should try to outline what you disagree with and how your interpretation differs; it’s not that hard.

1. 2

and i don’t see why any of what i said should be taken as an insult. hardly anyone reads things before they comment on them.

i mostly just have questions about your position; you don’t have to answer them if you don’t want to.

1. 10

all things that can be said of usual proprietary EULAs. yet you find this license worse?

Usual end user agreement licenses do not force me to live a certain way. i.e. I can be a communist and use the software. The licensing here seems to be different as it wants to control how I choose to relate to other people. So yes.

do you also have a vendetta against CC-BY-NC?

There is a big difference between those two licenses. One doesn’t allow me to re-sell a thing I got for free for profit, that’s all. Another tries to control the fields in which I work and the ways I associate with others. While at the same time not being free itself.

Here is an illustration:

CC-BY-NC: Here is this book, I am passing it to you for free. Promise me that you will pass it freely from now on as well, and please be sure to mention who is the author. Thanks.

Anti-Capitalist: Here is a book you can buy from me. Additionally: if you buy it - promise me that you will stop reading it if you ever start working for a company or associate with others in the ways we do not like. Oh and one more thing - you can only use it if you promise not to disclose its contents to the police.

1. 1

Usual end user agreement licenses do not force me to live a certain way. i.e. I can be a communist and use the software. The licensing here seems to be different as it wants to control how I choose to relate to other people. So yes.

microsoft’s EULA does not allow you to share your copy of the software with another end user. the source code that microsoft distributes can only be modified by the licensed individual, not shared or distributed:

does this not control how your relate to other people?

do you also have a vendetta against CC-BY-NC?

There is a big difference between those two licenses. One doesn’t allow me to re-sell a thing I got for free for profit, that’s all. Another tries to control the fields in which I work and the ways I associate with others. While at the same time not being free itself.

Here is an illustration:

CC-BY-NC: Here is this book, I am passing it to you for free. Promise me that you will pass it freely from now on as well, and please be sure to mention who is the author. Thanks.

Anti-Capitalist: Here is a book you can buy from me. Additionally: if you buy it - promise me that you will stop reading it if you ever start working for a company or associate with others in the ways we do not like. Oh and one more thing - you can only use it if you promise not to disclose its contents to the police.

this isn’t what the ACSL says. again, reading it would help (again, not meant as an insult). if you are using the software (or reading a book) as an individual, there is no restriction on how you use it (unlike the M\$ EULA), regardless of whether you are a cop or work for a for-profit investor-owned company.

1. 4

I am an individual person, but like many people I primarily make my living by working for a company. Therefore I am not “[a]n individual person, working for themselves” and thus ineligible ever to use any ACSL-licensed software.

I’m sure you would read it in a different way which implies that I only would be forbidden to use such software directly in the work I do for that company, but the plain English text of the license does not provide that clarification. And an argument could be made on grounds of that clause that the license simply re-victimizes those whom the authors feel are already victimized by capitalism, which I doubt would qualify as a good under the systems of thought with which they appear to be associating.

1. 3

no disagreement that it is unclear and poorly written. fwiw, i don’t think “working for themselves” is legally meaningful, so i don’t think it would exclude those who sometimes work for others.

2. 3

the source code that microsoft distributes can only be modified by the licensed individual

No, this is different. It’s the same as Beyonce not allowing someone to modify her songs after you buy them. the Anti-Capitalist license would not allow you to play the song you bought because of things that have nothing to do with the song in the first place.

reading it would help (again, not meant as an insult)

Fine, let’s read it together, you tell me your interpretation of it. I might be wrong. Willing to learn. Here goes:

Permission is hereby granted, free of charge, to any person or organization (the “User”) obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software for any purpose, including the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, subject to the following conditions:

Note: “rights to use” … “subject fo following conditions”. My reading: you cannot use the software unless you satisfy the conditions. OK what are the conditions. These are conditions relevant to what we discussed:

1. The User is one of the following: a. An individual person, working for themselves b. An non-profit organization c. An organization that seeks shared profit for all of its members and allows non-members to set the cost of their labor

Here only part “a” applies to individuals. You say any individual can use/modify/etc the software. But in the license it has an additional clause “working for themselves”. Which I interpret as not working for somebody else (as i.e. being employed).

Now you write:

as an individual, there is no restriction on how you use it, regardless of whether you are a cop or work for a for-profit investor-owned company.

Can you elaborate on where you found this interpretation?

1. 1

i see how you could interpret “working for themselves” to mean “self-employed.” at best it would mean you can’t use it while working for someone else, which would be a restriction on individual use, contrary to what i said before.

this part made me think the restrictions only apply to organizations:

1. If the User is an organization, then the User is not law enforcement or military, or working under either.

why have the clause “if the user is an organization” if individual cops and soldiers are not allowed to use it?

needless to say the license is not ready for prime-time. if workers could not use a ACSL-licensed tool to organize for a union during a shift, it would seem to contradict the spirit of the license. if the authors think all workers should quit their jobs and spontaneously form co-ops, that’s pretty idiotic.

incidentally it looks like the phrase “working for themselves” was added literally yesterday:

https://anticapitalist.software/past_versions/

2. 1

does this not control how your relate to other people?

Given its control is restricted entirely to relations that directly involve the software under licence - not particularly, no.

There’s a bit of a difference between “what can I do with my life” and “what can I do with this bit of software”.

1. 1

whether the license depends on an individual’s employment status depends on how you interpret the phrase “working for themselves,” which was added yesterday. if it means you can’t use it if you work for a for-profit investor-owned company, then i see your point.

3. 8

and i don’t see why any of what i said should be taken as an insult. hardly anyone reads things before they comment on them.

No, that’s an insult.

1. -3

well now you’re insulting me by implying that not reading things before commenting on them is a charge worthy of taking offense. like saying “that’s so gay”

2. 12

We don’t live in revolutionary times, and capitalism will (for better or worse) be a reality of our society for the time to come.

I don’t view this as an attempt to spark a revolution, but rather to try to deal with a real ethical problem when working on free or open source software. If my software gets used by some government or police department or what have you to hurt people illegitimately, I am – in some sense – ethically liable for it. If I don’t produce that software, then it prevents the harm that it would have otherwise enabled. At the same time, if I don’t produce that software, then it can’t help the people it may have helped.

For instance, if I build some CMS tool, it may be used by a Police department to track the doings of BIPOCs in their area so they can be more easily tracked, and thus be at greater risk of being shot by police; it may also be used by a non-profit somewhere to track where the unhoused tend to live so that they can be better served by that non-profit. If I make my software available under traditional licenses, I enable both groups to use it to both ends; so instead I try to create a license that denies use to the former but preserves use to the latter. I agree this license is likely not legally viable / hard to enforce, but that doesn’t mean such a license is impossible. Indeed, your average EULA probably includes language accomplishing the same effect.

I agree that Capitalism will likely be here for a while, but that doesn’t mean we shouldn’t try to change our society for the better, that will likely involve lots of missteps (like this license very well may be), but I don’t think the argument of, “It’s always been like this, it’ll always be like this” holds water. It’s always been like this, but only up till it isn’t, and it only changes when people try to do something about it.

1. 2

Would you be ok with a private, worker owned organization using your CMS to track BIPOC people in their area and then shooting them? This license allows that.

Or an individual using your CMS to track BIPOC and then providing that info to police to track them? This license allows that.

I’m not sure that police are the only groups that track BIPOC and also not sure what that has to do with capitalism.

The fourth clause is kind of tacked on and irrelevant to the state’s goals.

It seems a more effective license would be a single clause of “I promise not to be evil and can’t use this for evil actions or evil intents.”

1. 6

I wouldn’t, obviously, but the argument you’re making seems to be, “This license doesn’t solve this problem in every single case, so therefore it’s bad.”

The argument I’m making above isn’t about whether the license itself is good, it’s about whether the attempt and intent of the license is good, and I think trying to solve a problem is better than not, even if the solutions aren’t great at first. It’s pretty common parlance in engineering – fail fast. I’ve taken that message to me, “Try to solve your problem, if you fail, throw it out and try again.” I take the same stance with licenses, is the ACSL a good license? No, likely not. It doesn’t appear to have had input from a lawyer experienced with this sort of thing and has some gnarly loopholes that are self-defeating. Is it a good thing that someone is trying to do something like this? In my opinion, yes, trying to find a way to ensure that the people who use your work are doing so in a way that isn’t exploitative is good, even if you fail in the implementation.

The police are agents that are primarily tasked with preserving capitalism, which is why they are relevant to the discussion. In particular, the police enforce laws which disproportionately endanger and imprison BIPOC, where the state and cooperating corporations extract from them labor at essentially no pay. The prison-industrial complex is a major engine of the modern capitalist machine and is well documented elsewhere, so I won’t belabor it here. I think that’s why the fourth clause of the ACSL is explicit in denying the apparatus of the state (the police and military) from using the licensed product, they both act as elements of the capitalist machine intent on preserving it. (I’m reading in here to the authors views, and making them match with the most mainstream bit of anarcho-leftism, but I am doing some interpretation here and my own biases might leak through, so take it with a grain or two).

1. 2

The police are not primarily tasked with preserving capitalism.

Police existed and exist in non-capitalist countries and communities. They are still proscribed from using this license.

My complaint isn’t that it missed every potentiality. My complaint is that it is confusing, sloppy, and ineffective at what it wants to do. I was just pointing out a few specific flaws, but there are countless more.

A license that can’t be used by businesses is not very useful for society. So if the purpose is to harm capitalism or to improve humanity, it fails.

One of the things I like about open source and free software is its massive benefit to society and benefit to humanity.

2. 2

I think a lot of people are missing the fact that there is no requirement to make the source available in this license.

Not only is it done sloppily and full of obvious loopholes (speaking as someone who works on licenses of my own with somewhat similar aims), but it isn’t even copyleft, which doesn’t exactly seem “anticapitalist” to me.

1. 1

I think you overestimate the capabilities of most “bad guys” to hide usage of a library. Especially for web dev.

It’s very easy to see if someone is using React on their pages, for example.

1. 4

I feel that paragraph 2-3-4 in practice is going to restrict the licensed software from being used by most for-profit companies of more than a handful of people. I do not know of any larger companies where every employee/worker/owner has equal vote (and ditto for equal equity), but I’d love to know of such companies.

Given the name of the license, this does seem to be the intended purpose, so I guess the license is just right for it’s, admittedly small, audience.

1. 4

The author seems to have broadly Syndicalist views (similar to my own), there are a few syndicalist companies around – there’s a games company that has been doing fairly well in that regard, I can’t recall the name offhand.

1. 1

My (of course limited) experience says that all successful software co-operatives with 2 or more equal people sooner or later escalate to a “proper” company with employees.

Example from Germany: 2 or more people form a “GbR” and they’re personally liable. Very, very often after a few years this will be transformed into a “GmbH” (roughly like an LLC afaik) once you have employees or want to take on contracts from bigger companies. This is very common, and I wouldn’t even hold it against the founders, there are so many reasons why you wouldn’t want to have it if you have benefits. Oh, I don’t think this would conflict with 2d or 3 in general, but it seems very, vary rare. And now I really wonder why, or if I just haven’t noticed those.