Is NixOS at the advent of an implosion? | Community inquiry on recent drama

bsergay@discuss.online to Linux@lemmy.ml – 115 points –

NixOS' influence and importance at pushing Linux forward into the (previously) unexplored landscape of configuring your complete system through a single config file is undeniable. It's been a wild ride, but it was well worth it.

And although it has only been relatively recently that it has lost its niche status, the recent influx of so-called 'immutable' distros springing up like mushrooms is undeniably linked to and inspired by NixOS.

However, unfortunately, while this should have been very exciting times for what's yet to come, the recent drama surrounding the project has definitely tarnished how the project is perceived.

NixOS' ideas will definitely live on regardless. But how do you envision NixOS' own future? Any ETA's for when this drama will end? Which lessons have we learned (so far) from this drama? Are there any winners as a result of this drama? Could something like this happen to any distro?


In case you're out of the loop. Though, there's a lot that has transpired since but which hasn't been rigorously documented at a single place; like how 4 out of 5 NixOS board members have quit over the last 2 months or so.

94

You are viewing a single comment

Thank you. Thank you.

I am sorry, mister/miss. Something weird happened to my Lemmy account and it was inaccessible for 2 days.

No worries, fam 😉.

Immutable distros are good for cases when the machine is meant to be used for very specific tasks and applications while maintaining extreme stability and ease of updating. This includes OSes for ATMs, machinery control panels, enterprise office computers with very strict policies, educational computer class devices. I am not sure whether they are good for critical infrastructure such as aerospace industry and on-board computers so I can’t comment on that and it’s too early to do so anyways.

I think we very much agree on this. I am actually surprised 😜. Perhaps we (possibly) only 'disagree' on the following:

Immutable systems can also be used for regular modern workspaces if stability (and possibly security) are preferred over absolutely everything else.

I actually even agree with this. But, and here it comes, you limit the use of 'immutable systems' when it comes to regular workspaces to just a subset that complies with "if stability (and possibly security) are preferred over absolutely everything else". However, I'd argue it will soon become the preferred model for most people; simply because I'd argue the net positives dramatically outweigh the (diminishing) net negatives. And this 'clash' in perspectives is literally a philosophical/ideological one. Which, I actually tried to allude to in my very first comment. Btw, neither of us is right or wrong; as mentioned earlier, only time will tell.

For me an “immutable distro” is defined more by its read-only (or R/W with write being disabled by default) root file system than by reproducibility or any other stuff.

Alright. So, you prefer to refer to 'immutable' distro in the literal sense.

Regarding the status of the read-only (or disabled R/W) root file system, does this have to apply to the complete root file system; i.e. absolute? Or does it suffice if only a select subset of the system is read-only (or disabled R/W)? I wanted to ask this, but later on you made clear that a system does not have to be completely and absolutely immutable for it to be considered immutable; a couple of read-only directories suffices.

Furthermore, is it required that an immutable system should remain immutable at all times for it to be considered an immutable system; i.e. changes are not allowed besides 'hacks'? Or is it perhaps possible for a system to be deemed immutable if it only possesses immutability during runtime?

Thanks in advance for yet another set of clarifications 😜!

Afaik NixOS does not use any form of read-only FS so that’s why it is not an immutable distro to me.

Teaser; the Nix Store, i.e. /nix/store, is immutable.

“Disable immutability” means “allow persistent changes for files and directories located in specific directories that are not in the /home directory/partition (“read-only” directories)”.

Very interesting. So, on Fedora Atomic, rpm-ostree install would be considered "disable immutability". Right? But, this does not apply to flatpak install . Right?

No matter how good your distro is, there always will be new users that need fixes or customizations that require extra steps and research on immutable (as in my definition) distros. This increases the chance of them giving up on Linux or creating angry/toxic posts on Linux related websites and communities.

To be clear, new users will most likely experience some issues on Linux for the time being. I don't think that 'immutable' distros are immune to that. Nor do I think they're particularly more troublesome. If anything, they allow for more stable experiences overall; which you seem to allude to as well.

I actually even agree with this. But, and here it comes, you limit the use of 'immutable systems' when it comes to regular workspaces to just a subset that complies with "if stability (and possibly security) are preferred over absolutely everything else". However, I'd argue it will soon become the preferred model for most people; simply because I'd argue the net positives dramatically outweigh the (diminishing) net negatives. And this 'clash' in perspectives is literally a philosophical/ideological one. Which, I actually tried to allude to in my very first comment. Btw, neither of us is right or wrong; as mentioned earlier, only time will tell.

