Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[platform-vision] Compensator - The-Back-to-the-Roots-IDE

Hi,

Thanks that I've been able to join todays call to present what I've been
working on since some time and I'm going to make public short before
EclipseCon NA.

I've uploaded 2 videos to Youtube and attached some pictures:
* https://www.youtube.com/watch?v=AnEzUqNZOgs
* https://www.youtube.com/watch?v=NnpA4TJ8dgA

As outlined in the call I'd appreciate if you are not blogging / posting
these URLs to the web but you are free to show it to co-workers and
people you think could be interested.

The projects code name is "Compensator" because one of possible useage
scenarios is in conjunction with Eclipse Flux.

I've attached a highlevel overview of Compensator (compensator_arch.png)
which at its heart is a framework on top of the Eclipse 4 Application
Platform who enables anyone to built a custom IDE.

Main ideas/concepts:
====================
Project has a different notion:
-------------------------------
We've all grow to the notion of "Project" as a thing in the Eclipse
workspace and most of our the applications you built consist of multiple
projects.

Compensator uses the "Project" term more in alignment with how you use
it a company where you have "Project 'Petstore sales app'", "Project
'Petstore OpenShift Webstore'", ... which consist of:
* 1 .. n - modules (=what you used to call Project in your Eclipse
           workspace)
* 1 .. n - Bugtracker / Ticketsystem
* 1 .. n - CI Server Jobs
* 1 .. n - git repositories
* ... (depends on your project e.g. for cloud apps it could be a
production system which you monitor, manage resources, ... )

No core resources:
------------------
Another main concepts is that there's a very hard split between UI and
Core which is deeper than the one you see in the Eclipse SDK because
Compensator itself does not have the concept of a Workspace like you
know it from your favorite IDE.

Not relying on Core-Resources makes it easy to e.g. use Compensator as a
frontend to a remote managed source base using something like Flux.

Adopt the e4 & OSGi & java8 programming model:
----------------------------------------------
If you browse the sources you see I'm using DI to wire stuff. I use
context functions, custom annotations (e.g. to inject lists of
OSGi-Services, ...), RATs, the EventBroker, ... .

I use declarative services for all contributions and extensions - no
more use of the extension registry.

Since the UI is built on top of JavaFX I have Java8 as a prerequisit and
make use of Streams, Lamdas, Method-References as much as possible.

Act as a simple Notepad++
-------------------------
See http://youtu.be/AnEzUqNZOgs

The application should be useable as editor who does support syntax
highlighting and some basic features like an outline. In the video at
youtube you see the simple editor shows an outline for Java and
JavaScript files.

For Java I use ASTParser the from JDT (only only the AST parser) [1] and
for JavaScript I'm using Nashorn [2][3] but I'm looking into replacing
JDT at for Notepad++ usecase with the use of tools.jar.

One of the key things in the Notepad++ use case is that it has to as
simple as possible to define basic highlights and make it easy and
simple to install and update.

While eg the highlighting for Java & JavaScript is defined using Java
code which is 95% equal to the code you see in your Eclipse IDE - the
highlighting for the python language you are seeing in the video is
defined through a mixture of a DSL & CSS [4] hence installing such a new
highlighting is really easy.

The DSL+CSS approach (which is similar to Orion regex+CSS syntax
highlighting) should make it as easy as possible to define a
highlighting for your favorite language.

We'll also provide you a step by step wizard guiding you through the
creation of the highlighting.

Another important topic in this regard is to make it as easy as possible
for people to install the application and we are using the java-packager
who packages our application as an msi, setup.exe, .deb, .rpm, .dmg and
.pkg including the JDK with it which allows us also to put it into the
OS-X app store.

Act as a Project IDE:
---------------------
There's no need for perspectives - the UI is specific to the project you
are working at. Maybe it is only my style of working but the only 2
perspectives I use are:
* Java
* Debug

I've not yet implemented the replacement for the Debug perspective but I
have some ideas who are going hand in hand with the missing console view.

Perspectives are reused to keep multiple projects open in one IDE UI
instance!

Like you see in the 2 attached screenshots the UI is kept very (maybe
too) minimal and I've completely removed the top level toolbar and
integrated the "Quick Access" into the area of the MenuBar.

The project explorer on the left is the central point for all
information concerning your project including your modules, bug-tickets,
... . Everything can be opened in the centeral area projects,
bugtracker-queries, directories, ... .

Code reuse:
-----------
Everything concerning UI needs to be written from scratch which is
anyways the case because of my use of JavaFX - one could probably
achieve some UI reuse when using SWTonJavaFX but this is something that
needs to looked at on a case to case base.

Still there is code reuse in place when we talk about the text
partitioning and parsing e.g. compare [5] with the original code from jdt.

Perfect code reuse can be achieved for everything not requiring an UI
like jdt.core, pde.core, m2e.core, jsdt.core, ... because they are
simply running in the headless server.

Could code reuse be improved:
-----------------------------
I've only looked at the jface.text stuff and jdt.ui both of them contain
code who is UI-Technologie agnostic and could very well be factored out
from the ui plugins.

Can you built it (at least in your workspace)?
----------------------------------------------
All sources are checked into the e(fx)clipse repo [6] and is one of the
driving forces for new features the e(fx)clipse runtime in 1.2.0 but
even getting it built in your local Eclipse instance is not really easy.

And even if you managed the above useability is not yet at a point where
it makes sense for you to give it a try.

I'm going to fix all of those problems until I make this work public and
I think then is also the time for you to checkout the sources.

I hope you followed to the end.

I'm aware that some this stuff is controversial and my focus is not on
selling this as the next eclipse to you nor the Eclipse community but
I'm my self convinced that this codebase has its place in the Eclipse
Ecosystem.

See you at EclipseCon NA

Tom

[1]http://git.eclipse.org/c/efxclipse/org.eclipse.efxclipse.git/tree/experimental/compensator/org.eclipse.fx.code.compensator.jdt/src/org/eclipse/fx/code/compensator/jdt/JDTOutlineFactory.java
[2]http://git.eclipse.org/c/efxclipse/org.eclipse.efxclipse.git/tree/experimental/compensator/org.eclipse.fx.code.compensator.nashorn/src/org/eclipse/fx/code/compensator/nashorn/JSOutline.java
[3]http://git.eclipse.org/c/efxclipse/org.eclipse.efxclipse.git/tree/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/src/org/eclipse/fx/code/compensator/nashorn/qx/QxOutlineExtension.java
[4]http://git.eclipse.org/c/efxclipse/org.eclipse.efxclipse.git/tree/experimental/compensator/org.eclipse.fx.code.compensator.editor.hsl/src-python/python
[5]http://git.eclipse.org/c/efxclipse/org.eclipse.efxclipse.git/tree/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/src/org/eclipse/fx/code/compensator/editor/java/scanner
[6]http://git.eclipse.org/c/efxclipse/org.eclipse.efxclipse.git/tree/experimental/compensator

-- 
Thomas Schindl, CTO
BestSolution.at EDV Systemhaus GmbH
Eduard-Bodem-Gasse 5-7, A-6020 Innsbruck
http://www.bestsolution.at/
Reg. Nr. FN 222302s am Firmenbuchgericht Innsbruck

Attachment: compensator_ann.png
Description: PNG image

Attachment: compensator_auto.png
Description: PNG image

Attachment: compensator_arch.png
Description: PNG image


Back to the top