Introduction
Free Society, Free Software
This issue—necessarily—continues to discuss the digital impact of the Russian invasion of Ukraine, with two items touching on the "protest ware" and the harms it caused. In the [objc retain];
episode linked, I mentioned an option that's open to free software creators and not particularly explored: the freedom to choose not to share the software. It's the act of sharing the triggers the copyright license, so if you are selective over who you share your code with you get to both enable the Four Freedoms and to withhold valuable software from people or organisations you don't want to work with. The implication is that while the software being Free is one principle, the community that is nurtured around that software may have its own principles (presumably including commitment to software freedom).
Writing
Software design is refinement, not abstraction
Programmers often talk about the quest for the "right abstractions" when designing their software. But their activity does not involve abstraction, so this quest draws them down a dark path.
Issue #43: Types
Welcome to the forty-third issue of De Programmatica Ipsum, dedicated to the subject of Types. In this edition:
- Graham crafts a Motorola 6809 CPU emulator to show that types are useful, but not needed.
- Adrian reviews history and literature to show that types are useful, but should not be abused.
- In the Library section, Graham reviews “Recoding Gender” by Janet Abbate.
Classism in software engineering
There is real class-related prejudice in software engineering: I have previously talked about how corporate open source creates a two-tier society because it ignores the liberties at the heart of software freedom. This post is actually just about unpacking the phrase "first-class citizen" as it gets used in engineer discourse.
Video
Episode 38 : [objc retain];
We react to the news on the "protestware" npm packages, and the legal dispute between Neo4J and PureThink over claims that a product is "free and open source". Then we note that our previous goal—a command-line tool to build Xcode projects on Linux—is already done, because we can use the XCake gem. So we define a new goal: building a desktop search application, and use that to drive further advances in Xcode compatibility.
Around the web
Twitter Edits You
With all the fuss about Twitter’s promised edit button, and how they might design it, we’re missing a disturbing development — Twitter is using its embedded javascript to edit other people’s sites.
That’s the abstract from this article. I genuinely think that this is ambiguous ethical ground. It makes sense that Twitter would want to “delete” deleted tweets wherever they appear, acting as agents of the user: that’s respecting individual choices and privacy. It also makes sense that removing publicly-made statements from the public record is unwanted censorship.
This is one of those “unintended consequences” areas. People would be more likely to think that whatever they tell a journalist will be permanently on the record, and choose their words carefully. But when you tweet you’re not talking to journalists, you’re talking to your friends, or making a journal entry, or maybe even replying to an individual. Except that for many people those messages are public, and journalists have adapted to use tweets as a source.
I’d love to discuss this, and learn what you think about it.
Abstraction: Not What You Think It Is
James Koppel takes aim at various descriptions of "abstraction" and programming tools that are claimed to allow the expression of abstractions, and finds them lacking. Yes, abstraction is an important part of program design. No, the abstractions aren't found in the resultant program: that is a specialisation of the design so specific it will run on the computer you built it for.
Google needs to admit it has a data problem
"Android messaging heist isn't the action of a well company," runs the subhead. True. But rather than painting Google as evil, the common reaction that solves nothing, let's instead consider that they are efficiently optimising for their incentives. Google makes peanuts from Android (at Google scale; if they're still getting $25 per device that's under 15% of their revenue). The rest comes from ads, the ads are targeted based on data profiles, and the products are ad-supported because that's more profitable than direct sales. Of course, the products are also more accessible than they would be through direct sales only, too: how many people would use email, or even web search, if it was charged at point of use?
Why Don't You Use ...
There's always a reason that company doesn't use that thing you like that would evidently solve their problem, it's just that you can't see the reason. One of my criteria for "software engineering, not programming" is thinking if you have evaluated all of your dependencies (npm users: LOL) under these criteria and know that they actually suit all your needs. You don't need to know all the answers: you do need to know all the questions or to be able to find them quickly.
Open source ‘protestware’ harms Open Source
An anonymous author at the OSI says that the "weaponisation of open source" in the Russia-Ukraine conflict is harmful for open source. I made my position clear in the last issue: software freedom is a civil liberties issue. The freedom to use the software, for any purpose necessarily includes the freedom to protest military action.
Of course, deleting someone else's files is very much computer misuse, is illegal in many places, and targets the wrong people (journalists reporting on the war in Russia are in Russia so may get their files deleted, for example), so this specific action is a bad choice of action. But we also find that the fact that users of these packages had the Four Freedoms—including the freedom to study the software and modify it so that it does computing as they wish—gave them the chance to audit and remove the malicious packages before deploying them. They would not have had those freedoms had the protestors been shipping proprietary software.