Open-source and .NET - it's not picking up

English posts, Open-source, .NET, Lucene.NET, NancyFX Comments (9)

.NET and open-source software. It's not picking up.

I have been sitting on this for a while, and had dozens of discussions about it too. The things I'm about to say here are a result of a journey. Yes, this is criticism; but from a respecting and caring place, coming from a long time OSS contributor in several software ecosystems, including .NET.

I'm posting this with hopes it is perceived as a diagnosis, one that can lead to us getting better at this.

Bubble.NET

Open-source in .NET is not picking up. Despite good efforts from many good people and companies, it seems as if the Microsoft developers scene is far from embracing open-source. In some cases it could appear as some bodies are even doing quite a bit to destroy what little OSS is already in .NET - probably not on purpose, but still.

Don't get me wrong, there is a quite a bit of OSS activity in .NET lately. From big projects backed by companies (Akka.NET, NServiceBus, and more), to useful libraries and tools (NancyFX, AutoMapper, AutoFac, StructureMap, and more) to influencing powers in the market who are going OSS (Microsoft, GitHub sharing love with .NET people, etc). And OSS focused conferences, like DotNetFringe and .NET Unboxed, both of which I even attended and helped creating.

But this doesn't seem to be enough. OSS projects in .NET are not striving; there is not much innovation happening in this space; and OSS communities aren't being formed. It is all left as a dream we keep dreaming, but never actually getting to fulfil.

In the end of the day, the Microsoft development platform was and still is a bubble. A very big and rich bubble. And it seems like this bubble doesn't like change.

Why is this happening, and is there still hope for change? Here are two symptoms which I think are pretty much unique to the .NET ecosystem.

The Free as in Flee Syndrome

Historically, Microsoft is a product company which makes it's living from selling it's products. An operating system, word processors, development tools, databases - every product is sold, and usually not for cheap. When working or developing on the Microsoft stack, free tools never go unnoticed.

As a developer originally from the Windows platform I still remember that feeling when I discovered a useful tool that was given out for free. Maybe this happened for others on non-Windows platforms too, I don't know, but back in the day where in Linux you had many free tools and in Windows not so many - including the operating system itself - well, you get to love free tools.

This, in turn, gets one to a dangerous state of mind where free equals someone was sucker enough to do this potentially expensive work for me. I would thank them, maybe, perhaps, but this was made for me to use - and for free. There is no notion of giving away or forming community projects. It's free as in no money involved; where the distinction between "Free as in beer" and "free as in speech" means nothing, because - hey, who cares, it's free.

While this is true historically speaking, apparently it's something that's hard to change in people. And it still happens today way too often.

I spoke about that a few months ago at .NET Fringe, in the context of Lucene.NET. It's a project that's been around for a very long while, has very wide array of use cases, has many users - including high profile companies and many commercial products, yet it's a project that has died more than once and never was able to progress nicely and form a strong contributors community around it.

While other reasons could be at play here as well, I still find it utterly ridiculous that well known commercial products are using Lucene.NET extensively (in some cases absolutely depending on it) and don't contribute back anything. Not a dime, not a single line of code, hardly even an attribution. Nada.

We have to overcome this. We have to be supportive, welcoming, sharing and giving - otherwise the .NET framework and surrounding technologies will forever be boring, grey, non innovating corporate environments. This in turn will kill the environment. There are enough good people who left the Microsoft stack to other, more open, more sharing ecosystems. And this is our responsibility to do so - as I will immediately explain. Don't take free stuff and flee; Participate.

A good word here is due to some folks at Microsoft who made a big code contribution to Lucene.NET a while ago and helped us resurrect the project and restart development towards a 4.8 release.

The Sheep Syndrome

Developers on the Microsoft platform are, usually, used to be led. Microsoft is saying where it is going and the entire developers force are lining up with the direction like a herd. There was some opposition over the years, but all in all the Windows platform is fundamentally different than most others platforms out there, where the communities lead and innovate. Historically, if Microsoft says it's headed somewhere it will go there and the community will follow, often times failing altogether (Remember Windows 8? Strong naming? Silverlight?).

Microsoft is not evil or stupid, it is mostly a huge company with it's own economic interests and often times huge disorganisation. It's us, developers, who should know better. We should look around and criticise. We should open our eyes to other ecosystems and learn. We should look for good examples of success an. We should adopt, not adapt. And Microsoft will have to learn to listen.

There are very smart people in the our industry. Many opinionated people, and many innovators. Somehow the core of open-source developers on the stack is relatively small, in fact it is so tiny that I know most of them by name (or reputation...) and with many I've met at least once. They all are amazing people, but why are there so few of them out there?

