7

How to migrate to *nix platform after spending more than 10 years on windows? Which flavor will be easy to handle to make me more comfortable and then maybe I can switch over to more stadard *nix flavors? I have been postponing for a while now. Help me with the extra push.

ConcernedOfTunbridgeWells
  • 59,622
  • 15
  • 138
  • 193
dhaval
  • 2,320
  • 8
  • 35
  • 60
  • I currently have the same issue, after working with the really high level WPF/.NET stuff for the last year. The *nixes don't seem to have much that is compatible with what I know. – IanGilham Jul 02 '09 at 08:33
  • Actually, XAML is heavily derived from Mozilla's XUL. This platform never took off outside of firefox plugin development. XulRunner isn't anything like as comprehensive as .Net but the paradigm might be close enough to WPF to find some common ground. – ConcernedOfTunbridgeWells Jul 02 '09 at 09:03

8 Answers8

9

Linux is the most accessible and has the most mature desktop functionality. BSD (in its various flavours) has less userspace baggage and would be easier to understand at a fundamental level. In this regard it is more like a traditional Unix than a modern Linux distribution. Some might view this as a good thing (and from certain perspectives it is) but will be more alien to someone familiar with Windows.

The main desktop distributions are Ubuntu and Fedora. These are both capable systems but differ somewhat in their userspace architecture The tooling for the desktop environment and default configuration for system security works a bit differently on Ubuntu than it does on most other Linux or Unix flavours but this is of little relevance to development. From a user perspective either of these would be a good start.

From a the perspective of a developer, all modern flavours of Unix and Linux are very similar and share essentially the same developer tool chain. If you want to learn about the system from a programmer's perspective there is relatively little to choose.

Most unix programming can be accomplished quite effectively with a programmer's editor such as vim or emacs, both of which come in text mode and windowing flavours. These editors are very powerful and have rather quirky user interfaces - the user interfaces are ususual but contribute significantly to the power of the tools. If you are not comfortable with these tools, this posting discusses several other editors that offer a user experience closer to common Windows tooling.

There are several IDEs such as Eclipse that might be of more interest to someone coming off Windows/Visual Studio.

Some postings on Stackoverflow that discuss linux/unix resources are:

If you have the time and want to do a real tour of the nuts and bolts Linux From Scratch is a tutorial that goes through building a linux installation by hand. This is quite a good way to learn in depth.

For programming, get a feel for C/unix from K&R and some of the resources mentioned in the questions linked above. The equivalent of Petzold, Prosise and Richter in the Unix world are W Richard Stevens' Advanced Programming in the Unix Environment and Unix Network Programming vol. 1 and 2.

Learning one of the dynamic languages such as Perl or Python if you are not already familiar with these is also a useful thing to do. As a bonus you can get good Windows ports of both the above from Activestate which means that these skills are useful on both platforms.

If you're into C++ take a look at QT. This is arguably the best cross-platform GUI toolkit on the market and (again) has the benefit of a skill set and tool chain that is transferrable back into Windows. There are also several good books on the subject and (as a bonus) it also works well with Python.

