Status message

Eclipse aCute - C# and .NET Core development tools in Eclipse IDE

Basics

This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.

C# is a popular programming language (4th most popular on https://insights.stackoverflow.com/survey/2017 , 5th on https://www.tiobe.com/tiobe-index/ ). C# is running on the .NET platform. This .NET Platform was initially proprietary and specific to Windows OS, but some recent governance changes have seen the emergence of .NET Core project, which brings a 1st-class reference .NET implementation to all Operating System under MIT license.

In this context, we can already see a growth of C# adopters and of its ecosystem. C# currently lacks a multi-platform IDE; Eclipse Platform and IDE are a very logical target to develop C# tools as it already contains reusable technical layers and related components thanks to its design for polyglot projects, and this is an opportunity for Eclipse IDE to attract some C# developers looking for a multi-platform IDE.

Scope:

The scope of the project is to provide good development tools for C# and .NET Core applications in the Eclipse IDE. That includes typical developer actions such as bootstrapping a project, rich edition of source code files and project metadata files, run and test code under development, debugging, packaging and deployment.

Deployment to specific clouds is out of scope. Support for other languges based on .NET Core is currently out-of-scope (but may be reconsidered in the future). Support for "legacy" .NET features is out of scope (only multiplatform .NET Core is targeted).

Eclipse IDE is famous, aCute isn't (yet). By joining the Eclipse Community, we expect aCute will get a higher visibility, resulting in more users and more contributors.

Eclipse IDE is the open-source, properly governed, vendor-neutral, multi-platform IDE. We expect aCute to be perceived as such too.

Eclipse IDE is the leading IDE for Java development, and Java and C#/.NET Core are similar languages/platforms. So we expect from joining Eclipse.org an easier collaboration with JDT and similar projects to learn from them and hopefully more easily share development effort with them.

If things go well, we'd like to consider the creation of an "Eclipse IDE for C# developers" just like other typical Eclipse IDE package. Being part of Eclipse Community is a requirement to succeed in implementing this.

This omnisharp-node-client automatically downloads and invokes https://github.com/OmniSharp/omnisharp-roslyn which is MIT license https://github.com/OmniSharp/omnisharp-roslyn/blob/dev/license.md

on Linux, OmniSharp requires having "mono" installed to work well. So `mono` is currently a requirement, although aCute doesn't ship mono. "mono" is MIT license http://www.mono-project.com/docs/faq/licensing/

on any OS, "dotnet" command-line needs to be installed, although aCute doesn't ship dotnet. dotnet/coreclr project does ship this CLI and is licensed under MIT https://github.com/dotnet/coreclr#license

Project Scheduling:

aCute already has automated builds and is able to produce a build anytime.

We'd like to make a 1st incubation release of aCute 0.1.0 in the week after it's moved under the Eclipse.org community.

Future Work:

Bugfix and incremental improvements will be happening on the existing code.

We'd like to initiate the Debug part which is currently not covered. This Debug will try to take advantage of some Debug Protocol when it emerges, so we'd like to avoid making a specific C# debugger in aCute. The debug story will interact with other Eclipse.org projects and with other non-Eclipse.org projects in the IDE landscape.

OmniSharp language server is currently under refactoring and should hopefully soon drop need for omnisharp-node-client module and even drop the dependency on "mono" for Linux. As soon as we can get rid of those in aCute, we will; and release some minor versions for this occasion.

We don't plan aCute to provide any API at the moment, so it will be easy to keep it backward compatible.

We'll probably release aCute 1.0.0 once aCute takes advantage of OmniSharp Languge Server improvements and LSP4E and TM4E projects (which as used by aCute) have left incubation and made their first major release.