Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm not expecting C# to be on par with say Java or Python in the open source community, but it still surprises me just how far behind it is.

'Multi language' open source repos like google code or github have barely any C# projects in comparison to the other languages I mentioned.

I'd like to see C# and .Net shake off that slight corporate feel and move more into the open source arena but I just can't see that happening. I'd be interested to hear peoples opinion on why this might be?

share|improve this question
8  
Actually, it has. mono-project.com –  BoltClock Feb 1 '11 at 18:36
8  
What project did you have in mind that doesn't have a .NET twin? Or a .NET lead? This is a strawman argument otherwise. OSS in .NET is, from what I see, pretty active. –  Marc Gravell Feb 1 '11 at 18:41
1  
Look at OGC standards for example 9 out of 10 times it's a java API solution with no .NET alternative. –  capdragon Feb 1 '11 at 18:43
2  
Hadoop, Cassandra, HBase, HyperTable....There are quite a few prominent opensource projects out there which I don't see any .NET equivalents for. –  tmitchel2 Feb 1 '11 at 18:45
1  
I find the question slightly biased, you could also wonder why aren't C# developers involved in more open source project ? –  Xavier T. Feb 2 '11 at 15:57
show 3 more comments

migrated from stackoverflow.com Feb 2 '11 at 14:13

This question came from our site for professional and enthusiast programmers.

11 Answers

One reason is that many open source enthusiasts work with an open source operating system, but C# is mostly tied to Windows (at least it seems so). I don't think many people see it as "mature". There are no mature .net IDEs for Linux, while there are Eclipse, Netbeans... for Java. Overall, I see no compelling reason to use C# on Linux (BSD, whatever).

On the other hand, developers dedicated to the Windows world are, by and large, rather less enamoured with open source.

share|improve this answer
4  
MonoDevelop is a mature IDE for C# on linux. –  PeterAllenWebb Feb 2 '11 at 16:16
1  
PeterAllenWebb: I've just installed it and gave it a try, and well, it's not bad, but IMO not on the same level like Netbeans. Apparently, it doesn't support WinForms applications, just GTK#, which is probably a good thing in the Linux world but not attractive when Windows is also a target. The German translation is not complete, but that a minor annoyance. In the quick run, I couldn't figure out how to attach a CVS repository, but I guess that's just my incompetence. –  user281377 Feb 2 '11 at 17:48
    
Fair enough. I'm glad you tried it! Windows is probably the least supported platform at this point. It's definitely still best on Linux, but major improvements have come to OS X recently. It's true that it's not up there with the very best IDEs yet, but I think it shows serious promise. –  PeterAllenWebb Feb 3 '11 at 3:20
add comment

I agree, c# has a stigma of being a Microsoft language. Most think oxymoron when they hear open source and a Microsoft language used in the same sentence. People just need to get over it.

I agree 100%.

share|improve this answer
4  
True, but Get Over with it!! Come on, One of the prerequisite of Open source community is it(what they are using) should be free. Limited featured Express editions are not capable enough to attract Open Source enthusiasts, and MS' allergy OS is world known, why will i drag my feet in using an organizations products which could lead me to several LAW SUITS. –  Ranger Feb 2 '11 at 14:22
7  
+1 for People just need to get over it. –  sange Feb 2 '11 at 14:29
    
@Ranger I suggest you check out MonoDevelop. It's a very capable IDE and it runs on Linux, OS X, and Windows. Also, it's free as in speech. –  PeterAllenWebb Feb 2 '11 at 16:13
2  
So Microsoft just banned Open Source-licensed software from the Windows Marketplace: thinq.co.uk/2011/2/17/microsoft-bans-open-source-marketplace I stand by my previous assertions about MSFT's stance on OSS. –  Peter L Feb 17 '11 at 15:09
    
@Ranger & Peter L: Get over it. As PeterAllenWebbYou said, there are open source free alternatives to compile .net code in. And you can download .NET framework for free at microsoft's website. only need to pay if you want support or use a commercial product. Download the .NET framework free here see: microsoft.com/downloads/en/… –  capdragon Feb 23 '11 at 21:03
show 1 more comment

'Multi language' open source repos like google code or github have barely any C# projects in comparison to the other languages I mentioned.

This might be because most of the .NET based open-source projects are hosted on Codeplex. Currently it hosts 20217 projects.
Even though I agree with you that C# is not popular in open-source world, this fact is changing. Yes, slowly, but it does.

share|improve this answer
1  
should be a comment –  Louis Rhys Feb 10 '11 at 15:11
    