Idk if it changes anything but in that part of my comment the word "workspace" should've been replaced by "workstation". I guess I chose a wrong word in autocorrect.

Regarding the status of the read-only (or disabled R/W) root file system, does this have to apply to the complete root file system; i.e. absolute? Or does it suffice if only a select subset of the system is read-only (or disabled R/W)? I wanted to ask this, but later on you made clear that a system does not have to be completely and absolutely immutable for it to be considered immutable; a couple of read-only directories suffices.

I think you have misunderstood my reply a lot. An immutable system is when everything (or almost everything) except for /home is read-only. Idk if my English was an issue there but it looks like you understood that part completely upside down.

Very interesting. So, on Fedora Atomic, rpm-ostree install would be considered "disable immutability". Right?

Probably. Idk anything about ostree. What I meant is that if you want to manually edit a file anywhere except for /home (or do any manual changes to the system like installing a GTK theme), you have to run a command (I forgot which one) to disable immutability for the directory it's in (or only for the file; I don't remember). For new users it can be a problem because it may be hard for them to find a good tutorial that covers all the steps, especially at the start of the "immutability boom" if it's ever going to happen.

If anything, they allow for more stable experiences overall; which you seem to allude to as well.

As I just said, more stability means that issues are more stable and hard to solve as well.

Quick reply. Awesome!

Idk if it changes anything but in that part of my comment the word “workspace” should’ve been replaced by “workstation”. I guess I chose a wrong word in autocorrect.

Nope, it doesn't. But thanks for clarifying!

An immutable system is when everything (or almost everything) except for /home is read-only.

Interesting. Here's the thing; I am unaware of any so-called 'immutable distro' that fits this definition/description/notion/idea/understanding of an immutable system. So..., where do we go from here?

Idk if my English was an issue there but it looks like you understood that part completely upside down.

In retrospect, I think you actually did an okay-job at explaining your thoughts. But, yes; I did indeed misunderstand. Thanks for clarifying!

Probably. Idk anything about ostree.

In Fedora Atomic, most of /usr is immutable. IIRC, this is even the only directory (combined with the sub-directories found within) that are immutable. However, the command rpm-ostree install allows the user to install packages into /usr. However, this change doesn't happen during runtime. Instead, a new image/deployment is created with the newly installed package that you can access after a (soft-)reboot (or with --apply-live if you like to live on the edge).

Based on this, does this still apply as "disabling immutability"?

What I meant is that if you want to manually edit a file anywhere except for /home (or do any manual changes to the system like installing a GTK theme), you have to run a command (I forgot which one) to disable immutability for the directory it’s in (or only for the file; I don’t remember).

This seems to be based on your own experience. If so, would you be so kind to inform me on which distro this was?

For new users it can be a problem because it may be hard for them to find a good tutorial that covers all the steps, especially at the start of the “immutability boom” if it’s ever going to happen.

Currently, apart from the documentation provided by uBlue and Guix, there's definitely a lack of good resources for 'immutable' distros. That's simply a fact. But, thankfully, this is not a problem by design; we just need people that are willing to put in the effort.

As I just said, more stability means that issues are more stable and hard to solve as well.

Sorry, I'm having a hard time understanding this. Could you perhaps provide an example of this from e.g. Debian? It can be any distro that's regarded as 'stable'*.


Unless I'm wrong, you seem to have missed the following. It would be awesome if you could touch upon these as well:

Furthermore, is it required that an immutable system should remain immutable at all times for it to be considered an immutable system; i.e. changes are not allowed besides ‘hacks’? Or is it perhaps possible for a system to be deemed immutable if it only possesses immutability during runtime?

Thanks in advance 😊!


WOW, I just noticed something. You've been using the term "immutable system" for quite some time. And, I've primarily been using the term 'immutable' distro.

Interesting. Here's the thing; I am unaware of any so-called 'immutable distro' that fits this definition/description/notion/idea/understanding of an immutable system. So..., where do we go from here?

In Fedora Atomic, most of /usr is immutable.

This is enough to cause most of the issues.

Based on this, does this still apply as "disabling immutability"?

