I don't quite agree on the 'learn' part though, because it may sound frightening when for most purposes it is a direct C#+.Net port, so there's basically nothing to learn on the language/library front. It mostly revolves around the tooling (MonoDevelop is different from VS, mcs is different from the MS C# compiler, xbuild is different from msbuild, but source code is the same, assemblies are the same, sln/csproj files are the same). You will mostly lack WPF if you ever used it, and learn to use Path.Combine instead of hardcoded string concats and backslashes in paths (i.e write portable code), but you will benefit from having many Mono-only or Mono-bundled tools (csharp REPL[1}, ) and libs[0].
Miguel de Icaza regularly (re)tweets and promotes various community activities and achievements, so I recommend to follow him to get a feeling of what happens.
If you're daring enough, you can get on board and use emacs, which seems to be what the non-IDE Mono developer community revolves around, so emacs modes should be quite good (apparently, F# support is coming up nicely[2])
[1]: http://www.mono-project.com/CsharpRepl
[2]: https://twitter.com/simontcousins/status/293329223597297664
Mono is awesome. I haven't used linux in years, but I managed to install linuxmint and setup Mono + Nginx + ServiceStack over the weekend. It's a bit difficult at first, but when it works it's nice. You can even build in visual studio and copy the files over to your linux box.
What's with the comments that start with "This."? What is "This." suppose to mean as an introduction?
All you need is an USB stick of 2GB. Instructions can be found here: http://www.ubuntu.com/download/help/create-a-usb-stick-on-wi...
After that you just insert it before booting, go to your BIOS, pick boot from USB, wait for it to load and then pick "Try Ubuntu". You'll get the full blown experience of the Ubuntu operating system, and can snoop around and get a general idea of how it works. Should your interests not be met, you can just shut down the session and computer, remove the USB stick and it'll boot Windows like it always did. That's all there is to it.
Should you however want to get your feet wet, I'd say install it as a Dual Boot, or install it on an older machine you have lying around. You'll get to see it come to life after using it for a more lengthy period of time.
Don't worry about C#, Mono can suit you if that need must be met, and if you're proficient in C#, Java will be very easy to master. A year ago, I wrote my Master's thesis in C#, using a Microsoft Surface (tabletop). But I've shifted my attention to Ubuntu 12.10 and Android since, and that transition went very smoothly.
As a rule of thumb: A computer should make my work easier, at the first glance that there has been a sacrifice in workflow or efficiency, I'm out.
We've started to roll it out to power users in various companies (i.e. people that ask for it), and I have yet to have anyone say anything negative about it.
You read a tech blog though and they act like it's the apocalypse.
I find that shutting it down and even putting it on standby requires too many actions.
Metro app's don't fit in with the desktop version, they should run as a desktop app. Running a metro app breaks the Windows key which instead of bouncing you between desktop and the start screen will bounce you between the metro app and start screen..
Multiple monitors. Windows 8 corners become iffy on the join between monitors. (Why not just remove these hover areas?) The start screen seems to randomly choose a monitor to appear in. For some reason my right monitor doesn't have the clock. On the desktop, both monitors have my application icons at the bottom yet the program opens on the last monitor it was opened on instead of the monitor in which you press the button.
I love the start screen. I think its so much better than the Windows 7 start button. I think Windows8 is alright in the same way Vista was alright. It was better than XP but had a bunch of annoyances. I can see why people like Windows 8 but I can't see why anyone would say they love it.
For the taskbar issue, you can change that. Right-click on the taskbar, choose "Properties." Under "Show taskbar buttons on:" select another option. I personally prefer "Main taskbar and taskbar where window is open." But to each his own.
Good luck!
Full disclosure: I am a Microsoft employee.
I wouldn't call that "force". It's more like "constantly remind".
Says it all, doesn't it?
Which is what finally got me to start using the power button, which is still just one action.
Start screen appears on the last monitor you launched the modern app or charms.
For switching Start screen between multiple monitors, try Windows + PageUp (or Windows + PageDown).
You can change the taskbar settings. Right click on taskbar -> properties -> Taskbar where window is open (under show taskbar buttons on).
Make sure no windows have focus (i.e., click on the background) and hit ALT+F4. This also works in vmconnect and remote desktop windows, where hitting the corners is near impossible.
Switching to linux is a great idea, but I suggest you make the switch gradually: use a VM (ie Virtualbox) and install a popular distro (Ubuntu seems good for newer linux users). Try it in fullscreen mode for a while and if you get stuck/frustrated, Windows is always there to welcome you back with open arms.
Then again, there's something to be said for just diving in and figuring it out...depends on what your goals are.
Also, as mentioned, check out Mono. It's a very good framework if you use C#.
So you see, we can play the i-like-this-so-should-you game until our Sun explodes. We won't have accomplished much though.
Another option is to learn how to develop mobile apps for iOS and/or Android. Those skills are in strong demand and your skills with an IDE and debugger will transfer easily.
I switched from C# 3 years ago and haven't touched Windows even for personal use in almost a year. If you need any other tips or guidance feel free to reach out to me (email is in my HN profile).
But then I found Scala... heh... screw C#.
The best way to start is using a dual-boot configuration, you cannot do much wrong with Ubuntu 12.10. And then, slowly but surely you can switch to Linux. This process took me about 5 years. (It finished when XP didn't boot anymore because of a blue screen.)
Regarding C#... Learn Mono, then you'll be at the spearhead of Cross-Platform C# usage. ;-) (Or add another language to your experience portfolio.) And checkout VMWare and VirtualBox...
When you need a car for getting places and a truck for moving things, and you can afford both, you don't need to choose between one or the other. You can have both, and use each for what you need it for. Operating systems are not a life-choice; they do not demand exclusive relationships.
* my cheap TV card only worked on Windows reliably
* most cool games did not work on WINE (and Unreal Tournament can become boring after some time)
* Webcam did not work on Linux (in fact until 2 or 3 years this was still a big issue)
* One word: MS Office
* many websites did only work on Windows
Yes and that's when you dual boot. So when listening to music and web surfing on Linux, I couldn't write a letter on Linux. Because StarOffice/OpenOffice had significantly lower quality than MS Office during that time. I couldn't play a video game and afterwards browse through my MP3 collection.
In such a situation you will almost naturally stay with the system that has most features for you, i.e. Windows here.
Today's "migrators" are lucky because emulator technology has evolved a lot and modern consumer (multi-core!) CPUs have some serious virtualization support. Moreover many applications moved to the Web. 10 years ago the only thing genuinly cross platform where some super ugly Java apps.
By the way, I am a Linux, OS X and Windows user. However the stuff I use works (luckily) on all 3 OSs. (Ok, I'm honest, not on Windows. ;)) Nowadays I enjoy switching computers and OSs, however this is only possible because I use Unix stuff and that just works almost everywhere.
Very happy with this poly-OS setup.
While I love the initial Metro start screen experience, two things really drive me crazy:
1. Metro just seems tacked on. Why can't I stay within that experience all the time? Instead I'm ejected to the normal Windows desktop that is essentially what I was using on Windows XP years ago. It's like they didn't have the balls to go all the way, and coming from Apple that drives me crazy.
2. It's very easy to get lost in Metro once you start clicking around. There is generally never an obvious way to get back to where you were previously due to the absence of any depth, breadcrumbs, or even just a "back" button. Hell, you can't even right click and go back.
Python is an awesome language, but don't mistake the fact that C# is also a very good language and often times a perfectly valid language to use.
Linux gets my work done, and Windows for designing & entertainment. Dual boot and you won't miss anything (Ubuntu can read/write to NTFS)
It just works.