NancyFX is probably the best example out there for what I'm talking about. Led by originally two passionate people, it was able to form up a nice community and provide a very stable and easy to use alternative to ASP.NET MVC. It was so good that Microsoft has learned a trick or two (actually more) and implemented them all in it's more recent versions of the it's web frameworks. And the roots of Nancy lies way outside of the Windows stack, somewhere in the Ruby lands. Because Andreas and Steven went and looked outside, and knew better than to blindly listen to Microsoft's advice.

Let's bring more opposition. And let's do more open source.

Do we really need OSS?

I was writing with two assumptions in mind. (1) We want to have a striving open source activity in the .NET ecosystem, and (2) The current situation is not good enough.

While you could argue on any of those points, I will just say this. The world is moving towards open-source, because it works. There are various ways of managing, growing and financing OSS projects and you should pick whatever works for you, or not pick one at all. But the ecosystem definitely benefits from them, and there are a lot of examples of successful business models that benefited all involved. And fact is that Microsoft is realising this and moving towards that direction too.

The current situation is really bad. Without sponsorships of some sort OSS projects do die, and in .NET you don't find many sponsorships. NancyFX, which was partially supported by tretton37, is striving and indeed innovated. Lucene.NET is lagging so much behind because despite my requests to notable users, they refused sponsoring.

Let's change this.