Not really because this is a pre-installed tool that doesn't require any hassle to get working.

This seems to be based on your own experience. If so, would you be so kind to inform me on which distro this was?

It wasn't my experience. I've never tried an immutable distro myself because it goes against my personal preferences and needs. I saw that on YouTube. I don't remember what distro it was unfortunately but I'm almost sure it was Fedora based. Also in case you didn't know, GTK themes are usually installed in /usr/share/themes so disabling immutable is required to do so even if /usr is the only thing that's immutable.

we just need people that are willing to put in the effort.

Sure but this excuse won't help new users and won't stop them turning away from Linux.

Sorry, I'm having a hard time understanding this. Could you perhaps provide an example of this from e.g. Debian? It can be any distro that's regarded as 'stable'*.

I meant the disadvantages of immutable systems here, not stability in general.

Or is it perhaps possible for a system to be deemed immutable if it only possesses immutability during runtime?

I have no idea what a runtime is so I can't answer this question.

WOW, I just noticed something. You've been using the term "immutable system" for quite some time. And, I've primarily been using the term 'immutable' distro.

I use the term "immutable system" because someone can create an immutable fork of BSD or even Windows can become immutable. It's not just about Linux.

You're on fire, fam! Thank you for another quick one.


Before moving on, I want to make clear that I should correct some of my earlier statements. It probably doesn't matter, but for sake of completeness.

I actually even agree with this. But, and here it comes, you limit the use of ‘immutable systems’ when it comes to regular workspaces to just a subset that complies with “if stability (and possibly security) are preferred over absolutely everything else”. However, I’d argue it will soon become the preferred model for most people; simply because I’d argue the net positives dramatically outweigh the (diminishing) net negatives. And this ‘clash’ in perspectives is literally a philosophical/ideological one. Which, I actually tried to allude to in my very first comment. Btw, neither of us is right or wrong; as mentioned earlier, only time will tell.

What I describe above is not meant for immutable systems, but for 'immutable' distros.


This is enough to cause most of the issues.

I didn't imply otherwise 😜. I was just explaining how immutability works on Fedora Atomic.

Not really because this is a pre-installed tool that doesn't require any hassle to get working.

Excellent. I agree. So, "disabling immutability" therefore only applies to 'hacks'. Right?

It wasn't my experience. I've never tried an immutable distro myself because it goes against my personal preferences and needs. I saw that on YouTube. I don't remember what distro it was unfortunately but I'm almost sure it was Fedora based.

Thanks for being transparent! I also appreciate you sticking to your values.

Also in case you didn't know, GTK themes are usually installed in /usr/share/themes so disabling immutable is required to do so even if /usr is the only thing that's immutable.

I knew this (and also how ~/.local/share/themes could be utilized for this). But, fair; this is indeed something that Fedora Atomic's old model didn't allow. Or, at best, very 'hacky'. Like, it's basically not intended for the end-user to put stuff in here. Fedora Atomic's new OCI-enabled model does allow this. But, yeah...; we ain't (necessarily) here to discuss implementations. Fact of the matter and the issue at hand is that traditional distros don't deal with issues like these. Right?

Sure but this excuse won't help new users and won't stop them turning away from Linux.

IMO, if a new user wants to use an 'immutable' distro, then they should just use one of uBlue's images. They're like the Linux Mint or Zorin or Pop!_OS of immutable distros. And, as previously mentioned, uBlue's documentation is at least sufficient. Traditional Linux distros are not to blame if a new user breaks their Manjaro installation. Similarly, 'immutable' distros are not to blame if a new user breaks their not newbie-friendly 'immutable' distro.

I meant the disadvantages of immutable systems here, not stability in general.

I think I got you now. Like with the previously mentioned issue with placing themes inside the /usr/share/themes directory; on any traditional distro, you'd be free to place it there and you wouldn't even have noticed a thing. While some 'immutable' distros, like Fedora Atomic, make this hard. Do you think I understood you correctly?

I have no idea what a runtime is so I can't answer this question.

The expression "during runtime" is used to express a running and/or currently in use system. So, if my device is off, then the expression "during runtime" does not apply. When I'm using the system or even if it's just idling, then the expression "during runtime" does apply. However, it's possible with Btrfs (and more sophisticated technologies) to create a partition/deployment/image on your disk that's currently not running nor in use and which has some changes compared to your running system. Then, once again, the expression "during runtime" does not apply.

