If you are an open source focused shop I'd strongly recommend avoiding Microsoft stacks, especially through outsourced deals. I've seen this happen and it isn't pretty.....
Reasons:
- You'll get stuck supporting two platforms (Linux and Windows). Or even worse, you will decide at some future date to standardise on Windows and get locked in forever......
- There is a fundamental culture clash between the two worlds. Mindsets are different, approaches are different, team dynamics are different.
- Microsoft products don't play well with non-Microsoft products in general. They make it relatively easy for you to go all-Microsoft, but not very easy to interface with the rest of the world.
- If there is a new outsourced relationship being put in place, that is hard enough to manage already. You don't want technology and cultural differences on top of that!!
If you want .Net-style platform capabilities but an open source approach, you are much better off by going the Java platform route. Advantages:
- Java itself is open source (OpenJDK), as are most of the major IDEs and tools
- Java works excellently on Linux and Windows alike.
- You can deploy client applications easily to either Windows or Linux machines with Java Web Start.
- The open source ecosystem of libraries for Java is the best of any language, particularly on the server side but for networked client side applications it is also very good.
- If you don't like Java-the-language, there are many great open source languages that run on the Java platform (Clojure, Scala, Groovy, JRuby, etc....)
- If you want to leverage your PHP expertise, you can even run PHP on the Java platform with tools like Quercus (disclaimer: I haven't tried these myself)