Windows 10 preview - Raspberry Pi Q&A, Help & Troubleshooting

Anyone gave this a try yet?
http://gizmodo.com/you-can-download..._source=gizmodo_twitter&utm_medium=socialflow

gsmyth said:
Anyone gave this a try yet?
http://gizmodo.com/you-can-download..._source=gizmodo_twitter&utm_medium=socialflow
Click to expand...
Click to collapse
Nope, have no use for it...

I've looked into interfacing with GPIO in C# but found it to be lacking in many ways, the most important being speed. It also appears to be impossible to repurpose pins with ALT functions which Microsoft have fixed to SPI/I2C etc- you can't use them as basic GPIO pins which makes it impossible to use Windows 10 with many, many Pi accessories. I have successfully tested I2C, however, and SPI to an LCD display is next on my list.
As for straight up GPIO twiddling, my litmus test was multiplexing a 7 segment, 4 digit display - not exactly an uncommon or complex activity. I couldn't get a stable timing resolution any smaller than 500 microseconds, and at this point you're plugging decimal numbers into DotNet's TimeSpan.FromMilliseconds and things are getting silly.
I'll have to try it with a straight up loop to see what overhead the threaded timer introduces, but right now Visual Studio is refusing to deploy code at all- probably because I've got a shoddy networking setup to bridge the Windows IOT ethernet-only connection to my PC.
One thing is abundantly clear; if you're not a DotNet/C# developer then it isn't for you.

It's Microsoft, just saying.

gsmyth said:
Anyone gave this a try yet?
http://gizmodo.com/you-can-download..._source=gizmodo_twitter&utm_medium=socialflow
Click to expand...
Click to collapse
It is just for developers. No desktop only app testing. Total waste of time.

gsmyth said:
Anyone gave this a try yet?
I'm also interested in finding out. Haven't tried it myself yet.
Anyone got it running?
How does it compare to 8.1?
Click to expand...
Click to collapse

@wodeh: what do you recommend to use in place of Windows 10 ? How does it compare to linux+python (with RPi-gpio) ?
I never used my RPi for this kind of things, I'm just curious.

@davcri91 it depends what you're familiar with- if you already know C#, use Windows and are familiar with Visual Studio then it will certainly get you off to a good start. Right now, though, support for Pi add-ons in Windows 10 is going to be all but non-existent so it's not the best all-round experience.
Raspbian, the official OS, grants you much more flexibility- you can choose to use Python, Ruby, Node JS, PHP, C, Go or really whatever you fancy. All the current documentation and software support is focussed on this OS, so Pi add-ons- especially more complicated things like our Unicorn HAT or the Pi DAC+- will work.
As for performance, I've yet to try a better test since I couldn't get Visual Studio to upload code to my Pi anymore and didn't want to waste any more time with it. My initial experimentation suggested that C# is tremendously slow at toggling an IO pin though, I couldn't even reasonably multiplex a 4-digit, 7-segment display whereas in Raspbian I can clock out serial data to a 128x64 pixel LCD at 200FPS.
Someone with a more recent working knowledge of C# ( mine is about 10 years out of date ) could probably do somewhat better... I'd hope.
The GUI "Universal App" stuff seems to be a talking point for Windows IoT but this has absolutely no utility in any setup that doesn't have a screen. My preferred setup for Raspberry Pi UIs is HTML/CSS with a RESTful or Web Sockets API- that way I can use my phone, my laptop, or whatever screen/device is handy.
So to summarise:
Windows IoT:
* Targeted at existing C# developers
* Dev-environment with step debugging and all the trimmings
* GUI framework... I think... for better or worse
* Slow to build and deploy
* Slow IO, it seems
* Impossible to use pins reserved for I2C/SPI as general purpose IO, breaking any add-ons that rely on this
Raspbian:
* Complete and total free for all- could probably even use C# with Mono
* Whatever Dev environment you can cobble together.. it'll probably be Sublime Text on your computer plus SCP or VIM/NANO/IDLE
* No standard framework for doing anything, which is a shame- there needs to be an official stance + docs on App/Game dev for the Pi
* You can just run Interactive Python and toggle GPIO pins on and off instantly with commands- fast deployment/test/fail cycle since you're already *on* the device
* IO pins will toggle at 20 Megahertz using C, although the resulting signal will be useless mush
* You can re-assign IO pins as you see fit- SPI and I2C can be regular GPIO, and you can use ALT functions to move some things around
This is a totally top-of-my-head summary of the strengths/weaknesses of each. It's an apples to oranges comparison, though!

You made a really great post, thank you wodeh
For now I think I'll stick to linux because I'm used to Python.

Related

[DEV] Blackstone Linux / Android Development

