Streamlining Contributions With EclipseTheia
[email protected] EclipseCon Germany 2018 EclipseTheia Talk
● Developing today ● Cloud Development – Eclipse Theia ● Theia Development ● Deployement – Workspace managers
2/40 EclipseTheia
Developing Today
3/40 EclipseTheia Developing Today
● Checkout the project
● Install the tools / Configure the tools
● Install dependencies
● Start contributing ● Rinse and repeat (⨉ projects ⨉ machines/users)
4/40 EclipseTheia Developing Today - More
● Use the correct Operating System ● Dependency collisions between projects? ● Not your habitual workstation? Have fun recreating something of an environment.
5/40 EclipseTheia What we would like to do
● Checkout the project ● Start contributing
6/40 EclipseTheia What we would like to do
● Removing contribution overhead ● It is about changing habits and the ways of working – Develop anywhere – No compromises
7/40 EclipseTheia
Cloud Development
8/40 EclipseTheia Not a new concept
● vi over ssh (remote development) ● Cloud9 (proprietary) ● GitLab IDE (minimalist) ● JDT/CDT over remote desktop (lag) ● ...
9/40 EclipseTheia Theia
10/40 EclipseTheia Theia Framework
● Written in TypeScript
● Runs in the browser
● Server-side – Node.js
● Runs on your desktop – Electron
11/40 EclipseTheia Theia Features
● Code navigation – Code completion, go to definition, ... – LSP based ● Debugging – Breakpoints, step over/in/out – DAP based
12/40 EclipseTheia LSP/DAP?
● Language Server Protocol – Deep language understanding factorization ● Debug Adapter Protocol – Generic protocol to drive a debug session
13/40
EclipseTheia Theia Features
● Git support ● Terminal ● Tasks ● ...
16/40 EclipseTheia Theia Framework
● Extensibility – Extensions – Plugins
17/40 EclipseTheia Theia Application
● Composition of extensions – $ npm install
18/40 EclipseTheia
Theia Development
19/40 EclipseTheia Theia Development
● Extensions (application build time) – Total control, rebinding of components, ... ● Plugins (runtime) – More rigid API via specific contribution points
20/40 EclipseTheia Theia Extensions
● Published as npm packages – $ npm search @theia/* ● Dependency injection – Add/Override any Theia component – InversifyJs
21/40
23 EclipseTheia Theia Extensions
● Various contribution points for extenders – Menus/Commands/Openers – Views/Widgets – Language Clients – TextMate Grammars – And more... ● Everything in the framework can be made as an extension
24/40 EclipseTheia Theia Plugins
● Self-contained (no dependency resolution) ● Runtime isolation ● Simple API
25/40 EclipseTheia Theia Plugins
● API can be extended by Extensions ● VS Code extensions compatibility underway
26/40 EclipseTheia
Deployment
27/40 EclipseTheia Cloud?
● Cloud development requires infrastructure – Networked machines – Administration (docker/kubernetes, ...) – Teams to operate
28/40 EclipseTheia Docker
● Basic docker images available – github.com/theia-ide/theia-apps
29/40 EclipseTheia Gitpod
● TypeFox cloud development platform ● Checkout PR branch and review it ● Theia-based gitpod.io
30/40 EclipseTheia Eclipse Che
● RedHat cloud workspace manager ● Heavy-duty ● Theia-able www.eclipse.org/che
31/40 EclipseTheia Personal Use
● Remote – Workspace manager – Vanilla Theia application instance ● Local – Electron application
32/40 EclipseTheia
Conclusion
33/40 EclipseTheia What does Theia change?
● Allows anyone to have its own IDE accessible from a browser ● Workspace managers can expose the IDE to work in the space
34/40 EclipseTheia Contributing now
● Contribute from (almost) anywhere ● Avoid setup overhead ● Focus on task at hand
35/40 EclipseTheia
36/40 EclipseTheia Contacts
● Presenter – Paul Maréchal: [email protected] ● Social – gitter.im/theia-ide/theia – github.com/theia-ide/theia/issues
37/40 EclipseTheia References
● github.com/theia-ide/theia ● eclipse.org/che ● gitpod.io
38/40 EclipseTheia
Cue and Hay (Q&A)
39/40