Finally, Cygwin is a unix emulation layer that runs on Windows and gives substantially unix-like environment. Architecturally, Cygwin is a port of glibc and the crt (the GNU tool chain's base libraries) as an adaptor on top of Win32. This emulation layer makes it easy to port unix/linux apps onto Cygwin. The platform comes with a pretty complete set of software - essentially a full linux distribution hosted on a Windows kernel. It allows you to work in a unix-like way on Windows without having to maintain a separate operating system installations. If you don't want to run VMs, multiple boots or multiple PCs it may be a way of easing into unix.

Community
  • 1
  • 1
ConcernedOfTunbridgeWells
  • 59,622
  • 15
  • 138
  • 193
  • woaw thx so much, ubuntu download has begun, i am trying with desktop edition 9.x – dhaval Jul 02 '09 at 20:34
  • Also +1 for BSD. I tried switching from Windows to Linux but it didn't work. I eventually tried OpenBSD and actually liked it, even for not knowing how to work it. I think I learned from a BSD more just because I wasn't assuming that there was windows compatibility in the UI. It's completely different and forces you to learn. That being said, now I use both Arch Linux and OpenBSD. I like both, but the BSDs will always be cleaner than Linux – Earlz Jun 17 '11 at 16:38
1

Ubuntu seems to be very user-friendly, and has a lot of specific information for it in forums etc. So support-wise you'll be covered.

I experienced the shift from windows to ubuntu as very much do-able, things you can do graphically in windows can be done exactly the same in ubuntu (maybe some exceptions) and a bit more. A computer savvy individual should not have any problems.

However, it helps greatly if you are familiar with the basic shell commands (you'll need them as a programmer!). Some are the same as on windows but especially ls (dir) sometimes has me wracking my brain for "what was that command again", and vice versa when I'm back on windows. Take some time to try them out. (for example: pwd, ls, mv, rm, ps, kill)

Finally, when installing programs often a simple "sudo apt-get install X " does all the work for you, even more user friendly than the windows installer executables I find.

Edit: You might want to try a VMware player and try a few linux distributions to play around in before you install the dual boot.

NomeN
  • 15,253
  • 6
  • 29
  • 33
  • which vmplayer is suggested on winxp for ubuntu? – dhaval Jul 02 '09 at 20:35
  • I use VMware player by VMware, but it was for a school assignment, I have not researched the matter. It does work though (on vista at least) – NomeN Jul 02 '09 at 21:48
1

Ubuntu is nicely balanced, with a user friendly desktop but the potential to set up a fully functional programming environment.

I would advise experimenting with virtual machines - there is no reason to ditch your current setup until you've tried a few of the major distributions. VMware and others have a wide variety of server and desktop builds available.

Ken
  • 71,088
  • 29
  • 81
  • 100
  • i am planning to partition and keep the xp going for atleast a few more months – dhaval Jul 02 '09 at 20:36
  • I would strongly recommend looking at virtual machines instead of dual booting. You'll really appreciate the ability to use several operating sytems at once. And once you've made a choice you can always run various virtual windows installations under your *nix of choice. – Ken Jul 03 '09 at 08:32
1

I guess it also depends on what programming languages your are comfortable with.

If you worked with C# in the past then you could look at using the knowledge by running Mono , or maybe look at using Java (which is syntactically very similar). Either way Linux would be good.

I personally would recommend you look at the Mac's OS X. Its a unix BSD based OS, but with a really slick user interface over the top. To me it feels like the best of both the Windows and Unix worlds.

I do all my unix development on it, deploying onto Ubuntu servers. If you do look at a Mac, definitely take a look at the MacPorts project, which packages a large amount of the open source unix/linux software up making installation of programming tools incredibly easy.

Dave Glassborow
  • 2,707
  • 1
  • 24
  • 24
0

Get a macbook pro. OSX is the smoothest flavour of unix and the laptop should give you the push you need.

Then when you're feeling more confident, you can decide whether or not you want to spend most of your time configuring your soundcard, running ./autoconfigure && make, and debugging package manager screwups.

Rhythmic Fistman
  • 30,464
  • 5
  • 74
  • 138
  • 1
    that is a good warning, will keep in mind but mac is a distant dream with its price in india – dhaval Jul 02 '09 at 20:37
0

Any modern version of Unix (or Linux) you can get running on your machine will be fine.

Here are the ones that I would consider:

  • Ubuntu. As others have noted, this is often considered to be the easiest to use. However some parts are not "standard" Unix. For example, the startup scripts do not use init. This is mostly a good thing, but if you're trying to learn Unix may not be what you need.
  • Fedora. Bleeding edge but with rough edges.
  • Slackware. Possibly the most Unix-like Linux distribution (some would say dated!).
  • One of the *BSDs: FreeBSD, OpenBSD, NetBSD. Different approach to some things than Linux.
  • Solaris. This is "proper" Unix. Seems bare-bones compared with Linux but worth playing with to see what's "standard."

In fact, I would consider running at least a couple of them, most run fine as a VM. One of the good and bad things about Unix is that what's standardised is more the philosophy than many of the details. There's no Visual Studio, there's no C# (by that I mean no canonical high level language; I know about Mono).

Stephen Darlington
  • 49,617
  • 11
  • 101
  • 147
0

Excellent answers. A few comments:

Almost all distros support LiveCDs, to let you try before installing. folks mentioned VMWare and VirtualBox, also note that Ubuntu's WUBI installer lets you install Linux under Windows without repartitioning; very nice; I used it when I first switched to my 64-bit system, since I wasn't sure how good the driver support was. Ubuntu 9.04 works great in 64, though. Also, since Ubuntu is so popular, that are many versions, Kubuntu uses KDE instead of Gnome, Mint and Xubuntu are both lighter weight.

Expect to run side-by-side for a while when transitioning from Windows. Cygwin has some nice downloadable manuals for people getting used to bash, and basic information about how *nix works underneath, targeted at Windows users. There are tons of useful sites; the Ubuntu community forums have a tremendous amount of information, for both beginners and advanced.

For getting used to developing under Linux, check the Linux documentation project. In addition to KDevelop, there's Anjuta, Eclipse, and many more. Some are light, some are heavyweight.

One thing that can ease the transition is to use software that runs in both operating systems. Firefox, Thunderbird, OpenOffice, Subversion, and hundreds if not thousands of others run fine in both Linux and Windows. And with very little effort, you can use the same folders for application settings and data for many of these. Firefox and Thunderbird can easily use the same folders/files on an NTFS partition. Makes dual booting much easier. Instructions are on the Ubuntu community site and other locations.

Note that some Linux software isn't NTFS friendly; in Linux keep your Subversion working folders on a native partition.

One caveat for sharing application settings; some applications store absolute paths; as a workaround, you can create symlinks that look like Windows drive letters.

After you get comfortable with Linux, branch out and try non-Windowsy applications and tools. Sometimes different is better. Lots of people use Emacs and Vim for good reasons.

Ron Ruble
  • 306
  • 1
  • 8
-1

Try Kubuntu as a distro and Kdevelop and Qt to start programming with, it's all very civilised.

Kate's an ok notepad-esque text editor if you want to go that way but I don't see why you'd want to get in to Vi or Emacs apart from the geeky appeal of using something really arcane.

timB33
  • 1,886
  • 16
  • 31
  • I'd go Fedora and use the Eclipse CDT nowadays, you could even use the Eclipse IDE on windows too. I'd have a look at gedit too for your 'notepad' type use. I stand by my Vi/Vim/Emacs comment, sorry but it's over... escape colon write quit bang – timB33 Sep 06 '10 at 14:26