No Stupid Questions
No such thing. Ask away!
!nostupidquestions is a community dedicated to being helpful and answering each others' questions on various topics.
The rules for posting and commenting, besides the rules defined here for lemmy.world, are as follows:
Rules (interactive)
Rule 1- All posts must be legitimate questions. All post titles must include a question.
All posts must be legitimate questions, and all post titles must include a question. Questions that are joke or trolling questions, memes, song lyrics as title, etc. are not allowed here. See Rule 6 for all exceptions.
Rule 2- Your question subject cannot be illegal or NSFW material.
Your question subject cannot be illegal or NSFW material. You will be warned first, banned second.
Rule 3- Do not seek mental, medical and professional help here.
Do not seek mental, medical and professional help here. Breaking this rule will not get you or your post removed, but it will put you at risk, and possibly in danger.
Rule 4- No self promotion or upvote-farming of any kind.
That's it.
Rule 5- No baiting or sealioning or promoting an agenda.
Questions which, instead of being of an innocuous nature, are specifically intended (based on reports and in the opinion of our crack moderation team) to bait users into ideological wars on charged political topics will be removed and the authors warned - or banned - depending on severity.
Rule 6- Regarding META posts and joke questions.
Provided it is about the community itself, you may post non-question posts using the [META] tag on your post title.
On fridays, you are allowed to post meme and troll questions, on the condition that it's in text format only, and conforms with our other rules. These posts MUST include the [NSQ Friday] tag in their title.
If you post a serious question on friday and are looking only for legitimate answers, then please include the [Serious] tag on your post. Irrelevant replies will then be removed by moderators.
Rule 7- You can't intentionally annoy, mock, or harass other members.
If you intentionally annoy, mock, harass, or discriminate against any individual member, you will be removed.
Likewise, if you are a member, sympathiser or a resemblant of a movement that is known to largely hate, mock, discriminate against, and/or want to take lives of a group of people, and you were provably vocal about your hate, then you will be banned on sight.
Rule 8- All comments should try to stay relevant to their parent content.
Rule 9- Reposts from other platforms are not allowed.
Let everyone have their own content.
Rule 10- Majority of bots aren't allowed to participate here. This includes using AI responses and summaries.
Credits
Our breathtaking icon was bestowed upon us by @Cevilia!
The greatest banner of all time: by @TheOneWithTheHair!
view the rest of the comments
So, both Linux and Windows comes with a component called the "Kernel" (technically, Linux is the kernel, and the OS is something like Ubuntu, Fedora, etc...). This Kernel sits between the actual hardware and the rest of the operating system. It is responsible for things taking your app and loading it into memory, then handing the starting point to the CPU, things like this.
Since both of these kernels are developed independently, and basically from scratch, they work quite differently. When a program (app) is launched, the operating system needs to know a lot of small details in order to actually run it. What it needs to know and how to find it is quite different between Linux and Windows. Windows "Portable Executable" files (.exe files), and linux uses Executable and Linkable Format files. Your idea would be to simply re-arrange and augment the data in this header so it executes on the other platform, right?
There is a major wrinkle with this though, and that is the system libraries. Both the OSes have functionality to make it easier to write applications, provided by the OS. Things like sound libraries to write sound to the speakers, or graphics APIs so the application can draw to the screen. For Linux running on Windows, you can just look at what Linux provides and emulate that, or grab the source code and port that to Windows. However, the reverse is not so easy, because Windows is closed-source. Rebuilding every windows API from scratch is quite difficult, and made harder because the architecture is different, and solutions that are easy to provide in Windows might be quite hard in Linux.
It's this library gap where the value of Wine comes from, and how it works.
You might ask, then, if it's possible to run both kernels, and provide both options. Yes. In fact, this is how WSL on Windows works. It runs a customised version of the Linux kernel as a Windows application. Likewise, docker allows you to run a Windows nanosever, which is somewhat similar. However, running a container has more overhead than running the system API translations.
Running them 'natively' doesn't really make sense, in the same way I cannot connect K'nex pieces to my Lego model directly. The two operating systems simply have different shapes, and cannot be directly connected.
K'nex to LEGO was a great analogy
My god, you blew my mind. Thank you for this great explanation.