@Louis Rhys: Why it should be a comment? it's the first answer that suggested Codeplex.com, and that explains the lack of open source C# projects in code repos like Google Code. –  palindrome Aug 6 '11 at 11:55
add comment

I think C# has a few things working against it in the open source arena. Perhaps the biggest is that, valid or not (and I really don't know one way or another), there are concerns over potential legal issues with mono, which is the defacto (only?) open source CLR implementation. Many people are afraid that mono could be a sort of legal trojan into between the deals between Microsoft and Novell, Microsoft's limited-time-only promise not to sue anyone, and mono's implementation of parts of winforms. A lot of people feel that it wouldn't be out of character for Microsoft to wait for C#/Mono to gain traction in the open source community only to try to use that as a knife to drive into the heart of open source- after all that is what Microsoft essentially did by proxy when they supported SCO through all of that mess.

Legal issues aside, I think that there is a common belief that C# is heavier than other popular languages, such as python. This is exacerbated by the fact that other languages have far more momentum than C# (it's easier to ask the user to give up memory to load shared libraries for python to run your app if they are likely to already have those libraries in memory for several other applications, compared to C# where they might need to load a comparable amount into memory for the C# libraries just to run your app). Also, I think C# is generally viewed as being less portable for GUI apps since windows forms are the defacto interface for Windows, whereas on Linux you are pretty much stuck with GTK# (I don't even know if there are Qt bindings for C#). Java may be ugly, but at least it's the same ugly everywhere.

share|improve this answer
    
+1: I like the C# language, but the legal risks put me off for personal projects. I have no problem coding in C# for a company that is already used to licensing software. See Microsoft's Empty Promise –  Adam Paynter Feb 2 '11 at 16:35
1  
I really don't agree that Microsoft and its patents are the problem here - fosspatents.blogspot.com/2010/07/… –  tmitchel2 Feb 2 '11 at 16:43
2  
@tmitchel2: The question relates to the perception of C# and the CLR, not to actual legal risks. I'm not competent to evaluate the legalities of using C# and Mono rather than C++ and assorted libraries. I am competent to have observed some really unpleasant Microsoft behavior over the years. The bad rap C# and Mono have is the association with Microsoft. –  David Thornley Feb 2 '11 at 18:36
    
@david Maybe I misunderstood my own question? :) People have put forward patents as a reason for C# not being utilised in open source projects. Its a valid concern, but my personal opinion is that its not a specific to C#. I do agree that the association to MS is holding it back too though, but I think thats coming back to the 'corporate' point again. –  tmitchel2 Feb 3 '11 at 10:00
2  
@tmitchel2: I agree that, in general, patent concerns aren't specific to C#. All corporations pose a patent risk to all languages. Microsoft, however, has publicly stated its intentions: "the fact that [GNU/Linux] uses our patented intellectual property [sic] is a problem for our shareholders. We spend $7 billion a year on R&D, our shareholders expect us to protect or license or get economic benefit from our patented innovations. So how do we somehow get the appropriate economic return for our patented innovation...?". –  Adam Paynter Feb 3 '11 at 13:06
show 1 more comment

After observing the different "sides" at en earlier employer, I'm under the impression that Java developers are much more interested in the software engineering and patterns aspects of programming, while .NET people are more interested in learning the latest and greatest features and frameworks (no wonder, considering the speed and magnitude at which Microsoft spews out new things).

I feel that Java appeals more to the scientific side of development, while .NET tends to please the business minded more.

Since open-source and business doesn't go hand-in-hand (at least not in the ears of developers wearing suits at work), I feel that .NET developers are more interested in creating the customer value and get it shipped, while Java developer tends to focus more on the general joy of creating software, and the workings behind it.

I know this is on the edge and totally subjective, but it is my impression after a few years working with both sides.

(For the record: I know a lot of .NET guys devoted to the open-source community. This is just my big-picture, general impression)

share|improve this answer
    
Not only that but the .NET culture is that open source is nasty and evil, and Java embraces it. The number of .NET developers who use and contribute to open source is minuscule compared to the ones who make full use of drag-and-drop RAD code generation and wizards without any knowledge or care for software engineering principles. –  Wayne M Aug 15 '11 at 20:17
add comment

One gripe is that the latest features, the ones that really differentiate C# from cruftier, older languages like Java, are only available on the reference implementation, which is tied to Windows. IIRC Mono only supports some relatively old version that's not all that well differentiated from Java.

I think this is Microsoft's strategy. C# is an open standard, which anyone can implement, but by the time anyone else actually does, the implemented version will be somewhat irrelevant.

