allenc allencheung

When Software is Good Enough

When games—and sometimes other types of software—are no longer maintained or supported, we relegate them to be abandonware: software that is preserved for historical curiosity, but they’re no longer prime candidates for serious use and thus less valuable. This is particularly evident with mobile apps, where the majority of apps are effectively abandoned within weeks of release and silently fade away as new OS versions force incompatible apps to uninstall themselves.

OS compatibility was and is one of the biggest differentiators of Microsoft Windows as a platform for applications, and the company understood early on that dropping old system APIs in newer versions of Windows was akin to killing old programs that many of its enterprise clients relied on, programs that will never be rewritten in newer frameworks.

For a company like Apple that’d prefer to make breaking changes to its systems, this is one of the taxes that application developers pay for building on its native platforms. As operating systems continue to update regularly, users are either performing the updates themselves, or buying hardware that already has the latest OS installed. If apps don’t make an active effort to update for the newest operating systems—and abandonware, by definition, no longer has maintainers—then they’ll just be unavailable. By contrast, the web’s default behavior is to be backwards compatible, and so really old websites are still viewable in all their faded, clunky glory.

It’s worth asking what kinds of business models align with this model of app development and sales. For social media services or ecommerce companies, apps are simply an aesthetically-pleasing client that connects users to their services, so keeping their free apps up-to-date is a no-brainer. For productivity apps, particular ones that charge for the app itself, the alignment is less than ideal. The continued need to attract new users means that they’re stuck in a permanent features and compatibility upgrade treadmill.

But what if an app is actually feature complete? I’ve been using Divvy as a windows manager for years now, and it’s been instructive to see its developer keep it updated to the latest OSs, even when they make no more additional income with their existing userbase. And from a features standpoint, Divvy is close to perfect; a lot of its power lies in its simplicity and configurability, and other than a redesign, there isn’t much more they need to add to the app to enhance the simple act oft of windows management. The app is effectively feature-complete.

The path I’ve seen other developers go is to move to a subscription model. The tradeoff there, however, is a commitment of continual improvement that justify the monthly/annual payments, and it’s unclear how long that’s sustainable before it becomes building features for the sake of building features. Two recent examples are 1Password (password saving and retrieval) moving to a membership model, and perhaps even more absurdly, Day One (personal journaling) adding a premium subscription model. The shift makes sense in terms of keeping their businesses alive, but at the same time, many of the added benefits feel forced, and in some cases are cause functionality regression for previously grandfathered users.

Containerization has been a revolution for software development on top of stable development environments. For end-user applications, however, application virtualization is currently an enterprise-centric technology that feels clunky and resource-intensive compared to running apps natively. For apps that don’t really need any more development work, maybe the best way to preserve their utility is to keep them in a forever-runnable container.

By allen
allenc allencheung

Elsewhere