First of all,

  1. I've a scientific background and my professional work involves scientific computation: Lots of Python, Matlab, C/C++, TeX, Git, Java apps and some Julia, Parallel computing, web development and other every day works.
  2. I like command-line and scripts. I like the manifest of simplicity as Arch claims. But I afraid that this cause me a lots of time and I don't know whether this minor joy worth it or not.
  3. I've been with Linux since 2003, However I'm not more than a intermediate user (at most) so I'm not definitely an Admin or sth comparable. Unfortunately I've been away from Linux during the last 3 years and now I'm temptation to come back and get familiar again.
  4. Being stable is a must have feature since I am usually involved with something else other than maintaining or tweaking OS. But I love the ability to customize the OS. stable for me doesn't means no hang or no reboot. I want a solution which I could rely on for a while, a solution which OS acts more like a tool not a constant target of fix (I know this is very much based on my experience...). I want to install my OS once, configure it once in while and just update it after then without any breaking compatibility or widespread bugs or problems.

I'm comfortable with Windows, I've even adopted PowerShell+Cygwin and lots of unix-like solutions, Python, TeXLive, Git, Java are working (but not as clean as Linux) I've even "pushed" myself to use a bit of C# for power-shell command-lets (to resemble bash script, btw I don't like .NET). In fact Windows is doing the job but I like a first hand experience and better solution. I think It might worth it to get more power/flexibility/clear maintenance with a little effort/time.

These different and even contradicting desires make it hard for me to decide a good strategy for my new machine. I like to come back to the Linux world but I'm afraid of putting a lot of time there. And since I've been away for a while I don't have enough information about the current condition of Linux desktop. Currently I've these options:

A. Using Linux and Windows as dual boot alongside each other. B. Using Windows (as host) and installing Linux on a virtual machine C. Using Windows, forgetting about Linux and try equivalent solutions and configs in windows world.

