Wednesday, July 15, 2026

SpamSieve 3.3.1

SpamSieve 3.3.1 is an update of my Mac e-mail spam filter that improves the filtering accuracy and includes various optimizations, fixes, and updates for macOS 27. Some interesting engineering issues were:

Previously:

2 Comments RSS · Twitter · Mastodon


I'd love to see a developer who still supports 10.13 write an article for non-programmers to explain the whole "how far back can software support" issue.

I regularly see apps that do quite complicated things - SpamSieve here, or, I think ChronoSync that are still supporting old OS versions, and yet are very pleasant to use on modern systems.

And then there's apps which seem positively lightweight in how taxing they should be in terms of the work they do, and they're starting on the Sequoia + only thing.

To be honest, it just seems like a bit of a cop-out; web developers have had to think about backward compatibility since year dot, seems like a lot of "app" developers are less keen to put in that work.


@Someone It really depends on the app and what it’s doing and which technologies the developer has chosen to use. In a lot of cases, I think it’s mostly a matter of choosing to put in some more work maintaining and testing extra code paths that you keep around as you modernize things. My apps also include old-style toolbar icons for pre-Big Sur.

For a brand new app starting today, it’s a different story because maybe you want to design your app around a technology that didn’t exist in earlier versions. So then supporting them might require writing two versions of the same thing, and it’s hard to do new development for old versions because current Xcode doesn’t even run on those systems. There’s little business case for this because you don’t have old customers to support, and people sticking with older versions aren’t buying much new software.

In the middle is if you have an app that currently runs on an older version and you want to rearchitect it or something. This is what I did with SpamSieve 3, and I ended up writing three different corpus importers, optimized for the APIs that are available on different OS versions. But there may also be cases where a particular feature is central to the app but can’t really be done on older versions at all.

Leave a Comment