Comments

  • Kristoffer Garcia

    I think a big factor is how .NET developers are inducted. In OSS platforms, digging into source code, building/compiling, using command line tooling, identifying and describing issues, etc. are all parts of the induction process. This, in turn, makes the transition from user to contributor a bit easier since it does not appear to be two completely different worlds. In contrast, the classical MS approach to inducting developers resulted in indoctrinating developers into a more passive/customer oriented way of relating to their tools, platform, and ecosystem. It seems that some course correcting is being attempted with CoreCLR/DotNet Core, but at the same time it is causing some conflict because of how much design decisions are being made internally by MS that disenfranchise existing .NET OSS projects.

  • Am

    I was really put off by the various "code of conduct" where some dudes pretended to lecture us on how to behave and to regulate. why put some fringe ideas in a technical project is beyond me.

    That's probably not a major factor to the lack of open source in dotnet but it is a factor putting off people.

    The main factor probably is as you mention a culture of the users. Many dotnet programmers do that for a living at big corporation which might not value so much altruism.

    Another factor is dotnet development in those environment usually provide with many tools around the code, like source control, documentation etc, which are probably not the standard in open source.

    I was surprised by how many times I met experienced dotnet developer who did not know git for instance.

    Coding is so much more than having a program which run, and that's an impediment for dotnet developer going open source.

  • Jon Forrest

    Trivial typos:

    " which makes it's living from selling it's products" -> " which makes its living from selling its products"

    "with it's own economic interests" -> "with its own economic interests"

    "in it's more recent versions of the it's web" -> "in its more recent versions of the its web"

  • Sean Killeen

    Thanks for posting this, Itamar.

    For any who are interested, I wrote a response to this and am trying to follow-up with a project to move things forward. Check it out at http://seankilleen.com/2016/01/dotnet-oss-acceleration/ or http://github.com/SeanKilleen/AWiderDotNet

  • Lee Bryant

    Am makes some valid points. I think it's more related to culture among .NET devs than anything else. Until recently (the last few years) you couldn't even learn .NET without a MSDN license. Most companies that pick .NET are normally picking the tech stack as a company, not as individual engineers picking the best tech for their needs.

    That being said, most companies have no interest in participating in open source because they spent thousands of dollars on licensing. If a company is spending money on buying licenses why would they spend more money (developer's time) on libraries to use the stack that they just spent money on for licensing?

    A lot of open source is done on a dev's spare time. Most devs I know pick tools/languages that allow them to express their ideas very quickly. C# simply isn't optimize for this. Ruby and javascript can be written right in a repl (Yes I know that C# recently added a repl a few weeks ago). Picking an ecosystem/language is always going to have a lot of open source contributions when they are easy to approach.

  • Rasmus Johansen

    I would like to give my two cent of thought on this topic.

    My life as a developer is mostly focused around my job (I don't get it how so many people can also find the time and energy to code doing their free time).

    The OSS that I use in .NET are all used in my work. While the company loves that we the developers find something free to use in our products, they don't encourage us to contribute to these project. (I might write an e-mail to my superiors about this, when I am done here.)

    Most of the time the changes that I make to these projects, are not something that will be usable in the libraries in general, as they are quick fixes for the specific purpose of the software I am building. In the rare case that I do make a change that I think is usable for the common good, I usually try to let the developers know through e-mail or forums.

    That leads me to my next point. I got a degree in software development, and I have been working as a software developer for 10 years, but I have never really been introduced to the usage of git etc. And neither have I found the time myself to look into it. It simply seems to be too big a task, to setup the software, and get/understand/follow the rules for contributing to a project.

    Lastly I would mention that most of the time, I only use a small part of these libraries, and I use them to avoid having to get the needed knowledge to build something myself. Pdfsharp being a exelent example of this. I use a small part to read the bookmarks in some files, but I really don't have any knowledge of the weird structures of pdf files, and I think it is such a big leap if I should try and get that knowledge.

    So I do think it is fantastic that these OSS projects exists in .Net, but with my above answers I have tried to give some of the reasons I myself have for not being involved in projects like this.

    I will try and follow this page, and if anyone has some good advice in regards to my thoughts, I will happily read them. Also with Lucene.net as example, I would love to read how I could contribute, without having to spend large amounts of my spare time to a great project like that?

  • Rasmus Johansen

    Just wanted to mention that after my last post, I went to the sites listed by Sean Killeen. They seems really interesting, and I will read them tomorrow, and hopefully get some more answers and inspiration:)

  • Adron Hall

    Am - not sure why a Code of Conduct puts you off. It simply states what is expected and what will happen if one misbehaves and disrespects other conference attendees. Considering the atrocious behavior of attendees in the past to anybody outside of the cis-white-male stereotype it's simply stating we're making an effort to have a conference where people won't be clueless, oblivious, and negligent toward other people and their respective lives. So far it has actually been very effective in bringing MORE people into the fold to contribute to work, including open source software and to conferences. It really shouldn't be a big deal to anyone. Even those that are disrespectful can usually pull themselves together for a few days and treat people with respect - the CoC simply points out they will be removed from the setting if they can't behave in a civil manner.

    As for OSS in general - and OSS in the land of .NET - I concur with Itamar on pretty much everything. It is indeed eating the world and more and more (including the women, minorities, and others that are starting to join the tech industry) of us techies are working in that manner. An OSS first mentality helps everybody - it's the .NET landscape that needs this new infusion of blood to make it a reality for .NET or it risks slipping into irrelevancy. As one may note every now and again, many lines of COBOL still exist today, albeit it is irrelevant as a language and rarely taught to anybody anywhere anymore. .NET needs OSS and needs contribution and people pulled into the loop to prevent it from becoming the COBOL of yesteryear. It's commonly said among peers already, so there is a lot of work cut out for the .NET Community.

    I wish us all well in making .NET something worthwhile and relevant again.

  • Jens

    Interesting and discouraging post :(.

    I do think we need to keep in mind that OSS and M$ is a relatively new thing, and things are moving in the right direction as we speak, that is not an excuse, but perhaps some of the explanation.

    That said, there is certainly also a huge barrier in trying to sell OSS to allot of companies that live of making software, it is tough to explain to them why they should "give away free stuff", I know because I work in such a company. I have managed to acquire some company funded time to contribute to OSS projects that we use, but I largely feel like a 1-man-army fighting for OSS where I work, and I don't think that is the company's fault but rather the people and culture here. In other cases I used sparetime to seed something we would use and therefore contribute to at work.

    I think this has to come from within, it is us, the developers and architects within a company that has to sell the businesscase OSS, how it saves effort (and therefor money), I doubt a OSS project can turn to a company and "sell" it's product (for contributions etc...), because what do you get when it is already free???... The developers using the software are the ones that know what a company get in it's specific case, where there is saved effort/money if they could just contribute a little bit back.

    I wish there was one clear slide that could sell the idea of OSS to all companies, but I doubt it, so I think it has to be us, the developers, architects etc. within. Perhaps we can support each other in selling it to our managers, that would be great, but again, where to turn?

    But I wan't to comment specifically on the state of Lucene.NET and why i personally have not (yet) contributed.

    We use Lucene.NET, I use Lucene.NET... But unfortunately I have no idea where Lucene.NET is moving, if it's moving, what is it's current state, how fare is it from a 4.8 release etc? The problem for me is that Lucene doesn't really seem as "transparent" as other OSS projects I have contributed to - OR - more likely, I have no idea where to find the information that would allow me to make an assessment on whether to contribute or not (a decisions that is always made based on how difficult it would be to contribute or get started). Or simply said, I don't know where to start.

    Perhaps this is because I firstly started contributing to OSS in the age of Github, and therefor the whole Apache thing seems foreign/alien to me. Thinking of it, actually all OSS contributions I have made has been for projects where Github has been the central hub for the project.

    Where is that for Lucene?

    And I think that if you wan't to find OSS developers for the .NET platform, you wan't to move to where they are, I don't know if Github is where you may find them, but Microsoft is beginning to move projects from Codeplex and to Github and if we should take that as any indication, maybe it is??

    Anyways, that is just my thoughts...

    /Jens

Comments are now closed