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?

– 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 ● Two targets – “browser” (browser + Node.js server application) – “electron” (desktop application)

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

● 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