/eclipse-two

A prototype IDE based on Electron

Primary LanguageTypeScriptEclipse Public License 1.0EPL-1.0

The Two IDE

A full featured IDE based on Electron.

NOTE: I am putting a pause on this version to take a slightly different tact. I'll be working on a new IDE called Two4Arduino to see if we can take these concepts and make a great IDE for Arduino. As I blogged recently, this is about taking IDE building and turn it on it's ear. Leverage components available in npm, make new ones where necessary, and then wrap them in an IDE shell specially built for a given purpose. Let's see if that works. More later...

The philosophy is to treat the IDE as a web-site which has access to local resources and tools as well as cloud based services. It brings a new user experience to the desktop IDE that is friendly, integrated, and powerful. The user starts with a dashboard of cards supplied by plug-ins that give the developer access to all the information they need to do their jobs. From there, the IDE helps the user through working with code, checking that code into source control, integrating changes with change management systems like JIRA or bugzilla, provides a user interface to cloud services like logs allowing the developer to associate code changes with cloud resources.

The foundation is Electron which provides an HTML5 user interface with a node.js backend. Plug-ins will be dynamically loaded as required and can launch and integrate with microservices. The Language Server Protocol will be a key part of this, as will protocols that integrate other tools.

It's a platform that will serve us well for the next 20 years as Eclipse One has done for the last 20 years.

Plan

Phase 1 - Self Host

First stage is to get the IDE to the point where we can self host. That includes the following features

  • File Explorer that navigates mounted directories and opens files in the editor.
  • Text Editor that supports JavaScript, HTML, CSS, and package.json.
  • Folder Editor that supports adding and removing files in a directory.
  • Build support that runs 'npm run build' and presents output in a console pane
  • Launch support that runs 'npm start', presents output, and has a stop button that kills the process

File Explorer will be hand roled. Editor is Monaco. Build and Launch will follow design language of Eclipse Launch Bar.

Phase 2 - Git support

Add UI to work with Git to further support self hosting. Also add Github page to support cloning of repo.

Use nodegit as underlying API for Git commands. Added pane to FolderEditor for git operations. Some may be added to context menus in the FileExplorer. Github page uses webview with code injection to add a button to clone and set up the workspace.

Phase 3 - Native support

To support writing extensions using node.js's native build capability, we'll add C++ support and start working with the LSP and CDT.

Try it

To get the IDE running, once you check out of source control, do the following

npm install
npm run build
npm start

That's it. I also have a "watch" script you can use to auto build while developing.

BTW, make sure you're using a recent version of npm that can handle @typings.

Contributing

See the Architecture guide for some of the philosophy we're taking here. The keys are to use React for now since it gives us a great head start. It's early days so be prepared for a lot of significant changes upstream while I work things out.

Since the plan is to move this to Eclipse, we'll need contributors to sign the Eclipse CLA. When submitting a PR, include you're Eclipse account info so we can link things together.