share|improve this answer
2  
[citation needed] While Mono may not have all of the CLR, it does a remarkable job of being up to date. It even offers things that .NET alone doesn't like Android support. –  Vitor Feb 2 '11 at 16:10
3  
Your knowledge is out of date. In version 2.8, Mono has support for all the language features of C# 4.0. It is true that not all of the Microsoft libraries are available (WPF being the most obvious example) but the language features are all there. –  PeterAllenWebb Feb 2 '11 at 16:20
    
It's a pedantic argument. C# wouldn't have much traction in the Windows world without Winforms, ASP.Net, WPF, WCF, WF, and so forth. –  Ian Feb 10 '11 at 14:20
add comment

In addition to all the answers here, I think part of the issue is that open source programmers are more used to C/C++ and languages that don't require a prerequisite runtime.

share|improve this answer
    
PHP? Java? Ruby? Python? All of these need a runtime, all widely used by open source. –  Macha Feb 2 '11 at 17:45
    
@Macha - Python and Java are already included in most open-source OSs so there's no need to worry about the runtime (the runtime isn't that big anyway). Now I remember installing Mono on my Linux machine once, it was big bloated with LOTS of libs. –  Raphael Feb 2 '11 at 18:48
    
Correct me if I'm wrong, but doesn't the C/C++ also require a runtime eg the OS itself? –  Darknight Feb 2 '11 at 22:01
    
I think the difference is that C# is compiled to an intermediate language and gets JIT'ed by the runtime, similar to Java and the JVM, etc. Whereas C / C++ is compiled straight to machine code. –  tmitchel2 Feb 3 '11 at 10:02
    
@Darknight: I think it is safe to assume that there is a suitable OS present... –  tdammers Jul 28 '11 at 22:16
add comment

The Microsoft-owns-C# argument holds a lot of weight among some parts of the OSS community. A lot of people remember MSFT's actions in the past (once a convicted monopolist...), and are reluctant to commit to building an application stack on something owned by a single corporate entity.

In fairness, it's not just Microsoft - look at Oracle's recent behavior with regards to both MySQL and the Java spec - the land grab they're attempting with both has greatly alienated large parts of both of those communities.

As for mono - yes, it exists. But C# was around for a long time before Mono ever became stable enough for use. And frankly, Mono just isn't the same as Microsoft's reference implementation - as others have mentioned, the Winforms/GTK# split as an example. My interactions with Mono have been exclusively with Desktop applications running on Linux, not server-side web applications - my development domain. Is there a C# engine for Apache? I don't even know.

And lastly, I have a major bone to pick with Mono/MSFT, which is the lack of Silverlight DRM support in Mono. Microsoft will not release it to the Mono project. As someone who runs Linux exclusively at home, this means I cannot use Netflix streaming on any of my machines - I had to go buy a Roku box instead. This, right here, is a daily reminder of Microsoft's control over C#, and why I really can't be bothered to develop for it.

share|improve this answer
add comment

Open Source development is closely tied to the Unix philosophy, which C# doesn't really subscribe to. C# shines in complex, multi-tiered OOP architectures, where, combined with a good comfortable IDE, it can help handle enormous amounts of complexity. If you have to build a giant monolith that does everything including invoicing, taxes, printing subscription forms, suggesting related products, and watering the plants, then C# is your first choice.

However, the open source world seldom needs this; open source projects are usually much smaller, and more modular by themselves. The KISS principle, exercised to the max, often leads to designs for which even C is perfectly adequate, and consequently, OOP is seldom called for (a few notable exceptions notwithstanding).

Another reason might be that many Unix programmers prefer a lean-and-mean textual 'environment' (a terminal, a selected set of command-line tools, and a good text editor like vi or emacs) over a full-blown IDE. Such a setup is great for C, Perl, Python, etc. (or at least I think so), but C# practically needs an IDE to compensate for its verbosity and deeply nested library namespaces - either way, coding C# using only vi is not fun (again, speaking from my own experience). Open source is about freedom, and this freedom includes the freedom to choose whichever tools suit you best. A language for which there is only one IDE doesn't work well in such a world.

share|improve this answer
add comment

I do see lots of opensource projects which uses C# partially or wholly. However given the language itself is best used on windows, you may not see many uses outside that operating system with Mono flavors.

Also the core language is mostly governed by a corp., not a "community", which people in OSS may not liken with.

I guess the biggest argument is that if I can use Java to do what C# does, I use Java for the fact that it has a more complete OpenJDK than Mono.

share|improve this answer
add comment

Being a predominately Microsoft based platform, perhaps it's "Culture" which is not aligned to OSS also trickles down to the developers who use it?

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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