about the distro I also have same conflicts, I had been primary a Fedora user.... Ubuntu? I've still many doubts...Debian seems far from edge, sid? I don't know....I love Arch philosophy of being simple but never tried it (and again I'm afraid of possible time, is it really time consuming?),...

So please help me with my decision, what do you suggest?

p.s. I didn't have a good experience with virtual machines in the past, lots of problems, it might be changed now but currently I think installing Linux in a VM isn't a good idea.


UPDATE: (according to goldilocks comment)

What is my primary research background?

I'm a PhD student and I'm working on Digital Signal Processing (Department EECS: Communication Systems) Most of my works are primarily mathematics, simulation (numerical computation) and publishing (TeX and Vector Graphics).

My Primary developing/simulation/app environments are:

  • Python
  • C/C++
  • TeX
  • Research Suits such as (Docear based on Java, Zotero, ....)
  • PDF
  • Git

I've also some interests and hobbyes such as Julia, Java, Web Development (Drupal, HTML/CSS, XAMP,...),...

Why I'm not completely satisfied with Windows?

I've experienced Linux before.

  1. Python, TeXLive, Java and even MATLAB have much better performance in Linux than windows.
  2. I like and I need many batch and automated tasks which again can be done much better in Linux world. (Most of apps has a command line interface, python scripts and bash scripts are easy to develop. Windows is not comparable in this case at all even with their promising object based PowerShell, simply it's not POSIX)
  3. I want a simplified and open strategy for maintaining my OS (e.g. having config text files instead of complicated registery and closed configurations). I like and I want to have access to all of my OS corners. This provide better maintenance and debug and fix capabilities.
  4. Security (I'm get tired of AV,SandBoxes,VirtualEnvironments,Firewalls,ALETS....)
  5. I'm a Geek, I'm curious!

Linux offers me better performance and maintenance in many areas. But my doubt is about stability of Linux (as I mentioned). I've no problem in putting time to customize my OS, to Search, to Ask and to Learn but I doubt the stability of a Linux OS with frequent updates and configurations for a desktop user (Stability of Linux server is good, OK).

About Distros

I'm agree with you about the distro. There is not much difference between them but consider Arch-Linux with Fedora as an example. There are substantial differences from maintenance point of view (As it seems, I don't have any experience with Arch and this is why I'm asking here).

Putting Time for your Linux

As I said I don't have any problems with user interface of Linux or command lines or manuals etc. These are things which I actually love. I'm afraid of putting LOTS OF TIME in Fixing Buggy and Broken Packages/OS. Consider this example: I've installed Fedora (SUSE) and I want to adapt KDE(Gnome) as my primary DE, but the default configuration provided in precompiled packages is very buggy and fail prone. OK, this is Linux, it's almost POSIX and I can do a lot, blah blah blah I agree! But I don't like to put "a lots of" time in these part of daily maintenance job. OK now my Linux OS performs stable and I'm busy with my software and daily jobs now I want to update the OS to the newer release....e.g. from Fedora 20 to Fedora 21, the OS is upgraded and BANG! lot of packages don't work, many primary OS functionalities are broken you have to put one or two day to solve all these problems. This is just a scenario, What I'm asking is this: How probable such scenario happens in Linux nowadays (for a intermediate user)? Two three years ago when I was using Fedora it was probable.

  • You should checkout this: usesthis.com and find what people with similar interest and background as you are using. It is fun. – mkc Mar 3 '14 at 1:13
  • 1
    I saw this largely because of goldilocks. I won't write a treatise like him, but I'll make some brief comments. First, if you are doing scientific work (I do and have) then using free Unix-like systems like the Linux based ones is pretty standard. Yes, there is a massive amount of overhead, but not so much in comparison to the overhead of being a scientist. Ask yourself how much time you spent learning your subject and getting into grad school. It is exactly the same thing. Any investment you make in these systems will be amply repaid down the road. – Faheem Mitha Mar 4 '14 at 21:36
  • 1
    I use and recommend Debian. This is IMO as good as it gets for scientific work. It is a completely community supported project which has substantial advantages. The most important thing about Debian is Debian Policy. This boils down to systematic quality control. See unix.stackexchange.com/a/9472/4671 for my take on this. Packages in Debian are mostly not "broken". Yes, software in Debian has bugs - all software has bugs. At least in Debian they won't try to hide the bugs from you. – Faheem Mitha Mar 4 '14 at 21:39
  • Faheem Mitha, Thanks, I'm agree! The problem is actually about my time management strategy! My strategy is usually getting lost in the subject without considering Time :D As you mentioned from undergrad school era I was more interested in Linux (as a Subject) than my MUST READ courses and at that time Linux takes a lots of time from me (and I was pretty happy). Now I've to finish my dissertation and I'm afraid of same scenario. I know these are irrelevant and I've the responsibility! but I've been away from Linux world for a while and I just wanted to weight it before any dive! – SddS Mar 5 '14 at 0:25
  • @ToX First, if you want a user to be notified of your comment, you need to prefix the username with a @ . Your point about spending too much time fooling around with your Linux system is well taken. That is certainly something that can be a problem in practice. However, in recent years systems have become much more robust, automated hardware support has improved, etc. so it is not necessary to spend as much time as it used to be to fiddle with your Linux machine to keep it working. Of course, one can still spend ones time doing useless unnecessary things like modding out the desktop etc. – Faheem Mitha Mar 5 '14 at 9:16

You have not explained what your actual goal is, beyond just using a computer that runs linux -- which apparently you've already been doing anyway for ~10 years.

To be totally honest (since this is definitely an "opinion based" question), all the fussing with different distros borderline absurd. This is not to say they aren't different in superficial ways, but they are NOT fundamentally different. The differences that are most significant are the ones that are most immutable, which often includes the init system, and pretty much always the package management system.

You refer to programming type activities a bit, but also to the fact that you are wary of investing too much time in them. If you primarily use a computer in order to be productive in some realm (again, you haven't said anything about this)1, avoid programming as much as you can and instead focus on the use of existing software that will assist you in being productive. If you need to do a lot of word processing, you want to hone your proficiency with word processors, not programming.

I like to come back to the Linux world but I'm afraid of putting a lot of time there.

Linux is not a fast food culture, period. I'm not saying this to denigrate fast food. Everybody likes to eat, but not everybody enjoys cooking. Likewise, most people enjoy listening to music of some sort, but when push comes to shove, most people actually do not enjoy making music.

Cooking well or playing an instrument requires a significant investment of time. It is not necessary that everyone do it. My advice, if you are already comfortable and happy with Windows, is to stick with that. You've obviously had linux at your disposal for a long time and yet never really taken to it.

B. Using Windows (as host) and installing Linux on a virtual machine C.

Please, NO. Again, you have not explained what the possible purpose of this would be, but maintaining a VM image just so you can use OS Whatever to do whatever general purpose computing tasks is not just borderline absurd, it is right over the top completely ridiculous. VMs are useful for testing, emulation, and containment. Using them as places to just "do stuff" that doesn't require a VM (and more than likely, is negatively impacted and complicated by doing it in a VM) is like running your car in the driveway so you can listen to the CD player.

1. You do mention a "scientific background" but you don't refer to how this involves the use of a computer. Are you using it to do science? What kind of science? How? Etc.

[Post OP Revision]

Okay, so now we have some more concrete things to work with. Your primary list of applications is straightforward: MATLAB, Python, C/C++, TeX, PDF, Git and (my extrapolation) Java. These are going to work equally well on any mainstream linux variant. There's simply no way someone can (rationally) claim Java or Tex or any other of those things work better on one distro vs. another. But keep reading.

Part of the reason they're all equivalent in this sense is that all of them use the same kernel (technically, "Linux" is just the kernel) and the same fundamental userspace (by which I mostly mean, the C library, which is a critical part of everything). They each configure and compile the kernel individually, and even maintain their own set of patches, but these are not hugely significant. For example, if a patch really makes the difference between a piece of hardware working and not working, that is going to end up in the original source tree; it is not something that only one distro offers.

If you do have problems with a distro kernel as configured, the solution is not to keep switching distros until you find one that works out. The solution is to configure and compile a kernel yourself. This will be very tedious the first time, but it is not beyond the capabilities of an adult, literate user. You can either use the vanilla source, or you can use a source package provided by the distro.

"Research Suites" are not something I know much about, but I think the same logic will apply (they will work equally well on any distro), particularly if they are Java based.1 There is a Scientific Linux distribution that is a repackaging of Redhat, much like CentOS. It's maintained and used by CERN, so presumably works, but just because it is called "Scientific" does not necessarily mean it is going to be any better or worse for your purposes. The reason CERN does this is not because they need to run software that doesn't work equally well on, e.g., Ubuntu. They do it:

  • So they can have a standardized platform.

  • So they can gatekeep that standardized platform. For example, they could have just decided at some point to use CentOS. However, it's necessary to keep the systems up to date, presumably in parallel. Let's say one day the regular distro updates introduce some minor snag that causes someone to miss their day on the particle accelerator -- unhappy scientists! Maintaining their own distro is not a guarantee against this (there are no such guarantees, of course), but it does put the power in their hands.

That said, distros which parallel Redhat tend to be behind the times by a year or so. This is not necessarily a bad thing, the justification being stability, but for an independent user it is sort of pointless. Generally speaking, the system improves with time, and in the context of a single computer owned and operated by you for you, any problems resulting from not standing back far enough from the present are probably easily rectified (to extend the metaphor, you can always take a step back when necessary).

I don't have any problems with user interface of Linux or command lines or manuals etc. These are things which I actually love. I'm afraid of putting LOTS OF TIME in Fixing Buggy and Broken Packages/OS...

I've been a linux user since the last century. For the past half dozen years or so, I've been working full time on linux systems, mostly by choice, mostly engaged in programming. My distro of choice currently is Fedora, meaning, if someone asks me what I want set up on a server, I say Fedora. But usually what they really say is that they've set the server up with Ubuntu or Debian, lol. I'm perfectly comfortable with that and don't consider "Fedora vs. Ubuntu" (e.g.) a serious argument. I've also tried out various other distros for myself, notably Gentoo which I was my primary distro for several years.

I'm mentioning all that just to make it clear I don't have a strong prejudice and I have a lot of experience with, at least, Fedora, Debian, and Ubuntu. Although it has made a lot of strides in terms of user friendliness in the past decade, I still do not recommend linux to other people (even though I love it and refuse to use anything else for serious work) for the simple reason that I do not want to hear back from them what a headache it turned out to be. Contemporary linux is what it is and two of the things I consider shining traits -- heterogeneity and transparency -- have a side effect, namely, it takes a much greater degree of technical proficiency to use effectively than say, OSX.

Meaning, if you want to use it effectively, you are probably going to have to put in much more time than you would with more mainstream operating systems. In this ongoing process, you are, without doubt, going to hit ridiculously frustrating roadblocks. In my experience, that never ends, but I am sure my patience and ability to solve problems (in this context) has improved. Part of solving problems is identifying them correctly, so let's examine your complaint about "Fixing Buggy and Broken Packages" and the time it wastes.

Complaints of that sort almost always boil down to user ignorance and confusion. Of all the thousands upon thousands of hours I have spent wrestling with the system, 99% of it has been necessary because I had to learn something, and maybe 1% because of genuine defects. Of course, particularly during the first few years, I did not always see it this way. A great way to learn the difference is to file a bug report when you think that really is the problem, heh-heh. Yes, you have to create an account somewhere and respond to emails, but if you are serious, you might as well act that way.

Part of the reason that user confusion often ends up getting resolved in bug reports in the linux world is that, unlike with commercial products, the authors of the software may not have much incentive to get you to use or understand it.2 If you have problems using it, there's no reason it should matter to them at all. Ideologues of a certain stripe will argue this is sure to result in an inferior product; IMO it actually results in a superior one, which comes back to why I love linux but don't recommend it to others: I don't want a product that caters to a lowest common denominator. I think it's great that my 74 year old, hopelessly technically inept mother enjoys her iphone. But the things that make it usable for her make it very un-useful for me. That's the nature of the beast.

Because of this linux sometimes seems a little "mean". Like, here's this awesome looking system with all of this potential and so on, but I have to waste a freaking day trying to figure out how to configure my desktop?? I've been there and I've wanted to hunt down and strangle the people I consider responsible. How can they be so callous? Why can't they just make this easier in obvious (to me...) ways? At least some better documentation!

Part of the issue there is resources. People developing FOSS software generally do not have much, or any, budget. They can't run out and hire a team of technical writers to document the product, and sadly, it's not something people are keen to volunteer for: they want to code. Finding good documenters may be harder than finding good programmers. It's just not rewarding in the same sense when you aren't being paid.

IMO, linux is a platform by technical people for technical people (which is obviously part of the reason you are interested). To be fair, there is a lot of effort, particularly by GNU and Canonical, to make it generally palatable as an alternative to mainstream operating systems for people in parts of the world where handing hundreds of dollars to MS or Apple every few years is a serious issue. Which is terrific, but it's still primarily a technical platform for technical people.

So, returning to some of the stumbling blocks: Not everyone cares about the ideals of free (not as in beer) open source software and it is easy to regard the system from an end user perspective as essentially the same kind of thing as a proprietary OS. This is a mistake, not because I think you need to care about FOSS ideology, but because there are some substantial pragmatic differences in a context where anyone is welcome to contribute (note, this is not synonymous with being taken seriously; that depends on what you actually bring to the table) and (as already explained) no one is really obliged to answer to the user or any other particular authority. The "linux world" is in many ways anarchistic (in the philosophical sense, not the colloquial one meaning "chaos"), except that many of the predominant organizations (e.g. GNU, Redhat, Cannonical) are normative hierarchies.

Again, I'm not saying you need to take any particular kind of ideology seriously, etc. I'm pointing this out because it is pragmatically useful to understand. As a linux user, YOU are part of the project to a much greater extent than the average user of the big proprietary OS's. This is why stuff like bug reporting is significant, although again, it is unfortunate that that is where a lot of critical interaction ends up taking place. Much better to do it here, of course!

I'm also not saying you are "part of the project" because I think that a sense of community is a nice thing or because linux geeks are all secretly (or not so secretly) hippies or because it might make a good marketing slogan. I'm saying it because the project requires work and you need to see yourself as part of that work (rather than as a consumer of it) if you want to get the most out of the experience, pragmatically speaking.

Or you can find a wall and bang your head against it. Nobody cares, honestly. That's freedom.

I've installed Fedora (SUSE) and I want to adapt KDE(Gnome) as my primary DE, but the default configuration provided in precompiled packages is very buggy and fail prone

You refer to the fact that you do a little programming, so I am sure you are familiar with the situation where a neophyte looking for help says something like, "My compiler's std::string doesn't work properly!". I've spent a lot of time helping people with programming problems and complaints about how the compiler must be buggy, etc, are almost always (as in, upwards of 99% again) mistaken.

Just like issues with the kernel, resolving problems with configuration is usually not best accomplished by switching distros, it's by changing the configuration. Meaning, you have to learn about it in the context I've already described. You express a lot of frustration with the time this takes -- everybody feels this way, but that is the nature of the beast. It's not a product that has been sold to you with a set of promises, and (again) approaching it that way will not help. Switching distros out of frustration is giving up; I've done it, and in the long run I don't think it accomplishes much beyond soothing the momentary anger at the __ing __heads who put you in this situation. Eventually you have to sit down and accept that if you want something your way you may have to do it yourself.

Okay! So here's a few suggestions:

  • Fedora. My fav, as I've said, but you seem to have had some bad experiences. Fedora/Redhat differs from Ubuntu/Canonical in that they focus their resources less on the desktop -- there's no parallel to Unity, for example. Fedora tends to be the most up to date distro (but this is not the case with the downstream RHEL and derivatives, as discussed).

  • Ubuntu. By intention, this is probably the most conventionally user friendly distro, and not surprisingly, the most popular. Ubuntu generally stays more or less as up to date as Fedora, perhaps complicated by its relationship to the more conservative Debian.

  • Arch. I have only tried Arch out for a short period of time but take it on credit from others that it is stable over the long term. The reason I recommend this is because I think it would have been a great experience for me at one point, if it had existed years earlier. Being more hands on, it seems like a good way to (have to) learn things you might otherwise avoid. So, that probably means more frustrations; hopefully I've made the point that dealing with these head on takes time but will probably lead to a happier you. Maybe not later this afternoon, but eventually.

I haven't left out other distros here because I think they suck, etc. I work with Debian everyday, for example, and have no serious issues with it in relation to any of the above. But those are my top three recommendations.

You're a PhD student who does serious work with a computer. Given an infinite amount of time, most people would like to do a lot of things they don't have time for in reality.3 That's life. I think you should continue to work with linux, but you obviously need to balance the demands of that with your academic obligations. It is better to recognize what you don't have time for than to pretend that you can get those things done properly without sufficient time, which is why I originally suggested you might be better off sticking with Windows. Frustration is natural, but lamenting these facts won't change them: some things simply require serious time and effort, which is why I originally said that the distro you choose won't make that much difference. They're all still linux, and linux is a very serious beast :]

1. It's worth noting that you are not confined to the distro java. You can install the latest Oracle and configure the system to use that if you want or need to.

2. But they do have a real incentive to resolve bug reports! Note I am not recommending this as a way to bug devs unless you genuinely believe there is a bug.

3. Remember how I said originally most people love food and music, but not necessarily cooking and playing an instrument? It's because they're mortals ;)

  • Hi -- I apologize if my original answer here seemed a little kurt, and I've added quite a bit above (starting from [Post OP Revision]). There's no way this question can be re-opened; for better or worse it simply is not appropriate to Stack Exchange. However, you are probably welcome to start this kind of discussion at Linux Questions. What you can do here is extract more specific questions that lend themselves to more specific and objective answers. Anyway, I hope you find what you are looking for (and please do read what I've added!). – goldilocks Mar 4 '14 at 18:33
  • goldilocks, Thank you very much! I'm agree and your comment really help me to decide. But I want to emphasize some points here First, mentioning Matlab,TeX, Java... was about Linux vs Windows (They're better in Linux than windows, as I experienced before) and I didn't weight them among different Distros. I just mentioned them to show why I'm not satisfied with windows – SddS Mar 5 '14 at 0:08
  • Second I'm ready to learn and I'm somehow familiar with the beast but my mention of time was about the risk of stability i.e. how far it can goes. For example Arch demands more time than Fedora (esp. in installation/conf process) but I didn't mention that! However I get my answer from your comment, this type of time is also COUNTS! – SddS Mar 5 '14 at 0:09
  • Third I emphasized time, why? my primary work is Math and Theories then comes to Numerical Algorithms and Publishing/Presentation/Maintenance. However I love Linux world! I love Freedom, POSIX style, DIY, DRY, WYGIWYM, etc hence I'm afraid of being lost in it, the fact is I hate Time Management and I've been never good at it;-) So I have no problem with the philosophy or the way things get done (As I mention it in my question update below why I'm not satisfied with windows). – SddS Mar 5 '14 at 0:12
  • Finally I've decide my choice :D, Currently I've installed both Windows 8 and Fedora 20 as dualboot and test Arch on a VM. I've tested Redhat 9!, Ubuntu, SUSE, Mandriva, Knoppix, Debian before but Fedora always plays as my base distro to land. Now I start with it again but I want to test Arch, I'm agree that Distro is just a flavor, there is no fundamental difference! But I want to taste it, the Arch way. – SddS Mar 5 '14 at 0:13

I would strongly reccomend getting into Linux environment (Debian based one preferably since it is free). If you want to really get hang of the things I would also suggest you to install VirtualBox or VMWare player in windows and try your hands on in Ubuntu guest operating systems.

There is an even better option if you do not like VirtualBox. In your windows system, you can install Wubi just like any other software and you will have dual boot. Installing/Uninstalling Wubi is just like a normal software. So you need not worry about shrinking space or setting primary partitions etc.

You can check out Wubi from here.

Not the answer you're looking for? Browse other questions tagged or ask your own question.