About fifteen years ago, Microsoft felt threatened by Linux’s growing market share, and decided to team up with/outright buy patent trolls and use the new portfolio of around 230 patents to claim that the Linux distributions were infringing on Microsoft’s intellectual property and potentially sue them.
As Red Hat and other FOSS companies entrenched in their positions and geared up for a long and expensive legal fight, SuSE saw an opportunity to displace Red Hat, and threw everybody under the bus by saying something like, “Yes, Linux absolutely infringes on Microsoft patents. We will pay you for using your IP if you shield us from litigation.”
So that threw out the entire argument that Linux did not infringe on Microsoft patents because you had the second biggest Linux company saying it was true and the right thing to do was to pay Microsoft for all of their wonderful contributions. So Microsoft did this kind of mobster thing where they let SuSE pay them for “protection” from lawsuit, and then used this as precedent that the other Linux distributors weren’t playing fairly unless they also paid for patent use. And SuSE hoped that this would result in only Novell/SuSE being the legal Linux to buy in the market and everybody would run to them with open arms. Kind of a dick move.
This emboldened Microsoft, and resulted in lawsuits from Microsoft over things like, accessing the FAT filesystem from a Linux device (TomTom, at the time GPS device company) and is historically the reason that Nexus phones (which became Google Pixel phones) never came with SD card expansion (so they wouldn’t be accessing a FAT filesystem from Linux). So for the next half decade or so, Microsoft decided to just start suing everybody over patent infringement, and this is how the smartphone era was born and why it is really difficult to do things that would be obvious on a computer – smartphone designers had to invent new ways, even if obtuse, to get around patents.
In 2018 Microsoft decided that they needed Linux, and ended hostilities by giving the patent portfolio (now up to 60000+ patents) to a consortium of companies called Open Innovation or something like that, that was originally designed to share patents freely without litigation in response to Microsoft’s aggressive behavior a decade earlier
the counter point to my argument is that
It’s good history, I don’t think it really has any bearing today though.
Novell purchased SuSE Linux AG. Novell signed the agreements, and they were very controversial at the time. Novell was much more involved in the day to day than IBM is at Red Hat, SUSE was not an independent business they were a big part of Novell (the SuSE founder left at one point because of how they ran things, he did eventually return). Novell was later purchased by Attachmate, which made SUSE an independent business unit, both were acquired by Micro Focus. It was sold to EQT Partners in 2018 and operates as an independent business today.
Novell and today’s company are not the same, they’ve gone through significant changes multiple times, which is maybe a better reason to at least put in some thought.
You can forward the VNC port with a local port forward e.g ssh -L $yourPort:localhost:$vncPort $grandmasMachine. Then open Remmina (or KRDC, or some other VNC client).
I do hope your grandma has good upload speeds though.
Bless you for spreading the word of the penguin and being the support of your family. Props to you.
This looks like a combination of JSONP and the ES2015 computed property name syntax. JSONP is used to load into web pages using a script tag and execute the function (item) with the data, rather than a direct response from Ajax.
As for tools, jq may be able to parse this assuming you remove the item( and the last );
It's similar, but JavaScript would use : and , for separators rather than = and ;.
This is valid Lua table syntax, however. A program creates an embedded Lua environment with an item callback function and runs this file inside it. Something similar could be done to convert it to another format; just define item to output the data as JSON, or whatever other format you prefer.
The Prosody XMPP server, written in Lua, generates files of this type when serializing lists with the "internal" storage manager. See functions list_store and list_load in util/datamanager.lua.
Torvalds indicated in a recent interview that they're struggling to find young maintainers. Many people contribute, but few stay around to become proficient enough and take on the responsibility of maintainership. I believe that the email comment was made in this context.
However, I don't think that many kernel devs including Torvalds are in favour of the Github workflow. He once indicated his strong dislike for it. So the replacement for email won't be Github - but something just as easy, without sacrificing the quality that the kernel devs need.
Finally, a word is kernel development. Contrary to popular belief, they aren't hostile to new contributors. Kernel developers have high quality intro material for newbies - including for email workflow. They're also very considerate and patient with newbies. Even Torvalds who was known for his abrasive style in the past really took that only on experienced developers doing the wrong thing.
I’ve been using NixOS for the past few months and it’s been great. Before NixOS I was using Fedora Silverblue so immutable distros aren’t a new thing to me. I like that NixOS has a configuration I can keep backed up. I can copy different options from my desktop to laptop easily. I’m still learning about flakes and the nix language to be able to do more advanced things, but overall NixOS is a great distro if you want something you can configure once and be done.
I will never understand why people name stuff just by opening an English dictionary and simply picking a word.
Also why start a browser with C++? Google and Mozilla don't employ nincompoops to work on their browsers and still say 70% of their CVEs are due to memory management errors from C++. Instead of learning from that, they start yet another browser in C++.
In theory it great that this org wants to make an alternative, and probably being funded by a millionaire (billionaire?) can't hurt, but C++ man? Come on...
Great article, thanks for posting! Worth noting that swap is also used for tmpfs partitions. Meaning that if you don't have any swap, temporary files in /tmp will use your actual physical RAM. That's probably not what you want.
I think people are a bit overly afraid of SSD lifespan. I've been using my SSD heavily for like 5 years, and it's a QLC drive which everyone told me would die very easily. Turns out it's still only used like 10% of its writes
definitely agreed on against using swap as memory as much as you can especially since it can needlessly wear out your ssd (m.2 on most if not all on modern systems)
allocating swap is still necessary as it provides features such as:
mitigating OOM scenarios (but doesn't prevent them completely)
enabling system hibernation(suspend-to-disk)
On my journey to learning Arch Linux I've personally tried:
0 swap: which was pretty awful with constant unexpected system freezes/crashes
swap file: finicky but doable
swap partition: typical default/ol'reliable
the last two doesn't guarantee 0 problems as user errors such as allocating too much system memory to VMs can cause issues for the host system, but it does tend to mitigate the majority of issues that prevent the perception of system stability in comparison to Windows or Macs
0 swap: which was pretty awful with constant unexpected system freezes/crashes
I've run Arch without swap for many years without issues. The key of course is that you need enough RAM for what you are trying to do with your computer.
There's no reason why a 32GB RAM + 0GB swap system should have more problems than a 16GB RAM + 16GB swap system with the same workload. If anything, the former is going to run much better.
If anything it's way easier to create a file in your filesystem than having to (re-)partition your drive to have a swap partition. Much more flexible too if you want to change your swap configuration in the future.
after a quick preliminary search,
a couple of things I've found out:
this might not necessarily be adopted by the mainstream desktop users, due to the nature of zram compressing data in addition to disallowing hibernation
Hibernating to swap on zram is not supported, even when zram is configured with a backing device on permanent storage. logind will protect against trying to hibernate to a swap space on zram.
data compression by nature incurs dataloss so there are both pro & con tradeoffs to which should be communicated to the user otherwise they might receive an unnecessary worse user experience:
"why is my computer so buggy?"
(the system is working as it's coded but not working in they way the user expects it to)
this would be unfortunate as they might leave back to Windows or MacOS
I could be completely wrong about this, if so please comment or disregard this section entirely
to me atm; zram seems great for server based systems rather than for desktop users' systems
one other method for zram mainstream adoption is to encourage an eccentric system that I'm currently using, which is to have the host system only contain minimal packages to run Virtual Machines:
zram compression might be fine as the main services/programs are run within their relevant and/or separated VM containers
enhanced security as the host is further firewalled/bubblewrapped from the guest like Flatpaking/containerization (and malware is less likely to activate due to malicious users being unhelpful in letting their programs run in a VM 😢🤗)
hibernation can still be achived by save-stating VMs (VM restoration at will basically achieves hibernation so it doesn't really matter if the host is shutdown so long as all VMs are saved by the user before host shutdown)
sorry for the long comment!
stuff like this interests me the most so I've spent a lot of time in learning and tinkering around🤗
I'm running Linux without swap for 20 years on my workstations and gaming PCs now. If you don't hybernate and have enough RAM swap is useless.
My memory doesn't need to be managed. I have 20GB in my current setup and it was never full. If anything gets swapped in this situation it means it needlessly slows me down.
I even mount tmpfs ramdisks for my shader cache dirs, because they get recreated every time anyways and why would i want anything temporary on disk, if i have 20 GB of RAM.
I have 20GB in my current setup and it was never full. If anything gets swapped in this situation it means it needlessly slows me down.
Not necessarily. Your memory also contains file backed pages (i.e. "file system cache"). These pages are typically not counted when determining "memory usage", because they can always be discarded.
It is often advantageous to keep frequently use files in cache in favor of unfrequently used memory pages.
so you think it's faster to keep cache for files on a disk, almost like where the files already are, instead of the 14 GB of actually free RAM that the "free" command shows? if that's your opinion, okay, but i don't agree at all. (btw. that command also shows cache and i think that's included.)
The file cache is never written out to the swapfile, because files are already on disk, like you say. The file cache is kept in memory and the kernel may decide it's more advantageous to swap out unused anonymous memory pages to disk than flushing a file from the cache. You can use the vm.swappiness parameter to finetune this behavior to your liking btw. Lower values favor keeping more anonymous memory pages in memory, higher values favor file backed pages.
To give an extreme example of where this is useful: I have a use case where I process a number of large video files (each 2GiB-10Gib in size). The job I'm doing involves doing several passes over the same file sequentially. You can bet your ass that caching them in memory speeds things up dramatically: the first pass, where it has to read the file on disk is at 200x speed (relative to the video's duration), the second pass at 15000x speed.
Even in less extreme circumstances it also helps by keeping frequently accessed files in your home directory in memory, for example your browser profile. Your browser and desktop environment would be much more sluggish if it had to reach out to disk every time for every file it touched.
And you are free to disagree, but it's not my opinion but the opinion of kernel developers of just about every operating system built the past 4 decades. So I'd say: take up the argument with them and see how far you get.
I've never understood why GNU/Linux actually needs swap. Okay, I created a 4G partition for it, having 32G of RAM. I never used all that RAM, but even so, stuff regularly ends up in swap. Why does the OS waste write cycles on my SSD if it doesn't have to?
However, if I artificially fill up all 32G of RAM, the system almost completely freezes faster than switching to using swap as a "lifeline". And it only comes back to life when OOM Killer finally remembers its existence and kills some f__ing important process.
I’ve never understood why GNU/Linux actually needs swap
It doesn't. It's just good to have in most circumstances.
Also, sidenote: "GNU" doesn't apply here. Swapping is purely kernel business, no GNU involvement here.
Okay, I created a 4G partition for it, having 32G of RAM. I never used all that RAM, but even so, stuff regularly ends up in swap. Why does the OS waste write cycles on my SSD if it doesn’t have to?
Physical memory does not just contain program data, it also contains the filesystem cache, which is also important for performance and responsiveness. The idea is that some of the least recently used memory pages are sometimes evicted to swap in favor of more file caching.
You can tweak this behavior by setting the vm.swappiness kernel parameter with sysctl. Basically higher values mean higher preference for keeping file backed pages in memory, lower values mean higher preference for keeping regular memory pages in memory.
By default vm.swappiness = 60. If you have an abundance of memory, like a desktop system with 32G, it can be advantageous to lower the value of this parameter. If you set it to something low like 10 or 1, you will rarely see any of this paradoxical swap usage, but the system will still swap if absolutely necessary. I remember reading somewhere that it's not a good idea to set it to 0, but I don't remember the reason for that.
Alternatively, there is no rule that says you can't disable swap entirely. I've run a 32G desktop system without any swap for years. The downside is that if your 32G does run out, there will be no warning signs and the OOM killer will unceremoniously kill whatever is using the most memory.
Linux
Oldest