Why are apps better than plugins? (Really, about the app infrastructure in general)

jnussbaum

Cadet
Joined
Dec 11, 2023
Messages
4
Hi, new poster here. First, please forgive what might be regarded as the confrontational tone of the subject line; it's not intended that way.

I have some coding knowledge, but I've never used a NAS before, so I'm trying to learn everything I can about how this works. In particular, I've been trying to read up about VMs, jails, apps, and plugins, on Core and SCALE, and I find all of it rather confusing. I also don't have much experience using Docker, and no experience at all with associated infrastructure like Kubernetes.

My understanding is that jails can be regarded as more or less a FreeBSD containerization system, very roughly equivalent to Docker, in that they're not full VMs, but they allow you to do a bunch of local stuff inside a jail. And that Core plugins are generally regarded as flaky or unsupported, and if you're using Core, you're supposed to build the apps yourself in a jail.

I don't understand how the app system works on SCALE, though. In particular, why are apps any different than plugins? In both cases, there's some outside entity that creates them, and the user has to rely on that entity for the app. Why not just make your own app, the way you would build your own thing in a jail?

And, where can I find guidelines on how this last process works? That is, if I wanted to run something in SCALE that does _not_ exist as an app, how do I create that myself and integrate it into the SCALE system? Is there documentation that explains this in detail? I understand that I could do this in a full VM (in which case I could also build any necessary associated tools in that VM) (I think it would work the same with a jail?), but how do I do it in SCALE?

Thank you. I did try to read the documentation on this, but it seems to leave things unsaid, or to assume that you already know what you're doing, or maybe I'm just stupid :-/
 

danb35

Hall of Famer
Joined
Aug 16, 2011
Messages
15,504
I don't know that I'll be able to answer all your questions, but perhaps some of them. Your confusion is understandable, because apps under SCALE and plugins under CORE are fundamentally very similar things: they're both preconfigured containers that run the software in question, and give the end-user limited ability to change or configure it. Both of them require someone to "maintain" it.

The major differences are that plugins use jails under FreeBSD, while apps use Docker containers under Linux. I understand that makes maintaining the later considerably easier, but I haven't worked on that side of things. But one result of this difference is that there's a lot more software that can (relatively) easily be turned into an app than can readily be made a plugin, because just about everything these days is distributed as a docker container.
And that Core plugins are generally regarded as flaky or unsupported
CORE plugins have historically been very poorly maintained. I presume in charity this is (at least in part) a result of the increased work it takes to maintain them compared to the apps. iX has now decided to phase out plugins by 2025, so by then they will be completely unsupported. Between now and then, well, let's just say...
1702315109442.gif

if I wanted to run something in SCALE that does _not_ exist as an app, how do I create that myself and integrate it into the SCALE system?
I'll leave "creating an app" to others, as I'm just not familiar with that process. But three ways I am familiar with on SCALE are:
  • Run it in a VM
  • Use the "Custom App" feature to run a Docker container of your choice
  • Use the "Docker Compose" app from TrueCharts to run a docker compose file of your choice
But to your title question of "why are apps better than plugins," a few reasons:
  • More software. Lots more. Nearly an order of magnitude more. There are currently 556 apps available between the iX and TrueCharts catalogs (a little over 100, last I looked, from iX, the rest from TrueCharts), compared to 73 plugins (iX and community, many of which are duplicative).
  • More up-to-date. Apps, at least TrueCharts apps, are much more up-to-date than I've ever seen plugins be.
  • Ingress. This was the "killer app" for me, and something I've been asking for since 2016. TrueCharts integrates Traefik and cert-manager to get TLS certs for your apps and act as a reverse proxy for them, so you don't need to remember weird port numbers or other oddities to access them.
 
Top