# App Stores Considered Harmful

=> https://9to5mac.com/2011/10/21/jobs-original-vision-for-the-iphone-no-third-party-native-apps/ When the engineers at Apple were designing the iPhone, it was decided that there would be no third-party native apps. Third-party applications would be applications distributed on the web.

However, short-sighted developers disliked this greatly. Apple caved and made the appstore about a year after the release of the original iPhone.

Now, this might sound silly if you're reading this. "A native app is how I'm reading this!" you are almost certainly thinking in your head, if you use a Gemini or a Gopher client on your phone. There definitely are situations where web applications aren't ideal, in fact. Web applications aren't exactly useful for most offline tasks.

=> https://caniuse.com/?search=localStorage They couldn't do it back in 2008 when the App Store launched.

## App Stores are Walled Gardens

The App Store on iThings and the Play Store on Android things are walled gardens. The App Store prohibits any GPL application, as Apple wants to prohibit sharing. Virtually all apps on the app store are de facto proprietary, no matter the actual license.

The Play Store is, to my knowledge, less restrictive. However, because of Google's "business model" concerning YouTube is that they collect information and shove ads. Therefore, Google prohibits any alternative front-ends on the Play Store. Thankfully, Android lets you, relatively easily, get other app stores compared to iOS and friends.

The Windows Store seems less egregious compared to the App Store and the Play Store, but Microsoft's push of "S mode" is merely a less bad form the nonsense Apple had been pulling with macOS 15 and preventing "unapproved" code.

The only way to get around these sorts of walled gardens is to use web applications.

Now, not all app stores are terrible. If they dedicate themselves to Libre Software reasonably well (not perfectly mind you, just decently well), then they have obvious advantages over more decentralized models of distribution.

Pretty much all Libre operating systems have an "app store", but they all have a good dedication to providing libre software, and so I have no real reason to dislike them. Same really goes for Flathub and the Snap Store. Yes, even if the Snap Store's backend web server is proprietary.

There are a couple app stores on Android that do this well too:

=> https://f-droid.org F-Droid is probably the most famous example of such an app store. If you use a stock Android phone from your phone carrier, you can just install this and ignore the Play Store where you can and have a reasonably good time. I did this for many years until I decided to use Graphene OS as my primary smartphone OS in late 2023.

=> https://accrescent.app Accrescent comes pre-installed on Graphene OS. If you're like me and like to use Google Pixels (that you ideally get second-hand), this is a perfectly good option as well!

However, the App Stores most people know about are walled gardens, and thus refuse to do anything trample on your freedom.

## Web Freedom

=> https://www.gnu.org/philosophy/wwworst-app-store.html Much ado has been made about how web applications often stop freedom.

I don't disagree with the above post. In fact, many web application practices are quite against freedom in a practical sense. How can you truly understand these complex frameworks on both the front and back end? Especially when corporate interest is what influences both?

There are ways around this, however.

=> https://htmx.org/essays/hateoas/ An essay by Carson Gross, probably the leading expert in hypermedia development, HATEOAS is the paradigm that would best suit the vast majority of web applications. Not necessarily all of them, but I'd wager a good 90% of them.

=> https://grug.dev A silly website, also by Carson Gross, that is an old man yelling about complexity.

=> https://unmodernweb.com/ The Unmodern Web, a website by Katrina Scialdone, is a website showing simple ways to make websites interactive, generally based on HATEOAS. Katrina has made her own tools that seem to make this much easier, and I'm very interested in trying them out.

=> https://www.patterns.dev/vanilla/islands-architecture The Islands Architecture is where you mix HATEOAS with more reactive Javascript frameworks.

=> https://webassembly.org/ WebAssembly is something I have mixed feelings about, but it can absolutely be used for good as much as any piece of Javascript. It is compiled, so it is a bit more of a black box, and thus more susceptible to proprietary shenanigans. However, it can be used to make a game absolutely portable, not unlike how Java was used almost thirty years ago. I could see the next (or current versions of) RuneScape being written with WebAssembly.

=> https://htmx.org/ htmx is the Javascript library by Carson Gross that may make a more freedom-respecting approach more mainstream. Things are going in this wonderful direction. I've even used it in a production web app.

=> https://hyperscript.org/ _hyperscript is an xTalk language for the web by Carson Gross. I find it far easier to read than Javascript. I've also used this in production.

=> https://github.com/kgscialdone/facet Facet is a lightweight web component library by Katrina Scialdone. This library may make web components useful for the front end.

=> https://github.com/gnat/surreal Surreal is a minimal library by Nathaniel Sabanski that aims to be similar to jQuery.

=> https://alpinejs.dev/ Alpine.js is a minimal framework by Caleb Porzio that also aims to a modern jQuery. It was designed with Laravel's Livewire in mind, but is often paired with htmx in production.

=> https://svelte.dev/ If HATEOAS is not the best way for your project, and you need some heavy interactive Javascript, Svelte appears to be a great balance between ease of learning, simplicity, and mainstream attention. Because of how you build applications that use Svelte, it's also a wonderful way to add an island of reactivity.

That being said, these are all ways to deal with Javascript in your application. It is best to make web apps that don't require Javascript at all and use these as spices to enhance your application where possible. If Javascript is well and truly needed, you can let the user know with an assurance you're not going to run some stupid malware on their system.

It's also important to be mindful of the apps you are making. There are some applications that work well on the web, and those that don't.

=> https://www.electronjs.org/ Even then, you can use the above tools in Electron fairly easily. Even though Electron is much maligned by loud voices in Libre operating system-using communities, including you probably, due to unfortunate specimens like Discord, it is easily the best and easiest way to make a cross-platform application in 2025, especially if you already have a familiarity with web technology.

## Cross-Platform Capability

I've heard more than a few times that web and Electron-based applications helped people switch to Linux when they may otherwise couldn't have.

Web applications may also allow more businesses to switch entirely to Libre operating systems. It could allow people who couldn't use Libre operating systems to actually do so.

It wouldn't be perfect on its own, but it's certainly a start.

## Conclusion

Web applications were the Libre alternative to native applications on iOS. Developers rejected it in favor of a walled garden.

The web can be saved. I know it can. I, as a (wannabe) developer, must make an effort to do so.

I'll probably still be writing things on Gemini and Gopher though. What can I say? Gemtext is one of my favorite formats to write in. Certainly less verbose than HTML. ;)