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

End Date of the Review Period: 

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Wednesday, August 2, 2017

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

Parent Project: 

C# is a popular programming language (4th most popular on , 5th on ). 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.


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 aCute provide development tools for C# and .NET Core inside the Eclipse IDE.

Why Here?: 

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 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.

Initial Contribution: 

The initial contribution comes with:

  • wizards to bootstrap a .NET Core/C# project (delegating to `dotnet` CLI)
  • Rich editor for C#, with content-assist, hover, error reporting, find references, jump to declaration, hierarchical navigation (outline)... relying on OmniSharp language server and TextMate grammars
  • Launch Configuration to run project code from Eclipse IDE (delegating to `dotnet` CLI)
  • Launch Configuration to run automated test from Eclispe IDE and interact with the results and execution (delegating to `dotnet` CLI)
  • Wizards to export the .NET Core project as an executable artifact (delegating to `dotnet` CLI)
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 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 projects and with other 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.

Project Leads: 
Interested Parties: 
  • Red Hat