This thread is for development discussion only. If you are not actively working on the project, please go to the discussion thread where your contribution will be more valuable. By keeping this thread clean, we can hope to get Android working on our devices much quicker.​
Project Status:
We now have a 2.6.27 kernel which is capable of booting Angstrom and Android. Android looks good and is responsive, but most core functions are not there yet. Work is focused on kernel development to provide us with a stable base with working hardware. You can find test files in the second post.
We have a Wiki page where the project gets documented in some detail.
History
The development had a slow start while Orux worked out how to make the mdp talk to mddi to get a working display. We hope that progress will be faster now as there has been considerable work on the Diamond and Raphael hardware, which is quite similar to the Blackstone.
23Feb09
Screen problems fixed at last - many weeks work from Orux got the mdp talking to mddi and give us a working display.
03Mar09
Wow! So much progress in just a week! We now have working SD (some issues with brands of cards - under investigation), allowing booting direct from the SD card; working hardware buttons, and some GSM functionality (the network connects and reports of sending SMS successfully). Credit to Orux, Pichurri, Cybersalsero, Jonlar (and have I missed anyone out - not me, I have been spectating!). Pichurri has posted a full install package on teh wiki, go try it and give feedback in the testing thread.
(to be continued!)
Current tasks
Debugging SD card problems many ppl having
Getting our own version of Android (currently using builds optimised for Raph/Diam
More GSM functions - who will be first to make a call???
What can I do?
You tell us! First thing would be to get yourself set up with a development environment. You need Linux on your PC - either installed as the main OS or if you use Windows, in a virtual machine (eg Virtualbox). Then follow the instructions on the wiki to get the sources and latest diff.
Reserved for files
Here you will find the up to date files related to the project.
Pichurri's full 2.6.27 install package is on the wiki here
You should correct the posts: 2.6.26 and 2.6.27 is the kernels used. More info: www.kernel.org
brumbrum said:
You should correct the posts: 2.6.26 and 2.6.27 is the kernels used. More info: www.kernel.org
Click to expand...
Click to collapse
We are using 2 kernels:
2.6.25 --> htc-msm-2.6.25 branch in git.linuxtogo.org. This is the kernel that we are testing in our machines these days.
2.6.27 --> htc-msm-2.6.27 branch in git.linuxtogo.org. Where we will stay in a few days. Better kernel, more improvements. Here is where people from other projects are working now.
orux said:
We are using 2 kernels:
2.6.25 --> htc-msm-2.6.25 branch in git.linuxtogo.org. This is the kernel that we are testing in our machines these days.
2.6.27 --> htc-msm-2.6.27 branch in git.linuxtogo.org. Where we will stay in a few days. Better kernel, more improvements. Here is where people from other projects are working now.
Click to expand...
Click to collapse
Sorry, my mistake. Typed the message above late in the night.
But in the first and second post in this thread it says 2.2.65 and 2.2.67.
Thanks, was posted in a rush, just pm me if you see more errors. We use the odd numbered dev kernels, they will always have the most recent stuff.
A challenge for someone who likes graphic drivers:
I think linux is using ~10% of epson controller capabilities.
We have a lot of information about this controller, and open source code from epson.
Perhaps someone would like to work with this stuff.
orux said:
A challenge for someone who likes graphic drivers:
I think linux is using ~10% of epson controller capabilities.
We have a lot of information about this controller, and open source code from epson.
Perhaps someone would like to work with this stuff.
Click to expand...
Click to collapse
Do you mean things like picture-in-picture? Would be good later on in the gui - multiple desktops, that kind of thing. Also I noticed the Epson controller handles TV-out. Do we know if the out-connection exists for this, or have they just not connected it up?
Another thing to consider maybe USB on-the-go - the MSM72xx supports it; if (big if) the usb port has the right connections, it would be possible to mount external storage.
But I think it's more for later on - core functionality would be about making calls, sms, GPRS/3G. Let's see what we get from the latest kernel. Orux have you talked to the RAPH/DIAM guys on irc about merging?
orux said:
A challenge for someone who likes graphic drivers:
I think linux is using ~10% of epson controller capabilities.
We have a lot of information about this controller, and open source code from epson.
Perhaps someone would like to work with this stuff.
Click to expand...
Click to collapse
what makes you believe that?
whatever makes you believe it, share it!
if you have anything like docs,etc to share or point to lets have it !
Blackstone has got 2 graphic processors:
--->mdp, inside the chip. We have drivers in the kernel (mdp.c, mdp_ppp.c ...) I am not sure what capabilities are being used in current kernel. There are not good docs about mdp processor (I haven't got any useful).
--->epson controller. It can do:
• Picture in Picture, Transparency, Alpha Blending
• Image Rotation (90°, 180°, 270°) and Mirroring
• Scroll Assist
• AME (Auto Movie Enhancement)
• Supports up to three layers
• Image Doubling
• Bi-Cubic Scaling (1/2x ~ 8x)
• Over/Down Sampling Scaling (1/8x ~ 8x)
• Edge Enhancement
We don't have driver support in current kernel, but we have docs and source code from epson (link posted in discussion thread).
Htc Touch Pro has a tvout usb cable adapter, and seems to work in linux! I don't know if this cable works with our device.
USB on-the-go: interesting TODO.
patp said:
Orux have you talked to the RAPH/DIAM guys on irc about merging?
Click to expand...
Click to collapse
Not yet; perhaps your (or pichurri, ...) task when we have a good .27 diff. I have too much language limitations for an on-line discussion
p3ngwin said:
what makes you believe that?
whatever makes you believe it, share it!
if you have anything like docs,etc to share or point to lets have it !
Click to expand...
Click to collapse
OK, OK! These things take time - we all have other jobs I guess. We plan to get any open source docs online in a systematic way, we just need to figure out a reliable way - ie not RS etc. And we have to be careful of proprietry materials - we don't want copyright lawyers after us...
If anyone wants to offer us some rock solid webspace, that would be awesome.
TODO: Investigate instability of screen
I think that problems with screen are caused by onscreen keyboard. This keyboard is an excellent hack, but it is not 100% integrated with android.
We need to test a kernel without it.
orux said:
I think that problems with screen are caused by onscreen keyboard. This keyboard is an excellent hack, but it is not 100% integrated with android.
We need to test a kernel without it.
Click to expand...
Click to collapse
Or use the cup cake version with the keyboard in android it self.
Full doc of the epson controler : http://vdc.epson.com/index.php?option=com_docman&task=cat_view&gid=278&Itemid=40
Link is at the bottom of the wiki, add yours
I don't think we need to put all the docs at the same place, just add links at the bottom of the wiki, either hosted or link to website.
I can provide hosting if you need, just pm me.
repository
what do you guys think about creating some kind of repository(git or svn) to upload and share our blackstone kernel? i think it would make development much easier if you could see changes of other people immediately. we could use github or sourceforge.
I also think the On-Screen Keyboard is a problem.
Earlyer today I was goofing around in Android and every time I moved the keyboard, the graphics started acting very weird.(scrolling, not updating etc.)
When I hit F5 on the OSK, it would refresh Android and go back to the home page and the screen would be normal again.
Maybe route the OSK to a pip on the epson?
It's git for kernel dev, anyways svn sucks (inc troll)
If we set up a git, we'll need a guy working as a maintainer and pulling from everyone. This may become usefull when people start working in many different areas of the kernel, but for now diffs are better as they can be easily shared, and there's a howto in the wiki.
patp said:
OK, OK! These things take time - we all have other jobs I guess. We plan to get any open source docs online in a systematic way, we just need to figure out a reliable way - ie not RS etc. And we have to be careful of proprietry materials - we don't want copyright lawyers after us...
If anyone wants to offer us some rock solid webspace, that would be awesome.
Click to expand...
Click to collapse
hey i have a servage account that i hardly use which has massive space and bandwidth i could give you a ftp account to and any sql servers you may need. let me know
Rewpparo said:
Full doc of the epson controler : http://vdc.epson.com/index.php?option=com_docman&task=cat_view&gid=278&Itemid=40
Link is at the bottom of the wiki, add yours
I don't think we need to put all the docs at the same place, just add links at the bottom of the wiki, either hosted or link to website.
I can provide hosting if you need, just pm me.
Click to expand...
Click to collapse
Agreed, the wiki is the best place for this. Would you be happy for me to mention your hosting offer on the front page (which will quite soon need a better structure I'm sure).
JanSchotsmans said:
I also think the On-Screen Keyboard is a problem.
Earlyer today I was goofing around in Android and every time I moved the keyboard, the graphics started acting very weird.(scrolling, not updating etc.)
When I hit F5 on the OSK, it would refresh Android and go back to the home page and the screen would be normal again.
Maybe route the OSK to a pip on the epson?
Click to expand...
Click to collapse
Now that my friend, is a stunning idea (if it can be done simply). How does it relate to the Android OSK mentioned by xmoo? I guess the linux one is low level whereas the Android one is basically an app in the gui. Advantages to both, but if it works out of the box, the android one would mean we could essentially get rid of the linux one. We have ssh if we want to type in a console (or maybe android terminal app?).

[Q] Advice for my project

So i'll be going to pick up my pi from ups tomorrow, and thought i would get somew advice from those wiser then myself.
The main function for my pi will be as a media player, from my external hdd. But i also want it to act as a server for the drive, allowing streaming and file transfers through my lan for both android devices and win vista/7 computers. In addition i would like it to serve as a network bridge for my xbox(i'm too cheap to spring for a wifi reciever) via ethernet. Also some light web broswing/youtubeing.
My big question is: Which OS would be best for these purposes, and what programs/packages would i need. Would i be better off with openelec or raspbmc. Or raspian with xbmc? This is somewhat new territory for me, and i'm anxious to learn. I would love to hear everyone's thoughts on what would work best
As you want to do different tasks I would recommend the standard Debian to you, because it's designed for general tasks. Special distributions like raspmbc are designed for one thing they are good at (my humble point of view )
I would install android on this device, of course with a costum rom spezial for the device... I hope some developers would do it Then I want buy me a Raspberry Pi too
Yeah if you wanted to have the option of downloading applications other than xbmc, like browser, games, etc. then i would suggest installing a Debian based system such as Raspian.
If you want a more automatic install and you are new to linux then use either Debian or Debian-based "Raspian"
Personally i like Arch Linux OS because it is the lightest distro out and most customizable, meaning you choose everything you want to install no bloatware unless you choose to add it. From A to Z you know whats installed. Great documentation out there as far as the fully manual install process.
@akakai, I couldn't disagree more. If you know what you are doing, you can do the same with Debian. I do it myself when I set up servers or desktops.
mihaum said:
@akakai, I couldn't disagree more. If you know what you are doing, you can do the same with Debian. I do it myself when I set up servers or desktops.
Click to expand...
Click to collapse
i didnt say you couldnt do it, but im saying Arch Linux if you have ever used it. Starts you out in a terminal with no gui whatsoever. the only way it comes... yeah in Debian you can do the same thing, but there is a GUI option.
Dont disagree on a non issue. Generally Debian is known for being preconfigured where as Arch linux is not preconfigured for you at all, unless you get a derivative of it.
Dont want to start anything, but add to the post by stating facts or how you can help the guy asking for advice not putting down what i have said that is actually accurate info.
For what 4Gb SD cards cost these days, get two or three and load them up with various distros and try them all out to your heart's content.
If you make a hash of something, reload the image and start again.
Eventually, when you have got it to do what you want, put it on to a bigger, more expensive card, if you need that amount of storage.
All images are for 2Gb SD cards. The Debian release has an option on initial boot up to expand the root partition to the available size of the disk. With Arch you will have to roll your sleeves up, and do it yourself first with Gparted Live or something similar.
Good luck!
Update: The Rasbian build now requires a 4Gb card minimum.
Advice for medium length project.
I am thinking about creating a cluster for scientific high performance computing, but I know close to zero on this hardware. where to begin? Start with creating a PC and expand from there? Any advice would be helpful for a multiyear project.

WP8 Malware?

I was just reading an article concerning malware on Windows Phone 8
Google News Search "Windows Phone 8 Malware"
From the article
"A 16-year-old security researcher from India plans to present a malware application for Windows Phone 8 at the upcoming MalCon security conference in New Delhi, India, on Nov. 24.
According to a brief description of the presentation on the MalCon website, it will show approaches and techniques for infecting Windows Phone 8 devices and will demonstrate how the prototype malware can steal contacts, upload pictures, access text messages and more."
Will this affect WP8 sales...it certainly doesn;t look good for this to happen so close to the launch...will we need to install AV software on our phones now too?
"Stealing contacts" is not that hard to do, since your app can read the contacts (you don't need any hacking to do that).
But reading + sending them to your server will make the marketplace instantly reject the app. So i doubt there's a problem.
I also don't see how you can infect a windows phone, given that .Net and Secure Boot make it almost invulnerable to everything.
rob243 said:
I was just reading an article concerning malware on Windows Phone 8
Google News Search "Windows Phone 8 Malware"
From the article
"A 16-year-old security researcher from India plans to present a malware application for Windows Phone 8 at the upcoming MalCon security conference in New Delhi, India, on Nov. 24.
According to a brief description of the presentation on the MalCon website, it will show approaches and techniques for infecting Windows Phone 8 devices and will demonstrate how the prototype malware can steal contacts, upload pictures, access text messages and more."
Will this affect WP8 sales...it certainly doesn;t look good for this to happen so close to the launch...will we need to install AV software on our phones now too?
Click to expand...
Click to collapse
Unless you unlock the device and install that software by yourself, i don't believe it ever gonna pass marketplace check before it get online.
Well I am interested to see how its done, apparently the guy will present the proof of concept on the 24th
There are ways to get past checks run in the Marketplace ingestion. This has been previously demonstrated with PoC malware on iOS, which has similar protections. Don't assume it's impossible, especially if native code use is permitted.
Please note that there is a difference between native and unmanaged code, don't mix them up.
Native code has always run on Windows Phone. Both C++ and C# produce native code. The first is un-managed, whereas the second is managed.
Visual C++, the one we use in Windows Phone is, just like C#, a managed native language. It achieves almost the same performance as the standard C++,due to the more optimized compiler. It is possible to run standard C++ on Windows Phone, but it is very difficult to do so because the marketplace knows which compiler you used to make your app (if visual studio is not there, no no). The marketplace also knows which API you use (no Windows Phone API for C++, again a big NO for the submission).
Now, the difference between native and non-native code...
Native code always ends up as 1 and 0. The very code you write in C# will, at some point, end up as 1s and 0s. Same goes for C++(managed or not). The difference between C# and C++ is that the compiler inserts some failsafes into the code (lots of ifs) to check for exceptions. This does not happen in C++.
So the path for C# is like this:
C# code -> MSIL->Native code which is run on your devices (compilation is either done at install time, or in the clouds).
the C++ code we use in Windows Phone has basically the same path! However, the more mature compiler and the "no-failsafe policy unless instructed to" that all C++ variations enforce make the code faster while less safer.
A non-native language will never, ever get the code a developer writes compiled to 1s and 0s.
Such an example are web programming languages, and Java.
For Java, the process is like this
Java code -> various stages of compilation>byte code -> JVM interprets bytecode and then sends 1s and 0s to the CPU to execute-> CPU sends 1s and 0s results back to JVM which displays the results.
As such, Java is somewhat safer than C#, but also a lot slower.
The advantage of using an interpreted language is that you know the hardware capabilities of the device beforehand, and optimizations can be made on the spot.
Microsoft, however, took the middle road with C#. They gave it all the advantages of an intepreted language (due to the MSIL step, the .Net always knows how hardware it runs on, so the MSIL will always target all the hardware capabilities for your CPU, GPU and RAM), while also running on native code, which makes it very fast. They also decided to push in the same failsafe checks Java inserts in its code. This resulted in a slightly slower code when compared to C++.
As a developer, I think the reason for dropping XNA development by Microsoft wasn't its speed. C# could easily run games, and the thousand XNA games we have on the marketplace bear testimony to that. They brought C++ on board because porting apps from one platform to another would be easier this way, especially for apps coming from android or iOS).
Anyway, having said that, the C++ we use on phones does not have the capabilities to access the hardware or the system the same way it has on desktop. It doesn't have more power than C# already did. It is just used there for other reasons. I don't think it will pose any threat to security. Desktop evolved in a different way. Microsoft learned the lesson of system protection a long time ago. They won't repeat the same mistakes now. It wouldn't surprise me if they actually had some sort of AV software built in, just to be sure.
There are so many factual errors in the above post I don't even know where to begin...
"Native" in this sense refers to apps written in a language which gets built ("compiled" although that technically involves compiling, assembling, and linking) directly into machine code ("0s and 1s" is a silly way to describe it, since *everything* on a computer, from programs to plain text files to MSIL or Java bytecode are all binary). Machine code means a binary sequence that the processor can directly execute. This is also referred to as native code, i.e. code which executes on the processor without needing an intermediary layer.
Although technically "native" and "unmanaged" mean different things, the difference is not what you think it is, and it's not very relevant to this discussion. It's entirely possible to have a native managed language ("D" was supposed to be such a thing; I'm not sure to what degree managed C++ qualifies) and to have intermediate-compiled unmanaged languages (you could, for example, distribute unmanaged programs compiled to LLVM bytecode; some systems might actually be doing so). However, MS themselves typically use "native" to mean "not managed", as evidenced by things like debugger modes.
These days, almost everything gets JIT (Just In Time) compiled to machine code even if the build tool didn't produce native machine code itself. This applies to .NET code (gets built as MSIL), Java (gets built to Java bytecode or Dalvik bytecode if on Android), JavaScript (doesn't go through a build process at all, but modern browsers JIT compile it to native before execution nonetheless), and many other languages. Interpreting is slow and requires a lot of memory overhead as well (you have to run the interpreter in parallel with the program actually being executed).
Although it is possible to invoke managed code from native code (only a little messy) and vice-versa (very common, see P/Invoke or COM interop for .NET, or JNI for Java), this should not be confused with them being the same thing. Yes, by the time they reach the CPU instruction decoder they're the same, but the process of loading the program, and the "runtime" environment that it interacts with, are very different indeed. Managed code uses a memory manager (hence the name), which takes care of things like defragmenting and freeing memory (via the garbage collector). This fundamentally violates a number of assumptions common to unmanaged code, such as that the address of data in memory will never change on its own, and that once allocated, a block of memory on the heap remains reserved until manually freed.
Another important difference is that managed languages must use abstractions of function pointers (for example, .NET delegates). In native languages it is possible (though generally unwise) to specify an absolute address (0x040C7F06 or some such) as a function pointer, and call that "function" (which results in the processor attempting to execute instructions starting from that memory address). In practice, this kind of thing is almost never done in PC software; it's bug-prone, completely un-portable, incompatible with security features like ASLR, very difficult to debug (this is the kind of thing that malware might use to make reverse engineering it harder), and there's typically no reason at all to do so.
However, the fact that it's *possible* is a Big Freaking Deal for somebody looking to work around a runtime security check. Consider this: Sliverlight on WP7 doesn't allow arbitrary LoadLibrary (or Assembly.Load, or similar) calls. The APIs available to your app are the ones included in its DLLs, and the ones in the Silverlight for WP7 runtime libraries. Even though the desired functions exist on the OS, and are even linked into program memory, you can't call them because there's no way to get a delegate for them. Now, compare this to native code, where you can literally just scan the code section of your app's memory until you find the entry point for the function you want, then treat that address as a function pointer and jump right into it.
Now, to be fair, I haven't actually written any official WP8 C++ yet. However, I can tell you that the trick mentioned above works just fine in Windows Runtime C++ on both Win8 and Windows RT, which are also supposed to lack APIs like LoadLibrary, and I therefore suspect it will work fine on WP8. Some experimentation is due, in any case.
GoodDayToDie said:
There are so many factual errors in the above post I don't even know where to begin...
"Native" in this sense refers to apps written in a language which gets built ("compiled" although that technically involves compiling, assembling, and linking) directly into machine code ("0s and 1s" is a silly way to describe it, since *everything* on a computer, from programs to plain text files to MSIL or Java bytecode are all binary). Machine code means a binary sequence that the processor can directly execute. This is also referred to as native code, i.e. code which executes on the processor without needing an intermediary layer.
Although technically "native" and "unmanaged" mean different things, the difference is not what you think it is, and it's not very relevant to this discussion. It's entirely possible to have a native managed language ("D" was supposed to be such a thing; I'm not sure to what degree managed C++ qualifies) and to have intermediate-compiled unmanaged languages (you could, for example, distribute unmanaged programs compiled to LLVM bytecode; some systems might actually be doing so). However, MS themselves typically use "native" to mean "not managed", as evidenced by things like debugger modes.
These days, almost everything gets JIT (Just In Time) compiled to machine code even if the build tool didn't produce native machine code itself. This applies to .NET code (gets built as MSIL), Java (gets built to Java bytecode or Dalvik bytecode if on Android), JavaScript (doesn't go through a build process at all, but modern browsers JIT compile it to native before execution nonetheless), and many other languages. Interpreting is slow and requires a lot of memory overhead as well (you have to run the interpreter in parallel with the program actually being executed).
Although it is possible to invoke managed code from native code (only a little messy) and vice-versa (very common, see P/Invoke or COM interop for .NET, or JNI for Java), this should not be confused with them being the same thing. Yes, by the time they reach the CPU instruction decoder they're the same, but the process of loading the program, and the "runtime" environment that it interacts with, are very different indeed. Managed code uses a memory manager (hence the name), which takes care of things like defragmenting and freeing memory (via the garbage collector). This fundamentally violates a number of assumptions common to unmanaged code, such as that the address of data in memory will never change on its own, and that once allocated, a block of memory on the heap remains reserved until manually freed.
Another important difference is that managed languages must use abstractions of function pointers (for example, .NET delegates). In native languages it is possible (though generally unwise) to specify an absolute address (0x040C7F06 or some such) as a function pointer, and call that "function" (which results in the processor attempting to execute instructions starting from that memory address). In practice, this kind of thing is almost never done in PC software; it's bug-prone, completely un-portable, incompatible with security features like ASLR, very difficult to debug (this is the kind of thing that malware might use to make reverse engineering it harder), and there's typically no reason at all to do so.
However, the fact that it's *possible* is a Big Freaking Deal for somebody looking to work around a runtime security check. Consider this: Sliverlight on WP7 doesn't allow arbitrary LoadLibrary (or Assembly.Load, or similar) calls. The APIs available to your app are the ones included in its DLLs, and the ones in the Silverlight for WP7 runtime libraries. Even though the desired functions exist on the OS, and are even linked into program memory, you can't call them because there's no way to get a delegate for them. Now, compare this to native code, where you can literally just scan the code section of your app's memory until you find the entry point for the function you want, then treat that address as a function pointer and jump right into it.
Now, to be fair, I haven't actually written any official WP8 C++ yet. However, I can tell you that the trick mentioned above works just fine in Windows Runtime C++ on both Win8 and Windows RT, which are also supposed to lack APIs like LoadLibrary, and I therefore suspect it will work fine on WP8. Some experimentation is due, in any case.
Click to expand...
Click to collapse
Well, I was just trying to get a "basic picture" of the thing, but thanks for going into much more details.
As I said, the C++ we use in Windows Phone, just like C# on Windows Phone, functions in a different way compared to Desktop or Tablet version(hell, with C# on desktop you can easily do the memory scan thing and find stuff in the OS, not only in your app, but that is generally not needed, since C# on desktop has a much boarder and less limited API) . Unlike the former two, you can't interact outside your application, because your application is sandboxed. Even if you did find the pointer to a system protected function, you wouldn't be able to do squat with it(the system protects itself). Which is why I said C++ can't do things C# already couldn't. In theory, yes you can do what you said, in fact, i expect it to be possible on rooted rooms, but for the average joe...well...it very unlikely to happen, unless he does something stupid.
As for the JIT story, well, yes, Java does use JIT. However, it does so because it doesn't know before hand on what hardware it will run. The same happens with C# and .Net on desktop, and this is due to hardware variations. Right now, for windows phone, the "JIT" occurs directly in the clouds, or at install time, as all Windows Phones (8) use snapdragon chips.
I didn't say there were no differences between the code C# and C++ create at run time. The abstraction layers inserted by the compiler fall under the "failsafes inserted in code that slow things down", which C++ doesn't have. Also the more mature compiler (C++has like 40 years of xp, C# barely made 10, and only 3 on Windows Phone), the "true native" (happy now?) code it generates (which is very close to assembler language) makes C++ faster than C#, but not fast enough nor safe enough to phase out C# entirely.
In fact, if we still have this board 10 years from now, we might C# eventually take down C++.
We should avoid getting into a technical talk in this thread. As you can see, there are non-developers coming by, and an answer such as yours will completely and utterly confuse them. What I attempted to provide was a very basic image they could understand, like JVM sending 1s and 0s to CPU is the same as JIT.
Let's wait and see what we will be presented with. Currently the only thing a WP8 Managed App can't do that was mentioned was reading the SMS-Storage. Everything else is part of the official APIs. It might be that similarily to several WP7 hacks OEM drivers are being used to gain access.
The only thing that would really worry me was if he was able to provide a way to install his Malware bypassing the Marketplace. It might be interesting though for the Jailbreak community, given that any jailbreak bascially means exploiting a security vulnerability to elevate the rights of the current process to allow for those unlocks.

How I, a hardcore Windows user, switched to Linux!

Switching to Linux after many years of using Windows can be a daunting task, but nowadays, it’s easier than ever. I just finished up four years of a computer science degree, for most of which I would switch between Windows and Linux. Windows was primarily my gaming operating system (as anti-cheat clients for games like Counter-Strike require Windows), but for anything else, Ubuntu was my go-to operating system. Prior to starting my degree, I was almost completely a die-hard Windows user (admittedly with experience in Linux server administration) and I would scoff at the thought of having Linux installed on my main machine.
However, it quickly became apparent that Linux in recent years is a whole lot easier than it once was, and the suite of applications you can install has grown dramatically. Gone are the days of needing to compile your own applications, for example, as there are now countless application repositories that you can access. If you think about it, even ChromeOS is a Linux derivative, which has more than enough software support for many people.
My personal Linux experience has basically always been with Ubuntu, but it has clearly improved across the board with package managers coming bundled with many of the popular distributions. Being a hardcore Windows user, I knew my way around a computer and the little that I did need to use the command line for I felt comfortable in using. Pretty much all your favorite applications are on Linux, and the ones that aren’t often have viable alternatives.
For the purposes of this article, I am going to be documenting my switch from Windows to Ubuntu. Ubuntu is a Debian-based Linux distribution and uses the Synaptic package manager, which is a GUI for the Advanced Package Tool, or APT. It also has built-in Snap support. The beauty of using Linux is the terminal, and in particular, how much control it hands over to the user.
Note: forcing yourself to get used to Linux isn’t something that you need to do, and it will come naturally over time. If you’re like me, you’ve used Windows machines all your life, and it won’t be easy to immediately transition over. Your computer is your computer, and making sure you can still do everything that you need to do is paramount.
Linux package managers​The biggest learning curve when switching from Windows to Linux will be learning how to use package manager. In most cases, the various Linux package managers all act and feel the same, and switching from one to another is easy once you’ve learned how to use one of them.
With Ubuntu, you can use the Synaptic package manager, or you can do what I do and make use of APT via the terminal. Applications can be downloaded and installed online as you would on a Windows machine in most cases, and the ones that require a bit more work often have instructions on how to use the terminal to install them.
Personally, I switched to just using the terminal and the apt-get command for nearly all cases.
Build your own​If you’re the kind of person to want to have complete control over their operating system (which likely explains why you’re considering switching from Windows), Arch Linux is an operating system that you basically will need to end up building yourself. It’s a pretty lengthy install process, but a great way to get to grips with Linux and how the terminal works, while also ensuring you setup and install everything that you need and nothing more. Depending on the device you’re using, it’s possible you may need to engage in a lengthy setup anyway in some way or another.
For me, installing Ubuntu on the Huawei MateBook 14 2020 required building the latest version of the Linux kernel in order to ensure complete compatibility, as Ubuntu at the time did not support the Ryzen 4xxx series of chipsets. Your mileage will vary on this front, as it’s entirely possible that your machine will work right out of the box with Ubuntu, once all drivers are set up.
Install Arch Linux
Software that I use​The biggest sign that Linux has come a long way is that pretty much every common application that you would use is now present on the platform. I play a lot of games, I listen to a lot of music, and I do some development. These are the three core necessities I had when switching, and nearly all of them have been met.
Gaming​
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Gaming on Linux is by far the most underdeveloped facet of the ecosystem, and it’s a mixture of developer choices and a history of poor graphics drivers that have left Linux in the current situation that it’s in. NVIDIA refused to contribute open-source drivers, and AMD had an open-source Radeon driver that was not as good as the proprietary alternative dubbed Catalyst. The only open-source NVIDIA alternative was Nouveau, which was developed unofficially by reverse engineering official NVIDIA drivers. These issues were exacerbated by developers not even building games for Linux, though that has changed more in recent years with the advent of the Steam PC (which runs Linux) and a growing number of Linux users on Steam.
There are a lot of AAA titles that don’t work on Linux, and likely won’t ever. All hope is not lost though, as a combination of Proton and Steam Play makes most Windows-only games at least compatible with Linux, even if they may not work perfectly. Proton is a fork of WINE, a compatibility layer for Windows applications to run on Linux, and it has a number of optimizations primarily focused on gaming to ensure compatibility across operating systems.
While an argument can be made that Proton’s existence encourages developers to not bother with implementing proper Linux support, it’s better than the alternative of games not being playable at all. Ultimately, gaming is no longer next to impossible on Linux machines, which puts it far ahead of where it once was. The biggest issue for me switching entirely has been that a lot of anti-cheat software does not run on Linux, and the two anti-cheat clients that I use for Counter-Strike are Windows-only. Aside from that, there’s no gaming incompatibility stopping me from using Linux all of the time.
Many die-hard Linux users will say not to support WIndows-only games, as that will force developers to release games on Linux. While that’s technically true, only roughly 1% of gamers on Steam are using Linux. Is the number growing? Yes. Is it still low? Also yes. The truth is that there isn’t enough interest for developers to want to care about Linux if it’s not easy for them to do so, and rather than alienating people from the Linux community just because they want to play Windows games, we should be welcoming them with open arms and showing them how to get around what may be the one deterrent they face.
If you’re going to ask someone to switch to an operating system that they don’t know and need to learn, and they need to no longer play their favorite games, that’s a pretty tall order for a lot of people.
Download Steam
Development​If anything, development on Linux is easier than on Windows. I use virtualization software in the form of Docker and VirtualBox, both of which are much easier to set up and use on Linux. Docker itself can be finicky to use, whereas the terminal in Ubuntu makes managing and switching between my containers a breeze. The environment variables are also much quicker to manage (in my opinion), meaning that it is easier to set up file paths for SDKs and commonly used project management tools like Maven.
I personally use IntelliJ as my IDE for Java, and PyCharm as my IDE for Python. Setting up LaTeX for document creation and editing was also much easier than on Windows, particularly when attempting to install all of the LaTeX packages that I use for my document templates. LaTeX is a collection of independent tools, and the LaTeX distribution that I use is TeX Live.
Download Docker
Download VirtualBox
Download IntelliJ
Download PyCharm
Download LaTeX
Photo editing​Sadly, Adobe hasn’t released any of its tools officially on Linux. There are two ways to get the likes of Photoshop working on Linux - WINE and PlayOnLinux, or VirtualBox. As already mentioned, virtualization technologies work well on Linux, and it shouldn’t be a problem to get working. However, it’s likely that performance will suffer if running it in a full-fledged Windows VM, particularly if your computer isn’t powerful. If you don’t need all of the advanced features of Photoshop, then you can switch to using GIMP for photo editing, as it does a lot of what Photoshop does.
Download GIMP
Video editing software​Most major video editors aren’t on Linux, and therefore, it’s likely you’re going to need to learn to use a new video editing software. I use MAGIX Vegas 16 for my video editing, and others might not use Adobe Premiere. If you don’t mind learning a new video editor, then the powerful DaVinci Resolve might be exactly what you need to transition over to Linux. What’s more, DaVinci Resolve is free, so you can try it out without needing to break the bank. Like anything, there’s a learning curve, but I found that having had experience with many different editors, I was able to pick it up fairly quickly.
Download DaVinci Resolve
Awesome right up!! I've gone 50/50 Windows-Linux but my distro of choice after trying many, many is Manjaro. It's very easy on computer resources and looks beautiful.
I'm hoping to do a full build of Arch this summer
Arch will be a walk in the park for you after learning Manjaro. You'll find that it's also more stable than Manjaro.
I switched to Linux a year and a half ago and haven't looked back since. Why you ask, well because I got fed up with windoze spyware. Same reason why I use a custom ROM without google trash apps though I kinda miss google maps but hey you can't have it all.
chomsky55 said:
I switched to Linux a year and a half ago and haven't looked back since. Why you ask, well because I got fed up with windoze spyware. Same reason why I use a custom ROM without google trash apps though I kinda miss google maps but hey you can't have it all.
Click to expand...
Click to collapse
XPx64 was Window's zenith with W7 being it's last good OS. I run W7 and have a XPx64 machine.
Zero faith in W11, the fail runs strong in MS.
So sick of big sister wannabes.
I helped my brother install Linux Mint MATE in his 8 year old laptop (dual-boot) and it was 5 to 10 times faster than Win10 and since then I have never even thought about using Windows 10.
#Linux4Life
Much emphasis has been placed on open-source, and I think each person approaching the use of Linux on their PC should consider unpacking this angle because there's lots to think about here. For instance, open-source doesn't necessarily mean free, and neither does it mean best in practice. Nvidia may have refused to release open-source drivers for their GPUs, but they're also spent the last year and a half working with Valve and a number of large hardware manufacturers to make their tech accessible as well as viable for gaming in Linux. Without these two companies providing this support, and the updates they continue to provide, this latest push, the most advancement made towards Linux becoming a viable platform for gaming, would not exist. And their software remains proprietary still. So does the open-source philosophy really provide much draw for non-Linux users to take the plunge?
On the note of users coming from other operating systems, I think it's perfectly reasonable to consider anybody in this group the same as drivers who don't know anything about the mechanical workings of an automobile yet still manage to use them for their intended purpose. Learning to service a vehicle yourself in order to perform maintenance or repairs is to develop a technical skill that many if not most people will never do. For most, the computer is a technical tool fit to facilitate achieving an objective. They don't fancy taking on the role of the mechanic any more than they see themselves becoming a veterinarian to provide care for Fido or Spot. Until Linux's user-experience can be as guided and polished as the simpler alternatives, it will remain the technical user's OS, primarily used by enthusiasts and programmers/developers.
sammiev said:
Arch will be a walk in the park for you after learning Manjaro. You'll find that it's also more stable than Manjaro.
Click to expand...
Click to collapse
I appreciate that. Hopefully before summer ends, I can get started on it
Clamtacos said:
Until Linux's user-experience can be as guided and polished as the simpler alternatives, it will remain the technical user's OS, primarily used by enthusiasts and programmers/developers.
Click to expand...
Click to collapse
This is the number one reason why I use Linux in the first place. I stopped compiling ROMS with the HTC-Evo - which was the first time I set up a Linux build. The first computer I ever bought was a Win 95 Machine (I actually had an old DOS machine with Win 3.1 on it for a short time) and from the beginning, I jumped right into being "the Mechanic"
I JUST started with Ubuntu the other day. I am finding getting connected to my NAS devices takes a LOT of time. Wondering what I need to change/do to make it as fast as Windowz. Just a 2X click and I'm there.
I also can't seem to find a setting for how I want to have my desktop. I don't want a wallpaper just a solid color background.
I'm 70 and it's like starting all over again with a PC. I KNOW my way around Windowz, after all been on it since 1988 and MS DOS before that. So I'm somewhat savvy but this is a whole new world.
flhthemi said:
I JUST started with Ubuntu the other day. I am finding getting connected to my NAS devices takes a LOT of time. Wondering what I need to change/do to make it as fast as Windowz. Just a 2X click and I'm there.
I also can't seem to find a setting for how I want to have my desktop. I don't want a wallpaper just a solid color background.
I'm 70 and it's like starting all over again with a PC. I KNOW my way around Windowz, after all been on it since 1988 and MS DOS before that. So I'm somewhat savvy but this is a whole new world.
Click to expand...
Click to collapse
First, which Distro are you using and second, Google/Bing/Duck are your best friends. On almost any Distro there are packages you can install that will allow you to tweak your settings, download other wallpapers, fonts, etc. That;'s one of the best parts of Linux - it's customizable to anyway YOU want
Over the years I've kept looking at using Linux instead of Windows. But every time I go back to Windows for the following reasons:
I find the Linux system management arcane. I don't want to be a systems manager. I want something as "easy" as Windows' Control Panel/Settings
I use Microsoft Office products and OpenOffice is, for me, not a suitable alternative, especially not for Excel
I use iTunes for my music
I've tried Wine but found it clunky and slow.
I really like the scripting Linux has (I use lots of shell scripts to get certain tasks done) so I use Windows Subsystem for Linux. But that's a far cry from a full-fledge PC.
Clamtacos said:
Much emphasis has been placed on open-source, and I think each person approaching the use of Linux on their PC should consider unpacking this angle because there's lots to think about here. For instance, open-source doesn't necessarily mean free, and neither does it mean best in practice. Nvidia may have refused to release open-source drivers for their GPUs, but they're also spent the last year and a half working with Valve and a number of large hardware manufacturers to make their tech accessible as well as viable for gaming in Linux. Without these two companies providing this support, and the updates they continue to provide, this latest push, the most advancement made towards Linux becoming a viable platform for gaming, would not exist. And their software remains proprietary still. So does the open-source philosophy really provide much draw for non-Linux users to take the plunge?
On the note of users coming from other operating systems, I think it's perfectly reasonable to consider anybody in this group the same as drivers who don't know anything about the mechanical workings of an automobile yet still manage to use them for their intended purpose. Learning to service a vehicle yourself in order to perform maintenance or repairs is to develop a technical skill that many if not most people will never do. For most, the computer is a technical tool fit to facilitate achieving an objective. They don't fancy taking on the role of the mechanic any more than they see themselves becoming a veterinarian to provide care for Fido or Spot. Until Linux's user-experience can be as guided and polished as the simpler alternatives, it will remain the technical user's OS, primarily used by enthusiasts and programmers/developers.
Click to expand...
Click to collapse
Yeah, I Agree with U.
Non-Commercial licenses have its own limitation too.
But, commercial and non-commercial licenses have given us "a color" in our life!
HipKat said:
First, which Distro are you using and second, Google/Bing/Duck are your best friends. On almost any Distro there are packages you can install that will allow you to tweak your settings, download other wallpapers, fonts, etc. That;'s one of the best parts of Linux - it's customizable to anyway YOU want
Click to expand...
Click to collapse
I WAS using 20.04 but got so frustrated I had to give up. I couldn't figure out how to add a folder to the desktop and then put shortcuts in it. Made a folder but I couldn't put anything into it. Then I played some STEREO 2CH videos and only the left side would be audible. Sound settings are so minimal....using the slider for L/R balance did nothing to change it. I guess I'm just too dang stupid to figure it out.
I'm not bad mouthing it, believe me. It's just not the right distro for me, I guess.
flhthemi said:
I WAS using 20.04 but got so frustrated I had to give up. I couldn't figure out how to add a folder to the desktop and then put shortcuts in it. Made a folder but I couldn't put anything into it. Then I played some STEREO 2CH videos and only the left side would be audible. Sound settings are so minimal....using the slider for L/R balance did nothing to change it. I guess I'm just too dang stupid to figure it out.
I'm not bad mouthing it, believe me. It's just not the right distro for me, I guess.
Click to expand...
Click to collapse
Hey i get it too. But, I can say, depending on where you are at with updates, 20.04 has been getting many updates over past few weeks.
i can say gamers and audio files are folks that use a program for the needs. should look at snaps for a Real Hi-Fi player. (Some browsers and some players are just not good enough)
Hang in there... from what I have been reading, the next Ubuntu LTS seems to be rather nice, right from the start. Just need the right software for what you want to do
I JUST started with Ubuntu the other day. I am finding getting connected to my NAS devices takes a LOT of time. Wondering what I need to change/do to make it as fast as Windowz. Just a 2X click and I'm there.
Click to expand...
Click to collapse
I use Ubuntu from time to time. For mounting nas shares I use a script file with mount points which I execute after boot. Example line for the script below. Make sure you create mount points first (for example /media/Tv-shows)
sudo mount -t cifs //192.168.1.123/data/TV-Shows -o uid=1000,username=admin,password=password,rw,nounix,iocharset=utf8 /media/Tv-Shows
I'm sure there is more (maybe easier) ways but this is how I do it
I guess I'm just spoiled. I don't feel I should have to do a script to access my NAS. They showed up but were not accessible in Mint or in Ubuntu. I installed Zorin? and access to them and could make book marks. Somehow, I still felt limited. So I just threw in the towel and went back to Windowz. Too old to give a dang and too set in my ways I guess. Thanks for the info and the help but it's just not gonna be an OS for me.
I just dual boot so I can have the best of both worlds. Thanks for sharing.
sammiev said:
Arch will be a walk in the park for you after learning Manjaro. You'll find that it's also more stable than Manjaro.
Click to expand...
Click to collapse
Um no
Arch is obviously more stable then manjaro, but it definitely won't be a walk in the park (especially the installation) after using an OS with pre-included apps
I'd suggest using Arch after mastering the Debian based distros (like ubuntu or mint) or experiment with manjaro in a vm (better in my opinion)
NullCode said:
Um no
Arch is obviously more stable then manjaro, but it definitely won't be a walk in the park (especially the installation) after using an OS with pre-included apps
I'd suggest using Arch after mastering the Debian based distros (like ubuntu or mint) or experiment with manjaro in a vm (better in my opinion)
Click to expand...
Click to collapse
I'm long past Ubuntu and Mint and I've watched a few walk-throughs for building Arch from code. It'll be a project but one worth taking on

What's a Distro Anyways? A quick look into Linux distributions

Hello World ,​ I am most definitely not the best person to be writing this but somebody's gotta.This will be my best attempt to create and maintain an ongoing description of different Linux Distributions, starting with the most popular and branching out from there. If you're new to Linux, or are interested in using it, practically the first thing you are expected to do is choose a Distro (shorthand for distribution) of GNU/Linux to use. Well if that's where you're at, or are looking to find out more about Linux distributions in general, I'm here to break down the pieces and start a tour of distros so you can find what beckons to you. This part can get a lot of people caught up thinking there's a right/wrong answer, really though, the joy of Linux is making it your own and once you know what you're doing, the make and breaks of a distribution will mostly be their software manager and it's repositories (database of applications). Unless otherwise noted, be aware that practically all distros are designed w/ daily use in mind and will likely come with or be easy to install a basic suite of software to meet those needs.
Spoiler: More About
Most beginner guides and resources for Linux are around Ubuntu and if you want things to be easy, just go download that and be gone, but what I've learned, and hope to share in these posts, is that Ubuntu isn't perfect for everyone, and much of the support for Ubuntu also works on other distros, maybe with a few different keywords. The out of the box experience of other distros may be more or less to your taste, and exploring what you do or don't like by jumping distributions is known as distro hopping. This thread may both be a resource for hopping as well as finding the single right distro for you right now.
I am not an authority on Linux nor would I consider myself an "expert," this isn't a complete guide to distibutions either. Anyone with more experience or knowledge than I is free to correct me or add info and I'll do my best to acknowledge and update. I'll also do my best to refrain from speaking too much on things I don't know about, and will denote when I'm unsure. Also stars will be placed like *Distro Names* to deote I know about but do not have firsthand experience with them. I'm writing this post as I have a slightly above average knowledge and understanding on the world of Linux and would like to share what I can for those just starting their journey, as well as take this experience to expand my own knowledge base. If you want more info on each and every distro, check out something like distrowatch.
1. A Dirty Introduction to Linux ​ For those regular to the XDA forum, a good point of comparison for a Linux distro would be the custom ROM scene for Android, where we have the OEM stuff like OxygenOS, OneUI, but then we see the custom scene starting from AOSP, and derivative Lineage, AOKP, and more complex derivatives like crDroid and Dirty Unicorns (RIP ). But there is a distinct difference in practice between custom Android ROMs and Linux distros, which is binary (application) compatibility. Just because an application was written/compiled for one version of Linux doesn't mean it won't be compatible with others, but generally speaking, that is not the expectation with pre-compiled apps for Linux. All the major distributions simplify getting the right version of the app through the package manager, the Linux equivalent of the Play Store or F-Droid, unlike Android though, everything is typically free .
For one reason or another, you may find an application is not available, or maybe it's outdated/doesn't work. The good news is because most Linux software is open source, you can just compile the source code within your distribution to make it run. Whereas with Android, there is platform uniformity through unified app stores like the Play Store, Linux is a bit more fragmented, but not in a way that has to affect your usability. It is in part due to the variety in Linux distributions that we find them to be more secure than their closed source conterparts, malware written for Ubuntu for example would have to be re-written to work on or sometimes be completely ineffective against say Fedora- or Arch-based distros.
Spoiler: Overview
If you're interested in just seeing what some of the distros have to offer, jump to part 2, but this is where I'd like to break down the different pieces to a GNU/Linux system so you will have a better understanding what's actually going on between distributions hopefully. Unlike a platform like Windows where different functions in the system are all tied to one another in ways we can expect only Microsoft devs to truly understand, and Android where the majority of the what you the user interacts with is designed by Google while using proprietary drivers pre-baked into your handset, Linux can be (and often IS) built piece-by-piece. I'm sure there is better language to describe the difference in philosophy but the words escape me. But from here, we'll be breaking down the bigger pieces distributions will customize and include to make the full experiences we expect from them. Keep in mind this is my best to give an overview of these different parts, but is by no means all that can be said. Every section and subsection following here until part 2 is a deep enough topic to make it's own post, or several posts on, describing the pros and cons, gives and takes of each component choice, and the actual user experience some of these components provide are best experienced firsthand. Just know these are where you find many of the similarities and differences between distros.
1.1 Fixed vs Rolling​ If there's one difference between two distros you should be keenly aware of, it's gotta be distinguishing distributions by their release patterns. Many distros release on a fixed cycle. They'll push out individual and important updates on a regular basis, but will wait for major releases to make large changes. That's where we see things like new features and user interfaces updated on these, when they have a new version release. Compare that to a rolling distro where each component of the system is updated as soon as an update is ready, meaning you may have a major version change to a component months before someone on a fixed distro, but you may get a major change that changes your workflow with little to no warning when running system updates. They both have their gives and takes, but basic rule of thumb is Fixed distros for reliability, Rolling distros for cutting edge features. Standard individual apps, like Firefox, or LibreOffice will update on regular cycles with fixed distros still, maybe not as immediately as a rolling distro usually though, we're mainly talking about OS level updates being either fixed or immediate.
1.2 The Kernel (GNU, and the Bootloader too )​ The heart and soul of Linux, the Kernel itself. Developed by Linus Torvalds, the Linux kernel is essential to the OS, and is what provides the most basic functionality of the computer past the BIOS and bootloader. You may have noticed people (including myself0 using Linux and GNU/Linux interchangeably, there's a very quotable meme here to summarize what this means:
Spoiler: CopyPasta
I'd just like to interject for moment. What you're referring to as Linux, is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.
Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, the version of GNU which is widely used today is often called Linux, and many of its users are not aware that it is basically the GNU system, developed by the GNU Project.
There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine's resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called Linux distributions are really distributions of GNU/Linux!
Put briefly, the Linux kernel handles many system level functions, while user commands and most other basic system level functions are built into what's known as the GNU corelibs and shell utilities, open source projects initially developed separately but are now essential to using a Linux system on a PC. And this right here is what makes desktop Linux (GNU/Linux) different from Android, which is only Linux based and uses many fewer GNU tools. The GNU Project itself is massive (and we'll touch on more applications later) it, includes the essentials for not only GNU/Linux but for any operating system trying to get off the ground. Sure, you can develop your own functions, but if they achieve the same thing as a GNU tool, why not use the tested and trusted libraries/programs that already exist?
Leading us to the most essential GNU tool when starting up your PC, essential to getting an OS up and running, the Bootloader. Android users who root or do any customization will already know a little what this is, but like most things for Linux, is typically GNU and open-source on a PC. There are non-GNU alternatives, but the most common Linux bootloader is GRUB (the GNU GRand Unified Bootloader). So why am I mentioning this? Well coming from any recent Windows PC, the only part of a bootloader you've seen would be maybe a Windows icon or your motherboards OEM icon as Windows is getting ready, on older PCs, you might have gotten a couple lines of text after your BIOS completed post (first part of turning on a PC, sometimes adjustments need to be made to BIOS for new OS and bootloaders to install), but nothing like GRUB. Sure, you can have it only flash on the screen but upon turning on, you need something that tells the computer where an operating system is and loading the initial programs that will allow it to start running and take the reigns from there. GRUB is compatible with practically all operating systems and will be essential if you intend to dual-boot with Windows still installed or if you have multiple distros on your machine. It loads the Kernel, required drivers, and initial system services needed to make everything else work, and once past the bootloader, with a standard distro, you'll be put into userland, where you can sign in, start programs, , do your computing things. There's very little difference between versions of GRUB besides visual, though there are ways you can customize it.
The Kernel which the bootloader loads is where we see the first main thing that vaaries between the distros, as there are different optimizations, behaviors, or even drivers within the kernel itself that need the distribution writers to configure for the best experience possible. For the most part though, even though the Kernel including with a distro is tuned for it, most Linux kernels can be used across distros, or the one's included in a distro are based off of forks of the Kernel for specific things.
Common non-distribution specific versions/forks are:​ - Linux Stable (All the standard kernel stuffs, with maybe a couple tweaks applied by the distribution, typically loading modules [extra instructions needed for different use cases])
- Linux LTS (Long Term Support, may be missing newer edge features but will get essential updates for years to come, may be missing some security patches, but more stable, and less attack vectors afaik)
- Linux Hardened (making changes that may slow down or otherwise negatively impact performance, but overall make the system less susceptible to attacks)
- Linux Zen (focused on making the user experience the best possible with improvements to memory management and resource management as a whole)
Exactly which kernel options will be available to you out of the box will depend on your distribution, but most will install a standard or LTS kernel and then give official options in settings, with unofficial options able to be installed by other means, often the package manager.
1.3 Free vs NonFree Drivers (Not related to money)​ This section can be summarized with this: Do you have a Nvidia GPU you need/want to use? Do you intend to watch copy-protected media? Then you need proprietary drivers, written and maintained by organizations that don't support the open source agenda but know their products must work with open source software due to it's prevalence in certain industries and product types. At least for the Nvidia driver, there is an open source alternative, but do not expect it to do anything besides the barest of basics when it comes to visual effects and performance. AMD and Intel both have open source drivers that are on par with their closed source Windows counterparts to my understanding.
1.4 The Package Manager (and Daemons incl. systemd )​ This is one of the more critical aspects of different distributions, how you get your applications, and how they are managed. Any component to a Linux system, whether it be a the settings menu or Firefox, is considered a package, and the package that handles other packages on a system level is the package manager. While many package managers exist, there tend to be the primary ones for a distribution base like Ubuntu/Debian has DPKG, Fedora has RPM, and Arch has Pacman. Some more universal package manager formats exist, like Snap, but they aren't ideal as they may lack the system integration expected of repository hosted packages.
A background application is typically denoted as a service, though in Linux a service specifically interacts to requests from other programs and the user, while a daemon typically handles only system level functions, which includes monitoring hardware and keeping services alive. The initialization of these daemons is done through the init system loaded at boot after the kernel. The most commonly used init system is systemd right now, but used to be sysv. The exact functions of these systems are too complex for me to go more in detail here, and would require I learn more than I already do, but what I can say is that systemd does much more than what sysv did and in doing so, has many more problems including reliability and security issues that other init systems do not have, though is used for the same reasons that it has problems: it's complex but handles a lot of functions you'd need more daemons, services, and packages to achieve otherwise.
1.5 The Desktop Environment (Including the Display Servers and Window Managers)​ Now we're in the territory of aesthetics and software suites, this is where we'll find both the most and least change between distributions,, at least from a beginner's perspective. Once you have a booted computer, you're typically greeted by a login screen, but even this is a variable your distribution chooses for you by default. Once your system initializes, it needs to communicate graphical information to you but that's not part of Linux or the GNU corelibs. Remember, when this stuff was developed originally, computers were more text than graphics, so a service was developed to display graphics, the Xorg server, evolving into modern X11, was the primary backbone of graphical UIs until a modern replacement known as Wayland began development. It's a server because it handles services, though is itself a type of service. Both have ongoing development though Wayland fixes many problems a 30+ year old program is bound to contain for compatibility. In creating a new standard though, Wayland has split development of the other key ingredient to a real graphical user interface. That said, as a user, typically it won't matter which you choose, but may find some oddities between the two in terms of display scaling and some display features working better in one or the other. I'd say though stick w/ what the distro recommends unless you have a specific issue, just trying to cover the differences.
Moving on, I said before Xorg (or Wayland) is the initial service so your computer knows hot to draw graphics, but it's a type of service known as a server waiting for other services to interact, so then loads a fully fleshed out library (either GTK or QT) to determine styling and such. Once the display server and library are designated and loaded comes the Display Manager, or in other words, login screen. From there one more major piece, the window manager, determines how you can actually manipulate the stylized applications. Other UI services will also be loaded such as system bars, docks, and universal menus. The combination of these things into more complete software suites is what's known as a desktop environment (or DE). All those details are picked out for you when you download a distribution, which will have a default flavor (the primary Desktop Environment they develop for and expect you to use) and flavors w/ other desktop environments that another internal team may maintain to assure compatibility and consistency between updates and versions. There's a lot of Desktop Environments and Window Managers, but they all do the same types of things and have some commonality between them between their QT or GTK origins and their reliance on Xorg or Wayland.
Some common desktop environments and window managers include:​ GNOME - (Premier GTK environment, many forks and derivatives exist, but is good for both touch and traditional mouse/keyboard, but doesn't function like most people expect at first. It can be used similarly to Windows or Mac, but isn't designed to and is best learned correctly before applying too many customization, otherwise why not pick a better fit?)
KDE - (Arguably the most advanced in terms of overall features and customizability, at least of complete DEs. Functions similarly to Windows, w/ some Mac like configuration options. More extensible than GNOME, but also less stable in my experience)
OpenBox - (A completely customizable window manager many other window managers are based on. Does not include all components of a DE, instead giving the bare basics for handling many windows, and leaving the DE experience down to additional packages and/or customization of OpenBox itself)
i3 Window Manager - (A favorite Tiling Window Manager. Always want to lock sections of your screens for specific apps, it may take time to get acquainted but this is for you)
1.6 Gaming (and Windows App Compatibility)​ Despite what many distributions claim, or how this information gets presented, you can expect nearly all distros to have similar compatibility save for the pre-configured programs to help with this. This is due to the same core component(s) across the board for this, Wine and Proton. These are compatibility layers, made to provide the necessary instructions to run binary applications with Windows specific instructions and using Linux/Unix/GNU functions instead. This is done by interpreting the DLLs or Dynamically Linked Libraries which are different app to app and may need different settings to work correctly. Using Wine (or gaming focused Proton), most programs will run without too much hassle but where distributions differ are in their included tools to simplify this such as WineTricks or PlayOnLinux.If you need Windows apps on the daily, and if those apps are reliant on peak performance as much as possible, Linux may not be right for that, not right now at least. But if you're willing to troubleshoot and compromise, you'll find that almost everything can be run in Linux with some tweaking. The worse case would be to look into Virtual Machines, or sandboxxed operating systems created, and with the right configuration and additional features, can be used in ways that make the apps run almost natively, though you are running Windows to maintain it so is only feasible on powerful enough computers, and will hamper battery life if used on a laptop in most scenarios. With this said, I don't recommend "gaming" distros of Linux unless there is something particularly special about gaming on it (there are a couple, but none meant for daily use). If a good distro has a seperate gaming version, I'll try to mention it, but keep in mind, most of the time you'll be installing bloat and you just need PlayOnLinux and WineTricks to get what you want out of it.
2. The Classics​ When getting into Linux, you'll likely find a few very commonly recommended or mentioned distributions, and nearly all other distros are based on these, or based off of the same base in Ubuntu's case. If you're new to Linux, you don't have to use these, but start here so the rest of the distro descriptions make sense.
Spoiler
2.1 Ubuntu​
Spoiler
The tried, the true, you can't go wrong when going with Ubuntu. But what makes Ubuntu so ubiquitous in the Linux community? From their regular long-term support distributions and wide range of utilities included with it, Ubuntu is the go-to fixed distribution for anyone looking for ease of use in Linux. They offer both an LTS version for users not wishing for regular upgrades, with every other version being a standard release, updated for a little while, but phased out much more quickly for each new release. The default flavor of Ubuntu has for some time now come with the GNOME Desktop Environment, pretty much the standard for Linux desktops. Due to it's size and corporate backing, you'll find prorgrams are easier to find, download, and sometimes even use on Ubuntu. This has the downside of including many more nonfree proprietary pieces of software, as well as less care put in to user privacy. That said though, more things work out of the box, and you'll find it comes with a simple to use graphical package manager which allows you to find and install applications with ease though. If you're still afraid of touching a computer terminal, Ubuntu is a safe choice as you transition away from propietary computing.
As will be the case with many of these distributions, Ubuntu isn't entirely responsible for it's non-GNU/Linux pieces, particularly, it used the Deb package format through installed through DKPG (the Debian Package Manager) usually using APT (Advanced Package Tool). Or in simpler terms, it's based on another Linux distro, Debian Linux. We'll give some more info on that later, but what that means here is that Ubuntu is built on top of what's come before, and has integrated what has come after for a feature-rich experience w/ consistent theming. In addition to the Debian package base though, there are also Snaps which are sandboxed applications that can be updated directly without the need of Ubuntu pushing out an update, but are not popular among many of the users. My understanding is that this is due to it being sandboxed, thus may behave different or not fit in as thematically as apps maintained by the official repositories.
On top of it being a well-themed, reliable OS, it comes in both user and server oriented releases w/ many official and unofficial flavors existing including:
Kubuntu - Ubuntu w/ KDE, or the K Desktop Environment. More Windows like, but also more customizable than the default GNOME
Ubuntu Mate - Created when GNOMEwent from version 2.x to 3.x, Mate (pronounced mah-tay, like Yerba Mate) is a more traditional desktop that can look and feel like Windows or Mac, but is a continuation of what GNOME 2.x was, a good looking, performant desktop environment
Xubuntu - Ubuntu using Xfce, a well rounded, simple desktop manager that's always felt like a bit of Windows XP and 7 combined to me, leaning more on the XP side. Primarily used as a stable desktop environment that uses minimal resources while including the features expected, like window snapping, animated window resizing, and a navigation bar.
Ubuntu Budgie - Using the Budgie DE, this is often considered to be closer to a Mac-like experience, but besides the central dock, has a lot going for it distinctly un-Apple like. The programs menu and widgets it includes makes this DE feel like it's own thing
Plenty more flavors exist but these felt like the most critical to mention. As we'll get to later, many distinct Ubuntu-based distros exist too, but just because it is based on Ubuntu doesn't make it a flavor of Ubuntu, which I hope to illustrate when comparing to Linux Mint later on.
Examples of
App install
Code:
sudo dnf install xxx
App Update
Code:
sudo apt update
System Update
Code:
sudo apt dist-upgrade
2.2 RHEL/Fedora​
Spoiler
Doing business w/ Linux? Well then this is probably the Linux distro most recommended for this. Red Hat Enterprise Linux (RHEL) is a commercial Linux distro aimed at the business market currently maintained by IBM. For those reasons, you'll find it's likely easier to get business oriented software on here as companies have come to trust Red Hat to make some of the most stable and secure software you can get out of the box with few compromises. Fedora is the open source free version of RHEL maintained by the community. You'll find more features and user centric programs with Fedora, but are binary compatible, or programs will work across the board. That said, even though RHEL is sold for real money, these distros are much stricter in regards to what's included being open-source and you won't be getting perfect hardware support out of the box if you have something like a Nvidia GPU or software needing proprietary drivers, and is probably the least recommended distro here for gaming on Linux. There's less customizations done than say Ubuntu as well, but you may find it more performant and reliable than Ubuntu partly due to this. These distros are released on a fixed cycle as well but unlike Ubuntu, there isn't a long-term support version, instead, to stay up-to-date, you must be willing to upgrade every 9 months or so. For this reason, Ubuntu server is much more popular for server situations.
Inside of RHEL/Fedora, you'll find the RPM package format with the DNF package manager to install. This is a package format incompatible with Ubuntu, Arch, and other distros not based off the same source code, but the visual package manager will appear quite similar between it and Ubuntu. If you're willing to download Fedora instead of Ubuntu, I'd hope you are a little more inclined to use the Terminal for package management as you'll find it's a lot easier to type a couple words than open a program, type, search, read description, click multiple times before finishing an install. One other interesting thing to note that's different between Ubuntu and most other distributions is that Fedora uses BTRFS by default for it's file system. This is in regards to how it stores and manages files, on Windows, everything is exFAT or NTFS usually, but in Linux, you'll find the most common is called ext4. Consensus seems to be that BTRFS is the best of these options, but ext4's limitations haven't been met and has been stable for longer, so we will not see BTRFS as the default all too often.
Examples of
App install
Code:
sudo apt install xxx
App Update
Code:
sudo dnf upgrade
System Update (multi-step via command line)
Code:
sudo dnf upgrade --refresh
##restart PC, REQUIRED STEP BEFORE ALL UPDATES##
Code:
sudo dnf system-upgrade download --releasever=xx ##WHERE xx IS THE VERSION NUMBER##
sudo dnf system-upgrade reboot
Similar to Ubuntu, there are flavors here, maintained directly by the main dev team instead of individual devs though, known as Fedora Spins. Similar to Ubuntu, you'll find both a KDE and Xfce spin, as well as many others. And like Ubuntu, there exists distros based on Fedora but distinctly different, though due to it's relative simplicity in presenting itself, there are far less of these. Because both Ubuntu and Fedora have a lot of money backing them, they are some of the best distributions for anyone new to Linux, but maybe you're not wanting some corporate entity in charge of maintaining your software. Maybe you're more inspired by the community co-creation aspect, or want to have more control over the fine details of how your PC works. If so then read on.
2.3 Arch​
Spoiler
Got that DIY attitude with the time and patience to learn new skills? Well Arch might be right for you. It's not building Linux from the ground up (we'll get there) but it has usually required you (the user) to not only configure your hard drive and manually copy files and such, though there are automated tools to help, and as of recently, now includes one of these. It sticks to the principles of KISS (Keep It Simple Stupid), which is to say it has all the simplest necessities out of the box, unfortunately not the simplest to install. You get a terminal interface, a rolling linux system, some networking tools, and that's about it. If you want a GUI, you have to install the GUI, if the default config of the GUI doesn't work for you, you have to customize the GUI. While this may sound daunting, it's not as bad as you think, partly due to my favorite package manager here, PACMAN! As will be the case with basically all the package managers here, it will help you get all the dependencies required to install and run an applications correctly.
On top of having this standard package manager, Arch users have another goldmine of applications you don't get any where else, the AUR, or Arch User Repository. While AUR apps are not installable the same way through pacman as other apps, you'll find many apps here that otherwise claim to only work on Ubuntu or Fedora, as well as many gits for programs that wouldn't make it into standard repositories. The up to this is you can almost always get something working on Arch with little trouble, the downside to this is that the AUR needs to be maintained, and sometimes you may find an out-of-date AUR listing and not realize you'd be better off cloning and compiling the git yourself. Or in the worst case, they may be pre-compiled or need PGP keys that the maintainer has not maintained, making it uninstallable. Luckily, it's really only apps that aren't necessary where this happens, but it's still frustrating nonetheless.
Because of it's barebones nature but wide compatibility, you can use Arch however you please, but you have to know the different pieces to make it work how you want. For example, do you want it to be a file server? Well, if you know what apps would make it a non-graphical file server, you can do that. Want it to be a network logger? Download the right applications again, and let it do it's thing. Because there's so little extra, you are less likely than on most other Linux platforms to run into performance issues, and can have servers with extraordinarlily long runtimes. But you can also bring it all down a lot more easily if you don't know what you're doing and either have incompatible packages or configuring them in ways that crash your PC, so user beware.
Examples of
App install
Code:
sudo pacman -S xxx
Package Update (since this is a rolling release, this will update both user and system apps)
Code:
sudo pacman -Syu
Package Search
Code:
pacman -Q "xxx"
An AUR helper (not recommended by devs, though used by many, including most Arch based distros including these
Code:
sudo pacman -S yay
##Once installed##
yay "xxx"
##enter your sudo password to proceed)
2.4 * Gentoo (More info in Section 6) *​
Spoiler
While Arch Linux is about keeping it simple while making you do a bit of the work, Gentoo is a distribution with an even more hardcore DIY philosophy having you make many more conscious decesions about your Linux. A big theme in the Gentoo community is building and compiling one's own software, this is not a beginner's OS by any means, and a solid, working knowledge of Linux and terminal navigation will be required. Due to this, details will be discussed much later on.
2.4.1 ChromeOS/ChromiumOS​ ChromeOS and ChromiumOS are linux distributions based off Gentoo designed for simplicity with the Chrome (or Chromium) browser taking center stage. If you're interested in Linux though, you'd be looking at ways to remove ChromeOS from your machine, not add it typically.
3. Debian-based? Debian based ​So none of the above caught your attention? Maybe you want the compatibility of Ubuntu but don't want as much proprietary software, or are not comfortable with a large company like Canonical creating and maintaining Ubuntu as they please. Well as stated earlier, Ubuntu is derived from Debian, which provides the base for packages and binary applications to run, meaning anything else based on Debian should have similar compatibility.
Spoiler
3.1 Debian (Buster)​
Spoiler
Starting off strong is the og, Debian itself. Currently on Debian 10, codenamed Buster, it is fast and reliable, with a focus on LTS (long-term support) rather than bringing cutting edge features. Similar to Ubuntu, it is easy to use proprietary drivers as needed, and is also released on a fixed model. That said, we haven't seen a major release in years, but many new features do eventually get added through incremental updates and you can use Debian Testing if you'd like to get some of the newer features you might find in something like Ubuntu or Mint
3.2 Linux Mint ​
Spoiler
Based off Ubuntu (which is Debian-based, so is Debian-based in a sense), Mint is a popular choice amongst people distrusting of Canonical but wanting a stable OS with intercompatibility basically guaranteed. The default Desktop Environemnt is one of the devs own creation, being a modified version of GNOME 3.x known as Cinnamon. It has a glassy almost Win7 look to it, but has evolved it's own design language as it's matured. That said, Mint is a little more privacy focused, and do a good job maintaining their repository to avoid the use of the oft-maligned SNAP package format Ubuntu pushes.
While the DE Cinammon is GNOME based, it offers greater customizability than GNOME while taking less resources. It has many of the same elements as GNOME but presented in a way that desktop users will feel more at home such as the navigation bar at the bottom and the start menu being much closer to Windows than GNOME 3.x it's based off of.
3.2 Deepin (I'd urge you to look at alternatives, maybe ok if you live in China but still better alternatives)​
Spoiler
You may find Deepin in your search for a Debian or Ubuntu OS that looks nicer, and by all means, Deepin is a beatiful system, originally based off Ubuntu and KDE, they moved to a Debian base and have developed their OS to so it's not just some souped up KDE on here, but it's own Desktop Environment. It has it's own dock, settings menu, terminal, text editor, etc. with KWin being the only part of the DE distinctly KDE. But even then, that's more in a technical sense than a usability sense as Deepin looks more like a Mac than anything we've discussed so far. That said, Deepin isn't completely open source though and was created and is most used in China. Due to the CCP, many are skeptical of this distro, though the main dealbreaker comes down to the repos being Chinese based so downloads are slow and unreliable.
The good news and why Deepin get's its own listing here is that it's DE is so striking, it's been brought to the other Linux distros including Ubuntu and Arch so you can get all the eye-candy with your favorite distro and none of the potential spying.
3.3 Raspberry Pi OS (NOT YOUR ONLY OPTION)​
Spoiler
Based on Debian, this is the official OS that the Raspberry Pi team maintains and recommends. If you have a Pi 3 or 4, feel free to use this, but a none GUI OS will probably be better for performance and storage space. Basically Debian with some Pi tools built in
3.4 SteamOS (DEAD)​
Spoiler
Valve's (1st) attempt at making a Linux OS for their licensed Steam Machines. SteamOS was available to download and install on other systems and was based on Debian as well, with Steam Big Picture taking control of the interface. It is not well maintained now and is not recommended, even with it's Steam integration. A new SteamOS could come up but the same thing could be achieved with any of these distributions w/ Steam installed.
3.5 * Kali Linux *​
Spoiler
Many know this as the hacker's Linux. It is based on Debian and comes with tools designed for penetration testing as well as a lot of other cybersecuirty software. More could be said, but if that's what you're into, I don't think you need me to tell you more, do your own research how to use this OS, it is not recommended for new users.
3.6 * PopOS! * ​
Spoiler
An Ubuntu derivative gaining a lot of traction lately, PopOS! is created by System76, the largest Linux specific computer company targeted at individul consumers. It is another user-friendly OS to operate and install, but unlike Ubuntu, doesn't want your data, and is more privacy centric. In addition though, there are performance centric features pre-configured here like having the Vulkan GPU drivers installed out of the box, but not much you can't do w/ Ubuntu as well, though they claim to have many other under the hood improvements. User satisfaction w/ PopOS! seems to be higher from my experience. Same can be said of Linux Mint though.
4. Pacman? Waka-Waka​So a fixed release cycle isn't right for you. Maybe you want all the cutting edge features Linux can offer and you want it now. Or maybe you want the endless user repositories of the AUR without the trouble of setting it up from scratch. If that sounds like you but Arch is still a bit above your head to setup and maintain, well then an Arch-based distro might be for you
Spoiler
4.1 Manjaro​
Spoiler
Based on Arch, but is much more like Ubuntu in terms of set goals and presentation. This is a highly recommended distro if you want the customizability of Arch, but aren't quite confident enough to format your own harddisks and initialize your bootloader/EFI partition.
4.2 Garuda KDE Dr460nized​
Spoiler
Like Manjaro, but a greater emphasis on aesthetics and performance. Uses the Linux Zen Kernel and BTRFS for optimal performance. These features do not reflect well in vitual machines, as compared to running on real hardware. While I don't specify flavors too often, this is their customized KDE flavor that is potentially on it's way to being it's own DE. While it combines many open source programs not exclusive to this styling, it's custom configuration of the Latte Dock makes it look extremely Mac like, while it's custom KDE Sweet theme put's it in a style category that's hard to match out of the box with these other distros. And one of the best parts is it's ability to pre-configure and add apps from the repo of our next distro
4.3 BlackArch​
Spoiler
Work in Progress, check back later
5. Grab Your Hats ​Stability and reliability is the cornerstone of the workstation orriented distributions based off the same base as RHEL and Fedora.
Spoiler
5.1 CentOS​
Spoiler
Work in Progress, check back later
5.2 openSUSE ​
Spoiler
Work in Progress, check back later
5.3 * Rocky Linux *​
Spoiler
This was created by one of the people behind CentOS, and my understanding is this will replace CentOS when that stops receiving updates (which is in the near future unfortunately)
6. I Don't Need You, I'll Do It Myself​If you don't want anybody telling you what you can or can't do with your computer and you're not afraid of getting your hands dirty, check these projects out.
Spoiler
6.1 * Gentoo *​
Spoiler
Work in Progress, check back later
6.2 * Linux from Scratch *​ A true DIY Linux project, requiring you to download, configure, and compile source code to build a Linux system from the ground up. Beyond just compiling a git, or choosing some of the package options, Linux from Scratch will guide you from beginning to end making your own one of a kind distro, though with enough uniformity as to be a proper guide and having compatibility with the greater Linux ecosystem.
7. Wait... This Isn't What I Signed Up For​OS Projects that are open source, potentially POSIX compliant, but aren't Linux. This is by no means complete and be aware many other interesting OS projects exist not listed here
Spoiler
7.1 * OpenBSD *​
Spoiler
Not Linux, but still like-Unix, openBSD is the continuation of BSD, a unix derivative. It is POSIX compliant and has runs GNU corelibs as well, but has a kernel all it's own. If you're looking for something different but still getting decent support, look into openBSD.
7.2 Haiku​
Spoiler
An open-source OS meant to be reminicent of BeOS, an OS developed through the 90s and was ahead of it's time. I'm unsure of the capabilities of a system like this in 2021 even if it were fully compatible on hardware, but an interesting project nonetheless. And if there are more practical applications of Haiku or BeOS, please tell me.
7.3 ReactOS​
Spoiler
Meant to be binary compatible with Windows, it's a clean room project designed to reverse engineer Windows. Still has a long way to go before being a usable OS for daily use, but is able to run on real hardware and run many applications up to the XP-era of Windows
Final Note:
I'm new to this type of writing and as said a few times, this is a work in progress, so feedback is appreciated. That said, I know this post is a little barebones for now, I intend to flesh it out with pictures, a list of typical unique (or distinct) packages each distro contains, and more. Also be aware I may not be able to update daily as I'd like to, but will do my best to have this fleshed out completely within a couple weeks.
Suggestion: add MX Linux (Debian-based) and openSUSE (Tumbleweed and Leap)
Good post @thats_the_guy, this will surely be helpful to Linux newbies (if there are any...)
thats_the_guy said:
Hello World ,​ I am most definitely not the best person to be writing this but somebody's gotta.This will be my best attempt to create and maintain an ongoing description of different Linux Distributions, starting with the most popular and branching out from there. If you're new to Linux, or are interested in using it, practically the first thing you are expected to do is choose a Distro (shorthand for distribution) of GNU/Linux to use. Well if that's where you're at, or are looking to find out more about Linux distributions in general, I'm here to break down the pieces and start a tour of distros so you can find what beckons to you. This part can get a lot of people caught up thinking there's a right/wrong answer, really though, the joy of Linux is making it your own and once you know what you're doing, the make and breaks of a distribution will mostly be their software manager and it's repositories (database of applications). Unless otherwise noted, be aware that practically all distros are designed w/ daily use in mind and will likely come with or be easy to install a basic suite of software to meet those needs.
Click to expand...
Click to collapse
Outstanding post!!!
Superb Post Bro !!
This help me alot to understand more of this "Realm"!
I think, you should add more explanations regardling of Apps inCompatibilites on several Distros----how & why ? or create a section about that.
Thanks!
can you make a list of distros that arent ubuntu based... All I see is some flavour of ubuntu kubuntu, lubuntu etc.
Dhairy said:
can you make a list of distros that arent ubuntu based... All I see is some flavour of ubuntu kubuntu, lubuntu etc.
Click to expand...
Click to collapse
He did touch on that a little bit but I'll list then for you
Debian based:
Debian
Ubuntu (and it's derivatives kubuntu, Lubuntu, etc.)
Mint
Pop!_os
MX Linux
Elementary
Zorin
RHEL based:
RHEL
fedora
CentOS
Arch based:
Arch
Manjaro
EndeavourOS
Then you've got independent ones that are close to the ones that are mentioned above like
OpenSUSE
Slackware
Alpine
Gentoo
A good place to see distributions and more specific information about them is https://distrowatch.com/
Hopefully that helps
This:
thats_the_guy said:
a lot of people caught up thinking there's a right/wrong answer, really though, the joy of Linux is making it your own
Click to expand...
Click to collapse
Exactly!
Try, break*, tinker, start again! Just do it!
* but do make backups!
SigmundDroid said:
Try, break*, tinker, start again! Just do it!
Click to expand...
Click to collapse
This is the way.
I use debian sid as my daily driver
Good post. I have used several dristo in the last few years and the only one I haven't tried is Fedora. Actually I run MX Linux, it's a compromise but it's good for me and it's good for my family.
Now i use Debian 11 bullseye btw
iamshubh69 said:
Debian 11 bullseye
Click to expand...
Click to collapse
What desktop do you use primarily?
SigmundDroid said:
What desktop do you use primarily?
Click to expand...
Click to collapse
You mean specs of my desktop or anything else?
iamshubh69 said:
You mean specs of my desktop or anything else?
Click to expand...
Click to collapse
Pretty sure he means Desktop Environment, like XFCE, etc
HipKat said:
Pretty sure he means Desktop Environment, like XFCE, etc
Click to expand...
Click to collapse
Then i use kde plasma
Yes, thanks for pointing it out @HipKat
Me, too
I just wonder what will be in 2023 with KDE and Debian 12 when no maintainer is found for QT6...
https://www.phoronix.com/scan.php?page=news_item&px=Debian-Needs-Qt6-Maintainers
...but then Plasma 6 doesn't seem a pressing mattter yet:
https://community.kde.org/Schedules/Plasma_6
SigmundDroid said:
Yes, thanks for pointing it out @HipKat
Me, too
I just wonder what will be in 2023 with KDE and Debian 12 when no maintainer is found for QT6...
https://www.phoronix.com/scan.php?page=news_item&px=Debian-Needs-Qt6-Maintainers
...but then Plasma 6 doesn't seem a pressing mattter yet:
https://community.kde.org/Schedules/Plasma_6
Click to expand...
Click to collapse
Lmao
iamshubh69 said:
Lmao
Click to expand...
Click to collapse
Better don't laugh your ass off so quickly... Srsly, am I overlooking something here? Wouldn't that pose a problem?
Eh, but you're probably right, why should we worry about the tomorrow-worries of other people Besides, unlike windows or mac, we can switch to anything and/or use things together...
SigmundDroid said:
Better don't laugh your ass off so quickly... Srsly, am I overlooking something here? Wouldn't that pose a problem?
Eh, but you're probably right, why should we worry about the tomorrow-worries of other people Besides, unlike windows or mac, we can switch to anything and/or use things together...
Click to expand...
Click to collapse
I've used XFCE for so long but I loved KDE-Plasma when I used it, too

Categories

Resources