Perhaps, I could be even more elaborate. So, on the overwhelming majority of 'immutable' distros (Guix System and NixOS are literally the exception) that offer a built-in mechanic for installing packages to the immutable base system (like the aforementioned rpm-ostree that's found on Fedora Atomic), the changes are not meant to be applied directly on the running system. So, for example, right after rpm-ostree install emacs, I can't just type emacs in a console/terminal and expect it to open. Nor does it appear in the app drawer. Only after the (soft-)reboot will I be able to use Emacs; be it through the console/terminal or find it in the app drawer.

So, these are examples of 'immutable distros' that are only (meant to be) immutable during runtime, because it's possible to apply changes to a system that's not currently running/in-use/idle or whatsoever.

I use the term "immutable system" because someone can create an immutable fork of BSD or even Windows can become immutable. It's not just about Linux.

Interesting. Thanks for that clarification.


WOW, I just noticed something. You’ve been using the term “immutable system” for quite some time. And, I’ve primarily been using the term ‘immutable’ distro.

The crux of this conversation lies here I believe. Your notion/understanding of an immutable system is probably more correct and more in line with what you'd expect from its name. However, the name "'immutable' distros" is unfortunately not descriptive. Contrary to what you'd expect, it's not a distro that happens to be an immutable system; at least, not in the absolute/complete sense.

I agree with you that this is misleading and a poorly chosen name. Heck, Fedora agrees with you; they've changed "Fedora Immutable Desktops" to "Fedora Atomic Desktops" because of this. However, as bad as the name is, people use the term "'immutable' distros" when talking about Fedora Atomic, Guix System, NixOS, openSUSE MicroOS and Ubuntu Core.

That's why I said this:

Interesting. Here’s the thing; I am unaware of any so-called ‘immutable distro’ that fits this definition/description/notion/idea/understanding of an immutable system. So…, where do we go from here?

And, to be honest, I'm not sure if you answered the bold question.


Thanks (once again) in advance! And apologies for this long comment 😅.

So, "disabling immutability" therefore only applies to 'hacks'. Right?

Idk if everything can br called "hacks" but mostly yea.

(and also how ~/.local/share/themes could be utilized for this)

I know but idk if GUI apps and extensions can see themes installed in ~/.local and how many installation guides tell about that method.

Fedora Atomic's new OCI-enabled model does allow this.

Idk how it works and how simple it is but gtk that.

Fact of the matter and the issue at hand is that traditional distros don't deal with issues like these. Right?

Exactly.

Similarly, 'immutable' distros are not to blame if a new user breaks their not newbie-friendly 'immutable' distro.

But we're talking about situation when user-friendly distros become immutable. If the user willingly chooses an advanced distro, it's not the distro's fault but, for example, you said that Fedora expects their immutable options to become mainstream. I know that Fedora and other immutable distros are often recommended for new users now. This means that the ones that recommend them consider them user-friendly. Imo this, as well as rumors about Canonical want to make Ubuntu Core the default desktop offering, destroys your point in the context of this discussion.

Do you think I understood you correctly?

Yes that's exactly what I'm talking about.

The expression "during runtime" is used to express a running and/or currently in use system. So, if my device is off, then the expression "during runtime" does not apply. When I'm using the system or even if it's just idling, then the expression "during runtime" does apply. However, it's possible with Btrfs (and more sophisticated technologies) to create a partition/deployment/image on your disk that's currently not running nor in use and which has some changes compared to your running system. Then, once again, the expression "during runtime" does not apply.

Thank you for the explanation. I appreciate it. And in this case I think my definition of immutability applies to these "runtime-immutable distros" too.

Only after the (soft-)reboot will I be able to use Emacs; be it through the console/terminal or find it in the app drawer.

Another (but small) confusion point for new users.

The crux of this conversation lies here I believe. Your notion/understanding of an immutable system is probably more correct and more in line with what you'd expect from its name. However, the name "'immutable' distros" is unfortunately not descriptive. Contrary to what you'd expect, it's not a distro that happens to be an immutable system; at least, not in the absolute/complete sense.

I understand it.

And, to be honest, I'm not sure if you answered the bold question.

Idk what to answer. Full or partial immutability, it still creates the same issues I described.

Thank you for being patient with me! And thank you for yet another set of clarifications!

Idk if everything can br called "hacks" but mostly yea.

I've used the term 'hacks' a couple of times without properly defining it. My bad. So, I've used it in the context of "doing things the unintended and/or unsupported way".

but idk if GUI apps and extensions can see themes installed in ~/.local

They should.

and how many installation guides tell about that method.

Arch wiki states it and there's no reason (in this case) to assume it won't work. Furthermore, FWIW, the documentation on uBlue does discuss theming.

Idk how it works

Currently, it involves creating your own image :P .

and how simple it is but gtk that.

So, as just mentioned, it's possible. But, it's definitely more cumbersome than placing it in /usr/share/themes.

But we're talking about situation when user-friendly distros become immutable.

Are you referring to distros like Linux Mint, Pop!_OS and Zorin becoming immutable? While it's definitely possible that I've alluded as such, I can't recall it. Nor was I able to find it in my earlier writings. Could you explicitly state what you mean by this and when I've (at least) hinted at this?

but, for example, you said that Fedora expects their immutable options to become mainstream.

If, by becoming mainstream, you mean that over half of Fedora's user base will be using them, then yes.

I know that Fedora and other immutable distros are often recommended for new users now.

If you meant uBlue images with "other immutable distros", then I'm fine with this statement. However, if you meant other immutable distros, then I'd like to know which ones you meant. Furthermore, even Fedora's own images are rarely recommended to new users. Generally, at least from what I've seen, Aurora, Bazzite and Bluefin (all three being uBlue image) are mentioned in these conversation. And, IMO, rightfully so.

This means that the ones that recommend them consider them user-friendly. Imo this, as well as rumors about Canonical want to make Ubuntu Core the default desktop offering, destroys your point in the context of this discussion.

Sorry. I lost you here. My bad. What's my point in the context of this discussion?

Another (but small) confusion point for new users.

At least the terminal output makes it very clear that a (soft-)reboot is required. I've honestly never seen anyone mention this, i.e. the need to (soft-)reboot for the changes to take effect, as something that leads to confusion. I do understand the frustration that follows from the act of (soft-)rebooting though :P .


Thanks once again for another lovely set of clarifications! Thank you in advance!

Tbh I am not sure anymore if you're being serious in this discussion or just trolling because I explained some things very clearly but you still misunderstand them a lot. I'm not willing to continue this. I apologize if I'm not right but I have to stay away from trolls and other kinds of evil people.

Apologies if I made you feel that way! And thank you for vocalizing your concerns!

It has never been my intent to troll you. Nor have I got any other evil motives.

I noticed how you've been one of the more vocal community members to oppose 'immutable distros'. And I, as a major supporter of 'immutable' distros, am very interested to know why that is. That's basically the whole idea of this conversation. At least on my part*. And, to be honest, I think we're almost done. There was only one paragraph from your earlier comment that I didn't get. And all the questions I posed are from that paragraph.


So, to make it simpler, I first want to clarify the following statement of my own:

Similarly, ‘immutable’ distros are not to blame if a new user breaks their not newbie-friendly ‘immutable’ distro.

With this, I don't mean that 'immutable' distros are (by definition) not newbie-friendly. That would be the complete opposite of what I've been saying this whole time :P . Instead, I posed that 'immutable' distros can be categorized in:

  • those that are newbie-friendly
  • and those that are not newbie-friendly

And, thus, my statement should be understood as: "The mishaps/inconveniences etc of not newbie-friendly distros, does not invalidate the existence of other 'immutable' distros that actually happen to be newbie-friendly. Hence, we shouldn't throw out all 'immutable' distros with the babywater; this idiom is referenced."


Finally, if you didn't misunderstand my statement in the first place, then I would like you to explain/elaborate what you had written here:

But we’re talking about situation when user-friendly distros become immutable. If the user willingly chooses an advanced distro, it’s not the distro’s fault but, for example, you said that Fedora expects their immutable options to become mainstream. I know that Fedora and other immutable distros are often recommended for new users now. This means that the ones that recommend them consider them user-friendly. Imo this, as well as rumors about Canonical want to make Ubuntu Core the default desktop offering, destroys your point in the context of this discussion.

That's all. Thank you in advance!

My apologies for being persistent; I'm just very much saddened that the IMO great conversation abruptly ended when it was so close to resolution. Regardless, this will be my last attempt at engaging in hopes of continuing the earlier conversation. However, full disclosure, if you don't respond, then I will leave you with a final message in which I will lay out what I got from this conversation and my overall view in regards to how it went etc.

So, without further a due.

I would like to cut the chase and be very direct:

  • Finally, we've come to a common ground on what an 'immutable' distro even is. However, it's still unclear why the perceived inconveniences/difficulties are not merely related to implementation. Like, for all we know, in some future implementation of an 'immutable' distro, you could run whatever command you run to place your themes in /usr/share/themes, (soft-)reboot and find the theme in the designated folder. To me, it seems, as if you dismiss this possibility. If this is correct, why do you think that's the case? Isn't there more reason to be hopeful considering the mere fact that we're currently able to apply tons of customization that were previously inconceivable?
  • You accuse the complete industry for misunderstanding and misusing 'immutable' distros. While, simultaneously, relying only on very basic second-hand information for your views on 'immutable' distros. Is this sensible to you?
  • It seems as if you're not open to consider many other possible benefits that come with 'immutable' distros. The most recent addition/example of this would be openSUSE going in the direction of an OOTB measured boot with their openSUSE Aeon. Like, how did you even perceive this and did it make you rethink the possible benefits? Do you think it's conceivable that other people might have legit reasons for preferring 'immutable' distros that go beyond what you had previously described?

Unfortunately, you've yet to respond. Therefore, I was unable to verify everything mentioned below. Regardless, for the sake of completeness, I would like to give a brief overview of our interaction and how I have perceived it.


My intent regarding this conversation:

  • Reach a common ground on our understanding of the topic at hand. Like, what even is an 'immutable' distro.
  • Highlight how the basic notion of an 'immutable' distro' encompasses a wide variety of distributions that differ from each other more than traditional distros do.
  • Understand why, despite acknowledging the importance of implementation, you still believe it's inconceivable for future implementations to overcome current shortcomings.

However, we weren't able to get that far. This is IMO primarily due to the following:

  • Abrupt end of the conversation by you. This is basically the reason.
  • Your misrepresentation of yourself. I accurately point towards the pain point. However, you -for some reason- deny it or accuse me of intentionally misunderstanding. However, eventually; like a few comments down the line, you accept my earlier found pain point. This just makes conversation take way longer than it has to. Like when I rephrased your understanding of 'immutable' system to one in which some directories are immutable. You first accused me of misunderstanding, but later used partial immutability yourself.
  • Your use of words, phrases, and sentences without recognizing the need for definitions. When later prompted to give definitions, you've failed spectacularly at giving complete and/or sufficiently clarified ones. This prompts me to ask for clarifications, and the cycle continues... I believe this stems from your lack of familiarity with the subject matter. Like how I had to explain to you what runtime is. A word which is used in the actual definition of 'immutable' distros.

The points you actually raised to discredit 'immutable' distros:

  • Unfit for old PCs and/or HDDs. Answer: This is related to implementation. You even agreed to this when you noted yourself that this is not an issue on NixOS. So, busted.
  • Different workflow compared to traditional distros. Answer: I don't quite recognize why this is a problem. The workflow on the very first Debian is different from how it's today. Does that make Debian's current iteration bad? No, obviously not. Similarly, it being different is not inherently a wrong/bad thing. So, again, busted. The important part is documentation/guides/tutorials that facilitate the needs of people that intend to switch and/or try it out. Which brings us to...
  • Lack of resources. Answer: This doesn't make it inherently bad. It just makes it harder for users to learn how to interact with the system. And, again, this continues to improve as the user base becomes bigger. When I made the switch (over two years ago), resources were abysmal. However, today, projects like uBlue have produced good documentation for its users. And it will only ever improve. Yet, again, busted.
  • Tampers tinkering. Answer: In the absolute sense; no. There's only very little you can't do on current 'immutable' distros. And there's active effort to work those things out. So, it's related to implementation and/or maturity. It's also not clear what prevents a future implementation of an 'immutable' distro to be interacted with exactly like how we interact with traditional distros. Consider looking into stuff like systemd-sysext if you want to see a glimpse of what's yet to come. Thus, this point is also refuted.

There is perhaps a lot more I could go over, but I'll suffice with this for the sake of brevity.