

Ask HN: Technology choices - markcoder

I finished university last year, during that time I was always focused on open source technologies. Since leaving uni I tried to find full time work to get some experience before trying my hand at a startup, but I found it difficult to get work with open source technologies. So I started applying for graduate .NET positions, to my surprise I found it quite easy to get a full time role, the pay was even greater than what I expected it to be.<p>Anyway a few months on, I'm now really enjoying my work with the .NET framework, so much so that I don't really understand why most open source developers dismiss Microsoft's products? Is it the cost? I can understand why a startup might want to keep costs down, but there must be some historical aspect around Microsoft that I'm missing, my experience suggests to me that there tools are very good. Could someone please fill me in on what I'm missing?
======
chipsy
Microsoft has a history of rapidly deprecating their technology platforms,
leaving your old code unable to access new APIs. In the past this was good for
their business because competitors couldn't keep up with changes in the MS
ecosystem(and each new iteration of Windows could make sweeping changes, since
the market was growing so fast), so forcing developers to move in lock-step
with the MS toolchain was another way to preserve the monopoly.

It's this legacy, plus the non-free nature that makes it hard for developers
to do their own maintenance, that causes aversion to MS tech.

Today you have a lot of freedom to make technology decisions that go beyond
performance requirements and platform APIs. It's just a matter of how long-
term you want to make your codebase. If it's disposable code, it really
doesn't matter. Unfortunately, "disposable" projects often become mission-
critical later.

------
scorpioxy
In the day job, i use .Net(C#) within an all-MS environment. For my own
business, I write in open source toolsets and frameworks(usually python
stuff). So I can relate.

The thing is, the .Net framework is not bad. I mean, aside from it being
proprietary, the design is not that bad. Read up on what miguel has to say
about that, I tend to agree with him on this topic. If only they would embrace
their community...

What's wrong with the .Net framework is the same thing that's wrong with using
Windows as your platform of choice for development. If you don't hit any
problems, then you will be very happy. But when you do hit problems(and you
will) then you'll realize what the problem is with closed systems.

So in short, closed system even if you can read the source code, its very
difficult to do anything with it. Inadequate documentation that are often
wrong with edge cases. Lock in to specific technology and often specific
versions. Not enough interaction with the community of developers in terms of
bug reporting, change description and the like.

------
Tichy
Entrance might be cheap, but eventually you are stuck on Microsoft technology
and paying more and more for it. But to be honest, I have not even looked at
their pricing structure. I am pretty sure it is not all free, though.

I have been happy with open source software, so why should I consider
switching?

Overall, I just don't like the feeling of being dependent on one vendor. Why
take on that risk? I haven't closely followed the news, but there were recent
HN articles that seemed to suggest to me that Mono isn't going so strong
anymore either.

For consulting I probably wouldn't mind using .NET, the client chooses the
technology. As long as it is not downright unpleasant (PHP), I would take it
as a chance to learn from the competition. They probably got some things
right.

------
cpr
Several people have already side-swiped this issue, but let me say it straight
out: the main advantage of OSS is that, if you really need to, you can dive in
and fix bugs or add your favorite features ("scratch your itch").

I don't think this happens as often as pure OSS advocates claim, but it's
there.

Think of OSS as having the ultimate guarantee: You can fix anything, if you
really need to.

Otherwise, you're just working with a black box whose ultimate behavior (bugs
or features--really the same) is beyond your control and even understanding.

(Believe me, I've spent decades working with various black boxes (OS and
application APIs), and it ain't all that fun spending a good chunk of your
life second-guessing the API vendor and working around their bugs.)

------
_delirium
Open-source developers often want to develop on Linux, or at least to be able
to release cross-platform stuff that will work on Linux, and Microsoft's
toolchain is generally not oriented in that direction. If you use their dev
tools, you're usually just building a Windows .exe, and if you want to port,
it's going to be extra effort. There are of course Windows-only open-source
projects, and they do actually often use an MS dev toolchain.

I think if Microsoft had (especially earlier on) been somewhat friendlier with
the cross-platformness of .NET, either with their own releases or by helping
Mono be a more compatible option, it would have more uptake, because
technically it's actually pretty nice.

------
dthakur
You experience is correct. Microsoft tools and platforms are, generally
speaking, good.

Some things, like making the entire .NET source available for debugging, even
cuts into the open source's advantage of deep debugging.

The key problems for me are: cost, lock-in and to some extent, slower pace of
evolution.

------
pan69
I think Microsoft has always done a great job on providing excellent
development tools and I've always used Microsoft tools and languages with
great pleasure in the past.

However, to me, developing with Microsoft tools is really limiting my choices.
This is one of the reasons I really like the Java platform, because of the
choices. I can choose to run Java on Windows, Linux, OSX or what ever
operating system. I can choose if I want to use Tomcat, Jetty, JBoss, Geronimo
or what ever server best suites my needs. I can choose my language; Java,
Jython, JRuby, Groovy, Scala, Clojure etc. All these languages run on the JVM.

If I was still building desktop apps, like I did in the 90's, I'd probably
still be using Microsoft tools. But since I'm primarily a web developer these
days, somehow to me, Microsoft tools just don't cut it for me.

