Open Source .NET – 2 years later
mattwarren.org
mattwarren.org
But for some components is ok to contribute there:
- mono(xamarin) was already migrating to use open source components like the bcl (corefx) after the initial open source of code by ms. It's like dont write two times the same stuff.
- coreclr: the .net core runtime
- corefx: the standard library (base class library like io etc), used by .net fw (win) and .net core and partially by mono
- roslyn: that's the c#/vb compiler, also mono is trying to reuse that
- cli: it's the sdk for building projects. Can the project system changed? yes, but not needed now (.net core it's boostrapping another xplat runtime so need tools). as a personal note, the cli team doesn an awesome job to make it easy to contribute
and some notes:
- asp.net is a web framework, it's used a lot, nice ppl contribute. who like servicestack/nancy/suave, use that instead.
- fsharp (http://fsharp.org/) was and is already driven by community, and lang decision are in repo https://github.com/fsharp/fslang-design by community and lead by @dsyme
And you should also check dotnet foundation pulse and community projects (like Nancy/Nunit/Akka.net/mbrace).
Lots of the work done by ms can be useful for others, see Kestrel server (damn fast) who can be used by other web projects like Suave (https://github.com/SuaveIO/suave is a lib, not a framework :D)
- dnx was the predecessor of cli, and replaced by it (good job by aspnet team to boostrap xplat on netcore)
As for Akka, well Akka is really not about abstracting over I/O or a replacement for Netty, even though projects like akka-http exist. At this point Netty is so good, well tested and so widely deployed that nobody sane would even dream of replacing it, even though there are some people trying.
And on the .NET ecosystem, I really love what Microsoft is doing with it and how .NET Core is turning out, however open-source is definitely a big weakness of the ecosystem. In the Java world, Oracle is not driving anything other than Java the language and the runtime (i.e. the core). Not the IDE, not the frameworks or the tools being used. Everything else is provided by the community.
And when I click to view the source of some class or method in my IDE, I have my IDE automatically download the original source, instead of getting a decompiled one, because proprietary libraries are almost unheard of.
1) Visual studio only works on windows 2) It runs on mono 3) I don't like .exe and .dll stuff
I contribute to a couple open source .NET projects working with developers that use Visual Studio on Windows and don't run into many cross platform issues. I commonly see open source .NET Core projects run Windows CI with Appveyor and Linux CI with Travis so catching cross platform build issues is not hard.
In addition, I run on Azul Zulu [2][3] for Java / Scala / Kotlin development and haven't had any problems so far (switched about a year ago).
Notes:
[1] - https://intellij-support.jetbrains.com/hc/en-us/articles/206...
[2] - https://www.azul.com/products/zulu/
[3] - macOS Sierra at work, and Ubuntu 14.04 at home
Anyway, I still gave it a try to see how it works. Looks like they're resolved lots of the visual glitches (especially the most serious ones, like font rendering).
For some reason though, after running the app, I was left with two directories in my home with dumps of configs/cache all mixed up. :/
Why is this the case? I would have thought PaaS of all things would be OS agnostic as the end user doesn't really care about the OS or how things are being done in the background as long as it's simple to deploy/configure etc.
For example if Azure Websites suddenly made this big shift to Linux for some reason, it wouldn't affect anyone actually using the service.
Using clasic *nix tools (vim+plugins, zsh, etc) plus their CLI tools, I can download and build many C# projects.
Creating a new solution/project? I need an IDE for that. Or copy-paste the base project files from an existing one.
So no, .NET on GNU/Linux won't make those customers magically migrate to it, specially since GUI tooling isn't part of .NET Standard.
Even if WPF, UWP and Blend get ported, I don't see those customers changing their IT infrastructure for desktop, device readers and robot controllers OSes.
I'm just curious because I always liked WPF but I don't hear about too many people developing for it these days.
Sometimes there is still an inhouse C++ layer for driving the hardware when talking to older devices, but newer ones are covered by standard Windows APIs or OEM provided libraries, so we can write everything in .NET.
If you search for WPF jobs in Europe you will find many people do use it, even for greenfield projects.
Bottom line is: CAKE is great, but if the project depends on things that are not covered by dotnet core one is still screwed.
They've deprecated it: https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-t...
after that as usual
- dotnet restore
- dotnet build
- dotnet run
- dotnet pack
- dotnet publish
- dotnet test
the cli is the same, the dotnet/cli team added other commands too (dotnet msbuild, dotnet clean, and more in development using an extensibility to install global commands)
Yeah the cmd extensibility story it pretty nice, I had a go at writing a 'dotnet benchmark' cmd and it was pretty straight-forward, see http://mattwarren.org/2016/10/03/Adding-a-verb-to-the-dotnet...
Almost everyone think that you need some specific IDE (either Visual Studio or Monodevelop/Xamarin Studio/VS for mac (this is the same thing lol)), even in opensource communities[3].
And MSDN is the slowest and hardest to use web documentation I ever seen. Everything non-Windows non-VS is still very, very second-class.
[1] https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-t...
[2] https://www.microsoft.com/net/core
[3] http://community.monogame.net/t/creating-a-new-monogame-proy...
ide are good (intellsiense/debugging), especially vscode, but sdk works already from command line and text editor.
about docs, check the new docs website (oss, accept pr):
- https://docs.microsoft.com/en-us/dotnet/articles/core/
- the getting started doc https://docs.microsoft.com/en-us/dotnet/articles/core/gettin... has tutorial for everyone (cli/vs/vscode/xam), and all os. is not vs centric
It is also one of the best company provided documentation out there.
Have you ever used online documentation from Apple, Google, Borland, SAP, Oracle, ...?
Read this https://weblog.west-wind.com/posts/2016/Nov/23/NET-Standard-...
Most of us develop on Windows, however I have chosen to use Project Rider as my daily IDE because I run macOS. The latest public build is actually pretty stable compared to the earlier builds.
We're building backend services in ASP.NET Core which is very easy to get started with and quite well thought out. Autofac works too. You'll find most (imho) popular libraries are either fully supported or have a beta NuGet that supports .NET Core now.
Honestly the thread below about Linux being the future is true for server-side .NET. I'm able to develop on macOS, dockerize my service, build on Jenkins with Linux agents and then deploy to Linux docker hosts. I'm not sure where Windows will fit in this space? And why would I need it?